USB-LCD 2
Da sich in der Firmware (siehe USBLCD1) nichts geändert hat, hier noch einmal kurz die...
...Technische Daten:
- Läuft mit jaLCDs und LCD-Smartie ohne irgendwelche Plugins.
- Kontrast und Backlight über Software einstellbar.
- Bootscreen in EEprom speicherbar (mit Terminalprg. Hyperterm o.Ä.)
- 19200 Baud (8N1) Handshake off
- Unterstützt werden alle gängigen Text-LCDs mit einem HD44780Controller
- Das wären 1x16,1x20,2x16,2x20,4x16 und 4x20
- Stromversorgung bis fast 500mA direkt an USB
Für Programmierer:
- Einfache Ansteuerung über Virtuellen Comport z.B. COM3: (Im Terminalproggi sieht man die Zeichen die man eintippt)
- Alle möglichen Funktionen zur Cusorsteuerung, Benutzerdefinierte Zeichen.
- Der Bargraph (im Design von jaLCD) ist in der Firmware und auch außerhalb von jaLCDs nutzbar.
- Arbeitet
mit JALCDS ....
....und Smartie
Das
USBLCD 2 fast ausschließlich in SMD Technik aufgebaut. Die
ca. 3,3 x 5,5 cm Platine ist nun beidseitig ausgeführt. Da im
Hobbybereich wohl kaum jemand die Möglichkeit hat die
Durchkontaktierungen chemisch herzustellen, habe ich versucht das
Layout so Bastlerfreundlich wie möglich zu gestalten. So sind z.B.
keine Vias unter den ICs vorhanden die die Bestückung erschweren.
Außerdem sind Bauteile die ihre Lötpads verdecken, nur von der
Unterseite zu verlöten. Trotzdem sollte man beim Aufbau der Schaltung
sehr sorgfältig arbeiten da man hier so langsam an seine Grenzen stößt
(ich zumindest). Besondes kritisch ist das einlöten der (SMD) Mini-USB
Buchse (die ich im Bauteileditor von Eagle eingeben musste)
da bei dieser die Lötanschlüsse fast unter dem Gehäuse verdeckt werden.
Auch der FT232RL ist nicht ohne. Das SSOP28 Package ist mit 0,65 mm
Pinabstand das kleinste was ich (bis jetzt ) verarbeitet habe.Da wir ja
ohne Lötstopmaske arbeiten, hier besonders darauf achten das
die Pins GENAU auf den Pads platziert werden.
Bei mir hat sich folgendeVorgehensweise bewährt:
Zunächst
den Chip mit einer Kreutzpinzette, Krokodilklemme, Wäscheklammer o.Ä.
auf der Platine, so genau wie möglich fixieren. Dann zunächst ein Pin
(am besten in der Ecke) anlöten und das Spannwerkzeug entfernen. Jetzt
kann man die Position noch minimal korrigieren. Ist man zufrieden den
nächsten Lötpunkt Diagonal zum ersten anbringen. Darauf achten, das der
Chip satt auf der Platine aufliegt und keine Pins in die höhe ragen.
Nun die restlichen Eckpunkte anlöten. Jetzt kann man alle Pins mit
wenig Lötzinn anlöten. Wenn das jemand ohne Lötbrücken schafft, Hut ab.
Bei mir sind nach dem löten immer 2er und 3er Gruppen der
Pins verbunden. Zum entfernen der Lötbrücken benutze ich Entlötlitze
(0,8mm EEL08 Reichelt) die ich entlang der Pins Platziere und mit dem
Lötkolben von oben erhitze. Dabei nicht zu fest mit dem Lötkolben auf
die Litze drücken, da sich sonst die Pins nach hinten wegbiegen können
(ich spreche aus Erfahrung). Vorsicht, die Entlötlitze dabei nicht mit
den Fingern anfassen (Pinzette oder Spitzzange benutzen) da diese sehr
heiß wird. Nachlöten ist nicht erforderlich, das verbleibende Lötzinn
zwischen Pin und Lötpad genügt durchaus.
Hier der Schaltplan des USB-LCD

