Die I2C Relaisplatine

Werbung
einfache Ansteuerung / sehr flexibel
RN-KeyLCD Version 1.2
Ein kompaktes universelles LCD und Tastaturboard mit diversen Schnittstellen.
Ein LCD und eine Tastatur ist fast bei allen Mikrocontroller-Anwendungen, Robotik-Basteleien von
großem Vorteil. Nicht nur bei der späteren Bedienung der Schaltung sondern auch beim Debuggen
eigener Controlleranwendungen.
Der Nachteil war immer das ein Standard-LCD als auch eine Matrixtastatur viele Portleitungen belegt.
Damit macht dieses Board nun Schluß!
Das Board belegt keinerlei zusätzlichen Port, es kann sowohl über eine RS232 Schnittstelle (PC V24
Norm oder TTL Pegel) als auch I2C-Bus oder sogar RS485 angesteuert werden. Der Anschluß und
die Ansteuerung wird dadurch sehr einfach, nicht nur bei allen RN-Board´s.
Baudraten, I2C-Slave-Adresse und Betriebsmodus können über das Tastenfeld einfach umgeschaltet
werden. Der Modus bleibt auch bei Spannungsausfall erhalten!
Besonders Vorteilshaft ist das für Tastatur, die serielle Verbindung und den I2C-Bus intern ein
Ringbuffer (Zwischenspeicher) vorgesehen ist. So wird das angeschlossene Hauptboard (z.B. rnControl, anderes Board oder PC) bei Ausgaben nicht so stark wie bei herkömmlichen LCD´s
gebremst. Auch Tastatureingaben gehen nicht verloren wenn das Hauptboard mal gerade wegen
einer Operation nicht genügend Zeit hat um die Tasten schnell genug abzufragen. LCD und Tastatur
sind dabei völlig unabhängig über das gleiche Kabel ansteuerbar. Für die Verbindung zum PC oder
anderem Mikrocontrollerboard ist nur das übliche 3 poliges RS232 Kabel oder 10 polige I2C Kabel
notwendig.
Datum dieser Doku 28.07.05
Hier die Leistungsmerkmale / Eigenschaften von RN-KeyLCD:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
sehr einfach über verschiedene Anschlüsse ansteuerbar.
per RS232 Schnittstelle (V24 PC-Pegel) ansteuerbar (also nahezu sowohl über PC als auch alle Boards
Max232 etc. z.B. rn-Board Serie)
per RS232 TTL Pegel ansteuerbar (falls Board kein Max besitzt)
per I2C-Bus ansteuerbar (Slave ID kann per Tasten gewählt werden)
per RS485 ansteuerbar (in der derzeitigen Firmware wird jedoch noch kein Netzwerk oder spezielles
Protokoll unterstützt). Endwiderstände sind über Jumper aktivierbar.
Spezieller RS232 RING Modus. In dieser Betriebsart kann das Board quasi in Reihe mit anderen RS232
Boards geschaltet werden. Dazu verfügt RN-KeyLCD sowohl über eine 3 polige RS232 Ein- und eine
dreipolige Ausgangsstiftleiste. Auf diese Weise werden kann das Board also zwischen andere Board´s
geschaltet werden. Die Daten werden von RN-KeyLCD automatisch weitergeleitet als auch auf dem Display
angezeigt. Dies kann nützlich sein wenn man den Datenaustausch anderer Boards beobachten möchte.
Hex-Mode – alle eingehenden Bytes werden in diesem Mode Hexadezimal angezeigt. Ein sehr hilfreicher
Mode wenn man Schnittstellen/Protokolle prüfen will
LCD-Menü um Einstellungen wie SlaveID, Baudrate, Mode einzustellen
Wahlweise bei Tastendruck Interrupt am I2C-Bus auslösbar
RN-KeyLCD kann wahlweise über den I2C Bus mit Spannung versorgt werden, dadurch ist keine weitere
Kabelverbindung notwendig
Durch eine vorhandene Spannungsstabilisierung kann das Board auch mit Spannungen zwischen 6V und ca.
18V betrieben werden.
Beleuchtetes Display einfach steckbar (kann jederzeit wieder entnommen werden). Es werden sowohl blaue
als auch grün/gelbe Display unterstützt.
Display Kontrast regelbar
Beleuchtung per Software ein- und ausschaltbar um Batteriekapazität zu sparen
Andere Display können über eine Standard Wannenstecker extern angeschlossen werden (derzeit werden
nur 4x20 Zeichen Displays mit KS0073 Controller in der Firmware berücksichtigt)
Umlaute werden automatisch umgesetzt, so das Ausgaben wie Print "schön" auch richtig auf dem LCD
erscheinen.
Automatisches Scrolling (Text verschiebt sich wenn letzte Zeile und Zeichen erreicht ist)
Matrix Tastatur nur gesteckt und angeschraubt – jederzeit abnehmbar
Tastatureingaben werden in Ringbuffern zwischengespeichert. Der Abruf erfolgt als ASCII oder Scancode
(gleichzeitig gedrückte Tasten können so ermittelt werden)
Eingebauter Lautsprecher für Tastenbestätigung
Wahlweise können Tastenbetätigungen auch automatisch nach jeder Betätigung per RS232 als ASCIIZeichen versendet werden
Alle IC´s gesockelt
Profis können bei Bedarf auch eigene Firmware entwickeln / ISP-Programmierstecker ist vorhanden /
Schaltplan ist offengelegt
Roboternetz kompatible Platine (halbes Euroformat) und Stecker
Deutsche Doku mit Beispielen
Alles in allem ein Board das sicher etwas teuerer ist als ein reines LCD-Display, aber die vielfältigen
Einsatzmöglichkeiten sorgen dafür das dieses sicher nicht so schnell in einer Ablage verschwindet. Insbesondere
die schnelle Anschlussmöglichkeit per RS232 wird ein PC mit Terminalprogramm oft überflüssig machen.
RN-KeyLCD - Befehlsübersicht:
Die Ansteuerung von RN-KeyLCD ist recht einfach, Jedes Zeichen (Byte) welches per RS232,RS485
oder I2C empfangen wird, erscheint als ASCII-Zeichen auf dem LCD, die Cursorposition wird dabei
automatisch eine Stelle weiter gerückt. Ist das Zeilenende erreicht wird die nächste Zeile beschrieben.
Wird das letzte Zeichen der letzten Zeile beschrieben, so verschiebt sich automatisch der
Bildschirminhalt um eine Zeile nach oben (Autoscolling). Auf diese Weise werden also stets die letzten
4 Zeilen angezeigt.
Natürlich existieren auch einige Befehle um den Cursor an eine gewünschte Position zu setzen, die
Anzeige zu löschen oder aber Spezialbefehle um die LED Beleuchtung ein oder auszuschalten usw.
Diese Befehle bestehen aus einer bestimmten Bytefolge oder einem Sondercode. Auch hier ist es
egal ob diese Codes per I2C-Bus, RS232 oder RS485 gesendet werden.
Hier ist eine Übersicht der Funktionen in dem aktuellen RN-KeyLCD Betriebsystem V 1.2 (man
spricht von "Firmware"). Die Firmware kann jederzeit mit einem ISP-Programmierkabel gegen eine
andere ersetzt werden, falls es zum Beispiel ein Update gibt. AVR-Profis können sich sogar eine
eigene Firmware erstellen.
Befehlsübersicht:
Display löschen
Bytefolge (dezimal): 12
Basic-Beispiel (RS232):
Print Chr(12)
Carriage Return CR - Cursor nach links auf Spalte 1 setzen
Bytefolge (dezimal): 13
Basic-Beispiel (RS232):
Print Chr(13)
Linefeed LF 10 - Cursor eine Zeile tiefer
Bytefolge (dezimal): 10
Basic-Beispiel (RS232):
Print Chr(10)
Cursor positionieren um an bestimmte Stelle auf dem LCD-Display zu schreiben
Bytefolge (dezimal): 27 79 x y
x gibt hier die Spalte 1 bis 20 an
y gibt die Zeile 1 bis 4 an
Basic-Beispiel (RS232):
Print Chr(27);Chr(79);Chr(x);Chr(y)
Cursor sichtbar/unsichtbar (Standard ist ausgeschalteter Cursor)
Bytefolge (dezimal): 27 67 x
x =1 bedeutet Cursor einschalten
x =0 bedeutet Cursor ausschalten
Basic-Beispiel (RS232):
Print Chr(27);Chr(67);Chr(0)
LCD Beleuchtung ein- und aussschalten
Bytefolge (dezimal): 27 76 x
x =1 bedeutet Licht einschalten
x =0 bedeutet Licht ausschalten
Basic-Beispiel (RS232):
Print Chr(27);Chr(76);Chr(0)
Ein Zeichen aus Tastaturbuffer als Scancode senden
Durch senden dieses Befehles wird eine Taste die zwischenzeitlich im Tastaturbuffer gespeichert ist,
als Scancode (2 Byte) per RS232 zurückgesendet. Der Scancode hat den Vorteil das auch
gleichzeitig gedrückte Tasten vom Steuerboard ermittelt werden können.
Bytefolge (dezimal): 27 120
Basic-Beispiel (RS232):
Print Chr(27);Chr(120)
Nach dem Befehl sendet RN-KeyLCD zuerst das Low und dann das High Byte des Scancodes. Die
Bedeutung des Scancodes ist weiter unten erläutert.
Ein Zeichen aus Tastaturbuffer als ASCII Zeichen senden
Durch senden dieses Befehles wird eine Taste die zwischenzeitlich im Tastaturbuffer gespeichert ist,
als Ascii-Zeichen (1 Byte) per RS232 zurückgesendet. Der ASCII-Code hat den Vorteil das nur 1 Byte
erforderlich ist und sehr einfach ivom Steuerboard weiterverarbeitet werden kann. Der Nachteil
gegenüber dem Scancode besteht darin, das das gleichzeitige drücken von Tasten kein gültiges
Zeichen ergeben.
Bytefolge (dezimal): 27 121
Basic-Beispiel (RS232):
Print Chr(27);Chr(121)
Als Rückgabe wird das ASCII-Zeichen geliefert, das auch auf der Matrixtastatur abgebildet ist. Bei
gleichzeitigem Betätigen von mehreren Tasten wird ein "?" gesendet.
AUTOSEND-Modus - Gedrückte Tasten automatisch nach Tastenbetätigung senden
Durch diesen Befehl wird ein Modus aktiviert, welcher eine gedrückte Tasten sofort nach der Eingabe
per RS232 gesendet. Je nach gewählten Modus (siehe nächsten Befehl TASTENCODE-Modus) wird
das Tastaturereignis als 1 Byte ASCII-Code oder als 2 Byte Scancode gesendet.
Die zuvor beschriebenen "Abholbefehle" sind in diesem Fall nicht notwendig bzw. möglich. Dieser
Mode bleibt solange aktiviert bis er abgeschaltet wird . Nach einem Reset bzw. Neustart wird er
automatisch aktiviert. Im I2C-Modus ist diese Betriebsart nicht möglich, dort wird dieser Mode
automatisch ignoriert.
Bytefolge (dezimal): 27 122 x
x =1 bedeutet Automode aktiv
x =0 bedeutet Automode ausgeschaltet
Basic-Beispiel (RS232):
Print Chr(27);Chr(122);Chr(0)
TASTENCODE-Modus - Scancode und ASCII-Mode für Autosend und I2C-Abruf umschalten
Durch diesen Befehl kann man wählen ob die Tastatureingaben im Autosend-Modus (siehe Befehl
zuvor) per Ascii-Zeichen oder als 2 Byte Scancode gesendet werden sollen.
Nach dem Einschalten ist generell der ASCII-Modus aktiviert.
Mit diesem Befehl wird gleichzeitig im I2C-Mode die Art des Tastaturzeichenabrufes bestimmt. Per
I2C müssen immer zwei Byte abgerufen werden. Im Ascii-Modus befindet sich dann im ertsen Byte
das entsprechende ASCII-Zeichen des Tastaturfeldes. Im zweiten Byte steht immer 128!
Im Scancode-Modus steht jedes Bit der beiden Bytes für eine Taste!
Bytefolge (dezimal): 27 119 x
x =1 bedeutet Scancode-Modus aktiv
x =0 bedeutet ASCII Mode aktiv
Basic-Beispiel (RS232):
Print Chr(27);Chr(119);Chr(1)
Tastaturspeicher löschen (alle bisher gedrückten Tasten löschen)
Bytefolge (dezimal): 27 123
Basic-Beispiel (RS232):
Print Chr(27);Chr(123)
Zeige Copyright und Firmware Version über RS232
Bytefolge (dezimal): 27 200
Basic-Beispiel (RS232):
Print Chr(27);Chr(200)
Hinweise zu I2C-Modus
Die Ansteuerung im I2C-Mode ist völlig identisch mit dem RS232-Mode. Wird ein Byte über I2C
gesendet, so wird dieses ebenfalls auf dem LCD-Display ausgegeben. Sondercodes werden genau
wie oben beschrieben behandelt.
Tastatureingaben werden per I2C allerdings stets über einen Lesebefehl (SlaveID + 1) angefordert, da
der I2C-Bus das automatische senden von I2C-Slave Board´s nicht erlaubt.
Gelesen werden aus RN-KeyLcd stets 2 Byte. Je nach Tastencode-Modus (siehe oben) müssen die
Bytes unterschiedlich interpretiert werden.
Im ASCII-Modi enthält das erste Byte das aufgedruckte Tastenfeld-Zeichen als ASCII-Code. Das
zweite Byte enthält immer den Wert 128 und braucht in diesem Mode nicht weiter beachtet zu
werden. Es kann jedoch zur Erkennung des Modus genutzt werden.
Im Scancode-Modi steht jedes Bit der beiden Bytes für eine Taste.
Erläuterung des Scancode:
Low Byte (erste abgerufene Byte):
Bit 0 = Taste 1
Bit 1 = Taste 2
Bit 2 = Taste 3
Bit 3 = Taste 4
Bit 4 = Taste 5
Bit 5 = Taste 6
Bit 8 = Taste 7
Bit 7 = Taste 8
B
High Byte (zweite abgerufene Byte)
Bit 0 = Taste 9
Bit 1 = Taste 10
Bit 2 = Taste 11
Bit 3 bis 6 = derzeit in der Firmware nicht genutzt
Bit 7 = Steht auf 1, wenn ASCII-Mode aktiviert
Die hier beschriebenen Befehle werden alle außer Kraft gesetzt, wenn RN-KeyLCD per Tasten in den
Hex-Mode (siehe nächste Seiten) geschaltet wird.
Erwähnenswert ist noch das wegen der verwendeten Matrixtastatur die genauen Tastenkombinationen nur dann ermittelt
werden können wenn einzelne oder ein bzw. zwei Tasten gleichzeitig gedrückt werden. Werden noch mehr Tasten gleichzeitig
gedrückt, so gibt es einige Sonderfälle bei bestimmten Tastenkombinationen wo weitere Scancode-Bits gesetzt werden. Dies
sollte dann bei der Abfrage berücksichtigt werden.
RN-KeyLCD Einstellungen
Einige wichtige Einstellungen sind bei RN-KeyLCD direkt über die vorhandene Matrixtastatur möglich,
dazu muss kein Steuerboard oder PC angeschlossen sein.
Direkt nach dem das Board durch einschalten der Betriebsspannung aktiviert wurde, meldet sich
dieses mit folgender Einschaltmeldung:
Dies ist im übrigen gleich ein guter Test, falls man das Board selbst aufgebaut hat (Bausatz).
Erscheint keine Meldung, dann sollte man Jumper und Spannungsversorgung prüfen.
Folgende Funktionen stehen zur Verfügung:
Hardware-RESET mit Grundstellung
Werden die Tasten 1,4 und 7 gleichzeitig gedrückt, so werden Betriebsmode, I2C-Slave ID, Autosend,
Baudrate wieder in die ursprüngliche Grundstellung gebracht und ein RESET ausgelöst.
Das bedeutet das Board befindet sich dann im RS232-Mode mit 9600 Baud, Autosend aktiviert und
SlaveID Hex 40 wird vorgegeben. Ein eventueller Hexmode wird auch deaktiviert.
Diese Tastenkombination ist eigentlich nur sehr selten notwendig.
HEX-Mode Ein- und Ausschalten
Werden die Tasten 1 und # gleichzeitig gedückt, so schalte man den Hexmode ein. Ist de rHexmode
bereits eingeschaltet so führt ein erneutes drücken zur Abschaltung des HEX-Mode.
Im sogenannten Hex-Mode werden alle eingehenden Zeichen (egal in welchem Schnittstellenmodus
RS232, RS232RING, I2C, RS485) als Hexadezimalzahl dargestellt. Dies kann sehr hilfreich sein wenn
man bestimmte Schnittstellen oder Protokolle überprüfen will.
Im Hexmode werden keine Sonderbefehle ausgeführt damit alle Bytes von 0 bis 255 auch wirklich
unverändert dargestellt werden.
Display löschen
Durch gleichzeitig drücken der Tasten # und 3 wird das LCD-Display gelöscht, Tastaturbuffer und I2CBefehlsspeicher gelöscht. Der Cursor wird auf Home-Position gebracht. Dies ist sinnvoll wenn man
bestimmte Bytefolgen verfolgen will und etwas Platz und Übersicht braucht, insbesondere im HexMode. Einstellungen werden nicht verändert, auch Autosend-, Scan- oder Hexmode! werden nicht
geändert.
Grundeinstellungen per LCD-Menü
Durch gleichzeitiges drücken der Tasten 1 und 2 kommt man in ein Menü wo verschiedene
Einstellungen gewählt werden können. Siehe nächste Seite.
LCD-Einstellungsmenü
Durch gleichzeitiges drücken der Tasten 1 und 2 kommt man in ein Menü wo verschiedene
Einstellungen gewählt werden können.
Nach dem drücken der Tasten sieht das Menü in etwa so aus (Slave ID auf Bild stimmt nicht):
Mit folgenden Tasten können nun folgende Eigenschaften umgeschaltet werden:
Taste 4
Betriebsmodus, also die Schnittstelle die genutzt werden soll
Wählbar ist: RS232 , I2C , RS232 RING , RS485
Erläuterung der Modi:
RS232: In diesem Modus werden alles Eingaben und Steuerbefehle über die dreipolige
Stiftleiste RS232 erwartet. Wird das IC1 und IC3 aus der Fassung entfernt, so kann das Board
auch über die 4 polige Stiftleiste RS232TTL im TTL-Pegel angesteuert werden.
RS232RING: Dies ist eine besondere Betriebsart, hier wird das Board zwar auch über die 3
polige RS232 Schnittstelle angesteuert, jedoch wird ein zweites beliebiges Board ebenfalls per
RS232 mit einer zweiten dreipoligen Stiftleiste NEXTRS verbunden. Zudem muss der Jumper
JP6 entfernt werden. Alle eingehenden Daten werden wie üblich auf dem Display dargestellt,
jedoch zugleich an das zweite angeschlossene RS232 Board weitergegeben. Die Rückgaben
des zweiten Boardes werden dann als Rückgabe von RN-KeyLCD ebenfalls zurückgegeben.
Dieser Betriebsart erlaubt also die Zwischenschaltung von RN-KeyLCD in bestehende RS232
Verbindungen. Dies kann nützlich sein, wenn man die gesendeten Daten sichtbar verfolgen
will.
I2C: In diesem Modus erfolgt die Steuerung von RN-KeyLCD komplett über den I2C-Bus. Alle
Bytes die über den I2C Bus gesendet werden, werden identisch wie die RS232 Bytes
behandelt. Die Standard I2C-Slave ID Vorgabe ist Hex 40 (anders als im Bild gezeigt)
RS485: In diesem Modus werden die Daten über eine RS485 Verbindung empfangen und
gesendet. Gewöhnlich steht das Board immer im Empfangsmodus- Lediglich bei Abruf von
Tastaturereignissen sowie im AUTOSEND-Mode schaltet das Board automatisch ganz kurz
auf senden um. Wenn dieser Modus genutzt wird, muss IC1 aus der Fassung entfernt werden
und IC3 vorhanden sein.
Ein spezielles RS485 Protokoll wird derzeit nicht unterstützt, daher eignet sich dieser Modus
vorwiegend auch zur Kontrolle von RS485 Verbindungen.
Taste 5
Baudrate, also die Übertragunsgeschwindigkeit der RS232 Schnittstelle
Wählbar ist: 300, 2400, 9600, 19200, 38400 Baud
Taste 6
I2C-Slave ID, also die Slave-Adresse über die RN-KeyLCD angesteuert werden soll. Es kann eine
beliebige I2C-Slave ID gewählt werden. Somit kann man auch sehr viele RN-KeyLCD Board´s an
einem Bus (I2C Kabel) nutzen und getrennt ansprechen. Zudem ist eine wählbare ID sehr günstig
wenn man beispielsweise im Hex-Mode die Sendung an ein anderes I2C-Board kontrollieren will.
Durch die Taste 6 wird die ID immer um 2 erhöht und beginnt dann schließlich wieder bei 2 von vorn.
Über die Taste 7 kann man in größeren Schritten umschalten.
Taste #
Durch drücken dieser Taste werden die Einstellungen fest gespeichert und das Menü verlassen. Die
Einstellungen bleiben auch erhalten wenn das Board von der Spannung getrennt wird!
Wurde die SLAVE ID geändert, so wird nach dem Speichern automatisch ein RESET durchgeführt.
Beispiele wie man RNKeyLCD nutzen kann
Die Ansteuerung von RN-KeyLCD ist über alle Schnittstellen denkbar einfach. Um das übersichtlich zu
demonstrieren hier ein paar kleine Bascom Basic-Programme. Verwendet wurde hier das recht
beliebte Board RN-Control, natürlich läßt es sich ähnlich auch mit anderen Board´s oder
Programmiersprachen ansteuern.
So einfach geht’s per RS232
Bei diesem einfachen RN-Control Beispiel werden die rs232 Anschlüsse von rn-Control und rn-KeyLCD über eine
3 polige Leitung verbunden. Das Board RN-KeyLCD versorgt man daher am besten mit einer externen
Spannungsquelle.
'###################################################
'rnkeylcd_rs232.bas
'Beispiel: zu RN-KeyLCD
'Das Minimalbeispiel demonstriert wie einfach Texte mit Print
'ausgegeben werden
'
'Autor: Frank
'Anleitung findet man unter http://www.Roboternetz.de im Download Bereich
'oder www.robotikhardware.de
'Weitere Beispiele sind im Roboternetz gerne willkommen!
'##############################################################
' ------------- Hier die üblichen RN-Control Anweisungen -------------$regfile = "m32def.dat"
$crystal = 16000000
'Quarzfrequenz
$baud = 9600
' ------------- Ende der üblichen RN-Control Anweisungen -------------Wait 1
'Warte bis LCD bereit, falls gleicheitig Spannung eingeschaltet wird
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Print
Print
Print
Print
Print
Chr(12);
"Hallo Bastler!"
"Wenn dieser Text"
"erscheint, dann"
"klappt RS232 Modi" ;
'Display löschen
'
End
Wie zu erkennen ist benötigt das Hauptprogramm eigentlich nur 5 Print Befehle um alle 4 LCD-Zeilen zu
beschreiben. Ein Treiber ist nicht notwendig. Aus diesem Grund kann das LCD auch an Board´s genutzt werden,
die eigentlich für ein Terminalprogramm ausgelegt sind.
Die erste Printzeile sendet das Byte 12. Dieser Sondercode löscht das LCD-Display, siehe Befehlstabelle in der
Anleitung weiter vorne.
Zu beachten ist das bei der letzten Zeile ein Semikolon genutzt wird, da ansonsten der Print Befehl noch einen
Zeilenvorschub senden würde, was den Display Inhalt um eine Zeile nach oben schieben würde.
Man kann nahezu das gleiche Ergebnis erreichen, wenn man das Hauptprogramm zu einem Befehl
zusammenfasst:
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Print Chr(12) ; "Hallo Bastler! Wenn dieser Text erscheint, dann klappt RS232 Modi" ;
End
Der Test wird in dem Beispiel fortlaufend ausgegeben, das heißt der Zeilenwechsel erfolgt immer wenn 20
Zeichen erreicht sind. Möchte man jedoch wieder an einer bestimmten Stelle den Zeilenvorschub, so kann man
es auch so schreiben:
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Print Chr(12) ; "Hallo Bastler!" ; Chr(13) ; Chr(10) ; "Wenn dieser Text" ; Chr(13) ; Chr(10)
; "erscheint, dann" ; Chr(13) ; Chr(10) ; "klappt Rs232 Modi" ;
End
Die erste Form ist diesbezüglich sicher übersichtlicher, es sollte nur zum Verständnis gezeigt werden.
Müssen Daten gezielt an eine bestimmte Stelle auf dem LCD-Display geschrieben werden, so kann man vor den
Ausgabecursor (der normalerweise unsichtbar ist) an eine bestimmte Position setzen.
Das nachfolgende Beispiel demonstreirt wie man zum Beispiel zwei Textausgaben an genau definierter Stelle
ausgibt:
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Print
Print
Print
Print
Print
Chr(12) ;
Chr(27) ; Chr(79) ; Chr(5) ; Chr(2);
"Zeile2 Spalte 5" ;
Chr(27) ; Chr(79) ; Chr(10) ; Chr(4);
"Zeile4/S10" ;
' LCD löschen
'Cursor in Zeile 2 Spalte 5
'Cursor in Zeile 4 Spalte 10
End
Wie zu erkennen ist, wird der Cursor über Print-Anweisung an eine beliebige Stelle gesetzt. Der anschließende
Print Befehl gibt dann genau dort die nächsten Zeichen aus.
Wenn man die Chr()-Codes nicht so sehr mag, dann kann man sich in der jeweiligen Programmiersprache auch
sehr einfach ein paar übersichtliche Befehle definieren. Im nächsten Beispiel wurde beispielsweise ein Befehl zur
Cursor-Positionierung und zur Bildschirmlöschung definiert. Das Hauptprogramm ist dadurch viel übersichtlicher
und zugleich kürzer:
'
'###################################################
'rnkeylcd_rs232_test5.bas
'##############################################################
Declare Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
' ------------- Hier die üblichen RN-Control Anweisungen -------------$regfile = "m32def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32
$crystal = 16000000
'Quarzfrequenz
$baud = 9600
' ------------- Ende der üblichen RN-Control Anweisungen -------------Wait 1
'Warte bis LCD bereit, falls gleicheitig Spannung eingeschaltet wird
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Rnlcd_clr
Rnlcd_cursor 5 , 2
Print "Zeile2 Spalte 5" ;
Rnlcd_cursor 10 , 4
Print "Zeile4/S10" ;
End
'Die speziellen Befehle für das Board RN.KeyLCD:
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Print Chr(27) ; Chr(79) ; Chr(spalte) ; Chr(zeile);
End Sub
Sub Rnlcd_clr()
Print Chr(12);
End Sub
Die oberen Stack-Anweisungen sind in dem Beispiel eigentlich nicht notwendig, allerdings sollte man sich
angewöhnen diese einzufügen sobald man mit Funktionen hantiert. Ansonsten kann es schnell vorkommen das
ein zu klein definierter Stack zu Programmfehlern führt.
In dem Beispiel wurden nur 2 LCD-Befehle definiert, man kann natürlich noch eine ganze Reihe eigener Befehle
hinzufügen, allerdings reichen diese beiden schon für fast alle Ausgaben aus.
Das nachfolgende Beispiel zeigt wie man zum Beispiel in der Mitte des Display langsam eine hochzählende Zahl
sieht:
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Dim I As Word
Rnlcd_clr
Rnlcd_cursor 5 , 2
Print "Zähler:"
Do
Rnlcd_cursor 14 , 2
Print I
I = I + 1
Wait 1
Loop
End
Und noch ein letztes Ausgabebeispiel welches das Scrolling zeigt:
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Dim I As Word
Rnlcd_clr
Do
Print
Print "Das ist Zeile : " ; I;
I = I + 1
Wait 1
Loop
End
Damit dürfte klar sein wie die Ausgabe funktioniert. Wie man andere Befehle zum Ein- und Ausschalten des
Cursors, zum deaktivieren der Beleuchtung usw. sendet, dürfte jetzt auch kein Problem mehr sein.
Die Tastenabfrage im RS232Modus
Die Tastenabfrage ist im RS232-Modus ebenfalls sehr einfach. Wie schon aus der Befehlsübersicht zu ersehen
ist, gibt es eine ganze Reihe von Möglichkeiten die Tasten abzufragen. Das erste Beispiel demonstriert den
AUTOSEND-Mode im ASCII-Format. Dies ist der Modus, der in der Grundeinstellung festgelegt ist. Jedesmal
wenn eine Taste gedrückt wird, wird diese per RS232 an das Steuerboard gesendet.
In dem unteren Beispiel werden diese tastenbytes Empfangen und gleich zur Kontrolle auch auf dem LCD
ausgegeben.
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Dim Taste As Byte
Rnlcd_clr
Do
If Ischarwaiting() = 1 Then
Taste = Inkey()
Print "Taste: " ; Chr(taste)
End If
Loop
End
Drücken Sie nach dem Starten mal beliebige Tasten. Das ganze funktioniert also äußerst einfach. Über eine IFAnweisung oder Select-Case Befehl könnte man nun den Tasten verschiedene Aufgaben zuweisen, z.B. Roboter
vorfahren, rückwärts fahren, staubsaugen oder halt ganz andere Dinge.
Lediglich gleichzeitig gedrückte Tasten sind in diesem Mode nicht möglich, dafür werden automatisch
Fragezeichen gesendet.
Der Scanmodus erlaubt aber auch das Betätigen mehrerer gleichzeitiger Tasten denn hier werden immer 2 Byte
empfangen, wobei jedes Bit für eine Taste steht:
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Dim Tlow As Byte
Dim Thigh As Byte
Print Chr(27) ; Chr(119) ; Chr(1)
Rnlcd_clr
Do
Tlow = Waitkey()
Thigh = Waitkey()
Print "Low: " ; Tlow ; " High:" ; Thigh
Loop
'Tasten Scanmodus aktivieren
End
Das obere Byte schaltet durch einen Print Befehl den Scancode-Modus ein. Anschließend empfängt es den
Scancode und gibt beide Bytes auf dem LCD aus. Dies ist recht hilfreich zum Verständnis. Geben Sie das
Beispiel mal ein und klicken Sie auch mehrere Tasten gleichzeitig. Die Tastenwerte werden dadurch addiert.
Das nachfolgende Beispiel demonstriert wie man in Bascom Basic die einzelnen Bits abfragt und somit den
Tasten bestimmte Aufgaben zuweist. In dem Beispiel wird für jede Taste nur das Wort "Aufgabe x" ausgegeben,
jedoch hätte man statt diesem Print-Befehl natürlich auch ein Funktionsaufruf oder ein Gosub Befehl einfügen
können.
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Dim Tlow As Byte
Dim Thigh As Byte
Print Chr(27) ; Chr(119) ; Chr(1)
Rnlcd_clr
Do
Tlow = Waitkey()
Thigh = Waitkey()
If
If
If
If
If
If
If
If
If
If
If
If
Loop
Tlow.0
Tlow.1
Tlow.2
Tlow.3
Tlow.4
Tlow.5
Tlow.6
Tlow.7
Thigh.0
Thigh.1
Thigh.2
Thigh.3
=
=
=
=
=
=
=
=
1
1
1
1
1
1
1
1
=
=
=
=
Then
Then
Then
Then
Then
Then
Then
Then
1
1
1
1
Print
Print
Print
Print
Print
Print
Print
Print
Then
Then
Then
Then
"Aufgabe
"Aufgabe
"Aufgabe
"Aufgabe
"Aufgabe
"Aufgabe
"Aufgabe
"Aufgabe
Print
Print
Print
Print
'Tasten Scanmodus aktivieren
1"
2"
3"
4"
5"
6"
7"
8"
"Aufgabe
"Aufgabe
"Aufgabe
"Aufgabe
9"
10"
11"
12"
End
Das besondere bei dieser Abfrage ist, das durch gleichzeitiges betätigen von Tasten auch quasi gleichzeitig
mehrere Aufgaben ausgeführt werden.
Bislang haben wir nur gesehen wie Tasten im AUTOSEND-Modus abgefragt werden. Wie schon erläutert sendet
RN-KeyLCD iin diesem Modi automatisch die Tasten direkt nach der Eingabe. Es gibt aber Aufgaben bei denen
das Hauptboard nicht genügend Zeit hat um ständig die Tasten abzufragen, somit gingen in dieser Betriebsart
eventuell Tasten verloren. Für diesen Zweck gibt es auch eine Möglichkeit bei der Tasten in RN-KeyLCD
zwischengespeichert werden. Die Tasten können dann nacheinander vom Hauptboard abgerufen werden,
sobald dafür Zeit ist. Für diesen Zweck haben wir im nachfolgenden Beispiel gleich eine spezielle Funktion
definiert welche die beiden Scancode-Bytes abruft und zu einer WORD Variable zusammenfügt. Diese Methode
erleichtert die Weiterverabeitung des Scancodes, denn für jede Taste ist ein Bit der WORD Variablen zuständig.
'###################################################
'rnkeylcd_rs232_test11.bas
'##############################################################
Declare Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
Declare Function Rnlcd_getscan() As Word
' ------------- Hier die üblichen RN-Control Anweisungen -------------$regfile = "m32def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32
$crystal = 16000000
'Quarzfrequenz
$baud = 9600
' ------------- Ende der üblichen RN-Control Anweisungen -------------Wait 1
'Warte bis LCD bereit, falls gleicheitig Spannung eingeschaltet wird
'Das Hauptprogramm zum Ansteuern von RN-KeyLCD
Dim Taste As Word
Print Chr(27) ; Chr(122) ; Chr(0);
Print Chr(27) ; Chr(119) ; Chr(1);
Rnlcd_clr
Do
Taste = Rnlcd_getscan()
If Taste <> 0 Then
Print "Taste: " ; Taste
End If
'Autosend deaktivieren
'Tasten Scanmodus aktivieren
Wait 3
Zwischenspeicher zu demonstrieren
Loop
' 3 Sekunden Pause um
End
'Die speziellen Befehle für das Board RN.KeyLCD:
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Print Chr(27) ; Chr(79) ; Chr(spalte) ; Chr(zeile);
End Sub
Sub Rnlcd_clr()
Print Chr(12);
End Sub
'Scancode als Word abfragen
Function Rnlcd_getscan() As Word
Local Tlow As Byte
Local Thigh As Byte
Local Temp As Byte
'Diese erste Schleife löscht nur RS232 Buffer
Do
Temp = Inkey()
Loop Until Ischarwaiting() = 0
Print Chr(27) ; Chr(120);
'Befehl damit RN-KeyLCD Taste auf Speicher sendet
Tlow = Waitkey()
Thigh = Waitkey()
Rnlcd_getscan = Thigh * 256
Rnlcd_getscan = Rnlcd_getscan + Tlow
End Function
Im Hauptprogramm wurde im oberen Beispiel extra ein 3 Sekunden Wait-Befehl eingefügt bevor die nächste
Taste abgerufen wird. Wenn Sie nun schnell hintereinander Tasten auf dem Tastenfaed drücken, werden diese
Tasten automatisch zwischengespeichert und nacheinander vom Hauptboard abgerufen. Es geht also nix
verloren, alle Tastenwerte werden nacheinander auf dem LCD ausgegeben
Es gibt noch eine andere Funktion bei der man statt dem Scancode auch den ASCII-Code gezielt abrufen kann.
Auch dort werden alle Tasten in einem Zwischenspeicher (Ringbuffer) abgelegt, die vorgehensweise ist sehr
ähnlich, ein Beispiel dazu erübrigt sich daher sicherlich.
Anmerkung:
Die Betriebsmodi RS485 und RS232Ring funktionieren auf die gleiche Weise wie der zuvor beschriebene RS232
Mode, die Beispiele können somit übernommen werden. Allerdings werden im RS232Ring-Mode die Tasten an
das eingeschleifte Board weitergesendet und können nicht vom Hauptboard empfangen werden. Der
RS232RING-Mode ist also vorwiegend zur Überwachung gedacht.
Die Ansteuerung per I2C-Bus
Obwohl die Ansteuerung von den Befehlen her betrachtet, per I2C-Bus kaum anders ist, gestaltet sich die TextAusgabe doch etwas anders weil halt für den I2C-Bus kein "print" Befehl exestiert. Man muss also die Bytes und
Strings entweder mit den herkömmlichen I2C-Befehlen an das Board senden, oder bastelt sich ein paar kleine
Hilfsroutinen. Die Hilfsroutinen könnte man dann später sehr einfach mit einem include-Befehl in eigene
Programme integrieren. Der besseren Übersicht wegen verwenden wir in den hier gezeigten Beispielen keinen
Include-Befehl.
Hier ein Beispiel mit den herkömmlichen I2C-Befehlen in Bascom-Basic:
'###################################################
'rnkeylcd_i2c_test1.bas
'Beispiel: zu RN-KeyLCD
'LCD und Matrixtastaturboard RN-KeyLCD wird per I2C angesteuert
'
' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.7.7 getestet
' Nur ältere Bascom Versionen benötigen eine neue Libary
' http://www.roboternetz.de/phpBB2/viewtopic.php?t=694&start=22
'###################################################
'
' ------------- Hier die üblichen RN-Control Anweisungen -------------$regfile = "m32def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32
$crystal = 16000000
'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0
'Ports fuer IIC-Bus
Config Sda = Portc.1
' ------------- Ende der üblichen RN-Control Anweisungen -------------'Hauptprogramm
Const Rnkeylcd_slaveid_write = &H40
Const Rnkeylcd_slaveid_read = &H41
'I2C SlaveAdresse
Dim Stemp As String * 100
Wait 1
I2cinit
'Warte bis LCD bereit, falls gleicheitig Spannung eingeschaltet wird
Stemp = Chr(12) 'Löscht LCD
I2csend Rnkeylcd_slaveid_write , Stemp , 1
Stemp = "RN-KeyLCD per I2C"
I2csend Rnkeylcd_slaveid_write , Stemp , 17
End
Hier wird einfach eine String-Variable mit dem auszugebenden String oder auch der Befehlssequenz belegt. Der
String kann dann bequem mit der Bascom Anweisung I2csend verschickt werden, es muss lediglich die SlaveID
und die Länge des Strings mit angegeben werden.
Das das ganze mit ein paar kleinen Funktionen viel bequemer geht, sieht man im nachfolgenden Beispiel. Das
Hauptprogramm ist nun viel übersichtlicher. Neben zwei Strings wird nun gleich gezeigt wie man auch eine
Variable an einer bestimmten Position ausgibt. Ein Zähler wird im Sekundentakt in der vierten Zeile hochgezählt:
'###################################################
'rnkeylcd_i2c_test2.bas
'Beispiel: zu RN-KeyLCD
'LCD und Matrixtastaturboard RN-KeyLCD wird per I2C angesteuert
'
' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.7.7 getestet
' Nur ältere Bascom Versionen benötigen eine neue Libary
' http://www.roboternetz.de/phpBB2/viewtopic.php?t=694&start=22
'###################################################
'
' ------------- Hier die üblichen RN-Control Anweisungen -------------$regfile = "m32def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32
$crystal = 16000000
'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0
'Ports fuer IIC-Bus
Config Sda = Portc.1
' ------------- Ende der üblichen RN-Control Anweisungen --------------
Declare Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
Declare Sub Rnlcd(byval Text As String)
Const Rnkeylcd_slaveid_write = &H40
Const Rnkeylcd_slaveid_read = &H41
'I2C SlaveAdresse
'Hauptprogramm
Dim Stemp As String * 100
Dim I As Word
Wait 1
'Warte bis LCD bereit, falls gleicheitig Spannung eingeschaltet wird
I2cinit
Rnlcd_clr
Rnlcd_cursor 4 , 2
Rnlcd "Willkommen im"
Rnlcd_cursor 4 , 3
Rnlcd "Roboternetz"
Do
Rnlcd_cursor 4 , 4
Stemp = "Zähler: " + Str(i)
Rnlcd Stemp
I = I + 1
Wait 1
Loop
End
'-------------------------------------------------------------'Die speziellen I2C Befehle für das Board RN.KeyLCD:
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Local Befehle As String * 4
Befehle = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
I2csend Rnkeylcd_slaveid_write , Befehle , 4
End Sub
Sub Rnlcd_clr()
Local Befehle As String * 2
Befehle = Chr(12)
I2csend Rnkeylcd_slaveid_write , Befehle , 1
End Sub
Sub Rnlcd(byval Text As String)
Local Le As Word
Le = Len(text)
I2csend Rnkeylcd_slaveid_write , Text , Le
End Sub
'Eine Art Print Befehl
Wie man das LCD nun über I2C-Ansteuert dürfte somit klar sein. Es ist zu empfehlen die unteren LCD-Befehle in
eigene Programme zu übernehmen, das erleichtert die Ansteuerung doch erheblich. Man könnte in Bascom auch
eine Libary erstellen und dann die Bascom-LCD Befehle nutzen. Allerdings bringt das keine echten Vorteile und
würde vermutlich etwas mehr Speicher belegen da dort unnötiger Code enthalten ist.
Der I2C-Bus ist bei RN-KeyLCD mit 100kBit ausgelegt. Ein Ringbuffer sorgt dafür das der I2C-Bus sehr schnell
wieder freigegeben wird, somit wird der Bus vom Board kaum belastet.
Tastaturabfrage per I2C-Bus
Die Tastaturabfrage per I2C funktioniert ähnlich wie bei der RS232-Schnittstelle mit Abrufbefehl. Per I2C-Bus gibt
es keinen AUTOSEND-Befehl, das bedeutet Tasten können nicht automatisch an das Hauptboard gesendet
werden, sowas ist generell über I2C nicht möglich.
Daher muss das Hauptboard ab und zu die Tasten durch einen Lesebefehl abfragen. Ein vorhandener
Ringspeicher sorgt dafür das keine Tasten verloren gehen, selbst wenn das Hauptboard mal nicht genug Zeit für
den Abruf findet.
Es werden immer 2 Bytes abgerufen, egal ob sich das Board im ASCII-Modus oder im Scancode-Modus befindet.
Die Bytes müssen nur unterschiedlich interpretiert werden, siehe Befehlsbeschreibung.
In dem nachfolgenden Beispiel haben wir gleich eine Unterfunktion definiert die sowohl im Scan- als auch ASCIIModus funktioniert. Im ASCII-Modus liefert die Funktion das ASCII-Zeichen und im ScanCode-Modus den
Scancode als WORD zurück.
Mit Hilfe der Funktion ist die Tastenabfrage sehr einfach:
'###################################################
'rnkeylcd_i2c_test3.bas
'Beispiel: zu RN-KeyLCD
'LCD und Matrixtastaturboard RN-KeyLCD wird per I2C angesteuert
'
' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.7.7 getestet
' Nur ältere Bascom Versionen benötigen eine neue Libary
' http://www.roboternetz.de/phpBB2/viewtopic.php?t=694&start=22
'###################################################
'
' ------------- Hier die üblichen RN-Control Anweisungen -------------$regfile = "m32def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32
$crystal = 16000000
'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0
'Ports fuer IIC-Bus
Config Sda = Portc.1
' ------------- Ende der üblichen RN-Control Anweisungen --------------
Declare
Declare
Declare
Declare
Declare
Declare
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Sub Rnlcd_clr()
Sub Rnlcd(byval Text As String)
Sub Rnlcd_cr()
Function Rnlcd_getscan() As Word
Sub Rnlcd_scanmodus(byval Ein As Byte)
'Tastenscanmodus ein und ausschalten
Const Rnkeylcd_slaveid_write = &H40
Const Rnkeylcd_slaveid_read = &H41
'I2C SlaveAdresse
'Hauptprogramm
Dim Stemp As String * 100
Dim Taste As Word
I2cinit
Rnlcd_clr
Rnlcd_scanmodus 1
Do
Taste = Rnlcd_getscan()
If Taste <> 0 Then
Stemp = "Taste: " + Str(taste)
Rnlcd Stemp
Rnlcd_cr
End If
Waitms 500
Loop
'Scanmodus ein
End
'--------------------------------------------------------------
'Die speziellen I2C Befehle für das Board RN.KeyLCD:
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Local Befehle As String * 4
Befehle = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
I2csend Rnkeylcd_slaveid_write , Befehle , 4
End Sub
'Cursor setzen
Sub Rnlcd_clr()
Local Befehle As String * 2
Befehle = Chr(12)
I2csend Rnkeylcd_slaveid_write , Befehle , 1
End Sub
'LCD löschen
Sub Rnlcd_cr()
Local Befehle As String * 2
Befehle = Chr(13) + Chr(10)
I2csend Rnkeylcd_slaveid_write , Befehle , 2
End Sub
'LCD Zeilenvorschub
Sub Rnlcd(byval Text As String)
Local Le As Word
Le = Len(text)
I2csend Rnkeylcd_slaveid_write , Text , Le
End Sub
'Eine Art Print Befehl
Function Rnlcd_getscan() As Word
Local Lscan As Byte
Local Hscan As Byte
'Scancode als Word abfragen
I2cstart
I2cwbyte Rnkeylcd_slaveid_read
I2crbyte Lscan , Ack
I2crbyte Hscan , Nack
I2cstop
If Hscan.7 = 1 Then
Rnlcd_getscan= Lscan
Else
Rnlcd_getscan = Hscan * 256
Rnlcd_getscan = Rnlcd_getscan + Lscan
End If
'AScii Modus
End Function
Sub Rnlcd_scanmodus(byval Ein As Byte)
ausschalten
Local Befehle As String * 3
Befehle = Chr(27) + Chr(119) + Chr(ein)
I2csend Rnkeylcd_slaveid_write , Befehle , 3
End Sub
'Tastenscanmodus ein und
I2C Bus Interrupt nutzen um Tastatur abzufragen
Nach den Roboternetz-Spezifikationen ist Pin 10 des i2C-Steckers für eine Art-Interrupt Leitung reserviert. Diese
Leitung wird von angeschlossenen I2C-Bus Teilnehmern genutzt um ein Ereignis zu melden. Die Spezifikation
sagt, das diese Leitung auf Low gezogen wird, wenn ein Slave Daten für den Master bereithält.
In dem nachfolgenden Beispiel nutzen wir diese Leitung bei RN-Control aus. Dafür muss lediglich der Jumper
INT-Jumper bei RN-Control (siehe JP6 der RN-Control Anleitung) gesteckt werden. Bei RN-KeyLCD muss die
bereits vorgesehene Lötbrücke INTMODE durch einen Lötpunkt geschlossen werden. Das war´s, nun kann im
RN-Control der Interrupt ausgenutzt werden um auf Tastaturereignisse zu reagieren. Das Beispiel demonstriert
es:
'###################################################
'rnkeylcd_i2c_test4.bas
'Beispiel: zu RN-KeyLCD
'LCD und Matrixtastaturboard RN-KeyLCD wird per I2C angesteuert
'
' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.7.7 getestet
' Nur ältere Bascom Versionen benötigen eine neue Libary
' http://www.roboternetz.de/phpBB2/viewtopic.php?t=694&start=22
'###################################################
' ------------- Hier die üblichen RN-Control Anweisungen -------------$regfile = "m32def.dat"
$hwstack = 62
$framesize = 62
$swstack = 62
$crystal = 16000000
'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0
'Ports fuer IIC-Bus
Config Sda = Portc.1
' ------------- Ende der üblichen RN-Control Anweisungen -------------Declare
Declare
Declare
Declare
Declare
Declare
Declare
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Sub Rnlcd_clr()
Sub Rnlcd(byval Text As String)
Sub Rnlcd_cr()
Function Rnlcd_getscan() As Word
Sub Rnlcd_scanmodus(byval Ein As Byte)
'Tastenscanmodus ein und ausschalten
Sub Rnlcd_clearkeybuffer()
'Löscht Tastaturbuffer
Const Rnkeylcd_slaveid_write = &H40
Const Rnkeylcd_slaveid_read = &H41
'Hauptprogramm
Config Pinb.2 = Input
Portb.2 = 1
Config Int2 = Falling
'I2C SlaveAdresse
'Pullup ein
Dim Stemp As String * 100
Dim Taste As Word
Wait 1
I2cinit
'Warte bis LCD bereit
On Int2 Tasten_interrupt
Enable Int2
Enable Interrupts
Rnlcd_clr
Rnlcd_scanmodus 1
Rnlcd_clearkeybuffer
'Scanmodus ein
'Tastatubuffer löschen, falls noch Tasten drin stecken
Do
'Hier könnte beliebiges Hauptprogramm stehen
Loop
End
Tasten_interrupt:
Taste = Rnlcd_getscan()
If Taste <> 0 Then
Stemp = "Taste: " + Str(taste)
Rnlcd Stemp
Rnlcd_cr
End If
Return
'Wurde Taste gedrückt
'-------------------------------------------------------------'Einige spezielle I2C.Befehle für RN-KeyLCD als Funktion definiert:
Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Local Befehle As String * 4
Befehle = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
I2csend Rnkeylcd_slaveid_write , Befehle , 4
End Sub
'Cursor setzen
Sub Rnlcd_clr()
Local Befehle As String * 2
Befehle = Chr(12)
I2csend Rnkeylcd_slaveid_write , Befehle , 1
End Sub
'LCD löschen
Sub Rnlcd_cr()
Local Befehle As String * 2
'LCD Zeilenvorschub
Befehle = Chr(13) + Chr(10)
I2csend Rnkeylcd_slaveid_write , Befehle , 2
End Sub
Sub Rnlcd(byval Text As String)
Ausgeben von Text
Local Le As Word
Le = Len(text)
I2csend Rnkeylcd_slaveid_write , Text , Le
End Sub
'Eine Art Print Befehl zum
Function Rnlcd_getscan() As Word
Local Lscan As Byte
Local Hscan As Byte
'Scancode als Word abfragen
I2cstart
I2cwbyte Rnkeylcd_slaveid_read
I2crbyte Lscan , Ack
I2crbyte Hscan , Nack
I2cstop
If Hscan.7 = 1 Then
Rnlcd_getscan = Lscan
Else
Rnlcd_getscan = Hscan * 256
Rnlcd_getscan = Rnlcd_getscan + Lscan
End If
'AScii Modus
End Function
Sub Rnlcd_scanmodus(byval Ein As Byte)
ausschalten
Local Befehle As String * 3
Befehle = Chr(27) + Chr(119) + Chr(ein)
I2csend Rnkeylcd_slaveid_write , Befehle , 3
End Sub
'Tastenscanmodus ein und
Sub Rnlcd_clearkeybuffer()
Local Befehle As String * 2
Befehle = Chr(27) + Chr(123)
I2csend Rnkeylcd_slaveid_write , Befehle , 2
End Sub
'Löscht Tastaturbuffer
Nicht erschrecken wenn das Beispiel auf den ersten Blick etwas lang aussieht. Der Vollständigkeithalber haben
wir das ganze Listing mit allen Befehlsdefinitionen abgedruckt. Der eigentliche Hautteil ist ja sehr kurz.
Der Vorteil dieser Abfrage ist, das man im Hauptprogramm quasi garnicht auf die Tastatur achten muss, somit
werden auch keinerlei Bytes über den I2C-Bus versendet. Erst wenn eine Taste bei RN-KeyLCD gedrückt wird,
wird bei dem Hauptboard (hier rn-control) ein Interrupt ausgelöst. Das Hauptprogramm wird dann kurz
unterbrochen um die Taste per I2C-Bus abzuholen, danach wird es wieder weiter ausgeführt. Das ganze geht so
schnell das es quasi wirkt als geschehe alles gleichzeitig.
Achten Sie bei dem Beispiel auch darauf das noch etwas höhere Stackwerte notwendig sind, siehe Quellcode!
Verschweigen möchte ich nicht, das dieses Irq-Beispiel so nur wie gewünscht funktioniert wenn nur ein einziges
Board am I2C-Bus diese Interrupt Leitung nutzt. Die Interrupt-Leitung kann jedoch auch von mehreren Board´s
genutzt werden, in dem Fall muss im Hauptprogramm ab und zu geprüft werden ob noch die Interrupt Leitung auf
Low liegt, denn dann könnten schon wieder Tasten vorhanden sein. Ein Interrupt kann dann nämlich aus bleiben
wenn mehrere Boards gleichzeitig die Leitung auf Masse ziehen. Aber auch das ist nicht sonderlich schwierig in
einem Programm zu berücksichtigen.
Da dieser Fall derzeit kaum auftreten wird, mangels Board´s die diese I2C-Interrupt Leitung nutzen, erspare ich
mir ein Beispiel.
Aufbau und Anwendung
Der Aufbau der Schaltung ist durch die vorgefertigte Platine bzw. den Bausatz (über
http://www.robotikhardware.de beziehbar) eigentlich 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. Der speziell dafür programmierte Controller ist im Bausatz bereits
enthalten! Die Schaltung benötigt in der Regel eine Aufbauzeit von ca. 30 – 45 Minuten.
Dennoch einige Anmerkungen zu eventuellen Hürden:
1.
Nicht vergessen das in die Fassung wo MEGA8 steht, der oben erwähnte programmierte Spezialchip
eingesetzt werden muß. Diesen gibt es fix und fertig programmiert bei robotikhardware.de.
Versierte Programmierer/Experten, können natürlich auch ein eigenes Betriebsystem für das Board
entwickeln.
2.
Vor dem Anlegen der Spannung die genaue Bedeutung des Jumpers JP1 beachten. Wenn das Board über
den I2C Bus mit Strom versorgt wird, muss Jumper JP1 eingesteckt werden. In diesem fall darf aber keine
weitere Spannung an den Schraubklemmen angelegt werden.
Bevorzugt man eine Versorgung über die Schraubklemmen, so muß JP1 entfernt werden (außer man will
den I2C-Bus mit Strom versorgen)
3.
Vor dem einstecken des Display´s darauf achten das JP2 nur bei dem grün/gelben Display gesteckt sein
darf. Bei dem blauen Display muß dieser Jumper entfernt werden da sonst die Beleuchtung überlastet würde.
Beim einstecken des Display darauf achten das dieses in die richtigen Kontakte gesteckt wird. Auf der
Platine sitzen 10 polige Buchsenleisten da 9 polige im Fachhandel nicht zu bekommen sind. Da das Display
nur 9 Kontakte hat, darf man dieses nicht falsch einsetzen. Anhand der Beschriftung auf der Platine und der
Beschriftung der Kontakte kann man die genauen Pinnummern vergleichen.
4.
Auch beim Einstecken des Tastenfeldes drauf achten das dieses in den richtigen Kontakten stecken. Dies ist
auf der Platine und im Bestückungsplan gut erkennbar, Die Stifte müssen ganz links in der Buchse stecken.
Die unteren beiden Befestigungslöcher des Tastenfeldes sollten mit einem 3 mm Bohrer leicht von 2,5 auf
3mm erweitert werden damit dieses mit 3mm Schrauben und den mitgelieferten Abstandsbolzen verschraubt
werden kann.
5.
Sollte Sie nach dem Einschalten einen kurzen Ton hören aber keine Meldung sehen, dann ist vermutlich der
Kontrastregler nicht richtig eingestellt. Drehen sie also solange an dem Poti KONTRAST bis der Text gut
lesbar ist.
6.
Setzen Sie niemals das IC3 und IC1 gleichzeitig ein. Gewöhnlich wird nur IC1 ein MAX232 eingesetzt. Nur
wenn der RS485 Modus gebraucht wird, wird IC1 entfernt und in IC-Fassung 3 das IC Max485 eingesetzt.
Soll der TTL-Pegel der RS232 genutzt werden, was wohl seltener der Fall sein wird, dann müssen beide IC´s
entfernt werden. (Der Max485 gehört eventuell nicht immer zum Lieferumfang eines Bausatzes, da der
RS485 Mode relativ selten genutzt wird, gegebenenfalls mitbestellen)
7.
Es muss in jedem Fall der mitgelieferte 16 Mhz Quarze bestückt werden. Andere Taktraten sind nicht
möglich.
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 sich das Board über das LCD meldet
als auch einen Pieps beim anlegen der Spannung zu hören ist, dann deutet das darauf hin das alles gut geklappt
hat.
In dem Fall können Sie sich dann anhand der vorhergehenden Beispiele mit der Ansteuerung beschäftigen. Sie
können das Board auch mit der RS232 des PC´s verbinden, passende Kabel gibt’s zum Beispiel über
Robotikhardware.de. Über ein Terminalprogramm (zum Beispiel das eingebaute in Bascom) können Sie dann per
PC-Tastatur auf dem LCD schreiben.
Auf dem oberen Bild ist zu erkennen das IC3 und ganz oben 2 Jumper und eine 5 polige Stiftleiste nicht bestückt ist. Diese
Teile sind nur in dem selten benötigten RS485 Modus notwendig und können ansonsten weggelassen werden. Der Widerstand
R7 (im Bild bestückt) sollte ebenfalls nicht bestückt werden, er ist eventuell für eine andere Firmware-Version vorgesehen.
Nochmal ganz wichtig:
Niemals den I2C-Bus Stecker versehendlich in die daneben liegende ISP-Buchse
stecken. Dadurch wird fast immer Ihr Board oder ihr ISP-Dongel beschädigt.
Immer genau darauf achten das der I2C-Stecker auch in die I2C-Bus Buchse
gesteckt wird. Die Buchsen sind entsprechend beschriftet!
Erläuterung der Anschlüsse, Kurzschlussbrücken, Jumper
Erläuterungen der Jumper und Lötbrücken
JP1
Dieser Jumper verbindet die 5V Leitung auf dem I2C-Bus mit der 5V Logik-Spannung. Wenn Sie den
Jumper einstecken, dann können Sie das Board komplett über den I2C-Bus mit Strom versorgen. Eine
zusätzliche Spannung bzw. zusätzliches Kabel ist dann nicht mehr notwendig.
Versorgen Sie das Board jedoch über die Schraublemmen mit einer Spannung zwischen 6 und 18V,
so darf dieser Jumper nicht gesteckt werden, außer sie wollen den I2C-Bus mit 5V Spannung
versorgen.
JP2
Dieser Jumper ändert beim Einstecken den LCD-Vorwiderstand für die Beleuchtung von ca. 28 Ohm
auf 8 Ohm. In der Regel wird das grün/gelbe Display von Robotikhardware.de eingesteckt werden, in
diesem Fall muss der Jumper gesteckt werden. Wird alternativ ein blaues Display eingesteckt, so
muss dieser Jumper unbedingt entfernt werden da ansosnsten die LCD_Beleuchtung dieses Display
Schaden nimmt.
JP3 und JP4
Wenn der RS485 Modus genutzt wird und das Board das letzte Board in einem Netzwerk ist, so kann
durch einstecken dieser beiden Jumper ein Endwiderstand aktiviert werden. Dies entspricht der
RS485 Norm.
JP6
Das Board besitzt einen Ringmodus bei dem es praktisch zwischen zwei andere Boards in Reihe
geschaltet werden kann. Wenn dieser Ringmodus genutzt werden soll, darf dieser Jumper nicht
gesteckt sein und ein zweites Board muss an der Stiftleiste NEXTRS angeschlossen sein.
In allen anderen Fällen muss dieser Jumper gesteckt sein!
Lötbrücke I2CBATT
Hier handelt es sich um eine Lötbrücke die bei Bedarf mit einem Tropfen Lötzin verbunden werden
kann. Durch die Verbindung wird die unstabilisierte Batteriespannung vom I2C-Bus mit der
unstabilisierten Eingangsspannung dieses Board´s verbunden. Dadurch kann wahlweise der I2C-Bus
zur Stromversorgung des Boards oder das Board zur Stromversorgung des I2C-Busses genutzt
werden. Gewöhnlich ist dies nicht notwendig so das diese Lötbücke immer offen bleibt.
Lötbücke INTMODE
Wenn diese Lötbrücke mit einem Tropfen Lötzinn geschlossen wird, dann kann das Board über den
I2C-Bus einen Interrupt auslösen wenn ein Zeichen im Tastaturbuffer landet. Die Leitung wird auf Low
gezogen bis alle Zeichen aus dem Tastaturbuffer abgeholt wurden.
Wenn dieser Mode aktiviert wird, ist allerdings der RS485 Modus nicht mehr möglich, dahe rist diese
Lötbrücke gewöhnlich offen.
Lötbücke INTMODE
Wenn diese Lötbrücke mit einem Tropfen Lötzinn geschlossen wird, dann kann man den RS485 – Bus
(5 polige Stiftleiste) mit einer unstabilisierten Eingangsspannung verbinden. Gewöhnlich ist das nicht
notwendig so das diese Brücke offen bleibt.
Erläuterungen der Anschlüsse
I2C-Bus
Übe diesen I2C-Bus kann das komplette Board angesteuert als auch mit Spannung versorgt werden.
Der I2C-Bus hat den Vorteil das mehrere Board´s an dem gleichen Kabel angeschlossen werden. Es
können mehrere RN-KeyLCD-Board´s abe rauch ganz verschiedene I2C-Boards sein. Wichtig ist nur
das jedes Board eine unterschiedlich Adresse (I2C-Slave ID) besitzt. Die Standard I2C-Slave-ID bei
RN-KeyLCD ist Hex 40, diese kann aber per Tastenfeld beliebig verändert werden.
Entsprechend der Roboternetz-Norm wird hier ein 2x5 poliger Stecker angeschlossen. Die Belegung
entspricht exakt der von allen Roboternetz-Boards:
Pin 1 SCL (Taktleitung)
Pin 3 SDA (Datenleitung)
Pin 5 +5V (Kann über Jumper I2C5V getrennt werden)
Pin 7 +5V (Kann über Jumper I2C5V getrennt werden)
Pin 9 Batteriespannung Diese Leitung wird jedoch bei RN-Motor nicht benutzt
Pin 2,4,6,8 GND
Pin 10 INT Diese Leitung kann bei Tastaturereignissen einen Interrupt auslösen
ISP – IN SYSTEM PROGRAMMING
Über diesen Anschluß kann der Controller auf dem Board mit einem Standard ISP-Kabel direkt an
einen Parallelport des PC´s angeschlossen und umprogrammiert werden.
Achtung: Dies ist in der Regel nicht notwendig, da ja der Controller bereits programmiert ist. Dieser
Anschluß sollte deshalb nur von sehr erfahreneren AVR-Programmierern benutzt werden.
Der Anschluss kann abe rauch genutzt werden um Firmware-Updates einzuspielen, aber natürlich ist
dazu auch ein ISP-Adapter notwendig.
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 „ISPProgrammieradapter“ unter www.roboternetz.de) oder fertig bestellen (z.B. www.robotikhardware.de).
Pin 1 MOSI
Pin 2 VCC
Pin 3 Nicht belegt
Pin 4 GND
Pin 5 RESET
Pin 6 GND
Pin 7 SCK
Pin 8 GND
Pin 9 MISO
Pin 10 GND
LCD2
Gewöhnlich nutzt man bei RN-KeyLCD das LCD das direkt auf das Board aufgesteckt wird. In diesem
Fall ist dieser Anschluss immer unbelegt. Entfernt man jedoch das LCD aus dem Sockel, so kann hier
ein Standard LCD mit 20 Zeichen x 4 Zeilen angeschlossen werden.
Zu beachten ist das die eingebaute Firmware nicht immer alle Display unterstützt, jedoch sollten
KS0073 kompatible Displays gewöhnlich kein Problem machen. Beim Anschluss des Display´s darauf
achten das man den Beleuchtungsvorwiderstand R6 nach Bedarf anpaßt.
Die Belegung entspricht der 16 poligen Roboternetz-Norm:
Pin 1 GND
Pin 2 5V
Pin 3 Vee Kontrastspannung (0-5V)
Pin 4 RS (CS)
Pin 5 R/W (SID)
Pin 6 Enable (1) (SCLK)
Pin 7 DB0 (SOD)
Pin 8 DB1
Pin 9 DB2
Pin 10 DB3
Pin 11 DB4
Pin 12 DB5
Pin 13 DB6
Pin 14 DB7,MSB
Pin 15 LED – Beleuchtung +
Pin 16 LED – Beleuchtung -
POWER
Über diese Schraublemme kann das Board mit einer unstabilisierten Gleichspannung von ca. 6 bis
18V versorgen. Bitte unbedingt auf die Polung achten da ansonsten das Board beschädigt werden
kann. Plus und Minus ist jedoch auf der Platine deutlich beschriftet.
Beachten Sie auch das das Baord alternativ auch über den I2C-Bus versorgt werden kann, siehe
Jumper JP1.
RS232 - PC kompatible RS232 Schnittstelle
Über ein Adapterkabel kann die serielle Schnittstelle des PC oder eines anderen Board´s (z.B. RNControl, RN-Mega8, Rnbfra usw.) direkt mit dem Board verbunden werden.
Im RS232 Mode können sehr einfach alle Ausgaben mit Print auf dem LCD ausgegeben werden. Die
Baudrate kann über das LCD-Menü eingestellt werden.
Die Belegung entspricht der Roboternetz-Norm und ist kompatibel zum Conrad Roboter CCRP5:
Pin 1 RX
Pin 2 GND
Pin 3 TX
Ein geeignetes Anschlußkabel kann schnell selbst angefertigt werden oder gibt es bei
robotikhardware.de bereits fertig
NEXTRS
Dieser Anschluss hat die gleiche Belegung wie der zuvor beschriebene RS232 Anschluss. Er ist
allerdings in Reihe geschaltet. Das bedeutet das alle Daten die über die RS232 Klemme eingehen
zunächst vom LCD-Display dargestellt und verarbeitet werden aber zeitgleich auch an das Board
weitergeschickt werden das an diesem NXTRS Anschluss hängt. Alle Ausgaben des hier
angeschlossenen Board´s werden dann wieder von dem normalen RS232 Anschluss ausgegeben.
Hört sich kompliziert an,ist aber recht einfach, Das LCD-Board wird somit quasi unsichtbar zwischen
zei andere Board´s in eine RS232 Leitung gehängt. Dies hat den Vorteil das man die gesendeten
Daten überwachen kann, was insbesondere beim Debuggen von Schaltungen hilfreich sein kann.
Dazu muss jedoch noch der RINGMODUS über das Menü aktiviert und der Jumper JP6 entfernt
werden. Interessant ist in diesem bezug auch der HEX-Mode von RNKeyLCD (siehe weiter vorne).
RS232TTL - RS232 Schnittstelle mit TTL Pegel
Dies ist die RS232 Schnittstelle mit TTL-Pegel, also max. 5V Pegel. Hier lassen sich Controllerboards,
die keinen Treiberbaustein wie Max232 besitzen, direkt anschließen
Die TTL- Stiftleiste wird nach Roboternetz-Definition immer 4 polig ausgestattet um Verwechslungen
mit der Standard RS232 Stiftleiste zu vermeiden. Verbinden Sie niemals eine 4 polige TTL-Stiftleiste
mit einer 3 poligen, dies würde den Controller oder PC beschädigen.
Die Belegung entspricht der Roboternetz-Norm:
Pin 1 RX
Pin 2 TX
Pin 3 GND
Pin 4 +5V
Ein geeignetes Anschlußkabel kann schnell selbst angefertigt werden.
Wichtig: Wenn die TTL-Buchse benutzt wird, dann müssen Sie sowohl IC1 und IC3 aus der Fassung
entfernen
RS485
Über diese Schnittstelle kann RN-KeyLCD auch über eine RS485 verbindung angesteuert werden.
Dazu muss allerdings der Max485 in IC-Fassung IC3 eingesetzt und der MAX232 aus IC-Fassung IC1
entfernt werden. Zudem muss der RS485 Modus über das Menü aktiviert werden.
Das Board steht immer auf Empfang und schaltet automatisch kurz auf Senden sobalt eine taste im
AUTOSEND-Mode gesendet oder per Befehl abgeholt wird. Die Ansteuerung ist somit mit der RS232
Ansteuerung identisch. Ein spezielles Protokoll wird derzeit nicht in der Firmware unterstützt.
Pinbelegung entsprechend der Roboternetz-Norm:
Pin 1
Pin 2
Pin 3
Pin 4
Pin 5
Volle Batteriespannung
GND
5V
RS 485 A (kein TTL Pegel)
RS 485 B (kein TTL Pegel)
Bauteile- und Bestückungsliste für RNKeyLCD Platine Version 1.2
Angaben ohne Gewähr
Bauteil Wert
C1
100n
C2
22p
C3
22p
C4
100n
C5
4,7uF
C6
4,7uF
C7
4,7uF
C8
4,7uF
C9
100n
C10
100n
C11
220uF
C12
10uF
C13
100n
C14
100n
I2C
IC1
IC1
MAX232
IC2
7805T
IC3
IC3
MAX485CPA
ISP
JP1
JP2
JP3
JP4
JP6
KEY
KEY
LCD
LCD
LCD
LCD2
MEGA8
NEXTRS
POWER
Q1
R1
R2
R3
R4
R5
R6
16 Mhz
10k
10k
8
27
330
R7
R8
R9
R10
RS232
RS232TTL
RS485
SPEAKER
T1
2
3
5
1
Stück
Stück
Stück
Stück
100k
1k
100k
F/CM12P
BC338
Beschreibung
Best.Nr.
Keramik Kondensator
KERKO100N
22pF Kondensator
KERKO-500 22p
22pF Kondensator
KERKO-500 22p
Keramik Kondensator
KERKO100N
Elko
SM 4,7/50RAD
Elko
SM 4,7/50RAD
Elko
SM 4,7/50RAD
Elko
SM 4,7/50RAD
Keramik Kondensator
KERKO100N
Keramik Kondensator
KERKO100N
Elko
RAD 220/35
Elko
Keramik Kondensator
KERKO100N
Keramik Kondensator
KERKO100N
Wannenbuchse 10 pol Winkel
WSL10W
IC-Fassung 16 polig
GS16
RS232 Treiber
MAX 232 CPE
Spannungsregler 7805 oder LM2940 CT5 LM2940 CT5
IC-Fassung 8 polig
GS8
Treiber Max485
MAX 485 CPA
Der Max485 ist nur notwendig wenn auch der RS485
Modus vom Rn-KeyLCD gebraucht wird. Wenn er eingesteckt wird
muss IC1 Max232 entfernt werden und umgekehrt.
Wannenbuchse 10 pol Winkel
WSL10W
Stiftleiste 2polig
LU2,5MS2
Stiftleiste 2polig
LU2,5MS2
Stiftleiste 2polig
LU2,5MS2
Stiftleiste 2polig
LU2,5MS2
Stiftleiste 2polig
LU2,5MS2
Matrixtastatur
Conrad 709840
Tastatur wird in die nachfolgende Buchsenleiste gesteckt
10 polige Buchsenleiste 2,54 Raster
20x4 Zeichen LCD Typ EA-DIP204
EADIP robotikhardware.de
LCD wird in die nachfolgenden beiden Buchsenleisten gesteckt
10 polige Buchsenleiste 2,0
10 polige Buchsenleiste 2,0
Wannenbuchse 16pol Winkel
wsl16w
Programmierter Controller
RNLK12 robotikhardware.de
Stiftleiste 3 polig
LU 2,5 MS3
Schraubklemme 2 polig
AKL 101-02
Quarz 16 Mhz
16-HC49U-S
Metallschichtwiderstand 10k
METALL 10,0K
Poti 10k
PIHER 10-L 10k
Metallschichtwiderstand 8 Ohm
METALL 8,20
Metallschichtwiderstand 27 Ohm
METALL 27,0
Metallschichtwiderstand 330 Ohm
METALL 330
Widerstand
Dieser Widerstand ist nur notwendig wenn extern ein LCD
mit Beleuchtung angeschlossen wird (der Wert richtet sich
Displaytyp (gewöhnlich um die 10 Ohm)
Diesen Wiederstand nicht einsetzen, er war für andere
Firmware gedacht und wird nicht mehr benötigt
Metallschichtwiderstand 100k
Metall 100k
Widerstand 1K
1/4W 1,0K
Metallschichtwiderstand 100k
Metall 100k
Stiftleiste 3 polig
LU 2,5 MS3
Stiftleiste 4 polig
LU 2,5 MS4
Stiftleiste 5 polig Winkel
SL 1X36W 2,54
Mini Piezo Lautsprecher
SUMMER EPM 121
NPN Transistor BC338-40
BC 338-40
Abstandsbolzen innen/außen Gewinde 1cm Länge
Abstandsbolzen innen/außen Platinenbefestigung
Jumper
Bedruckte passende Platine
robotikhardware.de
Die Bauteile/LCD/Platine sind auch komplett über
robotikhardware.de zu beziehen
Bestückungsplan
Achtung, dieser Bestückungsplan gilt für die Version 1.2 der Platine. Rot markiert ist der Jumper, der bei der
üblichen Konfiguration gesetzt sein sollte. Nur im RS232RING Modus muß dieser Jumper entfernt werden.
Schaltplan
Schlatplan Teil b.
Sollte in dieser Doku noch der ein oder andere Fehler drin stecken, so bitte ich um Nachsicht und Hinweise per Mail an den
Entwickler [email protected]. Also immer mal im Download Bereich nach der Versionsnummer der Doku
schaun, Ergänzungen sind denkbar!
Der Nachbau dieses Boards ist ausdrücklich gestattet,
jedoch nur für den privaten Einsatz!
Die Kommerzielle bzw. Gewerbliche Verwertungen bedürfen der schriftlichen
Einwilligung des Entwicklers
www.robotikhardware.de
Online-Bestellung von Platinen oder Erweiterungen über
http://www.robotikhardware.de
Haftung, EMV-Konformität
Alle Teile der Schaltung wurden sorgfältigst geprüft und getestet. Trotzdem kann ich natürlich keine Garantie dafür übernehmen, daß
alles einwandfrei funktioniert. Insbesondere übernehme ich keine Haftung für Schäden, die durch Nachbau, Inbetriebnahme etc. der
hier vorgestellten Schaltungen entstehen. Derjenige, der den Bausatz zusammenbaut, gilt als Hersteller und ist damit selbst für die
Einhaltung der geltenden Sicherheits- und EMV-Vorschriften verantwortlich.
Wenn nicht anders angegeben handelt es sich generell bei allen Bausätzen, Modulen und Boards um "nicht CE-geprüfte" Komponenten
und sind konzipiert für den Einbau in Geräte oder Gehäuse. Bei der Anwendung müssen die CE-Normen eingehalten werden. Hierfür ist
der Käufer verantwortlich.
Für Schäden die durch fehlerhaften Aufbau entstanden sind, direkt oder indirekt, ist die Haftung generell ausgeschlossen.
Schadensersatzansprüche, gleich aus welchem Rechtsgrund, sind ausgeschlossen, soweit nicht vorsätzliches oder grob fahrlässiges
Handeln vorliegt. Sofern wir haften, umfaßt unsere Haftung nicht solche Schäden, die nicht typischerweise erwartet werden konnten.
Haftung und Schadenersatzansprüche sind auf den Auftragswert / Bauteilwert beschränkt. Bei der Lieferung von Fremdprodukten als
auch Software gelten über diese Bedingungen hinaus die besonderen Lizenz- oder sonstigen Bedingungen des Herstellers.
Sicherheitshinweise
Beim Umgang mit Produkten, die mit elektrischer Spannung in Berührung kommen, müssen die gültigen VDE-Vorschriften beachtet
werden, insbesondere VDE 0100, VDE 0550/0551, VDE 0700, VDE 0711 und VDE 0860. Vor Öffnen eines Gerätes stets den Netzstecker
ziehen oder sicherstellen, daß das Gerät stromlos ist. Bauteile, Baugruppen oder Geräte dürfen nur in Betrieb genommen werden, wenn sie
vorher berührungssicher in ein Gehäuse eingebaut wurden. Während des Einbaus müssen sie stromlos sein.
Werkzeuge dürfen an Geräten, Bauteilen oder Baugruppen nur benutzt werden, wenn sichergestellt ist, daß die Geräte von der
Versorgungsspannung getrennt sind und elektrische Ladungen, die in den im Gerät befindlichen Bauteilen gespeichert sind, vorher entladen
wurden.
Spannungsführende Kabel oder Leitungen, mit denen das Gerät, das Bauteil oder die Baugruppe verbunden ist, müssen stets auf
Isolationsfehler oder Bruchstellen untersucht werden. Bei Feststellen eines Fehlers in der Zuleitung muß das Gerät unverzüglich aus dem
Betrieb genommen werden, bis die defekte Leitung ausgewechselt worden ist. Bei Einsatz von Bauelementen oder Baugruppen muß stets auf
die strikte Einhaltung der in der zugehörigen Beschreibung genannten Kenndaten für elektrische Größen hingewiesen werden. Wenn aus
einer vorliegenden Beschreibung für den nichtgewerblichen Endverbraucher nicht eindeutig hervorgeht, welche elektrischen Kennwerte für
ein Bauteil oder eine Baugruppe gelten, wie eine externe Beschaltung durchzuführen ist oder welche externen Bauteile oder Zusatzgeräte
angeschlossen werden dürfen und welche Anschlußwerte diese externen Komponenten haben dürfen, so muß stets ein Fachmann um
Auskunft ersucht werden. • Es ist vor der Inbetriebnahme eines Gerätes generell zu prüfen, ob dieses Gerät oder Baugruppe grundsätzlich für
den Anwendungsfall, für den es verwendet werden soll, geeignet ist!
Im Zweifelsfalle sind unbedingt Rückfragen bei Fachleuten, Sachverständigen oder den Herstellern der verwendeten Baugruppen notwendig!
Bitte beachten Sie, daß Bedien- und Anschlußfehler außerhalb unseres Einflußbereiches liegen. Verständlicherweise können wir für
Schäden, die daraus entstehen, keinerlei Haftung übernehmen. Bausätze sollten bei Nichtfunktion mit einer genauen Fehlerbeschreibung
(Angabe dessen, was nicht funktioniert...denn nur eine exakte Fehlerbeschreibung ermöglicht eine einwandfreie Reparatur!) und der
zugehörigen Bauanleitung sowie ohne Gehäuse zurückgesandt werden. Zeitaufwendige Montagen oder Demontagen von Gehäusen müssen
wir aus verständlichen Gründen zusätzlich berechnen. Bereits aufgebaute Bausätze sind vom Umtausch ausgeschlossen. Bei Installationen
und beim Umgang mit Netzspannung sind unbedingt die VDE-Vorschriften zu beachten. Geräte, die an einer Spannung
V betrieben
werden, dürfen nur vom Fachmann angeschlossen werden. In jedem Fall ist zu prüfen, ob der Bausatz für den jeweiligen Anwendungsfall
und Einsatzort geeignet ist bzw. eingesetzt werden kann.
Die Inbetriebnahme darf grundsätzlich nur erfolgen, wenn die Schaltung absolut berührungssicher in ein Gehäuse eingebaut ist. Sind
Messungen bei geöffnetem Gehäuse unumgänglich, so muß aus Sicherheitsgründen ein Trenntrafo zwischengeschaltet
werden, oder, wie bereits erwähnt, die Spannung über ein geeignetes Netzteil, (das den Sicherheitsbestimmungen entspricht) zugeführt
werden. Alle Verdrahtungsarbeiten dürfen nur im spannungslosen Zustand ausgeführt werden.
Derjenige, der einen Bausatz fertigstellt oder eine Baugruppe durch Erweiterung bzw. Gehäuseeinbau betriebsbereit macht, gilt
nach DIN VDE 0869 als Hersteller und ist verpflichtet, bei der Weitergabe des Gerätes alle Begleitpapiere mitzuliefern und auch
seinen Namen und Anschrift anzugeben. Geräte, die aus Bausätzen selbst zusammengestellt werden, sind sicherheitstechnisch wie
ein industrielles Produkt zu betrachten.
Betriebsbedingungen
Der Betrieb der Baugruppe darf nur an der dafür vorgeschriebenen
Spannung erfolgen.
Bei Geräten mit einer Betriebsspannung 35 Volt darf die Endmontage nur vom Fachmann unter Einhaltung der VDEBestimmungen
vorgenommen werden.
Die Betriebslage des Gerätes ist beliebig.
Bei der Installation des Gerätes ist auf ausreichenden Kabelquerschnitt der Anschlußleitungen zu achten!
Die angeschlossenen Verbraucher sind entsprechend den VDEVorschriften
mit dem Schutzleiter zu verbinden bzw. zu erden.
Die zulässige Umgebungstemperatur (Raumtemperatur) darf während des Betriebes 0°C und 40°C nicht unter-, bzw. überschreiten.
Das Gerät ist für den Gebrauch in trockenen und sauberen Räumen bestimmt.
Bei Bildung von Kondenswasser muß eine Akklimatisierungszeit von bis zu 2 Stunden abgewartet werden.
In gewerblichen Einrichtungen sind die Unfallverhütungsvorschriften des Verbandes der gewerblichen Berufsgenossenschaften für
elektrische Anlagen und Betriebsmittel zu beachten.
In Schulen, Ausbildungseinrichtungen, Hobby- und Selbsthilfewerkstätten ist das Betreiben von Baugruppen durch geschultes Personal
verantwortlich zu überwachen.
Betreiben Sie die Baugruppe nicht in einer Umgebung in welcher brennbare Gase, Dämpfe oder Stäube vorhanden sind oder vorhanden sein
können.
Falls das Gerät einmal repariert werden muß, dürfen nur Orginal-Ersatzteile verwendet werden! Die Verwendung abweichender Ersatzteile
kann zu ernsthaften Sach- und Personenschäden
führen!
Dringt irgendeine Flüssigkeit in das Gerät ein, so könnte es dadurch beschädigt werden.
Das Board darf nur unter Aufsicht betrieben werden, der Anwender hat Sorge zu tragen das selbst bei einer Fehlfunktion keine Schäden oder
Verletzungen entstehen können!
Herunterladen