Linux-Projekte für den Raspberry Pi,
mit Python realisiert
Ansteuerung LCD-Display [EADOGXL240-7]



Dargestellt werden soll hier die Ansteuerung eines Grafikdisplays der Firma 'Electronic Assembly' .
Genauer gesagt, das Modell EA DOGXL240-7 mit einer Größe von 3,9“.



Bildquelle: Electronic Assembly

Das monochrome LCD-Display :

  • hat eine Auflösung von 240 x 128 Pixeln

  • wird mit 3,3 Volt betrieben

  • hat SPI und I²C Schnittstellen

  • ist im Versandhandel relativ günstig zu erwerben

  • ist das Größte das ich finden konnte


Daher fiel die Wahl auf dieses Produkt.


Bei der Programmierung der Schnittstelle
mußten folgende Punkte beachtet werden:

Das Display...

  • wird über die SPI-Schnittstelle angesprochen (schneller als I²C) . Daher ist SPI am Raspberry freizuschalten.
    Anleitungen dazu gibt es genügend im Internet, aber nicht an dieser Stelle.
    (Zu beachten ist, daß bei aktuellen
    Betriebssystemen die Freischaltung per Device-Tree erfolgen muß!!!)

  • ... hat 'von Hause aus' KEINE Hintergrundbeleuchtung. Diese muß separat erworben und betrieben werden.
    (verwendet man die weiße Beleuchtung, ist diese recht teuer!)

  • ... wird nicht Pixel für Pixel angesteuert, sondern es werden mehrere Pixel pro Byte angesprochen.

  • ... hat KEINE 'Intelligenz'. Jeder Einzelpunkt muß also separat gesetzt/ rückgesetzt werden.

  • ... besitzt KEINE internen Zeichensätze. Diese müssen selbst erstellt werden.


Die Pinbelegung sieht so aus:

Bildquelle: Electronic Assembly


Das Modul wird bei der Verwendung der SPI-Schnittstelle wie im folgenden Schaltplan angegeben beschaltet und mit den angegebenen Leitungen an den RaspberryPi angeschlossen:



Bildquelle: Electronic Assembly

Der Anschluß C/D (Command/ Data) wurde willkürlich auf GPIO-Pin 22 gelegt.


Alle anderen Signalleitungen sollten sich selbst erklären:

SI = SerialData In (MOSI)

CLK = Clock (SCLK)

CS = ChipSelect (CS_0)

RESET nicht belegt


VDD = +3,3V


Hintergrundbeleuchtung


ACHTUNG:
Die hier beschriebene Stromversorgung der weißen Hintergrundbeleuchtung ist nicht mit der Ansteuerung der andersfarbigen Hintergrundbeleuchtungen kompatibel und kann dort zu irreparablen Schäden führen!

Als Hintergrundbeleuchtung wurde das weiße Backlight-Panel gewählt:


Bildquelle: Electronic Assembly

Bildquelle: Electronic Assembly


Diese ist jedoch mit > 9,6 Volt (Forward voltage) zu betreiben. Das ist mit dem Raspberry direkt aber nicht möglich.
Also mußte ein DC/ DC Spannungswandler her. Gewählt wurde der Typ AM2S-0512SZ vom aimtec.
Dieser ist recht klein , hat 4 Anschlüsse und macht aus 5 Volt Eingang eine Ausgangsspannung von ca. 12 Volt mit gut 160 mA.

Links ein (selbst erstelltes) Bild des Spannungswandlers

(Pin1 ist der Anschluß links mit dem Punkt)

Bildquelle: aimtec J. Hoppe

Der Wandler hat die folgenden elektrischen Werte:


Gehäuse:

SIP 4

Eingangsspannung:

5 V

Ausgangsspannung:

12 V

Ausgangsstrom:

160 mA

Typ:

AM1S-0512 SZ


Der Hersteller hat sich auf Anfragen zur Veröffentlichung von Bild und Auszug aus dem Datenblatt auch nach über einem Jahr leider nicht zu irgendeiner Antwort entschließen können.


