Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


Ein bewährtes Microcontrollerboard, das wie das RNBFRA-Board in der Roboternetz-Community infolge einer Diskussion entstand. Es sollte ein Board werden, das ein gutes Preis-Leistungs-Verhältnis bietet und für vielfältige Aufgaben geeignet ist. Das Vorhaben ist dank der zahlreichen Anregungen gut gelungen, das Board gibt es inzwischen nicht nur als Bauanleitung mit Platine, sondern auch als Bausatz und sogar Fertigmodul. Es hat sich als preiswertes Universalboard für Roboter, Steuerungsaufgaben etc. als auch als ideales Einsteigerboard einen guten Namen im Roboternetz gemacht, daher gibt es für dieses Board auch ein eigenes Unterforum im Roboternetz. Es gibt inzwischen unzählige Anwendungen, die mit RN-Control umgesetzt wurden. Trotz günstigem Preis ist ein sehr flexibles Board für unzählige Anwendungsmöglichkeiten entstanden. Über den I2C-Bus stehen zahlreiche Erweiterungsboards zur Verfügung, so können beispielsweise die gleichen I2C-Erweiterungen wie beim großen RNBFRA-Board kombiniert werden (Relaiskarte, Sprachausgabe usw.) Roboternetz

Funktionen des Boards
Schaltplan zum Board (gedreht)
Fehler beim Erstellen des Vorschaubildes: Datei fehlt
Bestückungsplan zum Board

Besonders viel Wert wurde auch auf den einfachen Aufbau und viele Experimentier- und Einsatzmöglichkeiten gelegt. Mit diesem Board läßt sich u.a. schon ein recht ausgereifter Roboter konstruieren. Ultraschallsensoren, Infrarot-Entfernungssensoren, Motoren u.v.m. können direkt angeschlossen werden. Da das Board auch in der Community Roboternetz recht beliebt ist, findet man dort auch viele Tips und Programme.

[Diagramm hier]

Hier die Leistungsmerkmale auf einen Blick:

  • Wahlweise 8 oder 16 MHz Taktfrequenz (beide Quarze werden mitgeliefert, 16 MHz bereits eingesteckt)
  • Schneller AVR Mega 32 Mikrocontroller,32K Speicher, 2K Ram und 1K EEPROM), 32 programmierbare I/O Pins,8 AD Ports u.v.m.
  • 8 Leuchtdioden per DIP-Schalter deaktivierbar und anderen Ports per Steckbrücke beliebig zuzuordnen
  • alle Portleitungen sind über Stecker nach außen geführt. Die Steckernorm entspricht der Roboternetz-Definition als auch der des Atmel Entwicklungsboards STK500
  • alle Ports sowie +5V und GND sind zusätzlich über Steckbuchsen erreichbar. Ideal zum Experimentieren, da einfach Drähte (ca. 0,5mm) eingesteckt werden (kein Löten oder Schrauben). So können einfach andere LEDs zugeordnet werden oder ein Steckbrett verbunden werden
  • Der wichtige Port A (wahlweise 8 digitale oder analoge Ein- o. Ausgänge) ist zusätzlich noch über eine Qualitätssteckklemme mit Hebel herausgeführt
  • Motortreiber ca. 1 A belastbar - für zwei Getriebemotoren oder 1 Schrittmotor. Dieser kann auch für andere Zwecke (Relaisansteuerung, Lämpchen etc.) genutzt oder einfach entfernt werden
  • Integrierter programmierbarer Mini-Lautsprecher, um Töne auszugeben
  • 1 Reset-Taster
  • 5 Taster für beliebige Verwendung. Sie belegen nur einen analogen Port!
  • 5 V Spannungsstabilisierung mit 2 A Belastbarkeit, auch herausgeführt für Erweiterungen; Eingangsspannung gegen Verpolung geschützt
  • RS232 mit normgerechtem Pegelwandler (MAX232) - PC direkt anschließbar
  • Batteriespannung kann im Programm abgefragt werden
  • ISP-Programmierschnittstelle für übliche AVR-Programmieradapter (10polig)
  • Betriebsspannung wahlweise zwischen 7 und 18V (empfohlen 7 bis 14 V) - wahlweise auch höhere Motorspannung bis 24 V möglich)
  • Sehr kompakt, nur halbes Europaformat nach Roboternetz-Norm (ca. 100x75mm)
  • I2C-Bus, über den zahlreiche Erweiterungsplatinen anschließbar sind (z.B. Sprachausgabe RN-Speak, Relaisboard RN-Relais, Servoboards, LCDs uvm.)
  • Programmierbar in zahlreichen Sprachen, z.B. Basic (BASCOM Compiler, eingeschränkt bis 4K wird mitgeliefert), C (C-Compiler GCC wird mitgeliefert), Assembler, Pascal
  • Deutsche Doku mit Basic-Programmbeispiel
  • Preiswerter Bausatz erhältlich - einfacher Aufbau
  • Kein Starter- oder Applikationsboard notwendig - bereits alles integriert!
  • alle wichtigen Bauteile gesockelt, somit auch bei falscher Beschaltung durch Einsteiger immer kostengünstig reparierbar (einfach neues IC einstecken)

