LCD für WRAP

Aus Port23Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „ == Vorüberlegungen == * Welche Anschlüsse des WRAP eignen sich für ein LCD? :* LPC-Expansion / GPIO :* I²C :* USB * Stromversorgung des LCDs? :* 3,3V über…“)
 

Aktuelle Version vom 8. Oktober 2014, 07:54 Uhr

Inhaltsverzeichnis

[Bearbeiten] Vorüberlegungen

  • Welche Anschlüsse des WRAP eignen sich für ein LCD?
  • LPC-Expansion / GPIO
  • I²C
  • USB
  • Stromversorgung des LCDs?
  • 3,3V über I²C oder LPC
  • höhere Spannung(en) über "voltage booster"
  • LCD innen oder aussen?
  • Im Originalgehäuse scheint sich kein LCD unterbringen zu lassen
  • In meinem Alu-Gehäuse ist genug Platz an der Frontseite für ein 2x16 LCD
  • LCDs die extern betrieben werden, brauchen eine Kabelverbindung zum WRAP.
  • I²C ist 4polig und lässt sich mittels mini-DIN Buchse verdrahten.
  • Beim GPIO-Anschluss habe ich ein SubD-15 gewählt.

[Bearbeiten] Anschlüsse

[Bearbeiten] Anschluss über LPC-Expansion/GPIO

(thumbnail)
GPIO-Anschluss
Anschluß "J2" - LPC-Expansion; Im WRAP-Handbuch steht dazu: "The LPC port can be used to connect a super I/O device, or for an alternate flash EPROM to start with a corrupted or blank flash EPROM on board. These pins can also be reprogrammed as GPIO (not tested): Clear PMR pin multiplex register (I/O 09030h) bit 14 and 16, then set correct GPIO direction (input / output). Please see the SC1100 data sheet for details.
J2 Pinbelegung:
===============

 1 PCLK2 LPC clock (33 MHz)
 2 GND ground
 3 LAD0 LPC data 0 (GPIO32)
 4 GND ground
 5 LAD1 LPC data 1 (GPIO33)
 6 GND ground
 7 LAD2 LPC data 2 (GPIO34)
 8 GND ground
 9 LAD3 LPC data 3 (GPIO35)
10 GND ground
11 LFRAME# LPC frame (GPIO37)
12 GND ground
13 PCIRST# reset (active low)
14 NC reserved
15 LPCISP high to use LPC flash, low to use on-board flash, pulled low by resistor
16 NC reserved
17 GND ground
18 V3 +3.3V supply
19 SERIRQ serial interrupt (GPIO39)
20 LDRQ# LPC DMA request (GPIO36)

Ähnliche GPIO-Pins gibt es auch bei den Boards von Soekris. Und es gibt bereits ein laufendes LCD an einem Soekris. Das WRAP bietet 7 GPIOs an - das genügt, um ein Display 4bittig anzusteuern (4 Datenbits, E, RW, RS).

[Bearbeiten] Anschluss über I²C Bus

(thumbnail)
I²C-Anschluss

Für den I²C Bus gibt es sog. Bus-Expander die 8 Datenleitungen zur Verfügung stellen. In der lcd4linux Mailingliste wurde zuletzt (Mitte 2005) aber von "ziemlich langsam" gesprochen.

J3 Pinbelegung
==============

1 +3.3V power supply
2 SCL1 I2C clock
3 SDA1 I2C data
4 GND ground

Da mein Prototyp inzwischen läuft (bis auf die Init-Sequenz) kann ich das soweit bestätigen. Eine Laufschrift ist möglich, wenn man akzeptiert, daß alle 1-2 Sekunden ein Update erfolgt. Alle Arten von Balken dürften das selbe Problem haben. Statische Informationen jedoch stellen kein Problem dar.

[Bearbeiten] Anschluss über USB

(thumbnail)
USB-Anschluss
(thumbnail)
LCD2USB-Platine

(nur mit eingelöteter USB-Erweiterung)

  • Um ein Gerät an den USB zu hängen, muß man etwas mehr Aufwand treiben. Ein Mitentwickler von lcd4linux hat sich die Mühe gemacht, einen Microcontroller passend zu programmieren, so daß damit ein LCD angesteuert werden kann. Er bietet auf seiner Webseite die Platine zum Verkauf an.
  • Mein 4x27 LCD (und folgende) läuft inzwischen mit dieser Platine


[Bearbeiten] Stromversorgung

  • Am Pin 18 von J2 liegen 3,3V an. Kann stark belastet werden (Aussage des Herstellers)
  • Der I²C wird ebenfalls mit 3,3V versorgt. Kann stark belastet werden (Aussage des Herstellers)
  • Am USB liegen 5V an, bis max. 100mA belastbar - im Dauerbetrieb wesentlich weniger (Aussage des Herstellers)
  • Über ein MAX619-IC ist es möglich, aus den 3,3V 5V zu bekommen. Das IC benötigt eine minimale Beschaltung und liefert genug um ein LCD zu betreiben.