Auch die Beschaltung ist sehr einfach

Der '+V input' Eingang [2] des Wandlers ist über die Induktivität direkt mit 5,0 Volt des Raspberry verbunden.
Da bei dieser Eingangsspannung die Kondensatoren C2 und C3 (aus dem Datenblatt) entfallen, besteht die Schaltung also nur aus dem Spannungswandler, einem Kondensator (2,2µF/ 100V) und einer Spule (18µH).

Die zusätzlichen Vorwiderstände als Strombegrenzung für die LED-Ketten sollten allerdings nicht vergessen werden (je ca. 180 Ohm)!


Die Ausgangsspannung ist galvanisch von den Spannungen des Rapberry getrennt.

Es müssen also sowohl Plus (Anode [4]), als auch Minus (Kathode [3]) separat zu den LED-Anschlüssen geführt werden


JA, im Datenblatt steht, das Panel sollte mit einer Stromquelle betrieben werden, aber die hier vorgestellte Version funktioniert bei mir seit mehreren Jahren einwandfrei. Das schließt aber nicht aus, daß durch die hier gezeigte Beschaltung die Lebensdauer des Panels beeinträchtigt werden könnte!



Damit die LED-Beleuchtung nicht immer leuchtet und bei Bedarf abgeschaltet werden kann, wurde noch ein MOSFET als Schalter in den Massezweig der Eingangsspannung zum Spannungswandler (-V input) integriert.


Links ein Bild des MOSFET.


(Sony Xperia Compakt mit 21MegaPixel und viel Zeit und GIMP)


Bildquelle: J. Hoppe


Hier ein paar elektrische Werte aus dem Datenblatt:


Drain/Source Spannung

30V

Gate/ Source Spannung

+/- 20V

Drain Strom @ GS 10V

78A

Drain/Source Einwiderstand(max)

3,2 mOhm

Gate Threshold (max)

2,35 V



Der Hersteller hat sich auf Anfragen zur Veröffentlichung von Bild und Auszug aus dem Datenblatt auch nach über einem Jahr leider nicht zu irgendeiner Antwort entschließen können.


Der MOSFET schaltet bereits bei niedrigen Gate-Source-Spannungen sicher und hat einen sehr geringen Durchlaßwiderstand.


  • Das Gate wurde über einen 1 kOhm Sicherheitswiderstand willkürlich auf den GPIO-Pin 18 gelegt.

  • Source ist direkt mit Masse verbunden.

  • Drain liegt am Eingang -V input [1] des Spannungswandlers.

Auf eine PCM-Steuerung des MOSFET zur Helligkeitseinstellung wurde bewußt verzichtet, da sich bei einem anderen Projekt herausgestellt hat, daß unregelmäßige PCM-Pulse abhängig von der Prozessorlast teilweise ein unschönes Flackern verursachen.


Eingabeeinheit

Da das Display ohne PC und Tastatur bedient werden sollte, mußte nun noch eine Eingabeeinheit her.
Diese bestand ursprünglich nur aus einem einzigen Miniaturtaster und steuerte über unterschiedlich lange Tastendrücke die einzelnen Funktionen. Diese Einzeltaste hat sich dann aber als unpraktisch herausgestellt.

Hier die endgültige Schaltung:

Inzwischen besteht die Eingabeeinheit aus 2 Kurzhubtastern, die einerseits direkt mit Plus 3,3 Volt des Raspberry und auf der zweiten Seite über je 1 kOhm Schutzwiderstände mit den GPIO-Pins 07 und 12 verbunden sind.

Die internen GPIO Widerstände werden per Programm als Pull-Down zugeschaltet, um die Bauteilanzahl zu minimieren und im Ruhezustand ein stabiles Eingangssignal zu gewährleisten.

Beide Taster werden im Programm per Interruptsteuerung über 'threaded callback' bedient. Hier erfolgt auch die Entprellung.