Belegung der RN-Control Steckklemmen

Um auch schnell und praktisch mit RN-Control experimentieren zu können, verfügt dieses Board über Steckklemmen die alle Ports herausführen. 0,5mm Drähte lassen sich dort direkt einstecken, so das Sensoren und dergleichen schnell und einfach verdrahtet werden können. Die genaue Belegung lässt sich in nachfolgendem Ausschnitt aus dem Bestückungsplan gut entnehmen.

Rncontrolsteckklemmen.gif


Steckerbelegung und Jumper-Funktionen

Erläuterung der Anschlüsse, Regler und Kurzschlussbrücken

Anschluss-Bezeichnung Erläuterung
Port A Digitaler I/O und analoger Port (PA 0 bis PA7 und ADC0 bis ADC7)

Über eine Steckklemme werden hier die 8 Portleitungen PA0 bis PA 7 zur Verfügung gestellt. PA7 befindet sich dabei ganz links und PA0 ganz rechts. Anschlußdrähte können einfach eingesteckt werden, indem man mit einem Kugelschreiber oder Schraubenziehen den oberen weißen Hebel etwas nach unten drückt. Die Ports PA7 bis PA0 können sowohl als normaler I/O-Port (Ein- und Ausgabeport) oder als AD-Ports programmiert werden. Somit könnten also auch bis zu 8 Spannungen quasi gleichzeitig gemessen werden.

Ist der Kurzschlusstecker UREF eingesteckt, dann können Spannungen bis zu 5V gemessen werden. Ist UREF offen, dann können Spannungen nur bis 2,5V gemessen werden. Durch geeignete Spannungsteiler kann der Meßbereich natürlich beliebig erhöht werden.

Achtung: Die zulässige Höchstspannung 2,5V oder 5V darf am Port nicht überschritten werden, dieses würde den Port zerstören!

Vorbelegung: Port PA7 wird auch für die Tastenabfrage genutzt. indem über einen Spannungsteiler verschiedene Spannungen per Tastendruck angelegt werden (siehe Schaltplan). Solange keine Taste gedrückt ist, ist dieser jedoch frei Verfügbar. Port PA6 wird über einen Spannungsteiler (22k und 5,1K) zur Batteriespannungsmessung benutzt (siehe Schaltplan und Demoprogramm) wenn der Kurzschlusstecker UMESS eingesteckt ist. Durch entfernen dieses Steckers steht der Port zur freien Verfügung.

Der komplette Port steht auch nochmals über die Buchsenleiste JP2 zur Verfügung. Auch dort können Drähte zum experimentieren eingesteckt werden (möglichst 0,6mm²).

Port B Digitale I/O Port B (PB0 bis PB 7)

Über einen Wannenstecker werden gemäß der Roboternetz-Definition 8 I/O Portleitungen mit Sonderfunktionen als auch GND und +5V bereitgestellt.

Die genaue Belegung sieht wie folgt aus:

Pin 1   PB0  /  T0 / XCL / wird vom Motortreiber für Motor 2 Kanal 1 genutzt
Pin 2   PB1  /  T1 / wird vom Motortreiber für Motor 2 Kanal 2 genutzt
Pin 3   PB2  /  AIN0 / INT2  / wird auch vom I2C-Bus genutzt
Pin 4   PB3  /  AIN1 / OC0
Pin 5   PB4  /  SS
Pin 6   PB5  /  MOSI / wird auch vom ISP Anschluss genutzt
Pin 7   PB6  /  MISO / wird auch  vom ISP Anschluss genutzt
Pin 8   PB7  /  SCK / wird auch  vom ISP Anschluss genutzt
Pin 9   GND
Pin 10  +5V

Nach Entfernen des Motortreiber-ICs (IC3) aus der Fassung stehen PB0 und PB1 zur freien Verfügung.

Der komplette Port steht auch nochmals über die Buchsenleiste JP3 zur Verfügung. Auch dort können Drähte zum Experimentieren eingesteckt werden (möglichst 0,6mm²).

Port C Digitale I/O Port C (PC0 bis PC 7)

