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
Error code: 134
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.
Inhaltsverzeichnis
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)
http://www.robotikhardware.de/bilder/rncontro4.jpg
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.
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-Port´s 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 Durch entfernen des Motortreiber IC´s aus der Fassung, steht 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 LED´s zugeschaltet werden! Die LED´s leuchten wenn Port LOW-Zustand annimmt! Durch entfernen des Motortreiber IC´s aus der Fassung, steht 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 Durch entfernen des Motortreiber IC´s aus der Fassung, steht 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 PIN´s 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 PC´s 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 LED´s 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 LED´s 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 1000/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 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) SPL20 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 Stiftl. 2x50g (teilen) JP7 Kontaktbuchse (manuell kürzen) SPL 20 JP8 Stiftleiste LU 2,5 MS2 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-HC18 R1 100k Widerstand 100k 1/4W 100k R2 1k Widerstand 1k 1/4W 1k R3 10k Widerstand 10k 1/4W 10k R4 1k Widerstand 1k 1/4W 1k R5 1k Widerstand 1k 1/4W 1k R6 1k Widerstand 1k 1/4W 1k R7 1k Widerstand 1k 1/4W 1k R8 1k Widerstand 1k 1/4W 1k 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 MS3 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 MS2 UMOT Stiftleiste LU 2,5 MS2 UREF Stiftleiste LU 2,5 MS2
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.
Projektbeispiel mit RN-Control
Siehe auch
- Beispiel Drehzahlmessung mit RN-Control
- Ultraschall SRF10 an RN-Control
- Ultraschallsensor SRF02 am RN-Board
- Bascom und Kompass CMPS03
- 4 stellige Digitalanzeige an RN-Control
- LCD an RN-Control
- RN-Control Demprogramm in C
- Bascom
- Bascom - Erstes Programm in den AVR Controller übertragen
- Versenden von Emails's direkt vom RN-Control aus
- RN-Definitionen
- RN-Board FAQ-Seite
- Avr
- RN-Mega8
- RNBFRA-Board