Frank (Diskussion | Beiträge) K (→Bestückungsplan) |
Frank (Diskussion | Beiträge) K (→Weblinks) |
||
(19 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | |||
Version 1.4 | Version 1.4 | ||
Zeile 23: | Zeile 22: | ||
* fast alle Portleitungen sind über Steckklemmen mit Hebelmechanik herausgeführt. Kein löten mehr, Drähte und Litze kann einfach eingeklemmt werden | * fast alle Portleitungen sind über Steckklemmen mit Hebelmechanik herausgeführt. Kein löten mehr, Drähte und Litze kann einfach eingeklemmt werden | ||
* Alle Stecker [[RS232]], [[ISP]], LCD, [[I2C]]-BUS entsprechend den vereinbarten Roboternetz-Standard [[RN-Definitionen]] | * Alle Stecker [[RS232]], [[ISP]], LCD, [[I2C]]-BUS entsprechend den vereinbarten Roboternetz-Standard [[RN-Definitionen]] | ||
− | * Potentiale (GND und +5V) send mehrfach über Steckbuchsen erreichbar. Ideal zum experimentieren da einfach Drähte (ca. 0,5mm²) eingesteckt werden (kein | + | * Potentiale (GND und +5V) send mehrfach über Steckbuchsen erreichbar. Ideal zum experimentieren da einfach Drähte (ca. 0,5mm²) eingesteckt werden (kein löten oder schrauben). |
* Integrierter programmierbarer Mini-Lautsprecher um Töne auszugeben | * Integrierter programmierbarer Mini-Lautsprecher um Töne auszugeben | ||
* Ein Reset Taster | * Ein Reset Taster | ||
Zeile 53: | Zeile 52: | ||
1. Das Board verwendet vier Widerstandsnetzwerke . Auf der Platine sind diese mit RN1 bis RN4 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 muß auf die Seite wo auf der Platine eine kleine 1 aufgedruckt ist. | 1. Das Board verwendet vier Widerstandsnetzwerke . Auf der Platine sind diese mit RN1 bis RN4 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 muß auf die Seite wo auf der Platine eine kleine 1 aufgedruckt ist. | ||
− | 2. Es werden oft zwei Quarze mitgeliefert. Einmal 7,3728 | + | 2. Es werden oft zwei Quarze mitgeliefert. Einmal 7,3728 MHz (oder 8 Mhz) und einmal 16 Mhz. Sie können frei wählen welchen 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. Getestet und empfohlen wird der ISP Adpater entsprecht die Wiki Bauanleitung: [[AVR-ISP Programmierkabel]]. 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. |
Bei den Beispielprogrammen wird jedoch in der Regel von einem eingesteckten 16 Mhz Quarz ausgegangen. | Bei den Beispielprogrammen wird jedoch in der Regel von einem eingesteckten 16 Mhz Quarz ausgegangen. | ||
Zeile 59: | Zeile 58: | ||
4. Über den Spindeltrimmer UREF wird die Referenzspannung festgelegt. Diese ist später wichtig für das messen von analogen Spannungen. Über diesen Spannungsteiler kann diese beliebig eingestellt werden. Beim Einstellen sollte man ein Multimeter zu Hilfe nehmen und die Spannung am Soindeltrimmer oder am Pin 21 des Mega8 Controllers messen. Zusätzlich kann dieser Spindeltrimmer mit Jumper JPREF überbrückt werden, dadurch wird die Referenzspannung automatisch auf 5V festgelegt. | 4. Über den Spindeltrimmer UREF wird die Referenzspannung festgelegt. Diese ist später wichtig für das messen von analogen Spannungen. Über diesen Spannungsteiler kann diese beliebig eingestellt werden. Beim Einstellen sollte man ein Multimeter zu Hilfe nehmen und die Spannung am Soindeltrimmer oder am Pin 21 des Mega8 Controllers messen. Zusätzlich kann dieser Spindeltrimmer mit Jumper JPREF überbrückt werden, dadurch wird die Referenzspannung automatisch auf 5V festgelegt. | ||
− | Wichtig: Beim ersten Gebrauch ist zu empfehlen | + | '''Wichtig:''' Beim ersten Gebrauch ist zu empfehlen die Referenzspannung auf 5V einzustellen. Dies kann über den das Poti geschehen. '''Der Jumper JREF darf nur eingesteckt werden wenn das POTI auf 5V geregelt wurde da es ansonsten im ungüngsten Fall (Poti Stellung auf GND geregelt) zu einem Kurzschluss kommt der das Poti zerstört.''' Vor der ersten Messung sollte die Referenzspannung mit einem Messgerät kontrolliert werden, da die analogen Ports durch eine falsch eingestellte Referenzspannung beschädigt werden können, wenn eine zu hohe Spannung gemessen wird. Bedenken Sie hier auch das die Tasten von RN-Mega8 auch über einen analogen Port gemessen werden. |
5. Das Board nutzt den Analog-Wandler des Controllers auch zur Batteriespannungsüberwachung. Soll diese Funktion über Jumper "UMESSPORT" aktiviert werden, dann ist darauf zu achten das auch der Spannungsteiler R9 und R10 richtig dimensioniert ist. Die hier abfallende Spannung darf nicht höher als die zuvor erwähnte Referenzspannung sein. | 5. Das Board nutzt den Analog-Wandler des Controllers auch zur Batteriespannungsüberwachung. Soll diese Funktion über Jumper "UMESSPORT" aktiviert werden, dann ist darauf zu achten das auch der Spannungsteiler R9 und R10 richtig dimensioniert ist. Die hier abfallende Spannung darf nicht höher als die zuvor erwähnte Referenzspannung sein. | ||
Zeile 93: | Zeile 92: | ||
Das mitgelieferte Testprogramm kann dann recht einfach mit [[Bascom]] oder Pony übertragen werden. Per Tastendruck können anschließend verschiedene Boardeigenschaften überprüft werden. | Das mitgelieferte Testprogramm kann dann recht einfach mit [[Bascom]] oder Pony übertragen werden. Per Tastendruck können anschließend verschiedene Boardeigenschaften überprüft werden. | ||
+ | ==Erläuterung der Anschlüsse, Regler und Kurzschlussbrücken== | ||
+ | {| {{Blauetabelle}} | ||
+ | |- {{Hintergrund1}} | ||
+ | |'''Anschlussbezeichnung''' | ||
+ | |'''Erläuterung''' | ||
+ | |- | ||
+ | |'''Port B''' | ||
+ | |'''Digitaler I/O Port''' | ||
+ | Über eine Steckklemme werden hier die 8 Portleitungen PB0 bis PB8 zur Verfügung gestellt. Anschlußdrähte können einfach eingesteckt werden, indem man mit einem Kugelschreiber oder Schraubenzieher den oberen weißen Hebel etwas nach unten drückt. | ||
+ | Die genaue Belegung ist auch aus dem Diagramm weiter vorne zu entnehmen | ||
+ | |||
+ | Die Belegung sieht wie folgt aus (von links nach rechts von vorne gesehen): | ||
+ | |||
+ | Pin 1 PB0 / ISP1 | ||
+ | Pin 2 PB1 /OC1A | ||
+ | Pin 3 PB2 / SS / OC1B | ||
+ | Pin 4 PB3 / MOSI | ||
+ | Pin 5 PB4 / MISO | ||
+ | Pin 6 PB5 / SCK | ||
+ | Pin 7 PB6 / XTAL1 (wenn JPQ geschlossen ist) | ||
+ | Pin 8 PB7 / XTAL2 (wenn JPQ geschlossen ist) | ||
+ | |||
+ | Einige der Ports werden auch für den Quarz und die ISP-Programmierschnittstelle genutzt. Wird ISP jedoch gerade nicht benutzt als auch der interne Quarzoszillator verwendet, dann sind diese Ports alle frei. | ||
+ | |- | ||
+ | |'''Port C''' | ||
+ | |'''Digitaler I/O Port und analoger Port''' | ||
+ | Über eine Steckklemme werden hier 7 Portleitungen PC0 bis PC6 zur Verfügung gestellt. Anschlußdrähte können einfach eingesteckt werden, indem man mit einem Kugelschreiber oder Schraubenzieher den oberen weißen Hebel etwas nach unten drückt. | ||
+ | |||
+ | Die genaue Belegung ist auch aus dem Diagramm weiter vorne zu entnehmen | ||
+ | |||
+ | Die Belegung sieht wie folgt aus (von links nach rechts von vorne gesehen): | ||
+ | |||
+ | Pin 1 PC0 / Analoger Port 0 | ||
+ | Pin 2 PC1 / Analoger Port 1 | ||
+ | Pin 3 PC2 / Analoger Port 2 | ||
+ | Pin 4 PC3 / Analoger Port 3 | ||
+ | Pin 5 PC4 / I2C-Bus SDA | ||
+ | Pin 6 PC5 / I2C-Bus SCL | ||
+ | Pin 7 PC6 / RESET | ||
+ | Pin 8 GND | ||
+ | |||
+ | Einige der Ports werden auch für den I2C-Bus als auch den Controller Reset genutzt. | ||
+ | |- | ||
+ | |'''Port D''' | ||
+ | |'''Digitaler I/O Port''' | ||
+ | Über eine Steckklemme werden hier die 8 Portleitungen PD0 bis PD8 zur Verfügung gestellt. Anschlußdrähte können einfach eingesteckt werden, indem man mit einem Kugelschreiber oder Schraubenzieher den oberen weißen Hebel etwas nach unten drückt. | ||
+ | |||
+ | Die genaue Belegung ist auch aus dem Diagramm weiter vorne zu entnehmen | ||
+ | |||
+ | Die Belegung sieht wie folgt aus (von links nach rechts von vorne gesehen): | ||
+ | |||
+ | Pin 1 PD0 / RXD | ||
+ | Pin 2 PD1 / TXD | ||
+ | Pin 3 PD2 / INT0 | ||
+ | Pin 4 PD3 / INT1 | ||
+ | Pin 5 PD4 / XCK / T0 | ||
+ | Pin 6 PD5 / T1 | ||
+ | Pin 7 PD6 / AIN0 | ||
+ | Pin 8 PD7 / AIN1 | ||
+ | |||
+ | Einige der Ports werden auch für die RS232 Schnittstelle benutzt | ||
+ | |- | ||
+ | |'''DISPLAY''' | ||
+ | |'''LCD Display-Anschluß nach [[RN-Definitionen]]''' | ||
+ | Über diesen 20 poligen Wannenstecker können gemäß der Roboternetz-Definition nahezu alle üblichen LCD-Display ´s angeschlossen werden. Wahlweise auch Displays mit Beleuchtung. Es kann wahlweise der 4 Bit oder 8 Bit LCD-Modus genutzt werden. Der Kontrast wird auf dem RN-Mega8 Board übe reinen Spindeltrimmer eingestellt. | ||
+ | Einige steckfertige Display´s werden auch über robotikhardware.de angeboten. | ||
+ | |||
+ | Die genaue Belegung sieht wie folgt aus: | ||
+ | |||
+ | Pin 1 GND | ||
+ | Pin 2 5V | ||
+ | Pin 3 Kontrastspannung | ||
+ | (kann über Spindeltrimmer R2 auf dem Board geregelt werden 0-5V) | ||
+ | Pin 4 RS (CS) / PC2 | ||
+ | Pin 5 R/W (SID) / PD6 | ||
+ | Pin 6 Enable (1) (SCLK) / PC3 | ||
+ | Pin 7 DB0 (SOD) / PB0 | ||
+ | Pin 8 DB1 / PB1 | ||
+ | Pin 9 DB2 / PB2 | ||
+ | Pin 10 DB3 / PB3 | ||
+ | Pin 11 DB4 / PD2 | ||
+ | Pin 12 DB5 / PD3 | ||
+ | Pin 13 DB6 / PD4 | ||
+ | Pin 14 DB7,MSB / PD5 | ||
+ | Pin 15 Enable2 bei 4 zeiligen Displays für 2. Controller / PD7 | ||
+ | Pin 16 Reset / PB4 | ||
+ | Pin 17 LED – Beleuchtung + / über Strombegrenzungswiderstand R14 mit +5V verbunden | ||
+ | Pin 18 LED – Beleuchtung - / GND | ||
+ | Pin 19 nicht belegt | ||
+ | Pin 20 nicht belegt | ||
+ | |||
+ | Bitte daran denken das diese Ports auch an den Steckklemmen und an dem ISP-Wannenstecker genutzt werden. Da aber selten alle Pin´s / Ports bei einem Display. verwendet werden, stehen die anderen auch bei angeschlossenem Display zur Verfügung | ||
+ | |- | ||
+ | |'''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 (wie z.B. RN-Control) 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 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) 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. | ||
+ | |||
+ | Hinweis: Im Gegensatz zu [[RN-Control]] sind bei RN-MEGA noch keine Pullup-Widerstände für den I2C-Bus eingebaut. Wenn also noch kein anderes Board am I2C-Bus diese Pullup-Widerstände eingebaut hat, dann muß dies noch erfolgen.Dazu verbindet man einen 10K Widerstand mit +5V und dem Pin SDA. Zudem ein 10K Widerstand zwischen +5V und SCL. | ||
+ | |- | ||
+ | |'''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 „ISP-Programmieradapter“) oder fertig bestellen. | ||
+ | |||
+ | 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 | ||
+ | Achtung, beim Einstecken des ISP-Steckers darauf achten das dieser nicht versehentlich in den I2C-Bus gesteckt wird, dadurch kann Controller oder Programmieradapter beschädigt werden. | ||
+ | |- | ||
+ | |'''Power''' | ||
+ | |'''Spannungsversorgung''' | ||
+ | Über diese Schraubklemme wird das Board mit Spannung versorgt. Es reicht eine unstabilisierte Gleichspannung von 7 bis 14V aus (max. 20V wenn ein 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! | ||
+ | |- | ||
+ | |'''JPI2C''' | ||
+ | |'''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 Schraubklemmen 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. | ||
+ | Liegt am Power Stecker jedoch eine Spannung an und versorgt den I2C-Bus bereits ein anderes Board mit Spannung, dann dürfen diese Jumper (bis auf INT) nicht eingesteckt werden. | ||
+ | |- | ||
+ | |POW5 | ||
+ | |Ü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. | ||
+ | |- | ||
+ | |'''UMESS''' | ||
+ | |'''Batteriespannungsmessung''' | ||
+ | Wenn diese Kurzschlussbrücke gesteckt ist, dann wird über Port PC1 die Batteriespannung überwacht. Ansonsten ist der Port frei!. Beachten Sie dazu die Hinweise zur Referenzspannung weiter vorne in der Anleitung. | ||
+ | |- | ||
+ | |'''S1''' | ||
+ | |'''Ein- und Ausschalter''' | ||
+ | Über diesen Schalter kann das ganze Board vom Netzteil getrennt 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 ein Fehler in einem Programmen gesucht wird. 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 Robotzernetz-Standard ([[RN-Definitionen]]), als auch 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 über Robotikhardware bereits fertig zu kaufen | ||
+ | |- | ||
+ | |'''JP1''' | ||
+ | |'''Universelle PIN´s''' | ||
+ | Hier können wahlweise drei 8 fache einpolige Stiftleisten oder 3 Buchsenleisten eingelötet werden. Man kann auch eine 2x8 und eine 1x8 polige Stiftleiste einlöten. Daraus würden sich dann 8 Servo kompatible Stecker ergeben. Es können also 8 handelsübliche Modellbauservos direkt angeschlossen werden. Mit einer geeigneten Software können sich diese dann natürlich auch steuern. In Verbindung mit JP2 können an das Board also 16 Servos direkt angeschlossen werden. Natürlich werden dadurch andere Ports belegt, so das unter Umständen z.B. das LCD-Display nicht mehr betrieben werden kann. | ||
+ | |- | ||
+ | |'''JP2''' | ||
+ | |'''Universelle PIN´s''' | ||
+ | Hier können wahlweise drei 8 fache einpolige Stiftleisten oder 3 Buchsenleisten eingelötet werden. Man kann auch eine 2x8 und eine 1x8 polige Stiftleiste einlöten. Daraus würden sich dann 8 Servo kompatible Stecker ergeben. Es können also 8 handelsübliche Modellbauservos direkt angeschlossen werden. Mit einer geeigneten Software können sich diese dann natürlich auch steuern. In Verbindung mit JP2 können an das Board also 16 Servos direkt angeschlossen werden. Natürlich werden dadurch andere Ports belegt, so das unter Umständen z.B. das LCD-Display nicht mehr betrieben werden kann. | ||
+ | |- | ||
+ | |'''JP3''' | ||
+ | |Deaktiviert die komplette rechte Balkenanzeige. Kann sinnvoll sein um Strom zu sparen. | ||
+ | |- | ||
+ | |'''JP4''' | ||
+ | |Deaktiviert 5 LEDS der linken Balkenanzeige. Kann sinnvoll sein um Strom zu sparen. | ||
+ | |- | ||
+ | |'''JP5''' | ||
+ | |Deaktiviert 5 LEDS der linken Balkenanzeige. Kann sinnvoll sein um Strom zu sparen oder um ADC4 und ADC5 als analog Port ohne | ||
+ | LED zu nutzen. | ||
+ | |- | ||
+ | |'''Potential''' | ||
+ | |Buchsenleiste die fünf mal GND und fünf mal +5V bereitstellt | ||
+ | Hier können bei Experimenten einfach Drähte (0,5cm²) eingesteckt werden | ||
+ | |- | ||
+ | |'''TASTER T1 bis T5''' | ||
+ | |Stehen zur freien Verfügung | ||
+ | Die Abfrage ist im Demoprogramm beschrieben | ||
+ | |- | ||
+ | |'''JPQ''' | ||
+ | |Port PB6 und PB7 auf Steckklemmen führen | ||
+ | Normalerweise wird an den Port PB6 und PB7 (XTAL1 und XTAL2) ein Quarz angeschlossen. | ||
+ | Man kann aber auch den internen Taktgenerator im Controller nutzen und hat dann diese Ports zur Verfügung. Wenn man diese beiden Jumper einsteckt , dann werden diese Portleitungen auch auf die Steckklemme geführt. | ||
+ | Wird ein Quarz benutzt, dann sollte der Jumper nicht eingesteckt sein, es braucht dann noch nicht mal der Jumper bestückt werden. Dies ist sinnvoll, weil sonst die Quarzfrequenz störende HF-Strahlung produzieren könnte. | ||
+ | |- | ||
+ | |'''JPREF''' | ||
+ | |Referenzspannung auf 5V legen | ||
+ | Durch einstecken dieses Jumpers wird die Referenzspannung auf 5V gelegt, unabhängig was beim Spindeltrimmer eingestellt wurde '''Der Jumper JREF darf nur eingesteckt werden wenn das POTI auf 5V geregelt wurde, da es ansonsten im ungünstigen Fall (Poti Stellung auf GND geregelt) zu einem Kurzschluss kommt, der das Poti zerstört.''' | ||
+ | |- | ||
+ | |'''UREF''' | ||
+ | |Referenzspannung einstellen | ||
+ | Über diesen Spindeltrimmer kann die Referenzspannung zwischen 0 und 5V eingestellt werden. Der Jumper JPREF muss in diesem Fall offen sein. Achten Sie darauf das sich die Referenzspannung mit dem Spannugsteiler für UMESS (R9 und R10) und den Tastaturwiderständen (R4,R5,R6,R1,R8) verträgt. Bei sehr niedrigen Referenzspannungen müssen diese Widerstände eventuell verändert werden. Siehe Schaltplan. | ||
+ | |} | ||
+ | ==Schaltplan== | ||
+ | [[Bild:RNMega8Schaltplan.gif|thumb|center|Zum vergrößern anklicken]] | ||
==Bestückungsplan== | ==Bestückungsplan== | ||
+ | Nur für Platinen Revison 1.4 | ||
− | [[Bild:RNMega8Bestückungsplan.gif|thumb | + | [[Bild:RNMega8Bestückungsplan.gif|thumb|center|Zum vergrößern anklicken]] |
==Stückliste== | ==Stückliste== | ||
Zeile 196: | Zeile 404: | ||
+ | |||
+ | ==Test- und Beispielprogramm in Bascom Basic== | ||
+ | Eine ausführlichere Erläuterung mit Basom Übertragungshinweisen dazu in der PDF-Doku, siehe unter [[#Weblinks]] | ||
+ | Das Beispiel steuert ein preiswertes LCD-Display an | ||
+ | |||
+ | [[Bild:rnmega8mitstandardlcd.jpg|center]] | ||
+ | |||
+ | |||
+ | <pre> | ||
+ | |||
+ | '################################################### | ||
+ | 'rnmega8test_rev1.4.BAS (c) 2005 | ||
+ | 'für | ||
+ | 'RoboterNetz Board RN-MEGA8 nur für Version 1.4 der Platine | ||
+ | 'Das neue preiswerte Entwicklungsboard zum experimentieren | ||
+ | ' | ||
+ | 'Aufgabe: | ||
+ | ' Dieses Testprogramm testet gleich mehrere Eigenschaften auf dem Board | ||
+ | ' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet | ||
+ | ' Taste 1: Zeigt Batteriespannung über RS232 und LCD an | ||
+ | ' Taste 2: Gibt per Zufall einen Lottozahlentip ab - 6 aus 49 | ||
+ | ' Taste 3: Einige male Lauflicht über ein Balken-LED´s (2 Ports bleiben an, | ||
+ | ' da dies rs232 Ports sind) | ||
+ | ' Bei einer LED kommt es zu leichtem Knacksen, da der Piepser diesen | ||
+ | ' Port ebenfalls nutzt | ||
+ | ' | ||
+ | ' Taste 4: Ein einfaches Sirenengeräusch | ||
+ | ''Taste 5: Zeigt Copyright auf LCD Display | ||
+ | |||
+ | ' Im Gegensatz zu vorherigen RN-Mega8 Revisionen können bei der | ||
+ | ' Version 1.4 die LEDs auch dann aktiviert bleiben, wenn die | ||
+ | ' AD Ports 0 bis 3 verwendet werden. Diese Ports werden nicht mehr per LED | ||
+ | ' überwacht. Die LEDs sind nun an einigen anderen Ports angeschlossen, siehe | ||
+ | ' aktuelle Dokumentation | ||
+ | ' Jumper JREF (Referenzspannung=5V) muss bei diesem Demo gesteckt sein. | ||
+ | ' Bei veränderter Referenzspannung / Bestückung muss Tastenabfrage angepaßt werden | ||
+ | |||
+ | |||
+ | ' 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 Lauflicht() | ||
+ | Declare Function Tastenabfrage() As Byte | ||
+ | Declare Sub Textauflcdausgeben() | ||
+ | Declare Sub Lottozahlen() | ||
+ | Declare Sub Sirene() | ||
+ | |||
+ | $regfile = "m8def.dat" | ||
+ | |||
+ | |||
+ | |||
+ | Dim I As Integer | ||
+ | Dim N As Integer | ||
+ | Dim Ton As Integer | ||
+ | |||
+ | Dim Ws As Word 'Wird für Messung bei Tastenabfrage verwendet | ||
+ | Dim Adc_ohne_taste As Word | ||
+ | |||
+ | $crystal = 16000000 'Quarzfrequenz | ||
+ | '$crystal = 7372800 'Alternative Quarzfrequenz | ||
+ | |||
+ | $baud = 9600 | ||
+ | |||
+ | Config Scl = Portc.5 'Ports fuer I2C-Bus | ||
+ | Config Sda = Portc.4 | ||
+ | |||
+ | Config Adc = Single , Prescaler = Auto , Reference = Off 'Für Tastenabfrage + Spannungsmessung | ||
+ | Config Pinc.0 = Input 'Für Tastenabfrage | ||
+ | Portc.0 = 1 'Pullup Widerstand ein | ||
+ | Start Adc | ||
+ | |||
+ | Const Ref = 5 / 1023 'Für Batteriespannungsberechnung | ||
+ | 'Bei einer anderen Referenzspannung muss die 2.5 durch entsprechend ersetzt werden | ||
+ | 'Die Referenzspannung wird durch den Jumper JPREF bzw. Spindeltrimmer festgelegt | ||
+ | |||
+ | Dim Taste As Byte | ||
+ | Dim Volt As Single | ||
+ | |||
+ | |||
+ | Config Pind.6 = Output | ||
+ | Portd.6 = 0 | ||
+ | |||
+ | |||
+ | I2cinit 'Falls I2C benutzt wird | ||
+ | |||
+ | ' Falls ein LCD Display angeschlossen ist | ||
+ | Dim ___lcdno As Bit | ||
+ | Config Lcdpin=Pin,E = Portc.3,E2 = Portd.7,Rs = Portc.2,Db4 = Portd.2,Db5 = Portd.3,Db6 = Portd.4,Db7 = Portd.5 | ||
+ | Config Lcd = 40 * 4 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | I = 0 | ||
+ | Sound Portb.0 , 400 , 450 'BEEP | ||
+ | Sound Portb.0 , 400 , 250 'BEEP | ||
+ | Sound Portb.0 , 400 , 450 'BEEP | ||
+ | |||
+ | |||
+ | Call Textauflcdausgeben | ||
+ | |||
+ | |||
+ | Adc_ohne_taste = Getadc(0) 'Messe Spannung wenn keine Taste gedrückt ist | ||
+ | Adc_ohne_taste = Adc_ohne_taste - 2 'für Toleranz abziehen | ||
+ | |||
+ | |||
+ | Do | ||
+ | |||
+ | Taste = Tastenabfrage() | ||
+ | |||
+ | |||
+ | If Taste <> 0 Then | ||
+ | |||
+ | Select Case Taste | ||
+ | Case 1 | ||
+ | Call Batteriespannung 'Taste 1 Zeigt Bateriespannung über RS232 an | ||
+ | Case 2 | ||
+ | Call Lottozahlen 'Gibt Lottozahlen-Tip (ohne Gewähr) über rs232 und lcd | ||
+ | 'Bei Gewinn bitte mit Autor Frank teilen :-) | ||
+ | Case 3 | ||
+ | Call Lauflicht 'Einige male Lauflicht über Balken LED´s anzeigen | ||
+ | Case 4 | ||
+ | Call Sirene | ||
+ | Case 5 | ||
+ | Call Textauflcdausgeben | ||
+ | |||
+ | |||
+ | |||
+ | End Select | ||
+ | Sound Portb.0 , 400 , 500 'BEEP | ||
+ | End If | ||
+ | |||
+ | Waitms 100 | ||
+ | Loop | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | 'Diese Unterfunktion fragt die Tastatur am analogen Port ab | ||
+ | |||
+ | Function Tastenabfrage() As Byte | ||
+ | Tastenabfrage = 0 | ||
+ | Ton = 600 | ||
+ | Ws = Getadc(0) | ||
+ | ' Print "ws=" ; Ws | ||
+ | If Ws < Adc_ohne_taste Then | ||
+ | Select Case Ws | ||
+ | Case 400 To 440 | ||
+ | Tastenabfrage = 1 | ||
+ | Ton = 550 | ||
+ | Case 330 To 370 | ||
+ | Tastenabfrage = 2 | ||
+ | Ton = 500 | ||
+ | Case 260 To 300 | ||
+ | Tastenabfrage = 3 | ||
+ | Ton = 450 | ||
+ | Case 180 To 230 | ||
+ | Tastenabfrage = 4 | ||
+ | Ton = 400 | ||
+ | Case 100 To 130 | ||
+ | Tastenabfrage = 5 | ||
+ | Ton = 350 | ||
+ | Case Else | ||
+ | Print "Bitte Tastenabfrage an Messert ws=" ; Ws ; " anpassen!" | ||
+ | End Select | ||
+ | Sound Portb.0 , 400 , Ton 'BEEP | ||
+ | End If | ||
+ | |||
+ | End Function | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | 'Diese Unterfunktion zeigt Bateriespannung an | ||
+ | Sub Batteriespannung() | ||
+ | Local W As Word | ||
+ | Start Adc | ||
+ | W = Getadc(1) | ||
+ | Volt = W * Ref | ||
+ | Volt = Volt * 5.3137 'Spannungsteiler (R9+R10)/R9 | ||
+ | Print "Die aktuelle Spannung beträgt: " ; Volt ; " Volt" | ||
+ | Print "Rev: " ; Ref ; " W=" ; W | ||
+ | |||
+ | 'Auch auf LCD ausgeben | ||
+ | ___lcdno = 0 | ||
+ | Cls | ||
+ | Locate 1 , 1 | ||
+ | Lcd "Spannung:" ; Fusing(volt , "#.##") ; " Volt" | ||
+ | |||
+ | End Sub | ||
+ | |||
+ | |||
+ | 'Dies Funktion gibt auf einem angeschlossenen LCD-Display (2x27 Zeichen) | ||
+ | 'eine Copyright Meldung aus | ||
+ | Sub Textauflcdausgeben() | ||
+ | ___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt | ||
+ | Initlcd | ||
+ | Cursor Off | ||
+ | Cls | ||
+ | Home | ||
+ | Lcd "Das neue Experimentierboard" | ||
+ | Locate 2 , 4 | ||
+ | Lcd "** RN-MEGA 8 V1.4 **" | ||
+ | |||
+ | ___lcdno = 1 'Dies ist nur notwendig wenn das Display zwei LCD-Controller besitzt | ||
+ | Initlcd | ||
+ | Cursor Off | ||
+ | Cls | ||
+ | Home | ||
+ | Lcd "nach Roboternetz Standard" | ||
+ | Locate 2 , 3 | ||
+ | Lcd "(c) robotikhardware.de" | ||
+ | |||
+ | 'Fuer RS232 | ||
+ | Print "**** RN-MEGA 8 V 1.4 *****" | ||
+ | Print "Das neue Mega 8 Entwicklungsboard von www.robotikhardware.de" | ||
+ | End Sub | ||
+ | |||
+ | 'Einige male Lauflicht über Balkenanzeige laufen lassen | ||
+ | Sub Lauflicht() | ||
+ | |||
+ | |||
+ | Config Portd = Output | ||
+ | Config Pinb.0 = Output | ||
+ | Config Pinb.1 = Output | ||
+ | |||
+ | Portd = 255 | ||
+ | Portb.0 = 1 | ||
+ | Portb.1 = 1 | ||
+ | For N = 1 To 10 | ||
+ | For I = 0 To 9 | ||
+ | Select Case I | ||
+ | Case 0 To 7 : | ||
+ | Portd.i = 0 | ||
+ | Waitms 150 | ||
+ | Portd.i = 1 | ||
+ | Case 8: | ||
+ | Portb.0 = 0 | ||
+ | Waitms 150 | ||
+ | Portb.0 = 1 | ||
+ | Case 9: | ||
+ | Portb.1 = 0 | ||
+ | Waitms 150 | ||
+ | Portb.1 = 1 | ||
+ | |||
+ | |||
+ | End Select | ||
+ | Next I | ||
+ | Next N | ||
+ | Config Portd = Input | ||
+ | Config Pinb.0 = Input | ||
+ | Config Pinb.1 = Input | ||
+ | !Call 0 'Führt Software RESET aus | ||
+ | End Sub | ||
+ | |||
+ | |||
+ | Sub Lottozahlen() | ||
+ | Print "Lotozahlen: "; | ||
+ | ___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt | ||
+ | Initlcd | ||
+ | Cursor Off | ||
+ | Cls | ||
+ | Home | ||
+ | Lcd "Lottozahlentip-ohne Gewaehr):" " | ||
+ | Locate 2 , 1 | ||
+ | For I = 1 To 6 | ||
+ | N = Rnd(48) | ||
+ | N = N + 1 | ||
+ | Print " " ; N ; | ||
+ | Lcd " " ; N; | ||
+ | Next I | ||
+ | Print | ||
+ | End Sub | ||
+ | |||
+ | |||
+ | Sub Sirene() | ||
+ | For N = 1 To 5 | ||
+ | For I = 500 To 900 | ||
+ | Sound Portb.0 , 5 , I | ||
+ | Next I | ||
+ | For I = 900 To 500 Step -1 | ||
+ | Sound Portb.0 , 5 , I | ||
+ | Next I | ||
+ | Next N | ||
+ | End Sub | ||
+ | </pre> | ||
==Autor== | ==Autor== | ||
Zeile 207: | Zeile 708: | ||
*[[RN-Board FAQ-Seite]] | *[[RN-Board FAQ-Seite]] | ||
*[[Avr]] | *[[Avr]] | ||
+ | *[[RN-Control]] | ||
+ | |||
+ | <freiesprojekt>http://www.mikrocontroller-elektronik.de/rn-mega8plus-funk-controllerboard/</freiesprojekt> | ||
==Weblinks== | ==Weblinks== | ||
* [http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=180 Ausführliche Anleitung und Bauplan als PDF-Datei] | * [http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=180 Ausführliche Anleitung und Bauplan als PDF-Datei] | ||
+ | * [http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=344 Alternative Bauanleitung (Nachfolgeprojekt mit Funkmodul-Steckplatz)] | ||
+ | |||
− | |||
− | |||
Aktuelle Version vom 5. Juli 2015, 12:43 Uhr
Version 1.4
Dieses Board wurde speziell zum Experimentieren mit dem Microcontroller ATMega8 oder kompatible wie ATMega168 entworfen. Die Controller ATMega8 bzw. ATMega168 eignet sich wegen des günstigen Preises als auch der geringen Baugröße für zahlreiche Aufgaben, bei denen ein ATMega32 überdimensioniert oder einfach zu groß wäre. Im Bereich Robotik können diese Controller ideal als CoController für Servosteuerung, Motorsteuerung, Display Ausgabe, Sensorüberwachung und viele mehr eingesetzt werden. Oft sind kaum externe Bauteile notwendig.
Um den Microcontoller für eine spezielle Aufgabe programmieren zu können, bedarf es einer Entwicklungsumgebung die quasi alle Ports steckbar zugänglich macht, als auch die visuelle Überwachung der Port-Zustände erlaubt.
Für diese Aufgabe ist RN-MEGA8 ideal! Ganze 20 Ports können gleichzeitig visuell über Leuchtbalken überwacht werden. Nahezu alle Ports sind über einfache Steckklemmen erreichbar. Zudem verfügt das Board über einen genormten LCD-Display- , I2C-Bus-, RS232-, Servo- und ISP-Anschluß, alles entsprechend dem Roboternetz Standard (RN-Definitionen).
RN-MEGA8 soll also kein Ersatz für das inzwischen recht beliebte und ebenfalls sehr vielseitige Board RN-Control sein, sondern vielmehr ein universelles Ergänzungsboard.
Inhaltsverzeichnis
Die Leistungsmerkmale auf einen Blick
- Beliebiger Quarz kann eingesteckt werden (7,37 und 16 Mhz im Lieferumfang)
- Schneller AVR ATMega8 oder ATMega168 (sowie weitere) Mikrocontroller bestückbar
- 20 Leuchtdioden über zwei Balkenanzeigen auf dem Board – über Jumper deaktivierbar.
- LED´s leuchten invertiert (genau wie bei der RN-Control), also bei 0 Pegel ist LED an. Dies belastet Ports weniger und erlaubt auch die Überwachung von angeschlossenen Peripheriebausteinen die sonst Probleme bereiten
- Über Spindeltrimmer einstellbare Referenzspannung, um auch kleinste Spannungen mit dem Controller messen zu können. Per Jumper jederzeit auf 5V schaltbar
- Auch die Ports am Quarz können als I/O-Port genutzt werden wenn auf Quarz verzichtet wird. Ein Jumper erlaubt im Quarzbetrieb die Leitungen zu trennen um HF-Störungen zu vermeiden
- Auch die SCK Leitung wird nun über eine LED überwacht. Dadurch kann man die Programmübertragung per ISP-Dongel durch ein Flackern überwachen
- fast alle Portleitungen sind über Steckklemmen mit Hebelmechanik herausgeführt. Kein löten mehr, Drähte und Litze kann einfach eingeklemmt werden
- Alle Stecker RS232, ISP, LCD, I2C-BUS entsprechend den vereinbarten Roboternetz-Standard RN-Definitionen
- Potentiale (GND und +5V) send mehrfach über Steckbuchsen erreichbar. Ideal zum experimentieren da einfach Drähte (ca. 0,5mm²) eingesteckt werden (kein löten oder schrauben).
- Integrierter programmierbarer Mini-Lautsprecher um Töne auszugeben
- Ein 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
- ISP-Dongel wird über Diode versorgt (da einige Dongels dies nicht eingebaut haben)
- 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 8 bis 13 V)
- Sehr kompakt, nur halbes Europaformat nach Roboternetz-Norm (ca. 100x78mm)
- I2C-Bus über die zahlreiche Erweiterungsplatinen anschließbar sind (z.B. Sprachausgabe RN-Speak, Relaisboard RN-Relais, Servoboards, LCD´s, RN-Control uvm.).
- RN-Mega8 kann auch selbst als Slave Erweiterung für anderes Board (z.B. RN-Control) dienen
- Ein- und Ausschalter auf der Platine
- 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 oder nur Platine erhältlich – einfacher Aufbau
- Kein Starter- oder Applikationsboard notwendig – bereits alles integriert!
Aufbau und Anwendung
Der Aufbau der Schaltung ist durch die vorgefertigte Platine eigentlich völlig problemlos auch von Elektronik-Einsteigern zu bewerkstelligen. 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. 45 bis 90 Minuten aufgebaut ist.
Dennoch einige Anmerkungen zu kleinen Hürden:
1. Das Board verwendet vier Widerstandsnetzwerke . Auf der Platine sind diese mit RN1 bis RN4 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 muß auf die Seite wo auf der Platine eine kleine 1 aufgedruckt ist.
2. Es werden oft zwei Quarze mitgeliefert. Einmal 7,3728 MHz (oder 8 Mhz) und einmal 16 Mhz. Sie können frei wählen welchen 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. Getestet und empfohlen wird der ISP Adpater entsprecht die Wiki Bauanleitung: AVR-ISP Programmierkabel. 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. Bei den Beispielprogrammen wird jedoch in der Regel von einem eingesteckten 16 Mhz Quarz ausgegangen.
3. 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.
4. Über den Spindeltrimmer UREF wird die Referenzspannung festgelegt. Diese ist später wichtig für das messen von analogen Spannungen. Über diesen Spannungsteiler kann diese beliebig eingestellt werden. Beim Einstellen sollte man ein Multimeter zu Hilfe nehmen und die Spannung am Soindeltrimmer oder am Pin 21 des Mega8 Controllers messen. Zusätzlich kann dieser Spindeltrimmer mit Jumper JPREF überbrückt werden, dadurch wird die Referenzspannung automatisch auf 5V festgelegt. Wichtig: Beim ersten Gebrauch ist zu empfehlen die Referenzspannung auf 5V einzustellen. Dies kann über den das Poti geschehen. Der Jumper JREF darf nur eingesteckt werden wenn das POTI auf 5V geregelt wurde da es ansonsten im ungüngsten Fall (Poti Stellung auf GND geregelt) zu einem Kurzschluss kommt der das Poti zerstört. Vor der ersten Messung sollte die Referenzspannung mit einem Messgerät kontrolliert werden, da die analogen Ports durch eine falsch eingestellte Referenzspannung beschädigt werden können, wenn eine zu hohe Spannung gemessen wird. Bedenken Sie hier auch das die Tasten von RN-Mega8 auch über einen analogen Port gemessen werden.
5. Das Board nutzt den Analog-Wandler des Controllers auch zur Batteriespannungsüberwachung. Soll diese Funktion über Jumper "UMESSPORT" aktiviert werden, dann ist darauf zu achten das auch der Spannungsteiler R9 und R10 richtig dimensioniert ist. Die hier abfallende Spannung darf nicht höher als die zuvor erwähnte Referenzspannung sein.
Einige Beispiele:
R9=22 k R10= 5,1K
Bei diesen Werten würde bei 13V Eingangsspannung 2,5V abfallen. Wenn man eine Referenzspannung von 2,5V eingestellt hat, dann sollte die Eingangsspannung nicht höher sein, da ansonsten der analoge Port beschädigt werden kann. Diese Werte werden in den Beispielen verwendet. Werden andere Werte eingesetzt, so muß das Beispielprogramm angepaßt werden.
R9=22 k R10= 2,2K
Bei diesen Werten dürfte Eingangsspannung bis ca. 27V hoch sein, um die Referenzspannung von 2,5V zu erreichen
Die abfallende Spannung berechnet sich so:
I=Eingangsspannung/R9+R10 Uref=I*R10
6. Zu beachten ist noch das die Balken-LED-Anzeigen nicht falsch herum eingelötet werden. Die Anode ist auf der Seite wo die Beschriftung KINGBRIGHT steht. Wenn man den Bestückungsplan so vor sich liegen hat, das der Ein-/Ausschalter rechts ist, dann muß bei der linken Balkenanzeige die Schrift auch links sein und bei der rechten Balkenanzeige muß die Schrift rechts sein.
Im Zweifel kann man auch mit einem Multimeter Anode und Kathode bestimmen
7. Sollen die Ports PC4 und PC5 (ADC4 und 5) für analoge Messungen benötigt werden, dann sollte man gewöhnlich JP5 nicht einstecken, die LED´s würden ansonsten das Ergebnis verfälschen. Gewöhnlich werden diese Ports jedoch an Digitalport (I2C Bus) genutzt, somit können diese ruhig per LED überwacht werden. Die analogen Ports ADC0 bis ADC4 werden generell nicht per LED überwacht und können somit ohne bedenken zum messen genutzt werden.
Das waren eigentlich schon die besonderen Punkte die zu beachten sind. Ansonsten natürlich sauber mit einem 15 – 25 W Lötkolben 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 weniger als ca. 100mA Strom fließen. Ist der Strom höher, dann deutet das auf ein Lötfehler hin. Das mitgelieferte Testprogramm kann dann recht einfach mit Bascom oder Pony übertragen werden. Per Tastendruck können anschließend verschiedene Boardeigenschaften überprüft werden.
Erläuterung der Anschlüsse, Regler und Kurzschlussbrücken
Anschlussbezeichnung | Erläuterung |
Port B | Digitaler I/O Port
Über eine Steckklemme werden hier die 8 Portleitungen PB0 bis PB8 zur Verfügung gestellt. Anschlußdrähte können einfach eingesteckt werden, indem man mit einem Kugelschreiber oder Schraubenzieher den oberen weißen Hebel etwas nach unten drückt. Die genaue Belegung ist auch aus dem Diagramm weiter vorne zu entnehmen Die Belegung sieht wie folgt aus (von links nach rechts von vorne gesehen): Pin 1 PB0 / ISP1 Pin 2 PB1 /OC1A Pin 3 PB2 / SS / OC1B Pin 4 PB3 / MOSI Pin 5 PB4 / MISO Pin 6 PB5 / SCK Pin 7 PB6 / XTAL1 (wenn JPQ geschlossen ist) Pin 8 PB7 / XTAL2 (wenn JPQ geschlossen ist) Einige der Ports werden auch für den Quarz und die ISP-Programmierschnittstelle genutzt. Wird ISP jedoch gerade nicht benutzt als auch der interne Quarzoszillator verwendet, dann sind diese Ports alle frei. |
Port C | Digitaler I/O Port und analoger Port
Über eine Steckklemme werden hier 7 Portleitungen PC0 bis PC6 zur Verfügung gestellt. Anschlußdrähte können einfach eingesteckt werden, indem man mit einem Kugelschreiber oder Schraubenzieher den oberen weißen Hebel etwas nach unten drückt. Die genaue Belegung ist auch aus dem Diagramm weiter vorne zu entnehmen Die Belegung sieht wie folgt aus (von links nach rechts von vorne gesehen): Pin 1 PC0 / Analoger Port 0 Pin 2 PC1 / Analoger Port 1 Pin 3 PC2 / Analoger Port 2 Pin 4 PC3 / Analoger Port 3 Pin 5 PC4 / I2C-Bus SDA Pin 6 PC5 / I2C-Bus SCL Pin 7 PC6 / RESET Pin 8 GND Einige der Ports werden auch für den I2C-Bus als auch den Controller Reset genutzt. |
Port D | Digitaler I/O Port
Über eine Steckklemme werden hier die 8 Portleitungen PD0 bis PD8 zur Verfügung gestellt. Anschlußdrähte können einfach eingesteckt werden, indem man mit einem Kugelschreiber oder Schraubenzieher den oberen weißen Hebel etwas nach unten drückt. Die genaue Belegung ist auch aus dem Diagramm weiter vorne zu entnehmen Die Belegung sieht wie folgt aus (von links nach rechts von vorne gesehen): Pin 1 PD0 / RXD Pin 2 PD1 / TXD Pin 3 PD2 / INT0 Pin 4 PD3 / INT1 Pin 5 PD4 / XCK / T0 Pin 6 PD5 / T1 Pin 7 PD6 / AIN0 Pin 8 PD7 / AIN1 Einige der Ports werden auch für die RS232 Schnittstelle benutzt |
DISPLAY | LCD Display-Anschluß nach RN-Definitionen
Über diesen 20 poligen Wannenstecker können gemäß der Roboternetz-Definition nahezu alle üblichen LCD-Display ´s angeschlossen werden. Wahlweise auch Displays mit Beleuchtung. Es kann wahlweise der 4 Bit oder 8 Bit LCD-Modus genutzt werden. Der Kontrast wird auf dem RN-Mega8 Board übe reinen Spindeltrimmer eingestellt. Einige steckfertige Display´s werden auch über robotikhardware.de angeboten. Die genaue Belegung sieht wie folgt aus: Pin 1 GND Pin 2 5V Pin 3 Kontrastspannung (kann über Spindeltrimmer R2 auf dem Board geregelt werden 0-5V) Pin 4 RS (CS) / PC2 Pin 5 R/W (SID) / PD6 Pin 6 Enable (1) (SCLK) / PC3 Pin 7 DB0 (SOD) / PB0 Pin 8 DB1 / PB1 Pin 9 DB2 / PB2 Pin 10 DB3 / PB3 Pin 11 DB4 / PD2 Pin 12 DB5 / PD3 Pin 13 DB6 / PD4 Pin 14 DB7,MSB / PD5 Pin 15 Enable2 bei 4 zeiligen Displays für 2. Controller / PD7 Pin 16 Reset / PB4 Pin 17 LED – Beleuchtung + / über Strombegrenzungswiderstand R14 mit +5V verbunden Pin 18 LED – Beleuchtung - / GND Pin 19 nicht belegt Pin 20 nicht belegt Bitte daran denken das diese Ports auch an den Steckklemmen und an dem ISP-Wannenstecker genutzt werden. Da aber selten alle Pin´s / Ports bei einem Display. verwendet werden, stehen die anderen auch bei angeschlossenem Display zur Verfügung |
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 (wie z.B. RN-Control) 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 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) 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. Hinweis: Im Gegensatz zu RN-Control sind bei RN-MEGA noch keine Pullup-Widerstände für den I2C-Bus eingebaut. Wenn also noch kein anderes Board am I2C-Bus diese Pullup-Widerstände eingebaut hat, dann muß dies noch erfolgen.Dazu verbindet man einen 10K Widerstand mit +5V und dem Pin SDA. Zudem ein 10K Widerstand zwischen +5V und SCL. |
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 „ISP-Programmieradapter“) oder fertig bestellen. 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 Achtung, beim Einstecken des ISP-Steckers darauf achten das dieser nicht versehentlich in den I2C-Bus gesteckt wird, dadurch kann Controller oder Programmieradapter beschädigt werden. |
Power | Spannungsversorgung
Über diese Schraubklemme wird das Board mit Spannung versorgt. Es reicht eine unstabilisierte Gleichspannung von 7 bis 14V aus (max. 20V wenn ein 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! |
JPI2C | 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 Schraubklemmen 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. Liegt am Power Stecker jedoch eine Spannung an und versorgt den I2C-Bus bereits ein anderes Board mit Spannung, dann dürfen diese Jumper (bis auf INT) nicht eingesteckt werden. |
POW5 | Ü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. |
UMESS | Batteriespannungsmessung
Wenn diese Kurzschlussbrücke gesteckt ist, dann wird über Port PC1 die Batteriespannung überwacht. Ansonsten ist der Port frei!. Beachten Sie dazu die Hinweise zur Referenzspannung weiter vorne in der Anleitung. |
S1 | Ein- und Ausschalter
Über diesen Schalter kann das ganze Board vom Netzteil getrennt 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 ein Fehler in einem Programmen gesucht wird. 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 Robotzernetz-Standard (RN-Definitionen), als auch 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 über Robotikhardware bereits fertig zu kaufen |
JP1 | Universelle PIN´s
Hier können wahlweise drei 8 fache einpolige Stiftleisten oder 3 Buchsenleisten eingelötet werden. Man kann auch eine 2x8 und eine 1x8 polige Stiftleiste einlöten. Daraus würden sich dann 8 Servo kompatible Stecker ergeben. Es können also 8 handelsübliche Modellbauservos direkt angeschlossen werden. Mit einer geeigneten Software können sich diese dann natürlich auch steuern. In Verbindung mit JP2 können an das Board also 16 Servos direkt angeschlossen werden. Natürlich werden dadurch andere Ports belegt, so das unter Umständen z.B. das LCD-Display nicht mehr betrieben werden kann. |
JP2 | Universelle PIN´s
Hier können wahlweise drei 8 fache einpolige Stiftleisten oder 3 Buchsenleisten eingelötet werden. Man kann auch eine 2x8 und eine 1x8 polige Stiftleiste einlöten. Daraus würden sich dann 8 Servo kompatible Stecker ergeben. Es können also 8 handelsübliche Modellbauservos direkt angeschlossen werden. Mit einer geeigneten Software können sich diese dann natürlich auch steuern. In Verbindung mit JP2 können an das Board also 16 Servos direkt angeschlossen werden. Natürlich werden dadurch andere Ports belegt, so das unter Umständen z.B. das LCD-Display nicht mehr betrieben werden kann. |
JP3 | Deaktiviert die komplette rechte Balkenanzeige. Kann sinnvoll sein um Strom zu sparen. |
JP4 | Deaktiviert 5 LEDS der linken Balkenanzeige. Kann sinnvoll sein um Strom zu sparen. |
JP5 | Deaktiviert 5 LEDS der linken Balkenanzeige. Kann sinnvoll sein um Strom zu sparen oder um ADC4 und ADC5 als analog Port ohne
LED zu nutzen. |
Potential | Buchsenleiste die fünf mal GND und fünf mal +5V bereitstellt
Hier können bei Experimenten einfach Drähte (0,5cm²) eingesteckt werden |
TASTER T1 bis T5 | Stehen zur freien Verfügung
Die Abfrage ist im Demoprogramm beschrieben |
JPQ | Port PB6 und PB7 auf Steckklemmen führen
Normalerweise wird an den Port PB6 und PB7 (XTAL1 und XTAL2) ein Quarz angeschlossen. Man kann aber auch den internen Taktgenerator im Controller nutzen und hat dann diese Ports zur Verfügung. Wenn man diese beiden Jumper einsteckt , dann werden diese Portleitungen auch auf die Steckklemme geführt. Wird ein Quarz benutzt, dann sollte der Jumper nicht eingesteckt sein, es braucht dann noch nicht mal der Jumper bestückt werden. Dies ist sinnvoll, weil sonst die Quarzfrequenz störende HF-Strahlung produzieren könnte. |
JPREF | Referenzspannung auf 5V legen
Durch einstecken dieses Jumpers wird die Referenzspannung auf 5V gelegt, unabhängig was beim Spindeltrimmer eingestellt wurde Der Jumper JREF darf nur eingesteckt werden wenn das POTI auf 5V geregelt wurde, da es ansonsten im ungünstigen Fall (Poti Stellung auf GND geregelt) zu einem Kurzschluss kommt, der das Poti zerstört. |
UREF | Referenzspannung einstellen
Über diesen Spindeltrimmer kann die Referenzspannung zwischen 0 und 5V eingestellt werden. Der Jumper JPREF muss in diesem Fall offen sein. Achten Sie darauf das sich die Referenzspannung mit dem Spannugsteiler für UMESS (R9 und R10) und den Tastaturwiderständen (R4,R5,R6,R1,R8) verträgt. Bei sehr niedrigen Referenzspannungen müssen diese Widerstände eventuell verändert werden. Siehe Schaltplan. |
Schaltplan
Bestückungsplan
Nur für Platinen Revison 1.4
Stückliste
Bauteile Bestell- und Bestückungsliste für RN-MEGA8 (Nur für Platinen Revison 1.4 - Angaben ohne Gewähr)
Bauteil Wert Beschreibung Reichelt Best.Nr. C1 100n Keramik Kondensator KERKO100N C2 100n Keramik Kondensator KERKO100N C3 Wichtig: Bis Version 1.4 unbestückt lassen C4 100n Keramik Kondensator KERKO100N 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 22pf Keramik Kondensator KERKO-500 22p C10 22pf Keramik Kondensator KERKO-500 22p C11 100n Keramik Kondensator KERKO100N C13 1000uF Elko RAD 1000/35 C14 220uF Elko RAD 220/35 C15 100n Keramik Kondensator KERKO100N C16 100n Keramik Kondensator KERKO100N D2 BYV27 Diode BYV 27/200 DISPLAY Wannenstecker 20polig wsl20g DZ1 LB10 Baragraf Anzeige GBG1000 DZ2 LB10 Baragraf Anzeige GBG1000 I2C-BUS Wannenbuchse WSL 10G IC1 MAX232 RS232 Treiber MAX 232 CPE IC2 7805 Spannungsregler 78S05 ISP Wannenbuchse WSL 10G JP1 PINHEAD3X8 Stiftleiste 3X8 aus zwei- und einpoligen zusammenbauen JP2 PINHEAD3X8 Stiftleiste 3X8 aus zwei- und einpoligen zusammenbauen JP3 Stiftleiste LU 2,5 MS2 JP4 Stiftleiste LU 2,5 MS2 JP5 Stiftleiste LU 2,5 MS2 JPI2C Stiftleiste Stiftl. 2x50g (teilen) JPQ Stiftleiste 2x2 2 mal LU2,5MS2 JPREF Stiftleiste 2polig LU2,5MS2 MEGA8 MEGA8-P ATMEGA 8-16 DIP ATMEGA 8-16 DIP PORTB Steckklemme 8 polig WAGO 233-508 PORTC Steckklemme 8 polig WAGO 233-508 PORTD Steckklemme 8 polig WAGO 233-508 POTENTIAL Kontaktbuchse 1x10 spl20 POW5 Stiftleiste LU 2,5 MS2 POWER Schraubklemme 2 polig AKL 101-02 Q Stiftleiste 3 polig LU 2,5 MS3 oder Quarzfassung 2 polig R1 1k Widerstand 1k 1/4W 1k R2 10k 10k Spindeltrimmer 962-20 10k R3 10k Widerstand 10k Toleranz max. 1% METALL 10,0K R4 1k Widerstand 1k 1/4W 1k R5 1k Widerstand 1k 1/4W 1k R6 1k Widerstand 1k 1/4W 1k R7 10k Widerstand 10k Toleranz max. 1% METALL 10,0K R8 1k Widerstand 1k 1/4W 1k R9 22k Widerstand 22k 1/4W 22k R10 5,1k Widerstand 5,1k 1/4W 5,1k R14 10 Metallschichtwiderstand 10 Ohm METALL 10,0 RESET TASTER3301 Minitaster liegend TASTER 3301 RN1 680-1k Widerstandsnetzwerk 5x680 Ohm SIL 6-5 680 RN2 680-1k Widerstandsnetzwerk 5x680 Ohm SIL 6-5 680 RN3 680-1k Widerstandsnetzwerk 5x680 Ohm SIL 6-5 680 RN4 680-1k Widerstandsnetzwerk 5x680 Ohm SIL 6-5 680 RS232 Stiftleiste 3 polig LU 2,5 MS3 S1 Umschalter AS500 APC 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 UREF 10k 10k Spindeltrimmer 962-20 10k Weiteres nötiges Material: 1x Platine Doppelseitige Platine nur bei robotikhardware.de 1x Bauanleitung auf CD im Bausatz oder PDF (siehe unter [[#Weblinks]]) 1x IC Fassung IC-Fassung 16 polig 1x IC Fassung IC-Fassung 28 polig 3x Abstandbolzen Abstandbolzen je nach Bedarf auch zum kombinieren mit anderen Roboternetz-Boards 10x JUMPER Kurzschlussstecker Das ganze gibt es auch als Bausatz
Test- und Beispielprogramm in Bascom Basic
Eine ausführlichere Erläuterung mit Basom Übertragungshinweisen dazu in der PDF-Doku, siehe unter #Weblinks Das Beispiel steuert ein preiswertes LCD-Display an
'################################################### 'rnmega8test_rev1.4.BAS (c) 2005 'für 'RoboterNetz Board RN-MEGA8 nur für Version 1.4 der Platine 'Das neue preiswerte Entwicklungsboard zum experimentieren ' 'Aufgabe: ' Dieses Testprogramm testet gleich mehrere Eigenschaften auf dem Board ' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet ' Taste 1: Zeigt Batteriespannung über RS232 und LCD an ' Taste 2: Gibt per Zufall einen Lottozahlentip ab - 6 aus 49 ' Taste 3: Einige male Lauflicht über ein Balken-LED´s (2 Ports bleiben an, ' da dies rs232 Ports sind) ' Bei einer LED kommt es zu leichtem Knacksen, da der Piepser diesen ' Port ebenfalls nutzt ' ' Taste 4: Ein einfaches Sirenengeräusch ''Taste 5: Zeigt Copyright auf LCD Display ' Im Gegensatz zu vorherigen RN-Mega8 Revisionen können bei der ' Version 1.4 die LEDs auch dann aktiviert bleiben, wenn die ' AD Ports 0 bis 3 verwendet werden. Diese Ports werden nicht mehr per LED ' überwacht. Die LEDs sind nun an einigen anderen Ports angeschlossen, siehe ' aktuelle Dokumentation ' Jumper JREF (Referenzspannung=5V) muss bei diesem Demo gesteckt sein. ' Bei veränderter Referenzspannung / Bestückung muss Tastenabfrage angepaßt werden ' 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 Lauflicht() Declare Function Tastenabfrage() As Byte Declare Sub Textauflcdausgeben() Declare Sub Lottozahlen() Declare Sub Sirene() $regfile = "m8def.dat" Dim I As Integer Dim N As Integer Dim Ton As Integer Dim Ws As Word 'Wird für Messung bei Tastenabfrage verwendet Dim Adc_ohne_taste As Word $crystal = 16000000 'Quarzfrequenz '$crystal = 7372800 'Alternative Quarzfrequenz $baud = 9600 Config Scl = Portc.5 'Ports fuer I2C-Bus Config Sda = Portc.4 Config Adc = Single , Prescaler = Auto , Reference = Off 'Für Tastenabfrage + Spannungsmessung Config Pinc.0 = Input 'Für Tastenabfrage Portc.0 = 1 'Pullup Widerstand ein Start Adc Const Ref = 5 / 1023 'Für Batteriespannungsberechnung 'Bei einer anderen Referenzspannung muss die 2.5 durch entsprechend ersetzt werden 'Die Referenzspannung wird durch den Jumper JPREF bzw. Spindeltrimmer festgelegt Dim Taste As Byte Dim Volt As Single Config Pind.6 = Output Portd.6 = 0 I2cinit 'Falls I2C benutzt wird ' Falls ein LCD Display angeschlossen ist Dim ___lcdno As Bit Config Lcdpin=Pin,E = Portc.3,E2 = Portd.7,Rs = Portc.2,Db4 = Portd.2,Db5 = Portd.3,Db6 = Portd.4,Db7 = Portd.5 Config Lcd = 40 * 4 I = 0 Sound Portb.0 , 400 , 450 'BEEP Sound Portb.0 , 400 , 250 'BEEP Sound Portb.0 , 400 , 450 'BEEP Call Textauflcdausgeben Adc_ohne_taste = Getadc(0) 'Messe Spannung wenn keine Taste gedrückt ist Adc_ohne_taste = Adc_ohne_taste - 2 'für Toleranz abziehen Do Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 Call Batteriespannung 'Taste 1 Zeigt Bateriespannung über RS232 an Case 2 Call Lottozahlen 'Gibt Lottozahlen-Tip (ohne Gewähr) über rs232 und lcd 'Bei Gewinn bitte mit Autor Frank teilen :-) Case 3 Call Lauflicht 'Einige male Lauflicht über Balken LED´s anzeigen Case 4 Call Sirene Case 5 Call Textauflcdausgeben End Select Sound Portb.0 , 400 , 500 'BEEP End If Waitms 100 Loop End 'Diese Unterfunktion fragt die Tastatur am analogen Port ab Function Tastenabfrage() As Byte Tastenabfrage = 0 Ton = 600 Ws = Getadc(0) ' Print "ws=" ; Ws If Ws < Adc_ohne_taste Then Select Case Ws Case 400 To 440 Tastenabfrage = 1 Ton = 550 Case 330 To 370 Tastenabfrage = 2 Ton = 500 Case 260 To 300 Tastenabfrage = 3 Ton = 450 Case 180 To 230 Tastenabfrage = 4 Ton = 400 Case 100 To 130 Tastenabfrage = 5 Ton = 350 Case Else Print "Bitte Tastenabfrage an Messert ws=" ; Ws ; " anpassen!" End Select Sound Portb.0 , 400 , Ton 'BEEP End If End Function 'Diese Unterfunktion zeigt Bateriespannung an Sub Batteriespannung() Local W As Word Start Adc W = Getadc(1) Volt = W * Ref Volt = Volt * 5.3137 'Spannungsteiler (R9+R10)/R9 Print "Die aktuelle Spannung beträgt: " ; Volt ; " Volt" Print "Rev: " ; Ref ; " W=" ; W 'Auch auf LCD ausgeben ___lcdno = 0 Cls Locate 1 , 1 Lcd "Spannung:" ; Fusing(volt , "#.##") ; " Volt" End Sub 'Dies Funktion gibt auf einem angeschlossenen LCD-Display (2x27 Zeichen) 'eine Copyright Meldung aus Sub Textauflcdausgeben() ___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt Initlcd Cursor Off Cls Home Lcd "Das neue Experimentierboard" Locate 2 , 4 Lcd "** RN-MEGA 8 V1.4 **" ___lcdno = 1 'Dies ist nur notwendig wenn das Display zwei LCD-Controller besitzt Initlcd Cursor Off Cls Home Lcd "nach Roboternetz Standard" Locate 2 , 3 Lcd "(c) robotikhardware.de" 'Fuer RS232 Print "**** RN-MEGA 8 V 1.4 *****" Print "Das neue Mega 8 Entwicklungsboard von www.robotikhardware.de" End Sub 'Einige male Lauflicht über Balkenanzeige laufen lassen Sub Lauflicht() Config Portd = Output Config Pinb.0 = Output Config Pinb.1 = Output Portd = 255 Portb.0 = 1 Portb.1 = 1 For N = 1 To 10 For I = 0 To 9 Select Case I Case 0 To 7 : Portd.i = 0 Waitms 150 Portd.i = 1 Case 8: Portb.0 = 0 Waitms 150 Portb.0 = 1 Case 9: Portb.1 = 0 Waitms 150 Portb.1 = 1 End Select Next I Next N Config Portd = Input Config Pinb.0 = Input Config Pinb.1 = Input !Call 0 'Führt Software RESET aus End Sub Sub Lottozahlen() Print "Lotozahlen: "; ___lcdno = 0 'Ober Displayhälfte initialisieren, wenn das Display zwei LCD-Controller besitzt Initlcd Cursor Off Cls Home Lcd "Lottozahlentip-ohne Gewaehr):" " Locate 2 , 1 For I = 1 To 6 N = Rnd(48) N = N + 1 Print " " ; N ; Lcd " " ; N; Next I Print End Sub Sub Sirene() For N = 1 To 5 For I = 500 To 900 Sound Portb.0 , 5 , I Next I For I = 900 To 500 Step -1 Sound Portb.0 , 5 , I Next I Next N End Sub
Autor
Siehe auch
- TWI_Praxis
- Bascom
- Bascom - Erstes Programm in den AVR Controller übertragen
- RN-Definitionen
- RN-Board FAQ-Seite
- Avr
- RN-Control