Über einen Wannenstecker werden gemäß der Roboternetz-Definition 8 I/O Portleitungen mit Sonderfunktionen als auch GND und +5V bereitgestellt.

Die genaue Belegung sieht wie folgt aus:

Pin 1   PC0  /  SCL wird vom I2C-Bus genutzt
Pin 2   PC1  /  SDA wird vom I2C-Bus genutzt
Pin 3   PC2  /  TCK
Pin 4   PC3  /  TMS
Pin 5   PC4  /  TDO
Pin 6   PC5  /  TDI
Pin 7   PC6  /  TOSC1 / wird vom Motortreiber für Motor 1 Kanal 1 genutzt
Pin 8   PC7  /  TOSC2 / wird vom Motortreiber für Motor 1 Kanal 2 genutzt
Pin 9   GND
Pin 10  +5V

Über den 8 fachen DIP Schalter können den Ports auch LEDs zugeschaltet werden! Die LEDs leuchten wenn Port LOW-Zustand annimmt!

Nach Entfernen des Motortreiber ICs (IC3) aus der Fassung stehen PC6 und PC7 zur freien Verfügung. Der komplette Port steht auch nochmals über die Buchsenleiste JP4 zur Verfügung. Auch dort können Drähte zum experimentieren eingesteckt werden (möglichst 0,6mm²).

Port D Digitale I/O Port D (PD0 bis PD 7)

Über einen Wannenstecker werden gemäß der Roboternetz-Definition 8 I/O Portleitungen mit Sonderfunktionen als auch GND und +5V bereitgestellt.

Die genaue Belegung sieht wie folgt aus:

Pin 1   PD0  /  RXD / wird für RS232 Schnittstelle genutzt
Pin 2   PD1  /  TXD  / wird für RS232 Schnittstelle genutzt
Pin 3   PD2  /  INT0
Pin 4   PD3  /  INT1 
Pin 5   PD4  /  OC1B  / wird für PWM Motor 1 benutzt (Geschwindigkeitsregelung)
Pin 6   PD5  /  OC1A  / wird für PWM Motor 2 benutzt (Geschwindigkeitsregelung)
Pin 7   PD6  /  ICP
Pin 8   PD7  /  OC2
Pin 9   GND
Pin 10  +5V

Nach Entfernen des Motortreiber ICs aus der Fassung stehen PD4 und PD5 zur freien Verfügung. Der komplette Port steht auch nochmal über die Buchsenleiste JP5 zur Verfügung. Auch dort können Drähte zum experimentieren eingesteckt werden (möglichst 0,6mm²).

I2C-Bus I2C-Bus

Über diesen Bus lassen sich zahlreiche Erweiterungen an dieses Board anschließen. Zum Beispiel werden auf der Seite robotikhardware.de passende Boards mit Sprachausgabe, Relais, Schrittmotorsteuerung etc. angeboten. Aber auch dieses Board kann selbst als Slave-Board, also als Erweiterung an ein anderes Hauptboard angeschlossen werden. Der I2C-Bus benötig nur 2 Leitungen für alle Funktionen. Entsprechend der Roboternetz-Norm wird hier ein 2x5 poliger Stecker angeschlossen. Die Belegung entspricht exakt der anderer Roboternetz Boards.

Pin 1 SCL (Taktleitung)
Pin 3 SDA (Datenleitung)
Pin 5 +5V
Pin 7 +5V
Pin 9  Batteriespannung
Pin 2,4,6,8 GND
Pin 10  INT

INT - Diese Leitung kann von allen I2C-Bus Erweiterungen genutzt werden um den Hauptcontroller darüber zu informieren das sich Daten (z.B. von Sensoren) verändert haben. In diesem Fall wird die Leitung solange auf Masse gelegt bis der entsprechende I2C-Baustein ausgelesen wird. Die Controller muß also immer alle I2C-Bausteine auslesen solange diese Leitung auf Masse liegt. Diese Leitung ist mit Port PD2 verbunden

Die PINs 5,7,9 und 10 können über herausnehmbare Kurzschlussbrücken (Jumper JP6) vom Board getrennt werden. Dies ist zum Beispiel dann notwendig, wenn bereits ein anderes Masterboard die Spannungen auf den Bus legt. Es darf immer nur ein Board die Spannungen bereitstellen.

ISP ISP – IN SYSTEM PROGRAMMING

Über diesen Anschluß kann der Controller auf dem Sprachboard mit einem Standard ISP-Kabel direkt an einen Parallelport des PCs angeschlossen und programmiert werden. Die Belegung des ISP-Anschlusses ist zu dem weit verbreitetet STK200 Programmier Dongle kompatibel. Ein entsprechender Dongle kann man sich entweder selber basteln (siehe Artikel „ARV Einstieg leicht gemacht“ unter www.roboternetz.de) oder fertig bestellen (z.B. www.robotikhardware.de).

