|
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 :
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
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.
|