[Bearbeiten] Display-Module

[Bearbeiten] Das DOG-Modul

(thumbnail)
DOG-M Modul

Wir haben uns für ein DOG (= Display on glas) Modul von Electronic Assembly entschieden. Es erlaubt drei Anschlußvarianten und kann mit 3,3V betrieben werden. Die RGB-Beleuchtung sollte per Software beeinflussbar sein.

  • Modulvarianten
  • 1x8 Zeichen - 11,97mm, 2x16 Zeichen - 5,57mm, 3x16 - 3,65mm
  • Hintergrund blau, gelb/grün, schwarz, weiß
  • mechanische Dimensionen
    Modul: 27,94mm x 55mm (b x h), Tiefe 2mm (ohne) 5,8mm (mit Beleuchtung)
  • elektrische Daten
  • 3,3V Spannungsversorgung
  • 250µA Stromverbrauch
  • Anschlußvarianten
  • 8bit Datenbus (nicht realisierbar mit dem WRAP)
  • 4bit Datenbus (gerade so realisierbar - 4bit Daten, E, RW und RS = 7 Datenleitungen)
  • seriell (sehr gut realisierbar - SI, CLK, RS und CSB = 4 Datenleitungen)
  • Beleuchtungsvarianten
  • weiß, gelb/grün, blau, rot, amber, farbig (rgb)
  • Aussage des Herstellers: Wegen den Spannungstoleranzen rate ich von weissem oder blauen backlight für 3.3V Betrieb ab. Amber / rot / grün sollten ok sein.

[Bearbeiten] Alternatives 2x16 LCD

(thumbnail)
Powertip PC1602-E, (c) Pollin
  • Für mein Alu-Gehäuse] habe ich mir ein 2x16 LCD (Pollin, Powertip PC1602-E, Best.Nr. 120 386) ausgekuckt.
  • Es ist klein genug, um noch ans Frontblech zu passen. Allerdings benötigt es eine Kontrastspannung von 5V zum Betrieb. Mittels einem MAX619 (Ladungspumpe, 5V reguliert) sollte das aber kein Problem werden. Zur Einstellung des Kontrasts möchte ich auch ein Poti vorsehen.
  • mechanisch habe ich mir gedacht, daß ich eine 2x10pol Buchsenleiste auf ein kleines Stück Lochrasterplatine löte und quasi kopfüber direkt auf die Stiftleiste vom WRAP draufstecke. Auf der Platine wird dann auch gleich die Ladungspumpe und das Poti gelötet und natürlich die Drähte zum Display.

[Bearbeiten] Display am GPIO-Anschluß

[Bearbeiten] Entwurf einer Schaltung für den GPIO-Anschluß

  • Man kann ein LCD entweder mit 4 Datenbits oder mit 8 Datenbits ansteuern. Dazu kommen noch die Leitungen E(nable), R(egister)S(elect) und R(ead)/W(rite). Letztere kann auf GND gelegt werden, da man im Normalfall nichts vom LCD lesen will. Macht also zusammen 6 bzw. 10 Leitungen.
  • Da am GPIO nur 6 Leitungen zur Verfügung stehen, entfällt die Ansteuerung mit 8 Bit.
  • Auch die zunächst ins Auge gefasste Idee mit einem Schieberegister zu arbeiten - da werden serielle Datenbits wieder parallelisiert - habe ich verworfen.
  • Lösung mit einem Schieberegister
  • Am Eingang braucht ein Schieberegister ein Taktsignal, eine serielle Datenleitung und ein Output-Latch-Signal, welches die Datenbits am Ausgang aktiviert.
  • Von den 8 Bit am Ausgang werden 4 als LCD-Datenbits benutzt und je eine Leitung für E und RS.
  • Lösung mit zwei Schieberegister
  • Das erste Schieberegister erlaubt uns, das Display mit 8 Datenbits (D0 ... D7) anzusteuern.
  • Das zweite Schieberegister stellt die Steuerleitungen (E, RW, RS) für das Display bereit.
  • Die restlichen 5 Leitungen kann man beliebig verwenden - z.B. um die RGB-Beleuchtung in 32 verschiedenen Farben leuchten zu lassen ...
  • Auch Kombinationen, wo z.B. das E-Signal direkt von einem GPIO und der Rest über Schieberegister läuft habe ich zunächst einmal verworfen.
  • Als erste Lösung daher die einfachste
  • Das LCD wird 4-bittig angesteuert. Zwei weitere GPIOs werden als E und RS verwendet.