Pin 1 MOSI
Pin 2 VCC
Pin 3 Nicht belegt
Pin 4 GND
Pin 5 RESET
Pin 6 GND
Pin 7 SCK
Pin 8 GND
Pin 9 MISO
Pin 10 GND 
Power Spannungsversorgung

Über diese Schraubklemme wird das Board mit Spannung versorgt. Es reicht eine unstabilisierte Gleichspannung von 7 bis 14V aus (max. 18V wenn Kühlkörper verwendet wird) + und – sind auf der Platine markiert. Das Board ist jedoch auch gegen ein verpolen geschützt, so das nichts kaputt geht!

Motoren Motoren

Über diese 4 polige Schraubklemme können zwei Getriebemotoren (jeweils die beiden linken oder rechten Kontakte) oder ein Schrittmotor angeschlossen werden. Der Motortreiber kann jedoch auch für andere Dinge genutzt werden, z.B zum Ansteuern von Relais, Lämpchen etc. verwendet werden. Die Belastbarkeit liegt bei 1A. Sollen größere Motoren angeschlossen werden, so kann z.B. über den I2C-Port eine andere Endstufe angeschlossen werden.

JP6 I2C-Bus Belegung

Über drei Kurzschlussstecker können wahlweise die Bateriespannung (UB), +5V sowie INT mit dem I2C-Bus verbunden werden. Wenn INT nicht benötigt wird, kann man diesen Jumper offen lassen. Somit hat man einen Port zusätzlich frei zur Verfügung Möchte man das Board über den I2C-Bus mit Spannung versorgen, dann kann man UB oder +5V Jumper einstecken. In diesem Fall braucht/darf keine Spannung an dem Power Schraubklemen angelegt werden. Möchte man umgekehrt andere Boards über den I2C-Bus mit Spannung versorgen, dann müssen die Jumper UB und/oder +5V eingesteckt werden. Durch diesen Jumper ist man für alle Fälle gerüstet. Bei älteren RN-Control Versionen mußte man dazu noch das Kabel ändern.

JP8 Über diesen Stecker kann die stabilisierte 5V Logikspannung für Erweiterungen oder Experimente entnommen werden. Wird mehr als 500mA entnommen, so sollte der Spannungsregler mit einem kleinen Kühlkörper versehen werden.
UREF Referenzspannung

Über eine Kurzschlussstecker kann hier die Referenzspannung von 5V eingestellt werden. Wird der Stecker entfernt, so kann an den analogen Ports nur bis 2,5V gemessen werden (jedoch mit höherer Genauigkeit). Sicherheitshalber sollten Sie den Stecker anfangs eingesteckt lassen! Wird er entfernt, so sollte man daran denken das auch die Batteriespannung über einen analogen Port gemessen wird. Diese darf dann nicht viel höher als 13V sein!

UMOT Motorspannung

Wenn dieser Kurzschlussstecker eingesteckt wird, dann wird die volle Batteriespannung auch für die Motoren benutzt. Ansonsten könnte man über einen PIN dieses Jumpers auch eine höhere Versorgungsspannung für die Motoren nutzen. Dazu sollte sie aber nochmals in den Schaltplan schaun. In der Regel sollte hier ein Jumper eingesteckt sein!

UMESS Batteriespannungsmessung

Wenn diese Kurzschlussbrücke gesteckt ist, dann wird über Port PA6 die Batteriespannung überwacht. Ansonsten ist der Port frei!

S1 DIP Schalter

Mit einem kleinen Schraubenzieher kann über diesen 8 poligen Schalter den Portleitungen PC0 bis PC7 eine LED zugeschaltet werden. Die LEDs leuchten immer dann wenn der Port LOW (0 Pegel) führt. Wenn die LED auf Off geschaltet wird, so kann die LED über eine Drahtbrücke von JP7 mit einem anderen Port verbunden werden.

RS232 PC kompatible RS232 Schnittstelle

Über ein Adapterkabel kann die serielle Schnittstelle des PC direkt mit dem Board verbunden werden. Dies ist dann sinnvoll, wenn Fehler in Programmen gesucht . Einfache PRINT Anweisungen werden von einem Terminalprogramm angezeigt. Hier kann Hyperterminal von Windows oder das eingebaute Terminalprogramm von Bascom empfohlen werden.

Die Belegung ist kompatibel zum Conrad Roboter CCRP5:

Pin 1 RX
Pin 2 GND
Pin 3 TX

