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


Version 1.4

RNmeg8foto1.gif

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.


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!
RNMega8Diagramm.gif

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

Zum vergrößern anklicken

Bestückungsplan

Nur für Platinen Revison 1.4

Zum vergrößern anklicken

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

Rnmega8mitstandardlcd.jpg



'###################################################
'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

Freies Elektronik Projekt von mikrocontroller-elektronik.de/

Weblinks