Dieses Board wurde speziell zum Experimentieren mit dem Mikrocontroller entworfen. Es eignet sich auch vorzüglich für den Einstieg in die Bereich Robotik und Mikrocontroller. Aber auch zahlreiche andere Verwendungen sind denkbar, das kostengünstig aufzubauende Board kann auch sehr gut zum realisieren von ersten Projekten eingesetzt werden..
Hunderte von Bastlern haben dieses Board schon aufgebaut und damit den Einstieg in die Mikroelektronik erlernt. Dadurch ist auch schnelle Hilfe bei Soft- und Hardwarefragen in gängigen Foren wie dem Roboternetz.de möglich. Viele Beispielprogramme findet man ebenfalls im Roboternetz, RN-Wissen.de und natürlich hier auf Mikrocontroller-Elektronik.de. Das Board wurde unter der CC-Lizenz mit Eagle-Dateien veröffentlicht.
Die Features des Controllerboard RN-Control
- Wahlweise 7,37 oder 16 Mhz Taktfrequenz (auch beliebiger anderer Quarz denkbar), empfohlen wird 16 Mhz!
- Schneller AVR Mega 16 oder Mega 32 Mikrocontroller (bis zu 32K Speicher, 2K Ram und 1K EEPROM), 32 programmierbare I/O Pins,8 AD Ports u.v.m.
Alternativ auch ATMega 644 verwendbar - 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 Steckerbelegung entspricht der Roboternetz-Definition als auch der des Atmel Entwicklungsboards STK500
- alle Ports sind zusätzlich über Steckbuchse erreichbar. Ideal zum experimentieren da einfach Drähte (ca. 0,5mm²) eingesteckt werden (kein Löten oder schrauben). So können einfach andere LED´s 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 mit ca. 1A (2x 0,5A) 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)
- auch per RS232 Programmierbar wenn man Bootloader installiert (siehe in Doku hinten unter BOOTLOADER)
- Betriebsspannung wahlweise zwischen 7 und 18V (empfohlen 7 bis 14 V) – wahlweise auch höhere Motorspannung bis 24V möglich)
- Sehr kompakt, nur halbes Europaformat nach Roboternetz-Definition (ca. 100x75mm)
- I2C-Bus über die zahlreiche Erweiterungsplatinen anschließbar sind (z.B. Sprachausgabe RN-Speak, Relaisboard RN-Relais, Servoboards, LCD´s uvm.)
- Programmierbar in zahlreichen Sprachen, z.B. Basic (BASCOM ), C (GCC), AVR-Studio, Assembler, Pascal (viele Entwicklungsumgebungen sind frei im Internet erhältlich)
- Deutsche Doku mit Basic Programmbeispiel auf dieser Seite www.mikrocontroller-elektronik.de
- Kein Starter- oder Applikationsboard notwendig – bereits alles integriert!
Bestandteile des Controllerboard
Tipps zum Aufbau und Inbetriebnahme
Aufbau
Der Aufbau der Schaltung ist durch eine vorgefertigte Platine eigentlich völlig problemlos auch von Elektronik-Einsteigern mit einigen Grundkenntnissen zu bewerkstelligen.Die Eagle-Dateien zum Projekt findet ihr am Ende dieses Beitrages. Diese können genutzt werden um sich bei einem Platinenhersteller eine Platine anfertigen zu lassen. Auf unserer Seite nennen wir gerne einige Hersteller die sowas machen.
Durch den Bestückungsdruck und die Bestückungsliste, etwas weiter hinten in dieser Dokumentation, ist der Aufbau unkritisch. Aufgrund moderner Bauteile hält sich die Anzahl der Kleinteile in Grenzen, weshalb die Schaltung meist in ca. 30 bis 60 Minuten aufgebaut ist.
Dennoch einige Anmerkungen zu kleinen Hürden:
- Das Board verwendet zwei Widerstandsnetzwerke . Auf der Platine ist die mit RN1 und RN2 gekennzeichnet. Da diese Teile Einsteigern noch nicht so bekannt sind, möchte ich darauf hinweisen das diese richtig herum eingelötet werden müssen. Auf den schwarzen Teilen ist auf einer Seite ein Punkt. Dieser Punkt muss auf die Seite wo auf der Platine eine kleine 1 aufgedruckt ist.
- Sie können frei wählen welchen Quarz Sie einlöten. In der Regel reichen 7,3728 Mhz voll aus, damit ist das Board noch immer schneller als viele vergleichbare Boards dieser Preisklasse, zudem braucht es dann weniger Strom als mit 16 Mhz. Brauchen Sie jedoch die volle Rechenpower, dann ist 16 Mhz sinnvoll. Bei 16 Mhz brauchen Sie jedoch auch einen guten Programmieradapter, billige Lösungen machen hier manchmal Probleme mit der Übertragung. Einige werden wir demnächst auf unserer Seite vorstellen!
Dir krumme Zahl 7,3728 Mhz hat noch einen zweiten Vorteil. Mit dieser Frequenz ist die Baudrate der RS232 ganz exakt, weshalb sich damit höhere Übertragunsgeschwindigkeiten erreichen lassen. - Achten Sie darauf das die Taster richtig herum eingelötet ist. Richten Sie sich am besten nach dem Foto. Wenn die Platine so vor ihnen liegt das die Beschriftungen T1, T2, T3 usw. auf dem Kopf stehen, dann dürfen die Beine der Tastern nur links und rechts von dem Tastergehäuse zu sehen sein.
- Erfahrenere Anwender die die Referenzspannung von 2,5V zusammen mit der Batterieüberwachung nutzen wollen und zugleich mehr als 13,4V Eingangsspannung anlegen möchten, wird empfohlen bei R9 einen größeren Widerstand als 22K zu verwenden (z.B. 33k). Einsteiger sollten den Jumper (Kurzschlusstecker) auf UREF immer erst gesteckt lassen (UREF ist dann 5V).
- Bezüglich der Polung LED´s auf den Bestückungsdruck in der Anleitung achten. Da wo die flache Seite der LED ist, muss das kurze Bein (Kathode) eingelötet werden
- Nicht vergessen das zu den meisten IC´s Fassungen mitgeliefert werden, also immer Fassung und nicht IC direkt einlöten
- Die Polung des Piezo Lautsprechers ist nicht zu beachten, er kann beliebig eingelötet werden
Das waren eigentlich schon die besonderen Punkte die zu beachten sind. Ansonsten natürlich sauber mit einem 15 – 30 W Lötkolben (gibt es z.B. bei Conrad*) alles auf der Unterseite verlöten. Grundkenntnisse beim Löten werden empfohlen.
Nach dem Aufbau sollten Sie nochmals alle Lötpunkte kontrollieren. Wenn Sie dann Spannung anlegen, dann sollten deutlich weniger als 100mA Strom fließen. Ist der Strom höher, dann deutet das auf ein Lötfehler hin.
Das Testprogramm kann dann recht einfach mit Bascom oder Pony übertragen werden. Per Tastendruck können anschließend verschiedene Boardeigenschaften überprüft werden.
Der Spannungsregler wird beim Betrieb von RN-Control sehr warm, insbesondere wenn alle LED´s leuchten und eventuell noch Verbraucher angeschlossen sind. Dies ist jedoch völlig normal und kein Grund zur Besorgnis, der Spannungsregler ist dafür ausgelegt. Er ist im übrigen intern mit einem Hitzeschutz als auch Kurzschlussschutz ausgestattet, er ist also nahezu unzerstörbar.
Lediglich wenn sie Verbraucher anschließen welche sehr viel Strom der 5V Leitung entnehmen, so kann es erforderlich werden ein Kühlkörper anzuschrauben. RN-Control ist so konstruiert das wahlweise ein Kühlkörper montiert werden kann oder aber das der Spannungsregler einfach an eine Gehäusewand geschraubt wird. Alternativ wäre auch ein Metallwinkel denkbar welcher die Wärme auf ein Bodenblech weiterleitet. Diese Kühlmaßnahmen sind wie gesagt nur bei höherer Stromentnahme notwendig, zum Beispiel wenn Sie ein LCD mit Beleuchtung anschließen. Die Beleuchtung kann bei vielen LCD´s schon recht viel Strom verbrauchen.
Pinbelegung der Anschlüsse, Regler und Kurzschluss-Brücken
Die genaue Beschreibung wird durch anklicken aufgeklappt!
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 roboternetz.de passende Boards mit Sprachausgabe, Relais, Schrittmotorsteuerung etc. vorgestellt.
Aber auch dieses Board kann selbst als Slave-Board, also als Erweiterung an ein anderes Hauptboard angeschlossen werden.
Der I2C-Bus benötigt nur 2 Leitungen für alle Funktionen. Entsprechend der Roboternetz-Definition wird hier ein 2×5 poliger Stecker angeschlossen. Die Belegung entspricht exakt der anderer Roboternetz Boards.
Pin 1 SCL (Taktleitung) Port PC0 Pin 3 SDA (Datenleitung) Port PC1 Pin 5 +5V Pin 7 +5V Pin 9 Batteriespannung Pin 2,4,6,8 GND Pin 10 INT
Hinweis zu Pin 10 (INT): Diese Leitung kann von allen I2C-Bus Erweiterungen genutzt (Port PB2)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 muss 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 Anschluss 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 „AVR Einstieg leicht gemacht“ unter www.rn-wissen.de) oder im Handel kaufen.
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 bei einem Fehler nichts kaputt geht!
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 maximal 1A. Sollen größere Motoren angeschlossen werden, so kann z.B. über den I2C-Port eine anderer Motortreiber angeschlossen werden.
JP6
I2C-Bus Belegung
Über drei Jumper (Kurzschluss-Brücken) können wahlweise die Batteriespannung (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 musste 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 200mA entnommen, so sollte der Spannungsregler mit einem kleinen Kühlkörper versehen werden.
UREF
Referenzspannung
Über einen Jumper (Kurzschluss-Brücke) 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 Jumper (Kurzschluss-Brücke) 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 schauen.
In der Regel sollte hier ein Jumper eingesteckt sein!
UMESS1
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:
Pin 1 RX Pin 2 GND Pin 3 TX
Ein geeignetes Anschlußkabel kann schnell selbst angefertigt werden.
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
Steckbuchsen
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.
Quellcode Beispiel- und Testprogramm
Beispielprogramm Quellcode (zum aufklappen)
'################################################### ' '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 LED´s anzeigen. Am I2C-Bus ' darf in diesem Moment nichts angeschlossen sein ' Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s ü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 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de oder https://www.mikrocontroller-elektronik.de/ '####################################################### $programmer = 12 '1=LPT stk200 13=MCS Bootloader 12=USBISP 7=allavr/mk2 $PROG &HFF,&HFF,&HDB,&HFF' generated. Take care that the chip supports all fuse bytes. Declare Sub Batteriespannung() Declare Sub Motortest() Declare Sub Lauflicht() Declare Sub Showporta() Declare Sub Showdigitalporta() Declare Function Tastenabfrage() As Byte '$PROG &HFF,&HFF,&HDB,&H00' Ohne bootloader $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_up , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 10 , Compare_A_Pwm = Clear_up , Compare_B_Pwm = Clear_up Pwm1a = 0 Pwm1b = 0 Tccr1b = Tccr1b Or &H02 'Prescaler = 8 I = 0 For I = 650 To 300 Step -2 Sound Portd.7 , 5 , I Next I For I = 301 To 900 Sound Portd.7 , 5 , I Next I Waitms 200 Sound Portd.7 , 400 , 450 'BEEP Sound Portd.7 , 400 , 250 'BEEP Sound Portd.7 , 400 , 450 'BEEP Print Print "**** RN-CONTROL 1.41 *****" Print "Demoprogramm von https://www.mikrocontroller-elektronik.de/ Print "Das beliebte Experimentier- und Roboterboard" Print "Weitere passende Zusatzboards bei https://www.mikrocontroller-elektronik.de/" Print "lassen sich sehr bequem mit Bascom-Basic programmieren." Print "Viele Tipps und Foren zu den RN-Boards gibt es unter" Print "www.roboternetz.de und www.rn-wissen.de" 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 LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein Case 4 Call Showporta 'Zeigt Messwerte an allen Port A PIN´s 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 370 To 450 'oder 400 x 450 Tastenabfrage = 1 Ton = 550 Case 300 To 369 Tastenabfrage = 2 Ton = 500 Case 230 To 299 Tastenabfrage = 3 Ton = 450 Case 150 To 229 Tastenabfrage = 4 Ton = 400 Case 80 To 149 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() Print "Motoren werden getestet ... "; Pwm1a=0 Pwm1b =0 print "Motoren ein" '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 wait 1 print "Langsam beide hochfahren ..." I = 0 Do Pwm1a = I Pwm1b = I Waitms 40 I = I + 5 Loop Until I > 1023 print "Beide Vollgas erreicht" Wait 1 print "beide langsam herunterfahren ..." i=1023 Do Pwm1a = I Pwm1b = I Waitms 40 I = I - 5 Loop Until I < 1 Pwm1a = 0 'Linker Motor aus Pwm1b = 0 'rechter Motor aus print "Beide gestoppt ..." wait 1 print "nun gleiche in andere richtung ..." 'andere Richtung 'Linker Motor ein Portc.6 = 0 'bestimmt Richtung Portc.7 = 1 'bestimmt Richtung Portd.4 = 1 'Linker Motor EIN 'Rechter Motor ein Portb.0 = 0 'bestimmt Richtung rechter Motor Portb.1 = 1 '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 i=1023 Do Pwm1a = I Pwm1b = I Waitms 40 I = I - 5 Loop Until I < 1 Pwm1a = 0 'Linker Motor aus Pwm1b = 0 'rechter Motor aus Print "Habe fertig ;-)" End Sub 'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein Sub Lauflicht() Print "Lauflicht - schau auf das Board. Achte darauf das DIP Schalter on sind" 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änd ein,bis auf Batteriespannungsmessungsport Porta.i = 1 Next I Print Print "Ermittelte Messwerte an Port A:" For I = 0 To 7 ' Alle Eingäne 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änd ein,bis auf Batteriespannungsmessungsport Porta.i = 1 Next I Print Print "Ermittelter I/O Zustand Port A:" For I = 0 To 5 ' Alle Eingäne 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
Schaltplan
Bestückungsplan
Bauteileliste mit Bezugsquellen
Bauteil Beschreibung Link zu einer Bezugsquelle Bestellseite C1 100n Keramik Kondensator Bezugsquelle* C2 100n Keramik Kondensator Bezugsquelle* C3 22pf Keramik Kondensator Bezugsquelle* C4 22pf Keramik Kondensator Bezugsquelle* C5 4,7uF Elko Bezugsquelle* C6 4,7uF Elko Bezugsquelle* C7 4,7uF Elko Bezugsquelle* C8 4,7uF Elko Bezugsquelle* C9 1uF Elko Bezugsquelle* C10 100n Keramik Kondensator Bezugsquelle* C11 100n Keramik Kondensator Bezugsquelle* C12 100n Keramik Kondensator Bezugsquelle* C13 1000uF Elko Bezugsquelle* C14 100n Keramik Kondensator Bezugsquelle* C15 100n Keramik Kondensator Bezugsquelle* C16 100n Keramik Kondensator Bezugsquelle* C17 220uF Elko Bezugsquelle* C18 100n Keramik Kondensator Bezugsquelle* D1 1N4148 Diode Bezugsquelle* D2 BYV27 Diode Bezugsquelle* I2C-BUS I2C Wannenbuchse Bezugsquelle* IC1 MAX232 RS232 Treiber Bezugsquelle* IC2 7805 Spannungsregler Bezugsquelle* IC3 L293D Motortreiber Bezugsquelle* IC4 Atmel Mega16,32 oder 644 Bezugsquelle* ISP AVR-ISP Wannenbuchse Bezugsquelle* JP1 Kontaktbuchse(manuell kürzen) Bezugsquelle* JP2 Kontaktbuchse(manuell kürzen) Bezugsquelle* JP3 Kontaktbuchse(manuell kürzen) Bezugsquelle* JP4 Kontaktbuchse (manuell kürzen) Bezugsquelle* JP5 Kontaktbuchse (manuell kürzen) Bezugsquelle* JP6 Stiftleiste Stiftl. 2x50g (teilen) Bezugsquelle* JP7 Kontaktbuchse (manuell kürzen) Bezugsquelle* JP8 Stiftleiste Bezugsquelle* LED1 Leuchdiode Low LED Bezugsquelle* LED2 Leuchdiode Low LED Bezugsquelle* LED3 Leuchdiode Low LED Bezugsquelle* LED4 Leuchdiode Low LED Bezugsquelle* LED5 Leuchdiode Low LED Bezugsquelle* LED6 Leuchdiode Low LED Bezugsquelle* LED7 Leuchdiode Low LED Bezugsquelle* LED8 Leuchdiode Low LED Bezugsquelle* MOTOREN Schraublemme 4 polig Bezugsquelle* PORTA Steckklemme 8 polig Bezugsquelle* PORTB Wannenbuchse Bezugsquelle* PORTC Wannenbuchse Bezugsquelle* PORTD Wannenbuchse Bezugsquelle* POWER Schraubklemme 2 polig Bezugsquelle* Q1 Quarz 16 Mhz Bezugsquelle* R1 Widerstand 100k Bezugsquelle* Reichelt R2 Widerstand 1k Bezugsquelle* Reichelt R3 Widerstand 10k Bezugsquelle* Reichelt R4 Widerstand 1k Bezugsquelle* Reichelt R5 Widerstand 1k Bezugsquelle* Reichelt R6 Widerstand 1k Bezugsquelle* Reichelt R7 Widerstand 1k Bezugsquelle* Reichelt R8 Widerstand 1k Bezugsquelle* Reichelt R9 Widerstand 22k Bezugsquelle* Reichelt R10 Widerstand 5,1k Bezugsquelle* Reichelt R11 Widerstand 10k Bezugsquelle* Reichelt R12 Widerstand 10k Bezugsquelle* Reichelt R13 Widerstand 10k Bezugsquelle* Reichelt R14 Widerstand 10k Bezugsquelle* Reichelt RESET TASTER3301 Minitaster liegend Bezugsquelle* RN1 Widerstandsnetzwerk Bezugsquelle* RS232 Stiftleiste 3 polig Bezugsquelle* oder Conrad* S1 DIP Schalter 8 polig Bezugsquelle* SPEAKER Mini Piezo Lautsprecher SUMMER Bezugsquelle* T1 Minitaster liegend Bezugsquelle* T2 Minitaster liegend Bezugsquelle* T3 Minitaster liegend Bezugsquelle* T4 Minitaster liegend Bezugsquelle* T5 Minitaster liegend Bezugsquelle* UMESS Stiftleiste 2pol (4er teilen) Bezugsquelle* oder Conrad* UMOT Stiftleiste 2pol (4er teilen) Bezugsquelle* oder Conrad* UREF Stiftleiste 2pol (4er teilen) Bezugsquelle* oder Conrad* Alle Angaben ohne Gewähr *Bezugsquellenlink (Affilinet)
Projekt-Downloads
Datei (oder Zip Archiv) | Version | |
---|---|---|
Eagle Platinenlayout & Schaltplan (zip) | 1.41 | Download |
Ausführliche Projekt-Dokumentation (.pdf) | 1.41 | Download |
Bascom-Testprogramm (.zip) | Download |
Leiterplatte zum Projekt bestellen
Neu! Die Leiterplatte für dieses Projekt ist direkt über den Shop PlatinenCenter erhältlich. Da die Platinen dort vorgefertigt werden, sind diese sehr preiswert lieferbar.
Individuelle Leiterplatten
Möchtest du keine vorgefertigte Leiterplatte, weil Du vielleicht vorher Änderungen an dem Layout vornehmen möchtest, dann empfehlen ich die Anbieter auf unserer Leiterplatten-Service Seite.
Das Leiterplattenangebot ist ein Service Angebot der jeweiligen Anbieter. Bei Fragen bezüglich Lieferung und Preis bitte dort nachfragen!
Links zum Thema
- RN-Control Beschreibung in RN-Wissen
- Forum zu RN-Control
- Bascom Compiler
- Empfehlenswertes Buch: Programmieren der AVR RISC Mikrocontroller mit BASCOM-AVR
- Anderes universelle Controllerboard RN-AVR Universal
Geeignete Programmer für die Programmierung
Letzte Aktualisierung am 2024-11-20 / * Affiliate Links
oder der MCS-Programmer aus England
Weitere Hinweise
Vor dem Aufbau bitte nachfolgende Hinweise lesen:Das Projekt unterliegt einer CC-Lizenz - Lizenzhinweis (zum Aufklappen anklicken)
Falls Dir der Beitrag gefallen oder geholfen hat kannst Du dem Autor aber gerne durch eine kleine Spende Danke sagen!
Ein wirklich tolles Board. Ich habe mit diesem den Einstieg in die Elektronik geschafft, es war mein erstes Elektronik-Projekt das ich nachgebaut habe. Ich nutze es immer wieder gerne zum Experimentieren wenn ich ein neues Projekt realisieren muss.
Top Board, habe schon vier davon verbaut!
Hallo zusammen,
hab heute das Board gemäss Doku zusammengebaut. Funktioniert einwandfrei.
So soll es auch sein!