WRAP J2         .---------------.                   .----------.
                |               |                   |          |
  V3 18 o---o---|In          Out|---o----------o----|Vdd       |
            | + |               |   | +        |    |          |
           ###  |    MAX619     |  ###         |    |          |
      10µF ---  |               |  --- 10µF    |    |   LCD    |
            |   |               |   |          |    |          |
            o---|GND        SHDN|---o          |    |          |
            |   |               |   |          |    |          |
           ===  |               |  ===         |    |          |
           GND  |               |  GND         |    |          |
            .---|C1+         C2+|---.         .-.   |          |
            |   |               |   |      10k| |<--|Vo        |
           ---  |               |  ---        | |   |          |
           ---  |               |  ---        '-'   |          |
    0,22µF  |   |               |   |0,22µF    |    |          |
            '---|C1-         C2-|---'          |    |          |
                '---------------'              |    |          |
   GND 2 o-------------------------------------o----|Vss       |
                                                    |          |
GPIO32 3 o------------------------------------------|DB7    DB3|--.
                                                    |          |  |
GPIO33 5 o------------------------------------------|DB6    DB2|--o
                                                    |          |  |
GPIO34 7 o------------------------------------------|DB5    DB1|--o
                                                    |          |  |
GPIO35 9 o------------------------------------------|DB4    DB0|--o
                                                    |          |  |
GPIO36 20o------------------------------------------|E      R/W|--o
                                                    |          |  |
GPIO37 11o------------------------------------------|RS        |  |
                                                    |          | ===
                                                    '----------' GND

[Bearbeiten] Schaltplan (GPIO-Anschluß)

(kommt, wenn der Prototyp läuft)

[Bearbeiten] Display am I²C Bus

[Bearbeiten] Der Prototyp für den I²C Bus

(thumbnail)
Prototyp für I²C Bus
Den Prototyp habe ich auf einer Lochrasterplatine aufgebaut. Damit alles kompakt wird, habe ich den I²C Portexpander unter das LCD-Modul gebaut. Aufpassen muß man bei der Auswahl der Elkos - viel Platz ist unter dem LCD nicht. Und man muß das LCD unbedingt sockeln, sonst hat man kaum eine Chance, Fehler zu korrigieren.


[Bearbeiten] Entwuf eines Schaltplans für den I²C Bus

(demnächst folgt hier der Schaltplan und Platine aus EAGLE)

 VCC       .----------------------o---------------------.
  +        |   .------------.     | .-----------------. |
  '----o---o---|VDD         |     | |   DOG-M LCD     | |
       |   |   |          A0|--.  o-|D0 3,3V 4bit  VDD|-o
      .-. .-.  |            |  |  | |                 | |
   10k| | | |  | PCF8574  A1|--o  o-|D1            PSB|-o
      | | | |  |            |  |  | |                 | |
      '-' '-'  |          A2|--o  o-|D2          RESET|-o
       |   |10k|            |  |  | |                 | |
       |   |   |            | === '-|D3            VIN|-o
 SDA o-o---)---|SDA         | GND   |                 | |
               |            |       |                 |---
           |   |          P0|-------|D4               |###
 SCL o-----o---|SCL         |       |                 | | +
               |          P1|-------|D5           VOUT|-'
  .------------|VSS         |       |                 |   0,47-2,2µF
  |            |          P2|-------|D6          CAP1N|-.
 ===           |            |       |                 | |
 GND           |          P3|-------|D7               |---
               |            |       |                 |###
               |          P4|-------|RS               | | +
               |            |       |            CAP1P|-'
               |          P5|-------|E                |   0,1-1µF
               |            |       |                 |
               |          P6|    .--|R/W           CSB|--.
               |            |    |  |                 |  |
               |          P7|   === |              VSS|--o
               '------------'   GND '-----------------'  |
                                                        ===
                                                        GND

[Bearbeiten] Display am USB Anschluß

Mit der LCD2USB Platine von Till Harbaum gibt es eine günstige Möglichkeit, ein LCD am USB zu betreiben. Außer mir hat das bisher noch ein Portugiese am WRAP in Betrieb und es läuft ohne Probleme.

Die anderen USB-Lösungen, die es z.T. auch fertig zu kaufen gibt sind mir zu teuer. Deswegen erfolgt hier kein weiterer Hinweis auf diese Produkte.

LCD2USB ist nicht nur Open Source, es ist "Open Hardware" - d.h. man erhält alle Details zum Nachbau mitgeliefert. Alle anderen USB-Lösungen machen ein großes Geheimnis um die Details. Teils wird verschwiegen, welche Controller verwendet werden und die Programmierung des Controllers liegt auch nicht offen.

Die LCD2USB Platine selbst ist professionell mit Lötstoplack und Bestückungsaufdruck gefertigt. Das erleichtert das Löten doch erheblich. Meine Platine war nach einer knappen halben Stunde einsatzbereit und hat auf Anhib funktioniert. Till war so nett und hat mir einen bereits programmierten Atmel Microcontroller mit der Platine verkauft - mit Porto hat das Set 17 € gekostet. Dazu kommen noch die restlichen Bauteile für ne Handvoll €.

Meine Werkzeuge