Ein geeignetes Anschlußkabel kann schnell selbst angefertigt werden oder gibt es bei robotikhardware.de bereits fertig

JP7 Über diese Buchse sind alle LEDs ganz einfach durch Einstecken eines Drahtes beschaltbar.

Bedenken muß man dabei das die Anode über einen Vorwiderstand immer mit 5V verbunden ist. Die LED leuchtet also nur wenn sie mit der Drahtbrücke auf GND bzw. einen Port mit 0 Pegel gelegt wird.

JP1 Buchsenleiste die dreimal +5V und drei mal GND für Experimente bereitstellt
JP2 Buchsenleiste die den gesamten Port A für steckbare Drähte bereitstellt
JP3 Buchsenleiste die den gesamten Port B für steckbare Drähte bereitstellt
JP4 Buchsenleiste die den gesamten Port C für steckbare Drähte bereitstellt
JP5 Buchsenleiste die den gesamten Port D für steckbare Drähte bereitstellt
TASTER T1 bis T5 Stehen zur freien Verfügung

Die Abfrage ist im Demoprogramm beschrieben

Stückliste

Bauteil Wert       Beschreibung                   Reichelt Best.Nr.
C1      100n       Keramik Kondensator            KERKO100N
C2      100n       Keramik Kondensator            KERKO100N   
C3      22pf       Keramik Kondensator            KERKO-500 22p           
C4      22pf       Keramik Kondensator            KERKO-500 22p          
C5      4,7uF      Elko                           SM 4,7/50RAD           
C6      4,7uF      Elko                           SM 4,7/50RAD           
C7      4,7uF      Elko                           SM 4,7/50RAD           
C8      4,7uF      Elko                           SM 4,7/50RAD           
C9      1uF        Elko                           SM 1,0/63RAD           
C10     100n       Keramik Kondensator            KERKO100N              
C11     100n       Keramik Kondensator            KERKO100N              
C12     100n       Keramik Kondensator            KERKO100N              
C13     1000uF     Elko                           RAD 1.000/35            
C14     100n       Keramik Kondensator            KERKO100N              
C15     100n       Keramik Kondensator            KERKO100N              
C16     100n       Keramik Kondensator            KERKO100N              
C17     220uF      Elko                           RAD 220/35             
C18     100n       Keramik Kondensator            KERKO100N              
D1      1N4148     Diode                          1n 4148                
D2      BYV27      Diode                          BYV 27/200             
I2C-BUS I2C        Wannenbuchse                   WSL 10G                
IC1     MAX232     RS232 Treiber                  MAX 232 CPE             
IC2     7805       Spannungsregler                µA 78S05                  
IC3     L293D      Motortreiber                   L 293 D                
IC4     MEGA16-P   Atmel Mega 16 oder 32          ATMEGA 16-16           
ISP     AVR-ISP    Wannenbuchse                   WSL 10G                
JP1                Kontaktbuchse (manuell kürzen) SPL 20                  
JP2                Kontaktbuchse (manuell kürzen) SPL 20                 
JP3                Kontaktbuchse (manuell kürzen) SPL 20                  
JP4                Kontaktbuchse (manuell kürzen) SPL 20                 
JP5                Kontaktbuchse (manuell kürzen) SPL 20                 
JP6                Stiftleiste   (teilen)         SL 2X50G 2,54 
JP7                Kontaktbuchse (manuell kürzen) SPL 20                 
JP8                Stiftleiste                    LU 2,5 MS 2             
LED1               Leuchtdiode Low                LED 3MM 2MA GN         
LED2               Leuchtdiode Low                LED 3MM 2MA GN         
LED3               Leuchtdiode Low                LED 3MM 2MA GN         
LED4               Leuchtdiode Low                LED 3MM 2MA GN         
LED5               Leuchtdiode Low                LED 3MM 2MA GN         
LED6               Leuchtdiode Low                LED 3MM 2MA GN         
LED7               Leuchtdiode Low                LED 3MM 2MA GN         
LED8               Leuchtdiode Low                LED 3MM 2MA GN         
MOTOREN            Schraubklemme 4 polig          AKL 101-04             
PORTA              Steckklemme 8 polig            WAGO 233-508           
PORTB              Wannenbuchse                   WSL 10G                
PORTC              Wannenbuchse                   WSL 10G                
PORTD              Wannenbuchse                   WSL 10G                
POWER              Schraubklemme 2 polig          AKL 101-02              
Q1                 Quarz 16 Mhz                   16,0000-HC18                
R1      100k       Widerstand 100k                1/4W 100k              
R2      1k         Widerstand 1k                  1/4W 1,0k                
R3      10k        Widerstand 10k                 1/4W 10k               
R4      1k         Widerstand 1k                  1/4W 1,0k                
R5      1k         Widerstand 1k                  1/4W 1,0k                
R6      1k         Widerstand 1k                  1/4W 1,0k                
R7      1k         Widerstand 1k                  1/4W 1,0k                
R8      1k         Widerstand 1k                  1/4W 1,0k                
R9      22k        Widerstand 22k                 1/4W 22k               
R10     5,1k       Widerstand 5,1k                1/4W 5,1k              
R11     10k        Widerstand 10k                 1/4W 10k               
R12     10k        Widerstand 10k                 1/4W 10k               
R13     10k        Widerstand 10k                 1/4W 10k               
R14     10k        Widerstand 10k                 1/4W 10k               
RESET   TASTER3301 Minitaster liegend             TASTER 3301            
RN1                Widerstandsnetzwerk            SIL 9-8 1,0k           
RS232              Stiftleiste 3 polig            LU 2,5 MS 3             
S1                 DIP Schalter 8 polig           NT08                   
SPEAKER F/CM12P    Mini Piezo Lautsprecher        SUMMER EPM 121         
T1      TASTER3301 Minitaster liegend             TASTER 3301            
T2      TASTER3301 Minitaster liegend             TASTER 3301            
T3      TASTER3301 Minitaster liegend             TASTER 3301            
T4      TASTER3301 Minitaster liegend             TASTER 3301            
T5      TASTER3301 Minitaster liegend             TASTER 3301            
UMESS              Stiftleiste                    LU 2,5 MS 2             
UMOT               Stiftleiste                    LU 2,5 MS 2             
UREF               Stiftleiste                    LU 2,5 MS 2