(zum vergrößern auf Schaltplan klicken)
Links im Schaltbild ist der USB-Schnittstellenbaustein FT232RL zu sehen der gegenüber seinen Vorgängern kaum noch externe Bauteile benötigt. Das interne Eprom des FT232RL wird direkt über die USB-Buchse mit MProg programmiert, welches wie auch die Treiber, Datenblätter und weitere Tools von der Herstellerseite (FTDI) heruntergeladen werden können. Rechts ist der AT Tiny2313 welchen ich mit einem billig ISP-Dongle und Ponyprog2000 programmiert habe. Da der AVR910-USB von meiner HP mit Ponyprog2000 nicht läuft und ich mit AVRprog (aus dem AVR-Studio) den Tiny2313 zwar programmieren, aber die Fusebits nicht setzen kann, kann man diesen leider nur bedingt benutzen. Mit AVRDUDE sollte das laut Mikrocontroller-Projekte.de zwar gehen, da ich (wie wahrscheinlich alle anderen AVR910 Besitzer) auch einen Low-Cost ISP habe (eben zum programmieren der AVR910 Firmware), habe ich das gar nicht erst ausprobiert. Die Schaltung rund um die 3 Transistoren T1-T3 steuern die Hintergrundbeleuchtung wobei T3 (der BCW66H) die Plackerei übernimmt. Über T3 fließt der volle Strom der Hintergrundbeleuchtung, der mit R6 begrenzt wird. Das kann er allerdings nur, wenn T1 und T2 sperren (also 0 Volt an den Basen liegt). Ist dies der Fall liegt die Basis von T3 über dem 1k Widerstand an +5Volt und schaltet durch.T3 ist im Datenblatt mit 800mA angegeben und sollte somit für alle Hintergrundbeleuchtungen ausreichen. Da der FT232RL erst einmal mehr Strom (bis max. 500ma) von der USB Schnittstelle anfordern muss bleibt die Hintergrundbeleuchtung so lange ausgeschaltet, bis der PC damit einverstanden ist. Dafür sorgt T2. Dieser ist mit der Basis an CBUS2 angeschlossen und muss mit PWRON# programmiert werden. PWRON# signalisiert mit einem Low Pegel, das der FT232RL initialisiert ist und sperrt somit T2.T1 wird an der Basis vom Tiny2313 mit einem PWM Signal versorgt dessen Rechteckspannung mit einen Puls- Pausenverhältiniss von 0 ? 100% in 1er Schritten eingestellt werden kann. Somit kann die Hintergrundbeleuchtung nach Wunsch gedimmt werden. An Pin3 von JP1 liegt ein weiteres PWM-Signal für den Kontrast des LCDs. Ein Jumper von Pin 2<->3 führt dem LCD das in der Firmware eingestellte Signal zu. Der 10k Trimmer wird zum einstellen des max. Kontrast benutzt. Wird diese Funktion nicht gewünscht, wird der Jumper auf Pin 1<-> 2 gesteckt und der Trimmer kann wie gewohnt zur Kontrasteinstellung benutzt werden.
Layout
Der Lötjumper SJ1 führt dem AT Tiny2313 den Takt zu. Da die Firmware ursprünglich für einen AT90S2313 mit 4 MHz programmiert wurde, muss im Moment noch ein SMD Resonator (4MHz) eingebaut werden und bei SJ1 Punkt 1<->2 gebrückt werden. Wenn ich irgendwann mal die Zeit finde die Firmware zu ändern, kann man sich den Resonator sparen und der FT232RL liefert den Takt (6 oder 12 MHz).
Bestückungsplan in 3D