Basic Beispieltestprogramm

Das gleiche Demo findet man jetzt auch für C unter "RN-Control Demoprogramm in C".

'################################################### 
'rncontroltest.BAS 
'für 
'RoboterNetz Board RN-CONTROL ab Version 1.1 
'Das neue preiswerte Controllerboard zum Experimentieren 

' Achtung: 
' Diese Demo ist mit Bascom Compiler 1.11.7.7 getestet 

' 
'Aufgabe: 
' Dieses Testprogramm testet gleich mehrere Eigenschaften auf dem Board 
' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet 
' Taste 1: Zeigt Batteriespannung über RS232 an 
' Taste 2: Angeschlossene Motoren beschleunigen und abbremsen 
' Taste 3: Einige Male Lauflicht über LEDs anzeigen. Am I2C-Bus 
'          darf in diesem Moment nichts angeschlossen sein 
' Taste 4: Zeigt analoge Messwerte an allen Port A PINs über RS232 an 
''Taste 5: Zeigt digitalen I/O Zustand von PA0 bis PA5 an 


' Sehr gut kann man aus dem Demo auch entnehmen wie Sound ausgegeben wird, 
' wie Tasten abgefragt werden und wie Subroutinen und Funktionen angelegt werden 

'Autor: Frank 
'####################################################### 


Declare Sub Batteriespannung() 
Declare Sub Motortest() 
Declare Sub Lauflicht() 
Declare Sub Showporta() 
Declare Sub Showdigitalporta() 
Declare Function Tastenabfrage() As Byte 


$regfile = "m32def.dat" 
' bei Mega 16 $regfile = "m16def.dat" 
$framesize = 32 
$swstack = 32 
$hwstack = 32 


Dim I As Integer 
Dim N As Integer 
Dim Ton As Integer 

$crystal = 16000000                           'Quarzfrequenz 
$baud = 9600 

Config Adc = Single , Prescaler = Auto        'Für Tastenabfrage und Spannungsmessung 

Config Pina.7 = Input                         'Für Tastenabfrage 
Porta.7 = 1                                   'Pullup Widerstand ein 


Const Ref = 5 / 1023                          'Für Batteriespannungsberechnung 

Dim Taste As Byte 
Dim Volt As Single 

' Für Motorentest 
'Ports für linken Motor 
Config Pinc.6 = Output                       'Linker Motor Kanal 1 
Config Pinc.7 = Output                       'Linker Motor Kanal 2 
Config Pind.4 = Output                       'Linker Motor PWM 
'Ports für rechten Motor 
Config Pinb.0 = Output                       'Rechter Motor Kanal 1 
Config Pinb.1 = Output                       'Rechter Motor Kanal 2 
Config Pind.5 = Output                       'Rechter Motor PWM 
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 
Pwm1a = 0 
Pwm1b = 0 
Tccr1b = Tccr1b Or &H02                      'Prescaler = 8 





I = 0 
Sound Portd.7 , 400 , 450                    'BEEP 
Sound Portd.7 , 400 , 250                    'BEEP 
Sound Portd.7 , 400 , 450                    'BEEP 
Print 
Print "**** RN-CONTROL 1.4 *****" 
Print "Das neue Experimentier- und Roboterboard" 
Print "Weitere passende Zusatzboards bei www.robotikhardware.de" 
Print 
Do 




   Taste = Tastenabfrage() 
   If Taste <> 0 Then 

      Select Case Taste 
         Case 1 
            Call Batteriespannung    'Taste 1 Zeigt Bateriespannung über RS232 an 
         Case 2 
            Call Motortest           'Taste 2 Motoren beschleunigen und abbremsen 
         Case 3 
            Call Lauflicht           'Einige Male Lauflicht über LEDs anzeigen. 
                                     'Am I2C-Port darf in diesem Moment nichts angeschlossen sein 
         Case 4 
            Call Showporta           'Zeigt Messwerte an allen Port A PINs 
         Case 5 
            Call Showdigitalporta    'Zeigt digitalen I/O Zustand von PA0 bis PA5 an 



      End Select 
      Sound Portd.7 , 400 , 500      'BEEP 
   End If 

   Waitms 100 
Loop 

End 



'Diese Unterfunktion fragt die Tastatur am analogen Port ab 
Function Tastenabfrage() As Byte 
Local Ws As Word 

   Tastenabfrage = 0 
   Ton = 600 
   Start Adc 
   Ws = Getadc(7) 
  ' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws 
   If Ws < 500 Then 
      Select Case Ws 
         Case 400 To 450 
            Tastenabfrage = 1 
            Ton = 550 
         Case 330 To 380 
            Tastenabfrage = 2 
            Ton = 500 
         Case 260 To 305 
            Tastenabfrage = 3 
            Ton = 450 
         Case 180 To 220 
            Tastenabfrage = 4 
            Ton = 400 
         Case 90 To 130 
            Tastenabfrage = 5 
             Ton = 350 
 '        Case Else 
'              Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws 
      End Select 
      Sound Portd.7 , 400 , Ton                             'BEEP 

   End If 


End Function 



'Diese Unterfunktion zeigt Batteriespannung an 
Sub Batteriespannung() 
Local W As Word 
   Start Adc 
   W = Getadc(6) 
   Volt = W * Ref 
   Volt = Volt * 5.2941 
   Print "Die aktuelle Spannung beträgt: " ; Volt ; " Volt" 

End Sub 


'Testet Motoren und Geschwindigkeitsreglung 
Sub Motortest() 
   'Linker Motor ein 
   Portc.6 = 1                          'bestimmt Richtung 
   Portc.7 = 0                          'bestimmt Richtung 
   Portd.4 = 1                          'Linker Motor EIN 

   'Rechter Motor ein 
   Portb.0 = 1                          'bestimmt Richtung rechter Motor 
   Portb.1 = 0                          'bestimmt Richtung rechter Motor 
   Portd.5 = 1                          'rechter Motor EIN 


   I = 0 
   Do 
      Pwm1a = I 
      Pwm1b = I 
      Waitms 40 
      I = I + 5 
   Loop Until I > 1023 

   Wait 1 
   Do 
      Pwm1a = I 
      Pwm1b = I 
      Waitms 40 
      I = I - 5 
   Loop Until I < 1 
   Pwm1a = 0                            'Linker Motor aus 
   Pwm1b = 0                            'rechter Motor aus 
End Sub 


' Einige Male Lauflicht über LEDs anzeigen. Am I2C-Port darf in diesem 
' Moment nichts angeschlossen sein 
Sub Lauflicht() 

   Config Portc = Output 
   Portd = 0 
   For N = 1 To 10 
      For I = 0 To 7 
         Portc.i = 0 
         Waitms 100 
         Portc.i = 1 
      Next I 
   Next N 
   Config Portc = Input 
End Sub 


'Zeigt die analogen Messwerte an Port A an 
Sub Showporta() 
Local Ws As Word 

   Config Porta = Input 
   For I = 0 To 5                        ' Alle internen Pullup Widerstände ein, bis auf Batteriespannungsmessungsport 
      Porta.i = 1 
   Next I 

   Print 
   Print "Ermittelte Messwerte an Port A:" 
   For I = 0 To 7                        ' Alle Eingänge inkl. messen 
      Start Adc 
      Ws = Getadc(i) 
      Volt = Ws * Ref 
      Print "Pin " ; I ; " ADC-Wert= " ; Ws ; " bei 5V REF waeren das " ; Volt ; " Volt" 
   Next I 
End Sub 