Erstellt mit Eagle3D näheres dazu gibt es hier
Stückliste (Preise 12/06 Reichelt)
R1 | 270R | SMD0805 | 0,10 |
R2,R4,R5 | 10k | SMD0805 | 0,30 |
R3 | 1k | SMD0805 | 0,10 |
P1 | 10k | Trimmpoti PT 6-L 10K | 0,21 |
C1 | 10nF | SMD0805 X7R-G0805 10N | 0,05 |
C2,C4,C6,C7 | 100nF | SMD0805 X7R-G0805 100N | 0,20 |
C3 | 4,7µF | SMD ELKO 4,7/35 | 0,09 |
C5 | 10µF | SMD ELKO 10/16 | 0,09 |
L1 | 0,1µH | LQH3N 0,1µ | 0,20 |
T1,T2 | BC847B | SMD NPN Transistor | 0,10 |
T3 | BCW 66H | SMD NPN Transistor | 0,04 |
IC1 | FT 232 RL | IC | 5,65 |
IC2 | ATTINY 2313 SO | MC | 1,25 |
LED1 | LED 3mm | 0,05 | |
X1 | 4,00 MHz | SMD-Resonator | 0,32 |
JP1 | 36pol | Stiftleiste, gerade, RM 2,54 (nur 3 Pins benötigt) | 0,17 |
USB | USB-Einbaubuchse, B-Mini, gew., SMD-Montage | 0,49 | |
SV1 | Wannenstecker WSL 10G | 0,07 | |
SV2 | SPL 20 (es werden nur 5 o. 6 für ISP benötigt) | 0,26 | |
Jumper 2,54 | 0,04 | ||
------- | |||
9,78 |
So wird das LCD mit der USB-LCD 2 Platine verbunden.
Achtung,
das Kabel ist jetzt der Standart - Pinbelegung vom LCD angepasst und
somit nicht mehr kompatibel mit dem von USB-LCD 1.
R1 ist hier der Vorwiderstand für die Hintergrundbeleuchtung des LCDs
und kann auch wahlweise auf der Platine eingebaut werden (R6).
Wird R1 wie abgebildet am LCD angebracht, muss anstatt R6 eine Brücke
eingebaut werden.
Wenn R6 eingebaut wird, muss Pin2 mit Pin15 am LCD verbunden werden.
Wenn man mehrere LCDs mit der Platine betreibt (wie ich) empfiehlt es
sich natürlich den entsprechenden Vorwiderstand direkt am LCD
anzubringen bzw. den schon an manchen LCDs eingebauten Vorwiderstand zu
benutzen.
Installation
Ist die
Platine fertig aufgebaut und nochmals peinlich genau auf Lötbrücken
usw. überprüft, muss man, um das interne Eeprom des FT232RL zu
programmieren, die Treiber auf
seinen PC aufspielen. Auch die neuste Version von Mprog
kann man sich bei dieser Gelegenheit gleich herunterladen.
Die folgende Anleitung bezieht sich auf winXP mit dem 2.00 Treiber, den
ich selbst benutze und der beide (VCP und Direkt) enthält. Der Treiber
sollte entpackt in einem Ordner bereitstehen bevor man fortfährt.
Nach einstecken der USB-LCD Platine sollte nach der Meldung. Neue
Hardware gefunden ...
...Dieses Fenster erscheinen.
Diesmal nicht (und auch sonst nie )
Den Pfad zum Treiber Herstellen...
...und Fertig stellen
Das war der USB Teil, danach folgt die gleiche Prozedur nocheinmal für die Installation der seriellen Schnittstelle.
Nun noch 19200Baud einstellen.
und fertig.
FT232RL mit MPROG konfigurieren
Ist
der Treiber installiert wird der FT232RL geproggt, dazu starten wir
Mprog und konfigurieren wie im Bild angezeigt.
Der Wert bei Max. Bus Power hab ich hier mal auf 500mA gestellt, wer
nur ein Display mit normaler LED Beleuchtung betreibt kann auch die
vorgegebenen 100 mA stehen lassen. Der Haken bei Only Program
Blank Devices muss man entfernen da sich das Eeprom des FT232RL (bei
mir jedenfalls) nur überschreiben aber nicht löschen lässt. Vor dem
Programmieren darauf achten das kein anderer FTDI Chip am Rechner
angeschlossen ist. Ist soweit alles klar, lässt sich der
FT232RL (nach speichern der Daten) programmieren.
Nun kommt der AT Tiny2313 an die Reihe.
Da ich aus
Platzgründen keine zweite 10polige Stiftleiste einbauen wollte, habe
ich den (nicht genormten) ISP-Anschluss des USB-LCD, passend für den
Basic-ISP-Programmer von S.Hühn
gemacht.Allerdings
nur Pin1..5. An Pin 6 liegen +5Volt, um auch Parallel-Programmer mit
Treiber-IC, die eine +5V Spannungsversorgung benötigen, anschließen zu
können. Also Vorsicht
beim anschließen des ISP! Werden die +5 Volt nicht
gebraucht, kann man auch einfach nur eine 5pol Buchsenleiste (Pin1..5)
einbauen. Nach dem anschließen des Programmers und des USB-LCD,
PonyProg starten und nach der Einstellung (rechts oben) von AVR Micro
und AT Tiny2313 im Command
Menu Security
and Configuration Bits wählen. Im entsprechenden Fenster
zunächst Read
klicken und dann die Fuse Bits wie im Fenster setzen. Ein Klick auf Write schreibt die
Fusebits in den Tiny2313.
Jetzt die .hex Datei als Flash File und die .eep Datei als Eeprom File öffnen.
Im Hex-Fenster nach unten scrollen und nachschauen ob die Dateinen ordnungsgemäß geladen wurden. Der blaue Bereich zeigt den Inhalt des Eeproms, wo man rechts unten den Inhalt des Begrüssungstext erkennen kann. Der Eeprominhalt muss unbedingt mitgrbrannt werden, da er wichtige Anfangsvariablen enthält ohne die das USB-LCD nicht startet. Ist soweit alles klar startet write all im Command Menu den Brennvorgang. Nun müsste der Begrüssungstext (oder Teile davon wenn ein kleineres LCD als 20x4 angeschlossen ist) auf dem Display sichtbar sein. Wenn nicht muss der Kontrast am 10k Trimmer justiert werden. Jetzt noch das Setup ausführen und fertig.
Dowloads & nützliche Links zum USB-LCD
Alle Benötigten USB-LCD
2 Dateien gezippt.
Lancos, hier
die letzte Beta von Ponyprog2000 downloaden(war bei mir v2.06f
BETA)
FTDI die
letztenTreiber und Mprog für FT232RL runterladen
Mikrocontroller.de
Infos zu den Fusebits, wenn ein anderer Programmer benutzt werden soll.
s-huehn.de
Basic-ISP (seriell und parallel) für Tiny2313 und Ponyprog2000
jaLCDs und LCD-Smartie
Programme mit denen das USB-LCD läuft.