'Zeigt den Zustand einiger freier I/O von Die Analogen Messwerte An Port A An 
Sub Showdigitalporta() 
Local Zustand As String * 6 
   Config Porta = Input 
   For I = 0 To 5                        ' Alle internen Pullup Widerstände ein, bis auf Batteriespannungsmessungsport 
      Porta.i = 1 
   Next I 

   Print 
   Print "Ermittelter I/O Zustand Port A:" 
   For I = 0 To 5                        ' Alle Eingänge inkl. messen 
      If Pina.i = 1 Then 
         Zustand = "High" 
      Else 
         Zustand = "Low" 
      End If 
      Print "Pin " ; I ; " I/O Zustand= " ; Pina.i ; " " ; Zustand 
   Next I 
End Sub

Programmierung per Druckerport, USB oder RS232

RN-Control wird üblicherweise mit einem sogenannten ISP-Dongel programmiert. Die günstigste Ausführung gibt es für einen parallelen Druckerport, siehe auch unter AVR-ISP Programmierkabel. Etwas teurer aber auch schneller ist ein USBISP-Dongel. Wie genau der Ablauf vonstatten geht wird in der Anleitung (PDF-Dokument siehe Links) genau beschrieben. Seit März 2007 wird RN-Control aber auch mit installiertem Bootloader ausgeliefert. Dies hat den Vorteil, dass das Board nun auch ohne ISP-Dongel per RS232 Kabel mit dem Bascom Compiler programmiert werden kann. Dies ist recht angenehm für Notebook Besitzer, die keinen parallelen Druckerport haben und denen der USBISP-Dongel am Anfang etwas zu teuer erscheint. Nähere Hinweise dazu sind ebenfalls in der überarbeiteten PDF-Anleitung (siehe Weblinks unten auf der Seite) zu finden.

Anschlussbeispiele

Da sich Einsteiger mit dem Anschluss von Sensoren oder Verbrauchern manchmal etwas schwer tun, hier eine Skizze, wie man zum Beispiel bestimmte Dinge wie Entfernungssensoren, Servos, Lämpchen oder Helligkeits- bzw. Temperatursensoren anschließen könnte. Bei den Lämpchen sollte man beachten, dass sie zusammen weniger als 1A Strom benötigen, da ansonsten der zuständige Treiber (Motortreiber L293D) überhitzt würde. Natürlich könnte man auch größere Lasten schalten, indem man z.B. statt den Lämpchen Relais anschließt. Auch viele weitere Sensoren könnten natürlich an die noch freien Ports angeschlossen werden, beachten muss man nur, ob der Sensor einen Digital- oder Analogport benötigt. Das Servo wird in der Skizze mit 5V versorgt, daher sollte man den Spannungsregler mit einem Kühlkörper versehen.

Rncontrolanschlussbeispiel.png


Ultraschallmodul am I2C-Bus (mehrere möglich)


Auch ein elektronischer Kompass läßt sich leicht am I2C Bus anschließen


Beispielschaltung wenn man lediglich die Drehzahl ohne Drehrichtung auswerten möchte. Als Widerstand hat sich 330 Ohm als gut erwiesen. Als Sensor wurde hier ein GP1A30 verwendet


Auch passende Joysticks/Joypads lassen sich einfach an RN-Control anschließen


Über Adapter lassen sich die Wannenstecker auch durch Steckklemmen mit Portüberwachung ersetzen. Dadurch wird die Verdrahtung noch flexibler


Digitalanzeige an RN-Control


Der neue Ultraschallsensor SRF02 im I2C Mode über Adapter an RN-Control


Der neue Ultraschallsensor SRF02 im RS232 Mode an RN-Control


Ein LCD mittels RN-LCDAdapter angeschlossen.

Projektbeispiel mit RN-Control

Allwetterbot.jpg


RN-Control die Alternative zu Arduino

Wenn man in C-Programmieren möchte kann man sich die Arbeit etwas erleichtern indem man die Entwicklungsumgebung und sogar Bibliotheken von Arduino nutzt. Bernd Klein hat die Arduino Bibliothek für RN-Control angepasst, siehe Link ganz unten auf dieser Wiki-Seite. Dadurch nutzt man die Vorteile beider Welten, die Leistung und vielen Ports des RN-Control (hier ist RN-Control mit einem Mega32 den gängigen Arduino Boards (z.B. Arduino Uno,doch erheblich überlegen) und gleichzeitig die kostenlose Entwicklungsumgebung und Tools von Arduino die besonders für C-Einsteiger hilfreich sein können.

Siehe auch

Freies Elektronik Projekt von mikrocontroller-elektronik.de/

Weblinks