Pollin LCD Roundup

Bei Pollin, einem günstigen Anbieter von Restposten elektronischer Bauteile, gibt es auch diverse LCD-Displays. Da ich auf der Suche war nach einem neuen „Standard“-Display für meine Prototypen habe ich einfach mal alle Displaytypen, die Pollin im Januar 2012 anbietet bestellt (Ausnahmen: die ganz teuren und die, welche offensichtlich keinen Controller haben). Ich habe für jedes Display versucht, dieses an einen AVR ATmega Controller anzuschließen. Meine Erfahrungen dazu sind weiter unten dokumentiert.

LCD-Displays

Es gibt unterschiedlichste LCD-Displays. Text-Displays zeigen nur alphanumerische Zeichen an, Grafik-Displays zeigen nur Punkte an. Durch Kombination dieser Punkte kann man tolle Graphiken darstellen. Ein Buchstabe ist auch nichts anderes als eine Menge von Punkten, somit kann man mit einem Grafik-Display natürlich auch Text darstellen.

Hintergrundbeleuchtung

Um Displays auch im Dunkeln lesen zu können, braucht man entweder so etwas wie eine Taschenlampe oder besser, ein LCD-Display mit integrierter Hintergrundbeleuchtung. Diese Beleuchtung kann auf verschiedenen Grundprinzipien beruhen.

LED-Hintergrundbeleuchtungen brauchen eine geringe Spannung von ein paar Volt, die man typischerweise sowieso zur Verfügung hat.

EL-Hintergrundbeleuchtungen erfordern eine hohe Wechselspannung von ein paar dutzend bis ein paar Hundert Volt, die man typischerweise nicht „ohnehin“ in seiner Schaltung zur Verfügung hat. Man muss dann die gewünschte Spannung zusätzlich erzeugen. Für einfache und/oder billige Sachen ist eine LED-Hintergrundbeleuchtung daher besser geeignet.

Textdisplays

Bei Textdisplays spielt die Anzahl der darstellbaren Zeilen und der pro Zeile darstellbaren Zeichen eine Rolle. Diese Displays sind auch festgelegt in Bezug auf die darstellbaren Zeichen (sie haben einen festen Zeichensatz). Oft kann man eigene Zeichen „hochladen“.

Zeichensätze von LCD-Displays

Mangels echter Standardisierung kann jeder Hersteller beliebige Zeichensätze  in seinem Display implementieren.  Für den sehr gängigen Controller HD44780 hat der Produzent Hitachi einen Zeichensatz festgelegt, den man so oder ähnlich in all den Nachbauten auch findet. Daher die Tabelle (von Wikipedia) hier eingefügt:

(Bild anklicken für größere Version)

Grafikdisplays

Bei Grafik-Displays ist die Anzahl der Pixel in X- und Y-Richtung von Bedeutung. Grafik-Displays können auch farbig sein, so dass ein Pixel nicht durch ein Bit sondern durch eine ganze Anzahl von Bits repräsentiert wird. In z.B. 8 Bit kann man so 256 RGB-Werte unterbringen, z.B. nach dem Schema RRRGGBBB, d.h. 3 Bits für Rot und Blau und 2 Bits für Grün.

Ansteuerung

Alle betrachteten Displays  haben einen Display-Controller, der einfache Befehle versteht und die Übersetzung in Pixel an- und ausknipsen-Tätigkeiten vornimmt. Bei Textdisplays kann man beispielsweise den Cursor an eine bestimmte Position setzen („Zeile 2, Zeichenposition 14“) oder ein bestimmtes Zeichen ausgeben.

Die Pin-Belegung aller LCDs folgt meist einem einheitlichen Vorgehen, wie man weiter unten erkennen kann.

Es gibt auch Displays ohne Controller, bei denen man sich um die Ansteuerung selbst kümmern kann. Auch dies ist möglich, aber unbequemer. Ich habe bei meiner Betrachtung nur Displays mit Controller berücksichtigt.

Controller

Bei den Displays hat eine Quasi-Standardisierung auf einige wenige Controller-Typen stattgefunden, so dass man mit einigen wenigen Controllern sehr viele LCDs herstellen kann. Anbei beispielhaft einige Controller, die in den betrachteten Displays eine Rolle spielen

Controller Kompatible Typen
Epson SED1520
Epson SED1530
Hitachi  HD44780 Epson SED1278,
Samsung KS0066, Sitronix ST7066, …
NEC D7228
Sanyo LC7980
Sharp LH155
Samsung KS0108 Samsung S6B0108
Samsung S6B33B2
Sitronix ST7920

Lesenswerte weiterführende Information zum HD47780 bei Wikipedia.

Hinweise zum Test

Da eine größere Menge von Displays in endlicher Zeit durchgetestet werden sollte, wurde folgendes Vorgehen festgelegt:

  • Informationsbeschaffung zu allen Displays aus Internet
  • Keine Eigenimplementierung der Testprogramme und der Ansteuerbibliotheken für die Tests. Verwendung von Sourcecode aus Foren, Websites etc. Ich will mich nicht mit fremden Federn schmücken, die Quellen sind immer zu Beginn der Beschreibung des Displays angegeben.
  • Anpassung der verfügbaren Software soweit erforderlich
  • An die Kandidaten wurden soweit möglich Stiftleisten angelötet, mit denen die Displays dann leicht mit Steckboards verbunden werden können.
  • Die Displays Alps LSU… und das NAN YA LMME… wurden nicht getestet, weil sie mir als nicht sinnvoll verwendbar erschienen. Das Alps-Display hat 41 Kontakte und ist damit in einem Eigenbauentwurf extrem unhandlich wegen der Pin-Anzahl, das NAN YA-Display ist vom Format her sehr groß und für eigene Projekte in vielen Fällen einfach zu groß

Testkandidaten

Die folgenden aufgelisteten Typen wurden untersucht.

Abkürzungen in der Tabelle:
NOK: Not OK, Display konnte nicht in Betrieb genommen werden
TBD: To Be Done, muss noch getestet werden
N.A.: Not Available, Display unbrauchbar

Hersteller Typ Display Werte Bel. Chip Preis 1/2012 Status
Alps LSU7S1011A und Bausatz sowie Beschreibung Controller SED1530 96×32 NEIN SED1530 2,95 zuviele Kontakte (41)
unbekannt C0802-04 2×8, 44x32mm NEIN HD47780 +5V 0,95 OK
Data Vision DG14032 (Pin-Belegung identisch mit DV-20208) 140×32, gelbgrün LED ST7920
+5V / 5,7V
2,95 OK
unbekannt DG016Z 2 bzw. 4  Zeilen zu 24/32 Zeichen 93x17mm NEIN LC7980 2,95 OK
Data Vision DG-12232 mit Adapterboard und Controller SED1520 122×32, 60,5×18,5mm EL SED1520DAA +5V 2,50 NOK
Data Vision DV-20208 2×20, 73×19,8mm, grün LED HD47780 +5V 3,95 OK
NAN YA Plastics Corp. LMMEJS068CDF

Pin-Belegung: Hier

2×20+1×35, 123×35,5mm, gelbgrün LED KS0066F03 (=HD47780) +5V 2,95 Zu groß für Verwendung
Optrex DMC-2047 2×8, 1 Zeile Sonderzeichen, 1x Balkengraph, div. LEDs LED NEC D7228AG 1,95 OK
Orient Display DM19264A-02 und altes Datasheet 192×64, 104x39mm
gelbgrün
LED KS0108 und KS0107
+5V
6,95 OK
Philips LPH 2673-1 50x11mm (ohne) 0,10 N.A.
Samsung UG12D228AA 128×128, 27x27mm, 4096 Farben LED S6B33B2 2,95 TBD
Sharp M078CKA-A3QKLA0057 und Controller LH155 240×64 Pixel, 72x32mm NEIN LH155
+5/+15V
2,95 TBD
Powertip PC1602-E 2×16, 61×15,9mm NEIN HD47780 +5V 2,95 OK
Tinsharp TC1602A-08 2×16, blau LED HD47780
+5V
4,95 OK
Tinsharp TC1604A-01 4×16, 56,2×20,8mm, gelbgrün LED HD47780
+5V
8,95 OK
Wintek WD-G1203T 12×3 bzw. 122×32, 53,5×15,5mm, grün LED D1250D bzw. 2xSED1520 2,50 OK

Pollin Katalogseiten 02/2012 hierzu:

 

Mechanische Aspekte LCD-Anschluss

LCD-Displays sind mit diversen Anschlusstechniken erhältlich.

  • Lötpads mit 2,54mm Abstand: Hier kann man meist eine Stiftleiste einlöten und diese dann z.B. mit einer passenden Buchse auf einem Controller-Board verbinden.
  • Lötpads mit 2mm Abstand: Im betrachteten Testfeld war dies nur 1 Kandidat (Das Wintek LCD)
  • Vorinstallierter Folienleiter: Diese Displays sind meist mit dem Ziel möglichst kleiner Abmessungen gebaut. Der Folienleiter hat am Ende versilberte Leiterbahnen zur Aufnahme in eine spezielle Buchse. Der Folienleiter heißt auf Englisch „Flat Flex(ible) Cable“, abgekürzt FFC. Es wird auch die Bezeichnung „Flexprint“ gebraucht. Diese Kabel gibt es in verschiedenen Rastermaßen („Pitch“), bei den verwendeten Displays ist es immer 1mm.
  • (Im Umfeld FFP kommt auch die Abkürzung FPC vor, die Flexible Printed Circuits“ bedeutet. Dies scheinen mir eine Art „Custom“ Version von FFCs zu sein, also FFCs für genau einen Anwendungszweck). Man braucht also zusammenfassend eine FFC-Buchse mit der passenden Pin-Zahl und dem passenden Pitch.
  • „Sonstige“: Hier fällt mir nur das Optrex ein, welches einfach vergoldete Pins bietet.

Alps LSU7S1011A

Dies ist ein Grafik-Display, 96×32 ohne Hintergrundbeleuchtung.

Zu diesem Display liefert Pollin einen kleinen Adapter-Bausatz mit Platine (extra bestellen, 1,95 Euro), an den das Display angelötet werden kann. Das Alps Display benötigt einige externe Bauteile (z.B. Elkos), die auf der Bausatzplatine mit drauf sind, es macht also Sinn diesen Adapter mitzubestellen.

Controller ist der SED1530.

Controller: Handbuch

Adapter-Bausatz Beschreibung

Anschluss und Pin-Belegung

Der Anschluss erfolgt über einen Folienleiter 1mm Pitch, einseitig 41 Pins.

 

Fazit

Das Alps Display hat m.E. zu viele Kontakte (41 !!!). Es gibt zwar eine Adapter-Platine von Pollin, welche die Anzahl der Kontakte reduziert. Allerdings ist es notwendig, den Folienleiter des Displays an die Adapterplatine anzulöten. Ein Folienleiter verträgt aber die Temperaturen des Lötkolbens nicht oder nur sehr schlecht. Das Anlöten ist daher als kritisch zu betrachten.

Diese ungünstige Situation bringt mich zu dem Schluss, das Display vorerst nicht weiter zu betrachten.

C0802-04

Kleines Text-Display, 2×8 Zeichen, Hersteller war nicht zu ermitteln. Kam mit Pixelfehlern bei mir an, die vermutlich durch Druckstellen beim Transport entstanden waren. Nach einigen Tagen verschwanden die Pixelfehler weitgehend.

Verwendet wird der Controller HD47780. Daher kann dieses Display in der absoluten „Standard-Beschaltung“ und mit der „Standard“-Bibliothek von Peter Fleury verwendet werden.

Handbuch Controller HD47780 oder KS0066.

Besprechung hier : http://www.mikrocontroller.net/topic/176029

Pin-Belegung und Anschluss

Das Display ist mit einem Folienleiter 1mm Pitch, einseitig 10 Pins. versehen.

Um das Display zu testen, wurde ein einfacher Adapter gebaut, der eine FFP-Buchse besitzt, in die der Folienleiter eingeführt werden kann. Die Pins der FFP-Buchse sind auf eine „normale“ 2,54mm Stiftleiste herausgeführt.

Pin Funktion AVR Pin
1 GND
2 VDD +5V
3 Vo Kontrastspannung
4 RS PC0
5 RW PC1
6 E PC2
7 D4 PA0
8 D5 PA1
9 D6 PA2
10 D7 PA3

 

 

 


Die Adapterplatine FFC-Buchse <-> Stiftleiste 2,54mm

 

 


Die FFC-Buchse aus der Nähe. Sie stammt aus einem alten DVD-Player, der zerlegt wurde. FFC-Buchsen sind Bauteile, die für den Endanwender eher schwer erhältlich sind.

 


Das Display im Testbetrieb

 


Der Versuchsaufbau

 

Software

Das Display beherrscht nur den 4-Bit-Modus.

Im Gegensatz zu den im oben erwähnten Foreneintrag Problemen machte die Initialisierung des Displays keinerlei Probleme, es konnte die Implementierung von Peter Fleury ohne jede Änderungen in lcd_init() hergenommen werden.

Link zu Peter Fleurys Bibliothek (LCD library for HD44780 based LCD’s: http://homepage.hispeed.ch/peterfleury/avr-software.html

Fazit

Kleines Display, sehr dünn, einfach anzusteuern. Kein Backlight. Sehr empfindlich beim Abziehen der Schutzfolie (verfärbt sich stark, Verfärbung geht aber wieder weg).
Leider nur 2×8 Zeichen, aber das kann in der einen oder anderen Situation ausreichend sein.
Sehr günstig.

Data Vision DG-12232

Dies ist ein kleineres Grafikdisplay mit 122×32 Punkten, EL-hintergrundbeleuchtet. Zum Display verschickt Pollin ein Adapterboard.

Controller ist SED1520DAA. Ein einzelner SED1520 kann 61×16 Pixelreihen/Zeilen verwalten. („DAA“ bezeichnet *A* die anzulegende externe Frequenz von 2Khz und D*A die Die-Form „Aluminium Pad“).
Dies bedeutet, dass im Display vier Controller verbaut sein müssen !?

Handbuch Controller SED1520

http://www.mikrocontroller.net/topic/171433

http://www.mikrocontroller.net/topic/125454

http://www.mikrocontroller.net/topic/105223

http://en.radzio.dxp.pl/sed1520/



Aus Datenblatt gelesen; das Display darf mit VDD bis zu 8V betrieben werden. Die LCD-Spannung VEE ist negativ und es gilt VDD-VEE<=16,5V. Wenn also z.B. VDD=5V ist, kann  VEE bis zu -11,5V annehmen. Laut Pollin-Datenblatt sind -5V ausreichend.

Backlight

Die Beleuchtung des Displays erfolgt mit einer hohen Wechselspannung von XXX Volt. Die beiden Pins der Beleuchtung sind auf der Adapterplatine als Pins „JP2/JP3“ herausgeführt. Da man eine solch hohe Spannung normalerweise nicht zur Verfügung hat, muss eine solche Spannung erst erzeugt werden. Die Kosten für einen solchen Spannungserzeuger sind zwar nur ein paar Euro, aber so gesehen erhöhen sie den Kaufpreis des Displays deutlich.

Anschluss und Pinbelegung

Das Data Vision DG-12232 wird von Pollin mit einem dazugehörigen Adapter-Board geliefert. Zum Adapter-Board gehören ein paar SMD-Bauteile, die noch anzulöten sind.
Sinn des Adapters: Das Display benötigt zur Funktion an seinem Eingang „CL“ ein Clocksignal von 2Khz. Auf dem Adapterboard ist eine kleine Schaltung mit dem NE555, um diese Frequenz zu erzeugen. Man kann diese Frequenz auch alternativ mit dem AVR erzeugen, aber wenn die Adapterplatine schon dabei ist, empfiehlt sich deren Einsatz. Die Verbindung zwischen Display und Adapter-Platine erfolgt über einen beiliegenden Moosgummi.
Leider folgt die Belegung des Pollin-Adapter-Boards nicht der bei LCDs schon fast üblichen Belegung der Pins.

Adapter Pin Funktion AVR Pin
1 „A0“ (eigentlich: RS) PC0
2 CS2 PC4
3 CS1 PC3
4 Clock
5 80xx: /READ
68xx: E
PC2
6 80xx: /WRITE
68xx: RW
PC1
7 GND GND
8 D0 PA0
9 D1 PA1
10 D2 PA2
11 D3 PA3
12 D4 PA4
13 D5 PA5
14 D6 PA6
15 D7 PA7
16 VDD +5V +5V
17 Res; L=80xx, H=68xx +5V via 10KOhm
18 VEE LCD Kontrastspannung -5..0V

 


Das Display und die Adapterplatine von Pollin, Displayseite.

 


Das Display und die Adapterplatine von Pollin, Bestückungsseite.

 

Status

Das Display konnte unter Verwendung des Pollin-Adapters nicht zum Laufen gebracht werden.
Beobachtung während des erfolglosen Tests:

  • 2Khz-Frequenz wird erzeugt (es sind ca. 1,8xx Khz)
  • Nach Anschluss an AVR und Ansteuerung mit passendem Programm aus Internet werden nur ein paar Linien unten angezeigt
  • Seltsamerweise hat die Einstellung der Kontrastspannung massiven Einfluss auf das was im Display dargestellt wird. Je nach Stellung sind es:
    • Ein paar zusammenhängende ruhigstehende Zeilen am unteren Rand
    • Flimmernde Zeilen unten, abwechselnd unterschiedlich viele
    • Bei bestimmten Einstellungen wird das ganze Display angesteuert, alle Zeilen flimmern
    • Manchmal wird gar nichts angesteuert

Vorgehensoptionen: Entfernen des Pollin-Adapters, anlöten eines Kabels und erneuter Test.

Fazit (vorläufig)

Die EL-Hintergrundbeleuchtung ist ein Nachteil des Displays. Diese erfordert erhöhten Aufwand und erhöhten Stromverbrauch. Das Display ist schon von daher weniger attraktiv und für transportable Geräte weniger geeignet.
Relativ geringe Auflösung.

Data Vision DG-14032

Das Display ist ein Grafik-Display 140×32 Pixel. Es beherrscht einen Text- und einen Grafikmodus, zwischen denen man beliebig hin- und herschalten kann.

Display besprochen in  http://www.mikrocontroller.net/topic/197156

Im Display ist ein Controller Sitronix ST7920 verbaut. Besonderheit dieses Controllers ist, dass er den chinesischen Zeichensatz mit 8192 Zeichen eingebaut hat 🙂

Handbuch Controller ST7920.

Für das Display ist GLCD-Source-Code verfügbar.

Die Pinbelegung dieses Displays ist identisch mit dem Data Vision DV-20208.

Pin Funktion AVR Pin
1 GND GND
2 +5V +5V
3 Kontrastspannung ~+0,7V
4 RS PC0
5 RW PC1
6 E PC2
7 D0 PA0
8 D1 PA1
9 D2 PA2
10 D3 PA3
11 D4 PA4
12 D5 PA5
13 D6 PA6
14 D7 PA7
15 GND
16 N.C.
17 N.C.
18 Metal Frame
19 Led Backlight +5,7V, 30mA +5,7V
20 Led Backlight GND GND

 

 

Am 20-poligen Anschluss lässt sich eine 2,54mm-Stiftleiste leicht anlöten.

Das Display bringt bei mir auch ohne Anlegen einer Kontrastspannung einen guten Kontrast.

Das Backlight leuchtet erst ab ~5,7V (es geht also nicht mit den ohnehin anliegenden 5V).

Software

Beim oben erwähnten Link von Mikrocontroller.net gibt es Software für dieses Display. Diese Software baut auf dem Code von http://en.radzio.dxp.pl/ auf.

Die Software wurde an meine Hardware-Situation (Pinbelegung) angepasst und funktionierte sofort im 4-Bit und im 8-Bit-Modus. Beim 8-Bit-Modus fand ich noch einen Fehler auf meinem AVR-Testboard, ein Kurzschluss zwischen D2 und D3.


Testausgabe im 4-Bit-Modus; Text, zwei Rechtecke, ein Kreis.

 


Erster Test mit dem 8 Bit Modus bringt dieses seltsame Ergebnis. Grund war, dass die Datenbits 2 und 3 durch einen Kurzschluss miteinander verbunden waren. Nach Korrektur verhielt sich das Display auch im 8-Bit-Modus wie gewünscht.

 


Blick auf die Testumgebung.

Fazit

Kleines Display, leider große Platine. Für tragbare Geräte wegen der Größe der Platine nicht optimal. Helles Backlight, guter Kontrast, bei geringem Stromverbrauch.
Kabel oder Stiftleiste sehr gut anlötbar.
Günstiger Preis.

Datavision DV-20208

Dies ist ein kleines Textdisplay mit 2 Zeilenx20 Zeichen. Die Platine ist groß im Verhältnis zum eigentlichen Display.

Verwendet wird der Controller HD47780. Daher kann dieses Display in der absoluten „Standard-Beschaltung“ und der „Standard“-Bibliothek von Peter Fleury verwendet werden.

Handbuch Controller HD47780.

Link zu Peter Fleurys Bibliothek (LCD library for HD44780 based LCD’s: http://homepage.hispeed.ch/peterfleury/avr-software.html

Pinbelegung und Anschluss

Die Pinbelegung dieses Displays ist identisch mit dem Data Vision DG-14032.

Pin Funktion AVR Pin
1 GND GND
2 +5V +5V
3 Kontrastspannung ~+0,7V
4 RS PC0
5 RW PC1
6 E PC2
7 D0 PA0
8 D1 PA1
9 D2 PA2
10 D3 PA3
11 D4 PA4
12 D5 PA5
13 D6 PA6
14 D7 PA7
15 GND
16 N.C.
17 N.C.
18 Metal frame
19 Led Backlight +5,7V, 30mA +5,7V
20 Led Backlight GND GND

Kontrastspannung: Pin 3 geht an Schleifer eines Trimmwiderstands 22K. Die beiden anderen Kontakte des Trimmwiderstands an GND und +5V.

Hinweis zur Pin-Belegung: Wie immer bei der 4-Bit-Ansteuerung sind die Datenleitungen D4..D7 zu verwenden, in Tabelle fett markiert. D4..D7 entsprechen den „logischen“ D0..D3 der 4-Bit-Ansteuerung.

 

 


Gesamtaufbau

 

 

Fazit

Das Display ist durch die Nutzung des Controllers HD44780 softwaretechnisch perfekt unterstützt. Es benötigt minimal 7 Pins vom AVR, ist also sparsam im „Pin-Verbrauch“. Das Backlight ist ausreichend hell und verbraucht sehr wenig Strom. Die Buchstaben sind ziemlich groß geraten, ca 6,5mm hoch, also auch von etwas weiter weg noch lesbar.

Background Beleuchtung benötigt ziemlich genau 5,7 Volt. Bei 5V ist die Beleuchtung nicht zu sehen.

Die Platine ist leider ziemlich groß in Relation zum Display. Dafür existieren dann aber Bohrungen zur Befestigung. Mit einer Dremel lässt sich die Platine oben direkt am Metallrahmen abflexen und wird dadurch etwas schlanker, nur die Backlight-Leiterbahnen werden dabei abgetrennt, was aber kein Problem darstellt, da die Anschlüße direkt am Display rechts nutzbar sind.

Preislich leider relativ teuer, ein Euro weniger wäre m.E. angemessener.

DG016Z

Dieses kleinere Display mit unbekanntem Hersteller ist ein Graphik-Display, 192×32 Pixel, wobei zwischen den oberen und den unteren 16 Pixeln eine einzelne Pixel-Leerzeile existiert. Es ist so gesehen eher ein Display das Graphikausgaben in zwei Zeilen a 192×16 erlaubt. Es ist vorgesehen zur Ausgabe chinesischer? japanischer? Zeichen, hat aber auch „übliche“ Zeichen eingebaut. Die Zeichensätze sind im EPROM untergebracht. Der Nutzen des RAMs ist mir unbekannt. Es gibt mehrere mögliche Zeichensätze:

  • 5×8 bei 32 Zeichen/Zeile, 4 Zeilen
  • 8×16 bei 24 Zeichen/Zeile, 2 Zeilen

Besprochen in : http://www.mikrocontroller.net/topic/235409

Das Display  besteht aus dem eigentlichen Displayboard und einem zweiten Board, auf dem das Display im Huckepack sitzt.
Auf dem zweiten Display findet sich der Controller, ein EPROM Atmel AT27C256 (256KBit) und ein S-RAM-Baustein Sanyo LC3664NML-10 (64KBit).

Controller ist ein Sanyo LC7980. Dessen Character-Speicher ist erweiterbar um ein externes ROM, dies ist das oben erwähnte EPROM.

Handbuch LC7980

Pinbelegung und Anschluss

Doppel-Stiftleiste 2×8 mit 2,54mm Stiftabstand kann eingelötet werden.

Pin Funktion AVR Pin
1 GND GND
2 +5V +5V
3 Kontrastspannung ~-4,1V
4 RS PC0
5 RW PC1
6 E PC2
7 D0 PA0
8 D1 PA1
9 D2 PA2
10 D3 PA3
11 D4 PA4
12 D5 PA5
13 D6 PA6
14 D7 PA7
15 AT27xxx Pin 30 = A13 siehe Text
16 AT27xxx Pin 31 = A14 siehe Text

Kontrastspannung: Pin 3 geht an Schleifer eines Trimmwiderstands 22K. Die anderen beiden Pole gehen an GND und eine negative Spannung von -5V, sie muss extern zugeführt werden.

Hinweis zur Pin-Belegung:

An Pin 15+16 sind die Adresspins A13 und A14 des EPROMS herausgeführt. Somit kann man durch Anlegen von HI/LOW and diesen beiden Anschlüßen 4 Bereiche im EPROM adressieren. Diese Bereiche zeigen auf unterschiedliche Zeichensätze. Folgende Belegungen sind möglich:

A14 A13 Effekt
0 0 Normaler ASCII-Charset+Sonderzeichen; evtl. der im Controller eingebaute?
0 1 ??? jap. Zeichen + ASCII ???
1 0 ??? jap. Zeichen + ASCII ???
1 1 ??? jap. Zeichen + ASCII ???

Alle Zeichensätze im EPROM sind 8×16 Zeichensätze (XXXX stimmt das?)

Möglicherweise kann das Display im 4-Bit-Modus angesteuert werden. Dies wurde nicht ausprobiert, sondern der 8-Bit-Modus verwendet.


 


RAM, Controller LC7980, EPROM. Unten der 2×8 Anschluß,

 


Display wurde bei schrägen Lichteinfall aufgenommen, daher wirkt es etwas verschwommen, ist es aber nicht.

 

Software

Für dieses eher ungewöhnliche Display gibt es keine mir bekannte GLCD-Implementierung. Im oben erwähnten Thread aus mikrocontroller.net finden sich jedoch zwei Implementierungen.

Die optisch ausgereifter aussehende Implementierung wurde als Ausgangsbasis hergenommen. Irritierend war, dass keinerlei Delays in der Display-Ansteuerung vorgesehen waren.

Für erste Tests wird A13=A14 auf LOW gelegt.

Der erwähnte Code funktionierte auf Anhieb. Er implementiert leider nur die Variante „Textmodus, 6×8 Font, 4×32 Zeichen“.

Fazit (vorläufig)

Das Display ist klein für seine 4×32 Zeichen, die es darstellen kann. Es hat leider kein Backlight und ist ziemlich dick, wegen der Huckepack-Platine. Der „normale“ Font sieht gut aus und der Kontrast ist ok, könnte aber stärker sein.

NAN YA LMEEJS068CDF

Dieses Display ist offensichtlich ein Teil eines Gerätes und eigentlich nicht dafür gedacht, in anderen Geräten eingebaut zu werden. Die Platine ist sehr groß.

Das Display ist ein Textdisplay mit 2 Zeilen zu 20 und einer weiteren Zeile mit 35 etwas kleineren Zeichen. Es besitzt LED Hintergrundbeleuchtung.

Verwendet wird der Controller HD47780. Daher kann dieses Display in der absoluten „Standard-Beschaltung“ und der „Standard“-Bibliothek von Peter Fleury verwendet werden.

Handbuch Controller HD47780.

Link zu Peter Fleurys Bibliothek (LCD library for HD44780 based LCD’s: http://homepage.hispeed.ch/peterfleury/avr-software.html

Besprechung hier: http://www.mikrocontroller.net/topic/216474 .

Pinbelegung und Anschluss

Das Display hat einen 40-poligen Wannenstecker (IDE-Buchse). Es hat so viele Anschlüsse, weil die Tasten herausgeführt sind, außerdem sind viele Kontakte mit GND belegt.

Pin Funktion AVR Pin
1 GND
2 GND
3 DB7
4 DB6
5 DB5
6 DB4
7 DB3
8 DB2
9 DB1
10 DB0
11 GND
12 E1 (obere 2 Zeilen)
13 RW
14 E2 (untere Zeile, Pfeile)
15 N.C.
16 N.C.
17 +5V
18 +5V
19 N.C.
20 N.C.
21 RS
24 LED Backlight +
26 LED Backlight –
27 GND
28 GND
29 GND
30-38 (Tastatur)
39 GND
40 GND

 

 

Laut einem Foreneintrag kann das Display direkt unterhalb der Buchse abgesägt werden und so etwas verkleinert werden. Ich habe dies nicht probiert, da das Display selbst dann für meine Zwecke immer noch zu groß wäre.

Von http://www.grassow.de/nan_tec.html: … Pin 26 + Betriebsspannung für Hintergrundbeleuchtung Display (über zwei parallel geschaltete 10 Ohm-Widerstände) …

Software

4 Bit Modus ist möglich.

Die Pfeile werden mit den Daten-RAM-Adressen 0xA3,0xA4,0xA5 und 0xA6
angesprochen. 


XXX

Fazit (vorläufig)

Das Display hat einen sehr ungünstigen Formfaktor, es ist für viele Zwecke einfach zu groß. Daher habe ich den Test mit diesem Display auf einen späteren Zeitpunkt verschoben.

Optrex DMC-2047

Dieses Display hat zwei Textzeilen mit je 8 Zeichen. Außerdem einen Balken mit 40 Punkten sowie eine Zeile mit einigen Sonderzeichen. Es besitzt eine LED Hintergrundbeleuchtung sowie 4 verschiedenfarbige LEDs (und eine IR-Empfangs-Diode).
Es stammt vermutlich aus einem Telefon.

Die Firma Optrex ist im Internet vertreten (http://www.optrex.com/), hier ein Link auf diverse LCD-Anzeigen. Diverse Optrex: LINK

Der verwendete Controller ist der NEC µPD7228A.

Datasheet NEC µPD7228A (nur 10 Seiten)

Nachfolger µPD16434, kompatibel zum 7228: Manual

Diskussion des Displays hier: http://www.mikrocontroller.net/topic/174018

Anschluß und Pinbelegung

Der Display-Anschluß hat 22 Pins im Abstand von 1,5mm.

Das Backlight besteht aus 4 in Serie geschalteten LEDs. Erst bei 10V kommt eine nennenswerte Helligkeit zustande, wirklich hell ist es erst bei 12V. Möglicherweise ist das aber zuviel für die 4 LEDs.

Pin Funktion
Seriell
AVR Pin
1 Backlight – siehe Text
2 Backlight + siehe Text
3 LED yellow1
4 LED yellow1
5 LED green
6 LED green
7 LED IR
8 LED IR
9 LED red
10 LED red
11 LED yellow
12 LED yellow
13 CLOCK Systemtakt  PD7 (siehe Text)
14 RESET PA4
15 CS PA3
16 CD Command / Data Select PA2
17 SCK – Serial Clock Input PA1
18 VSS, GND GND
19 VDD +5V +5V
20 BUSY
21 SI – Serial Input PA0
22 VLC5 GND

 

Software

Der Controller erlaubt sowohl 4-Bit-Parallel als auch serielle Ansteuerung. Leider sind D1,D2 und D3 an der Kontaktleiste nicht verfügbar, so dass mit dem Optrex-Display nur serielle Ansteuerung möglich ist.

Der C Code, der über das oben erwähnte Forum heruntergeladen werden kann (Stand: 02/2012) ist nicht lauffähig. Dort gibt es auch Assembler-Code für PIC-Controller und Basic-Code.

Nach diversem Herumprobieren konnte ich eine Art „Kompilat“ aller erwähnten Codes (Assembler, BASIC, C) erzeugen, die als C Source lauffähig war und das Display korrekt ansteuert. Die verwendete Taktfrequenz zusammen mit der Framesize (SFF-Kommando des upd7228) war kritisch. Bei mir hat ein Wert von 250Khz für den Takt für das Display und eine Framesize von 1 funktioniert. Mit anderen Werten gab es Darstellungsfehler. Das Timing müsste für dieses Display genauer angesehen werden.

Den Systemtakt für das Display habe ich mittels eines Timers des AVRs erzeugt, der selbsttätig einen Pin des AVRs ein und ausschaltet. Dieser Pin war OC2, beim verwendeten ATmega32 identisch mit PD7.


Oben: Bargraph
Mitte Sonderzeichen Zeile
Unten: 2 Zeilen a 8 ZeichenHintergrundbeleuchtung hier nicht angeschlossen. Durch den Betrachtungswinkel haben die Buchstaben eine Art „hellen Hintergrund“.

 

Gesamtaufbau

 

Fazit

Eigentlich witziges Display, Hintergrundbeleuchtung vorhanden. Die LEDs können auch für irgendwas verwendet werden, und der Bargraph ist auch nicht schlecht.

Die einzelnen Zeichen sind ziemlich weit voneinander entfernt.

Ungünstig die Anschlussvariante mit 1,5mm Pitch Platine (nur arbeitsaufwändig durch Handlötung anzuschließen).

Orient Display DM19264A

Shenzhen Orient Display ist im Internet vertreten: http://www.orientdisplay.com/

Das DM19264A-02 ist (Stand 01/2012) noch auf der Website beschrieben.

Verwendete Controller sind 3x KS0108B (Samsung S6B0108) als Segment Driver und 1x KS0107 (Samsung S6B0107) als Common Driver. Somit sind 64+64+64=192 Pixelspalten und 64 Pixelreihen adressierbar.

Im folgenden ist der Schaltplan des Displays -aus dem Datenblatt entnommen- dargestellt.

Manual S6B0107

Manual S6B0108

Bei http://www.mikrocontroller.net/topic/217600 ist das Display ausführlich besprochen, incl. Anschlussplan und Test-Sourcecode.

Polnische Site mit Erstimplementierung einer passenden C-Bibliothek für KS0108: http://en.radzio.dxp.pl/ks0108/ .

Wichtige Hinweise zur Platine

Laut Forenbeitrag sind die Verbindungen der Anschlusspins mit Pin 19 und Pin 20 nicht auf der Platine drauf. Prüfung zeigt dass das auch für mein Exemplar stimmt.

  • Durch vorsichtiges Abkratzen der Isolation am Ende der Leiterbahn und anschließendes Verzinnen kann leicht ein dünner Draht zwischen Pin 19 und der neu geschaffenen Lötstelle verlötet werden. Damit besteht die Verbindung von Pin 19 zu Vee wie im Datenblatt beschrieben.
  • Der masseseitige Anschluss des Backlights ist bei meinem Exemplar auch nicht mit der Masse (Pin 1) verbunden. Somit leuchtet nix, wenn man 4,2V an Pin1 und Pin 20 anlegt. Auch hier kann Abhilfe geschaffen werden: Die Leiterbahn, die dem „K“-Anschluss des Backlights am nächsten liegt, wird freigekratzt und, weil der Abstand so gering ist, mit einer superfetten Lötperle als Verbindung versehen. Danach leuchtet das Backlight, wenn man GND verbunden hat und +4,2V an Pin 20 anlegt.

Pinbelegung und Anschluss

Wenn man die Hinweise zur Platine oben beachtet hat, kann man das Display an seinen Controller anschließen.

Pin Symbol Funktion Etc. AVR
1 Vss Power Supply GND GND
2 Vdd Power Supply +5V +5V
3 Vo Contrast Adjust Coltage
4 RS Instruction/Data Register Select (H: Data; L=Inst.) PC0
5 RW Data Read/Write  (H=R;L=W) PC1
6 E Enable Signal PC2
7 DB0 Data Bus Line 0 PA0
8 DB1 PA1
9 DB2 PA2
10 DB3 PA3
11 DB4 PA4
12 DB5 PA5
13 DB6 PA6
14 DB7 Data Bus Line 7 PA7
15 /CS1 Chip Select 1 active L PC3
16 /RST Reset kann mittels 10 Ohm an Vdd gelegt werden PC6 oder +5V via 10K
17 /CS2 Chip Select 2 active L PC4
18 /CS3 Chip Select 3 active L PC5
19 Vee Negative Voltage Output (-5V or -10V) bei mir sinds -5V. Siehe Kommentar
20 A Power Supply LED Backlight +4,2V <= 300mA 4,2V

An Vdd wird via Poti 10K-22K Vss und Vee geführt, diese Spannung liegt also zwischen +5 und -5V (oder -10V).

 

 


Lötbrücke an Pin 20

 


Lötbrücke (Lötperle) an Kathode des Backlights

 


Gesamtaufbau beim Test

Die Ausgaben des Testprogramms (Text, Linie, Rechteck, Kreis, Graphik)

Fazit

Das Display hat eine relativ hohe Auflösung und einen guten Kontrast. Das Backlight hat, wenn es ausreichend hell sein soll, einen Stromverbrauch zwischen 200 und 300mA. Dies ist ein hoher Stromverbrauch und macht es für externe Geräte fast schon ungeeignet. Hier wird man das Backlight nur auf Knopfdruck zuschaltbar machen.

Ungünstig die notwendigen Nacharbeiten auf der Displayplatine.

Es wird auch über schwachen Kontrast des Displays bei bestimmten Bitmustern (0101010…) gesprochen. Dieser Effekt scheint aber nicht bei allen Displays vorzukommen.

Philips LPH 2673-1

Das LPH 2673-1 von Philips ist ein LCD Display ohne Controller. Man müsste also einen passenden Controller finden oder nachbauen. Das Display ist somit ein Sonderfall und wird hier nicht weiter betrachtet.


Philips LPH 2673-1, Displayseite.

Fazit

Sehr billig, für meine Zwecke aber unbrauchbar-> Mülleimer.

Powertip PC1602-E

Kleines Text-Display, 2×16 Zeichen. Powertip ist im Internet vertreten (http://www.powertip.com.tw/). Man findet das Display noch in der Produktliste des herstellers.

Display-Beschreibung: Datenblatt

Verwendet wird der Controller HD47780. Daher kann dieses Display in der absoluten „Standard-Beschaltung“ und mit der „Standard“-Bibliothek von Peter Fleury verwendet werden.

Controller HD47780 (bzw. kompatibler Chip) .

Besprechung hier : http://www.mikrocontroller.net/topic/44038

Pin-Belegung und Anschluß

Folienleiter 1mm Pitch, einseitig 14 Pins.

Es wurde derselbe Folienleiter<->Stiftleiste Adapter wie beim C0802 Display verwendet.

Pin Funktion AVR Pin
1 VDD +5V
2 Vo Kontrastspannung 0..5V via 10K
3 RS PC0
4 RW PC1
5 E PC2
6 DB0
7 DB1
8 DB2
9 DB3
10 DB4 PA0
11 DB5 PA1
12 DB6 PA2
13 DB7 PA3
14 GND

 

 

 


Display im Test

 


Testaufbau

Software

4- und 8-Bit sind möglich. 4-Bit-Modus wurde ausprobiert.

Link zu Peter Fleurys Bibliothek (LCD library for HD44780 based LCD’s: http://homepage.hispeed.ch/peterfleury/avr-software.html

Fazit

Sehr kleines und flaches Display.  einfach anzusteuern. Kein Backlight.

Samsung UG12D228AA

Grafik-Display 128×128 mit 4096 (?) Farben.

Besprechung hier: http://www.mikrocontroller.net/topic/221289

Controller Samsung S6B33B3

Handbuch Samsung S6B33B3

Pin-Belegung und Anschluß

Folienleiter 0,5mm Pitch, einseitig 20 Kontakte.

 

 

 

Fazit

noch nicht getestet.

Sharp MO78CKA-A3QKLA0057

Dies ist ein ziemlich großes Grafikdisplay mit 240×64 Pixeln ohne Hintergrundbeleuchtung. Der Anschluß erfolgt über einen Folienleiter. Auf dem Folienleiter ist der Controllerchip sowie andere Bauteile mit aufgebracht. Das Display ist demgemäß sehr flach.

Als Controller kommt der LH155 zum Einsatz. Im Datenblatt des LH155BA wird gesagt, dass dieser nur 128×64 Pixel unterstützt, möglicherweise befindet sich also eine erweiterte Version des Controllers im Display oder aber das Display bringt noch eigene Logik mit, um die zusätzlichen Pixel zu adressieren.

Zum Display liefert Pollin eine kleine Adapter-Platine mit, die die Kontrastspannung erzeugt, eine stabilisierte 5V-Spannung bereitstellt und eine Buchse für Parallelportanschluß des Displays an einen PC bietet.

Controller: LH155BA Datenblatt

Pollin-Doku zum Display: hier

Diskussion in Forum : http://www.mikrocontroller.net/topic/46635

Pin-Belegung und Anschluß

Der Folienleiter hat 1mm Pitch , einseitig 22 Pins.
Das Display kann nur den 8-Bit-Modus. Es kann mit 80xx-Mimik und 68xx-Mimik angesteuert werden.

Pin Funktion AVR-Pin
1 N.C.
2 GND GND
3 /RESB
4 /CSB
5 RS
6 M86
6800=HI, 80xx=LO
+5V
7 VDD, +5V +5V
8 6800: RW, 80xx: WE
9 6800: E, 80xx: RE
10 D0 PA0
11 D1 PA1
12 D2 PA2
13 D3 PA3
14 D4 PA4
15 D5 PA5
16 D6 PA6
17 D7 PA7
18 GND
19 VDD, +5V
20 VO, Kontrastspannung 14..17V
21 GND
22 N.C.

 

 

 

Die Adapter-Platine von Pollin

Diese Platine geht davon aus dass a) im 80xx-Modus angesteuert wird und b) die Ansteuerung via Parallelport erfolgt. Die Platine kann aber leicht so abgeändert werden dass sie den 6800-Modus unterstützt (LCD Pin 6 an +5V statt an GND anschliessen). Ausserdem muss man die Parallelport–Buchse nicht einlöten, ich habe Lötstifte eingelötet.


Die Pollin Adapter-Platine. Hier nicht mit Parallelport-Buchse bestückt, sondern mit den benötigten Lötstiften.
Die Adapter-Platine bringt eine eigene Spannungsversorgung mit 7805 mit, die man evtl. auch nicht braucht…

 


Pin 6 statt an GND jetzt an +5V (6800 Modus, Pin 6 wurde einfach durch einen dicken Lötpunkt mit Pin 7 verbunden).
Pin 9 statt „nicht angeschlossen“ an einem Pin für den Microcontroller. Pin 9 ist im 6800-Modus der Enable-Eingang des Displays.

Nach Anpassung der Pollin-Adapter-Platine wurde das Display mit dem AVR verbunden.

Software

Zu diesem Display gibt es zwar einen Thread im oben erwähnten Forum. Allerdings ist nach Eigenaussage keine der dort vorgestellten Software-Ansätze fertig und eher im Experimentierstadium

Fazit

noch nicht getestet.

Tinsharp TC1602A-08

Dies ist ein kleines Textdisplay 2 Zeilen x 16 Zeichen. Blaues LED-Backlight.Die Platine ist klein im Verhältnis zum Display.

Verwendet wird der Controller HD47780 (bzw. kompatibler). Daher kann dieses Display in der absoluten „Standard-Beschaltung“ und der „Standard“-Bibliothek von Peter Fleury verwendet werden.

Handbuch Controller HD47780.

Link zu Peter Fleurys Bibliothek (LCD library for HD44780 based LCD’s: http://homepage.hispeed.ch/peterfleury/avr-software.html

Pin-Belegung und Anschluß

 

Pin Funktion AVR Pin
1 GND, Vss GND
2 +5V +5V
3 Vo Kontrastspannung
4 RS PC0
5 RW PC1
6 E PC2
7 D0 PA0
8 D1 PA1
9 D2 PA2
10 D3 PA3
11 D4 PA4
12 D5 PA5
13 D6 PA6
14 D7 PA7
15 Led Backlight Anode ca. 2.7V, 20mA
16 Led Backlight Kathode GND

Kontrastspannung: Pin 3 geht an Schleifer eines Trimmwiderstands 22K. Die beiden anderen Kontakte des Trimmwiderstands an GND und +5V.

Hinweis zur Pin-Belegung: Wie immer bei der 4-Bit-Ansteuerung sind die Datenleitungen D4..D7 zu verwenden, in Tabelle fett markiert. D4..D7 entsprechen den „logischen“ Do..D3 der 4-Bit-Ansteuerung.

LED Backlight Spannung: Das Backlight ist sehr hell, ich habe mich nicht getraut die Spannung so hoch zu regeln dass wirklich 20mA verbraucht werden. Bei 2,7V ist es schon ausreichend hell und mein Netzteil zeigt da noch keinen nennenswerten Stromverbrauch an. Infos zur korrekten Backlight-Spannung habe ich keine gefunden.

 

 

 

Software

Bei der Verwendung der Bibliothek von Peter Fleury wurden die folgenden #defines verwendet (lcd.h):
#define LCD_LINES           2     /**< number of visible lines of the display */
#define LCD_DISP_LENGTH    16     /**< visibles characters per line of the display */
#define LCD_LINE_LENGTH    16     /**< internal line length of the display    */
#define LCD_START_LINE1  0x00     /**< DDRAM address of first char of line 1 */
#define LCD_START_LINE2  0x40     /**< DDRAM address of first char of line 2 */
#define LCD_START_LINE3  0x00     /**< DDRAM address of first char of line 3 */
#define LCD_START_LINE4  0x00     /**< DDRAM address of first char of line 4 */

Fazit

Kleineres Textdisplay, leider nur 16 Zeichen. Font ist für mein Empfinden schön. Sehr helles Backlight, attraktives Blau. Besonderheit ist, dass der Text im Display relativ zu den Anschlußpins „auf dem Kopf“ steht (vgl. mit anderen Textdisplays!).

Kleine Platine, geringer Stromverbrauch des Backlight trotz der großen Helligkeit. Nur 16 Anschlußpins. „Verbraucht“ im 4-Bit-Modus nur 7 Pins des AVRs. Befestigungsbohrungen sind kleiner als M3 (vermutlich M2,5)

Hoher Preis.

Tinsharp TC1604

Dies ist ein kleines Textdisplay 4 Zeilen x 16 Zeichen, der größere Bruder des TC1602. Grünes LED-Backlight. Die Platine ist klein im Verhältnis zum Display.

Verwendet wird der Controller HD47780 (bzw. kompatibler). Daher kann dieses Display in der absoluten „Standard-Beschaltung“ und der „Standard“-Bibliothek von Peter Fleury verwendet werden. Zur Ansteuerung der Zeilen 3 und 4 muss man die richtigen RAM-Adressen eingeben (siehe weiter unten unter „Software“).
Irgendwo habe ich im Zusammenhang mit dem TC1604 den Controller SPLC780D1 erwähnt gesehen, eventuell ist dies der verwendete Controller.

Handbuch Controller HD47780.

Handbuch Controller SPLC780D1.

Link zu Peter Fleurys Bibliothek (LCD library for HD44780 based LCD’s: http://homepage.hispeed.ch/peterfleury/avr-software.html

Pin-Belegung und Anschluß

Pin-Belegung identisch mit Tinsharp TC1602.

Pin Funktion AVR Pin
1 GND, Vss GND
2 +5V +5V
3 Vo Kontrastspannung
4 RS PC0
5 RW PC1
6 E PC2
7 D0 PA0
8 D1 PA1
9 D2 PA2
10 D3 PA3
11 D4 PA4
12 D5 PA5
13 D6 PA6
14 D7 PA7
15 Led Backlight Anode +5V
16 Led Backlight Kathode GND

Kontrastspannung: Pin 3 geht an Schleifer eines Trimmwiderstands 22K. Die beiden anderen Kontakte des Trimmwiderstands an GND und +5V.
Bei meinem Exemplar ist der maximale Kontrast in Nullstellung. Daher kann man den Trimmwiderstand weglassen und Pin 3 direkt mit GND verbinden – zumindest bei meinem Exemplar.

Hinweis zur Pin-Belegung: Wie immer bei der 4-Bit-Ansteuerung sind die Datenleitungen D4..D7 zu verwenden, in Tabelle fett markiert. D4..D7 entsprechen den „logischen“ Do..D3 der 4-Bit-Ansteuerung.

 


Gesamtaufbau

Das Display aus der Nähe

 

Software

Bei der Verwendung der Bibliothek von Peter Fleury wurden die folgenden #defines verwendet (lcd.h):
#define LCD_LINES           4     /**< number of visible lines of the display */
#define LCD_DISP_LENGTH    16     /**< visibles characters per line of the display */
#define LCD_LINE_LENGTH    16     /**< internal line length of the display    */
#define LCD_START_LINE1  0x00     /**< DDRAM address of first char of line 1 */
#define LCD_START_LINE2  0x40     /**< DDRAM address of first char of line 2 */
#define LCD_START_LINE3  0x10       /**< DDRAM address of first char of line 3 */
#define LCD_START_LINE4  0x50     /**< DDRAM address of first char of line 4 */

Fazit

Kleineres Textdisplay, leider nur 16 Zeichen. Font ist für mein Empfinden schön. Helles Backlight. Besonderheit ist, dass der Text im Display relativ zu den Anschlußpins „auf dem Kopf“ steht (vgl. mit anderen Textdisplays!).

Kleine Platine. Nur 16 Anschlußpins. „Verbraucht“ im 4-Bit-Modus nur 7 Pins des AVRs. Befestigungsbohrungen sind M3.

Hoher Preis.

Wintek WD-G1203T

Dies ist ein kleines Grafikdisplay mit 122×32 Pixeln. Es ist sehr flach und besitzt eine LED-Hintergrundbeleuchtung bestehend aus 6 grünen LEDs.

Besprechung hier:  http://www.mikrocontroller.net/topic/173195

Verwendeter Controller: 2xSED1520

Handbuch Controller SED1520

Pinbelegung und Anschluß

Stiftleiste 2mm (nicht 2,54!) mit 20 Pins.
Um das Display zu testen wurde ein Adapter gebaut, der die 2mm Stiftleiste auf eine 2,54mm Stiftleiste übersetzt.

Pin Funktion AVR Pin
1 Vss, GND
2 Vcc, +5V
3 N.C.
4 A0 (entspr. RS) PC0
5 /CS1, links PC2
6 /CS2, rechts PC3
7 interner Clock — offen lassen
8 E auf +5V legen
9 RW PC1
10 D0 PA0
11 D1 PA1
12 D2 PA2
13 D3 PA3
14 D4 PA4
15 D5 PA5
16 D6 PA6
17 D7 PA7
18 /Res: HI für 68xx Mode, LO für 80xx Mode auf +5V legen
19 Led Backlight + ~5V
20 Led Backlight –

Die 6 LEDs sind alle parallel geschaltet, jede LED mit einem eigenen Vorwiderstand 150 Ohm.

 


Das Display, hier falsch herum dargestellt („oben“ ist im Bild die untere Kante)

 


Der Adapter

Der Adapter wurde für ein weiteres Display (Optrex DMF 5002) gebaut, so dass er zusätzlich zur 2mm-Stiftleiste in der Mitte auch eine 2×10-polige Stiftleiste oben besitzt.


Der Adapter von unten.

 


Das Display im Betrieb (Textdarstellung)

 


Das Display im Betrieb (Grafikdarstellung, leider fehlerhaft)

 

Software

Bibliothek von hier: http://en.radzio.dxp.pl/sed1520/

Mit dieser Software konnte nach trivialen Anpassungen (Ports/Pins anpassen) Texte ausgegeben werden. Die Grafik-Ausgabe war fehlerhaft.

Fazit

Kleines, schmales Display. Ausreichende Hintergrundbeleuchtung. Es scheint keinen 4-Bit-Modus zu geben, von daher braucht es relativ viele Controller-Pins.

Grafik-Modus nicht nutzbar. Hier wäre noch etwas mehr Zeit in der Analyse des fehlers zu investieren.

Optrex DMF 5002N

Dieses grosse Display habe ich über ebay erstanden, es stammt also nicht aus der Pollin-Tranche.

Grafik-Display 128×112, EL-hintergrundbeleuchtet. Pixelgröße: 0,50 x 0,49 mm
Displaygröße: 75 x 65mm. Älteres Modell, das Datenblatt ist von 1997.

Hintergrundbeleuchtung 100V AC bei 400Hz laut Handbuch, max 12mA.

Controller ist der Toshiba T6963C, ein früher(?) sehr häufiger Chip. Auf der Platine finden sich noch 1x T6961B, 2x T7778A und ein TC5565AFL sowie ein paar kleinere 74xx.

Display Datenblatt und noch ein Datenblatt mit mechanischen Daten und noch ein Datenblatt.

Ausführliche Beschreibung der gesamten DMF500x Baureihe mit sehr guten Informationen und sogar mit Beispiel Source Code.

Controller Handbuch

Writing Software for T6963C based Graphic LCDs“ Application Notes

Fertige Software : http://en.radzio.dxp.pl/t6963/

Pin-Belegung und Anschluß

20-poliger doppelreihige Wannenstecker.

Kontrastspannung: Nach dem Schaltbild im Datenblatt: -21V an Vee. Zwischen Vee und GND ein Trimmer 10-20K in Serie mit einem Widerstand 5-10K. Der Widerstand ist an GND, der Trimmer an Vee. Den Schleifer des Trimmers an Vadj anschliessen.

EL-Spannung: AC 100V (?). Das Handbuch empfiehltz das Inverter-Modul „NEL-D32-49“.

Pin Funktion AVR Pin
1 Frame Ground
2 Vss GND GND
3 Vcc Power Supply Logic +5V
4 Vadj LCD Contrast Adjustment siehe Text
5 Vee Power Supply LCD Drive ~-21V siehe Text
6 /WR
7 /RD
8 /CE
9 C/D
10 /HALT – Stop Clock
11 /RESET – Controller Reset
12 D0
13 D1
14 D2
15 D3
16 D4
17 D5
18 D6
19 D7
20 N.C.
21 EL Backlight AC siehe Text
22 EL Backlight AC siehe Text

 

 

Status

Noch nicht getestet.

Schaltung für eine EL-Hintergrundbeleuchtung

Folgende Schaltung nutzt dem NE555 und einen kleinen Trafo, im Internet gefunden.

http://spurtikus.de/wp-content/uploads/2017/03/LM555-inverter-1.pdf

Es wird ein Transformator benötigt, der 8 Ohm auf 1KOhm übersetzt. Geeignet sind Ausgangsübertrager für Röhrenverstärker oder für 100V-Technik, möglichst winzige Typen suchen.
Beispiel (nicht getestet!): Contrad Teilenr. 516104

Weiterführende Infos

[[[
Intern:
Planung Bearbeitung:

1: Optrex DMF 5002N

2: Sharp M…: keine lauffähige SW vorhanden

3: Samsung: 0.5er Pitch, kein Stecker vorhanden

—: Nan Ya: Größe problematisch, kleinsägen? –> erst mal lassen

—: Alps: 41 Pins, kein FPC vorhanden –> erst mal lassen

]]]

 

Ein Datenlogger mit AVR – Nutzung von Sensoren

Hinweis: Diese Aktivität ist nicht abgeschlossen. Das Dokument beschreibt also den momentanen Stand.

Am AVR können zahlreiche (um nicht zu sagen: zahllose) Sensoren angeschlossen werden. Bei stromsparender Bauweise und Verwendung eines nichtflüchtigen Speichers (großes EEPROM, SD-Karte) können diese Werte über einen langen Zeitraum vom AVR autark gesammelt werden („Data Logger“). Ein bisschen habe ich da auch herumexperimentiert.

Luftdruck und Temperatursensor HopeRF HP03S

Dieser Sensor erfasst Luftdruck und Temperatur als 16-Bit Werte. Er kann mit dem I2C Protokoll  (auch „TWI“, Two Wire Interface genannt) angesprochen werden. Zum Sensor gibt es ein Datenblatt, dass auch die Programmierung darstellt. Allerdings ist das bei HopeRF abgedruckte Programm für 8051-CPUs.


Der Sensor (9,5x9x4,6mm) aus der Nähe. Das Innere ist mit einer gelartigen Masse gefüllt.

Um den Sensor nutzen zu können, muss man ihn elektrisch mit dem AVR verbinden. Ich habe ein Kabel angelötet. Evtl. kann man den Sensor auch direkt auf eine Platine auflöten.


An die sechs Kontakte kann man noch per Hand und ohne Lupe ein Kabel anlöten

Der Sensor wird mit maximal 3,6V betrieben. Man muss also evtl. aus einer 5V-Spannung noch eine geeignete Spannung (also z.B. 3,0 oder 3,3V) ableiten. Er hat einen XCLR-Eingang, der nur während der Messung High sein soll. Außerdem noch einen Masterclock-Eingang MCLK, an den eine Frequenz um 32768Hz anzulegen ist (auch nur während der Messung).  Schließlich noch SDA (Daten) und SCL (Clock) des  I2C-Interfaces um das EEPROM auszulesen.


Die sechs Anschlüsse des Sensors

Ich habe zum Experimentieren 3,0 Volt aus 5 in Serie geschalteten Dioden und einem Vorwiderstand gewonnen, die an +5V anliegen. MCLK, XCLR und SCL sind Leitungen, die nur der AVR beschreibt, daher kann man da die Pegelanpassung mittels zweier Widerstände machen. Der I2C-Bus erfordert, dass die beiden Leitungen mit einem Pullup-Widerstand gegen VCC gelegt sind.

Die SDA-Leitung wird in beide Richtungen genutzt, hier langt ein einfacher Spannungsteiler nicht aus. Man kann sich aber aus zwei Transistoren und drei Widerständen einen schönen Pegelwandler bauen (Erläuterungen dazu hier). Insgesamt ergibt sich das folgende Schaltbild.


Verkabelung zum AVR. Nicht eingezeichnet die beiden Pullup-Widerstände zu 4K7 gegen 3V an den Leitungen SDA und SCL.

Die vier Pins werden an den AVR angeschlossen, ich habe zum Experimentieren folgende Belegung gewählt:

AVR Sensor
PD7 MCLK
PD2 XCLR
PD3 SDA
PD6 SCL

Den Masterclock für den Sensor erzeugt der AVR mit einem Timer, der als PWM-Generator geschaltet ist. Mit einem 16Mhz- bzw. 8Mhz-Quarz bekomme ich nicht genau die Soll-Frequenz, sondern 31372 Hz. Erlaubt laut Datenblatt sind 30..35Khz, also ist meine Frequenz im erlaubten Rahmen.

Es dauerte einige Zeit, bis meine Hardware soweit war, die Calibration Werte auszulesen (hatte erst SDA auch nur mit einfachem Spannungsteiler versucht, was zu Lesefehlern führte). Bei mir kamen im Erfolgsfall folgenden Werte (mehrfache Auslesung):

Environmental Data Logger $Revision: 363 $ 
C1=17837, C2=3189, C3=358, C4=1474, C5=30695, C6=6333, C7=2500. A=7, B=29, C=6, D=11
Environmental Data Logger $Revision: 363 $
C1=17837, C2=3189, C3=358, C4=1474, C5=30695, C6=6333, C7=2500. A=7, B=29, C=6, D=11
Environmental Data Logger $Revision: 363 $
C1=17837, C2=3189, C3=358, C4=1474, C5=30695, C6=6333, C7=2500. A=7, B=29, C=6, D=11
Environmental Data Logger $Revision: 363 $
C1=17837, C2=3189, C3=358, C4=1474, C5=30695, C6=6333, C7=2500. A=7, B=29, C=6, D=11

Aus den Calibration Werten und den eigentlichen Messwerten, die als „raw“ 16-Bit-Werte vorliegen, muss nach einer (ohne Float-Arithmetik) nicht ganz simplem Formel die echten Werte für Temperatur und Luftdruck berechnet werden. Die Formeln sind im Datenblatt angegeben.
(Da der normale Luftdruck auf Meereshöhe eine Art Konstante ist und der Luftdruck mit der Höhe linear abnimmt, kann aus dem Luftdruck und einer passenden Tabelle/Formel übrigens  auch die Höhe des Messorts berechnet werden.)

Bei mir ergaben sich an einem schwülen Tag mit angekündigtem Gewitter (D1 und D2 sind die Raw-Werte, die anderen Werte Zwischenschritte der Umrechnung):

dUT=165
OFF=12774
SENS=17894
D1=41101, D2=30860
Temp=26.5 °Celsius, Pressure=1008.90 hPa (Height ~ 3.0m).
dUT=163
OFF=12773
SENS=17893
D1=41101, D2=30858
Temp=26.5 °Celsius, Pressure=1008.87 hPa (Height ~ 3.0m).

Die Höhe stimmt irgendwie nicht, zugegeben, es müssten um die 120 Meter sein 🙂

Zwei weitere digitale Thermometer, die ich direkt neben den Sensor stelle weichen nur minimal (0.1-0.3 Grad) von dem Messwert des Sensors ab. Die Temperatur stimmt also so in etwa. Genauer kann ich es nicht testen.

Weiterführende Infos

Luftfeuchtigkeitssensor HopeRF HH10D

Von Hope gibt es auch einen Luftfeuchtigkeitssensor, den HH10D. Dieser ist ein kleines Modul bestehend aus einem EEPROM sowie einem Sensor zuzüglich Beschaltung. Die Beschaltung macht aus einem Feuchtigkeitswert einen Frequenzwert. Im EEPROM stehen zwei Kalibrierwerte vom Hersteller.


Ansicht des Sensors HH10D von oben

Der EEPROM-Teil kann via I2C ausgelesen werden, für den Sensor-Teil muss man die entstehende Frequenz messen und mit den Kalibrierwerten in einen echten Messwert umrechnen. Eigentlich wäre es schöner, wenn der Sensor via I2C den Messwert bereitstellen würde, so wie das der HP03s macht. Ist aber nicht so. Die zu messende Frequenz liegt um 7Khz (5-10Khz).


Ansicht des Sensors HH10D von unten. Erkennbar sind das EEPROM und der Spannungs-Frequenz-Konverter. Die Unterseite des Moduls ist vergossen. Die Schnittkante der Platine (oben, unten) ist erstaunlich schlampig ausgeführt (es sieht wie mit der Hand an der Tischkante abgebrochen aus 🙂

Die Nutzung dieses Sensors besteht also darin dass man

  • Zunächst die Kalibrierkonstanten ausliest und dann
  • die Frequenz am Pin FOUT misst.

Mittels eines „Pin Changed“-Interrupts können Signalflankenwechsel an den Eingängen des AVRs erkannt und gezählt werden. Mit einem Timer-Interrupt, der z.B. alle Sekunde eintritt, kann nun der erreichte Zählwert als Frequenzwert des Sensors hergenommen werden.

Bei Experimenten mit einem 8Mhz-getakteten ATmega644, der nebenbei noch diverse Berechnungen machte und via RS232 kommunizierte (aber keine weiteren zeitkritische Interrupts ausführte), konnte ich Frequenzen bis etwa 70Khz sauber vom einem Eingangspin des AVRs lesen. Dies liegt weit über den geforderten maximalen 10Khz des Sensors.

Der HH10D wurde nach erfolgreichem Anschluss in das Logging des Datenloggers integriert. Es muss nur ein zusätzliches Byte mit abgespeichert werden.

Weiterführende Infos

Datenlogger

Nach dem prinzipiellen Anschluss des Sensors HP03s sollte ein Datenlogger entstehen. Designziele waren:

  • Loggen von Temperatur und Luftdruck, später kam noch Luftfeuchte hinzu
  • Speicherplatz für geloggte Daten („Samples“) für einen Zeitraum von mindestens 60 Tagen
  • Stromversorgung durch Akku o.ä. (nicht durch ein Netzteil!) autark für mindestens 60 Tage
  • Auslesen der Daten via RS232 oder USB
  • Nutzung einer Realtime-Clock für das Loggen der Uhrzeit
  • Die Möglichkeit, evtl. weitere Samples zu nehmen, insbesondere Nutzung der ADC-Eingänge des AVRs (Port A)

Aus den Designzielen habe ich abgeleitet:

  • Möglichst geringer Stromverbrauch des Datenloggers
  • Abspeicherung der Samples (Uhrzeit+Temperatur+Luftdruck+…) in einem EEPROM ausreichender Größe

Ein erster Grobentwurf des Dataloggers ist im Bild unten zu sehen. Ein AVR in einem möglichst stromsparenden Betrieb steuert Sensor, RTC (Real Time Clock) und EEPROM an.


Grobschaltbild des Datenloggers mit Sensor, Echtzeituhr und EEPROM (1. Enwurf, später durch ein Design mit 2 I2C-Bussen ersetzt. Das für die Realisierung gewählte EEPROM ist ein 24FC1025 und nicht wie hier im Bild noch beschrieben, ein 24LC1024).

Basierend auf den Designzielen wurde folgendes festgelegt:

  • Ablage der Daten in einem großen EEPROM. Das EEPROM ist ein 128KByte-Typ 24FC1025. Größere EEPROMs, die am I2C-Bus arbeiten, sind mir nicht bekannt.
  • Nutzung eines Realtime Chips (RTC). Die Wahl fiel auf den PCF8583. Vorab wurde bereits die Nutzung des PCF8583 und des EEPROMs am AVR ausprobiert.

Die Anzahl der pro Tag erzeugten Samples ist variabel.

Da ein „Environmental“ Datalogger entworfen wird, sind Temperatur und Luftdruck den natürlichen Gegebenheiten unterworfen. Ein Datalogger für einen Hochofen oder eine Druckkammer hätte mit anderen Wertebereichen zu arbeiten.

Datenplatzbedarf

Annahme: Der Datenlogger nimmt alle 30 Minuten ein Sample vom Sensor. D.h. es werden 48 Samples pro Tag erzeugt.

Abzubildender Temperaturbereich:

Die höchste jemals gemessene natürlich entstandene Temperatur ist +70,7 Grad Celsius (im Iran, 2007), der höchste europäische Wert ist höchstens +50,0 Grad (in Sevilla, Spanien, 1881).
Die niedrigste jemals gemessene natürlich entstandene Temperatur ist höchstens -91,5 Grad Celsius (Antaktis, Wostok-Station, 1997). in Europa höchstens -59,0 Grad Celsius (in Schweden unbestätigt gemessen).
Zu den erwähnten Extremtemperaturen siehe hier.
Mit einem Wertebereich -100…+100 Grad Celsius sind wir also auf der sicheren Seite.

Abzubildender Luftdruckbereich:

Der höchste jemals gemessene Luftdruck beträgt 1085,7hPa (Mongolei, 2001), der niedrigste jemals publizierte Wert beträgt 856hPa (Taifun bei Okinawa, Japan, 1958). Zu diesen Werten siehe hier und hier.
Mit einem Wertebereich 750..1250 käme man also ziemlich gut hin.

Pro Sample müssen folgende Informationen gespeichert werden:

  • Temperatur: Bereich -100 .. +100 Grad Celsius, zwei Nachkommastellen: Ganzzahlanteil 1 Byte, Nachkommaanteil 00..99: 1 Byte, also in Summe 2 Bytes.
  • Luftdruck: Bereich etwa 750..1250, zwei Nachkommastellen.
    Wenn man vom echten Luftdruckwert vor dem Speichern konstant 750 abzieht, kann man mit 9 Bit einen Ganzzahlanteil mit 512 Werten abbilden, also den Bereich 750 .. 1262. Für den Maximalwert 512 benötigt man 2 Bytes, eventuell kann man das 9.te Bit irgendwo anders unterbringen, dann nur 1 Byte. Nachkommaanteil 00..99: 1 Byte, also in Summe 3 Bytes. Evtl. oberstes Bit des 9-Bit Werts des Ganzzahlanteils in oberstem Bit des Nachkommateils mitcodieren, dann wären es in Summe nur 2 Bytes.
  • Zeitstempel: Hier wird z.B. alle 24 Stunden (immer um 0 Uhr) das Datum gespeichert: Jahr, Monat, Tag. Dann werden für die 47 weiteren Samples nur noch gespeichert: Samplenummer ab 1 gezählt.
    Für das Jahr braucht man (beim PCF8583)  2 Bit (0..3), Monat 4 Bit (1..12) und Tag 5 Bit (1..31). In Summe 11 Bit. Dies kann in 2 Bytes abgelegt werden. Für die Folgesamples wird jeweils 1 Byte benötigt, wenn man maximal 256 Samples pro Tag erlaubt oder halt 2 Bytes, dann kann man bis zu 65536 Samples / Tag abbilden.

Damit ergibt sich pro Tag folgender Bedarf (48 Samples / Tag):

1) Annahme: Luftdruck Wert braucht 2 Bytes: (2 Bytes Zeitstempel + 2 Bytes Temperatur + 2 Bytes Luftdruck) + 47 * (1 Byte Samplenummer + 2 Bytes Temperatur + 2 Bytes Luftdruck) = 6+47*5=241 Bytes

2) Annahme: Luftdruck Wert braucht 3 Bytes: (2 Bytes Zeitstempel + 2 Bytes Temperatur + 3 Bytes Luftdruck) + 47 * (1 Byte Samplenummer + 2 Bytes Temperatur + 3 Bytes Luftdruck) = 7+47*6=289 Bytes

Bei 128KByte EEPROM ergibt das in Tagen: 131.072 Bytes/241 = 543 Tage bzw. 453 Tage. Beide Werte sind mehr als ausreichend (Designziel waren 60 Tage).

Abzubildender Feuchte-Bereich

Dies ist mal einfach, es handelt sich um einen Prozentwert 0..100. Evtl. will man noch zwei Nachkommastellen haben, dann kommt ein weiterer Wert 00..99 hinzu. Also ein oder zwei Bytes Speicherbedarf.

Spannungsversorgung

Alle Bausteine hängen am I2C Bus.

Der Sensor wird mit 3,3V betrieben. Das EEPROM und die RTC kann ebenfalls mit 3,3V betrieben werden, ebenso der gewählte AVR ATMega644 (aber nur bis -offiziell- 10MHz Taktfrequenz). Somit wurde entschieden, alles mit 3,3V Versorgungsspannung aufzubauen.

Das Controllerboard ist das bewährte DD Megaboard mit einem 3,3V Spannungsregler LT1117 (statt dem „üblichen“ 7805; der LT1117 wurde gewählt, weil im Fundus vorhanden; der LT1117 ist jedoch eine schlechte Wahl, wenn es um geringen Stromverbrauch geht, siehe weiter unten). Die Schutzdiode vor dem Spannungsregler wurde diesmal durch eine Drahtbrücke ersetzt, um den Spannungsabfall an der Diode zu vermeiden.

Der MAX232CPE kann (inoffiziell) gerade so noch mit 3,3V betrieben werden, dies ist in diversen Foreneinträgen belegt.

Auch ISP funktioniert an 3,3V.

Die extern anliegende Versorgungspannung besteht im Zielbild aus 3-4 Batterien zu je 1,5V, also 4,5V -6,0V.

Stromverbrauch der gewählten Plattform

Nachmessen ergab, dass das DD Megaboard „ohne alles“ (also nur die Stromversorgung mit dem LT1117 3.3 alleine) schon 5,3mA braucht. Bei Betrieb mit Netzteil ist das lächerlich wenig, aber bei Batteriebetrieb schon zu viel.
Ohne das Sensorboard, ohne eingestecktes MAX232 und ohne eingesteckten RS232-Stecker und ohne eingestecktes ISP-Kabel werden 10,7mA verbraucht, d.h. der ATMega 644 verbraucht etwa 5mA bei 8Mhz.
Ein eingesteckter ISP-Stecker erhöht den Stromverbrauch um 0,4mA. Der MAX232CPE erhöht den Verbrauch um weitere satte 5,6mA. Alles zusammen verbraucht 16,7mA (ohne Sensorboard). Eine weitere Reduktion kann nur durch Programmierung des ATMega (Sleep-Modes, Aufwachen nur alle z.B. 10 Sekunden oder auch paar Minuten) erreicht werden.

Der Regler LT1117 3.3 ist nach Datenblatt für eine Anwendung bei minimalem Stromverbrauch definitiv nicht geeignet mit bis zu 5mA Eigenverbrauch. Laut Internet gibt es sparsamere Regler, z.B. den LP2950 in 3,3V Version, mit 75µA Eigenverbrauch, siehe hier: LINK. Ein LP2985 IM5 3,3 (SMD) ist ideal mit unglaublich niedrigen 1µA Ruhestrom.

Wenn der AVR mit set_sleep_mode(SLEEP_MODE_IDLE) und sleep_mode() schlafen geschickt wird, reduzieren sich die oben erwähnten 10,7mA auf 7,4mA. Mein Board braucht selbst wie erwähnt 5,3mA, so dass der AVR also in diesem Zustand nur 2,1mA bei 8Mhz braucht. Laut Quelle (http://www.mikrocontroller.net/articles/Sleep_Mode) soll der AVR bei nur 1Mhz sogar nur 0,3mA brauchen.

Mit einer optimierten Stromversorgung wie dem LP2950 denke ich, dass ohne Änderung der Hardware bei 8Mhz Gesamtverbrauchswerte um 3mA möglich sind. Bei einer Stromquelle, die nutzbare 1000mA liefert können so 333 Stunden überbrückt werden. Dies sind leider nur 333/24 ~ 13 Tage mit dem SLEEP_MODE_IDLE. Das langt aber nicht aus, um die Designziele zu erreichen (60 Tage Betrieb ohne Unterbrechung)

Momentan vorstellbarer Bestfall, wenn die Hardware verändert wird:

  • Die Stromversorgung benötigt 1µA (LP2985)
  • Statt des MAX232CP muß ein Typ verwendet werden, denn man in einen Sleep Zustand versetzten kann. Annahme: Auch dieser Chip verbraucht im Sleepmode nur 1µA
  • Der AVR ist während einer Stunde pro Minute nur 2 Sekunden aktiv, also nur 120 Sekunden in den 3600 Sekunden. Dabei verbraucht er die oben gemessenen 5mA. Pro Stunde sind dies 5000µA*120/3600=167µAh

Im Ergebnis sind dies 169µAh Gesamtverbrauch bei optimalen Annahmen.

Mit 2000mAh NiMh-Zellen, bei denen 1000mAh nutzbar sind (Annahme), kommt man so auf theoretisch 246 Tage (5917 Stunden). Bei solch großen Werten spielt schließlich die Selbstentladung der Akkus eine wesentliche Rolle. Die 60 Tage des Designziels sind aber unter diesen Annahmen sicher erreichbar.

Da mir momentan die entsprechenden Bauteile fehlen (kein passender Spannungsreger, kein abschaltbarer MAX232) mache ich erst mal mit dem weiter was ich habe. Ich kann den Datenlogger auch an eine vorhandene Solarzelle anschließen, die eine weit höhere Leistung liefert als der Datalogger braucht.

Interferenzen des Sensors HP03s mit anderen I2C Geräten

Ich habe ein EEPROM, eine RTC (Realtimeclock, PCF8583) sowie den genannten Sensor an einem I2C Bus betrieben. Dabei traten öfter Störungen auf. Das Auslesen der RTC war, wenn der Sensor gleichzeitig am Bus angeschlossen war, nicht zuverlässig. Variation der Bus-Pullup-Widerstände (an 3,3V Bus von 2K2 auf 1K gesenkt) brachte keine Verbesserung. Analysen mit dem Oszilloskop zeigen, dass das Acknowledge der RTC einen zu geringen Hi-Pegel hat, wenn der Sensor angeschlossen ist. Konkret waren es ohne Sensor ~2,4V, mit Sensor nur noch 1,78V. Dies langt zur Erkennung als HI nicht aus (Daumenregel: LO=weniger als 0,3*VCC, HI=mehr als 0,7*VCC). Herumsuchen in Foren brachte keine weiteren Erkenntnisse. Selbst wenn der Sensor softwaremäßig nicht angesprochen wird, funktioniert das Auslesen der RTC nicht immer (!). Nach drei Tagen Herumprobieren entschied ich mich dazu, das Design des Sensorboards zu ändern: Es gibt nun zwei getrennte I2C-Busse:

  • Einen für den/die Sensoren (Software Implementierung)
  • Einen für RTC und das EEPROM (Hardware-Implementierung)

Nach Änderung der Hardware können nun die drei Geräte (RTC, Sensor HP03S, EEPROM) sauber verwendet werden. Das Hardware-Design ist bereits vorbereitet, um den Luftfeuchtesensor HH10D aufzunehmen.


Schaltbild Sensorboard. Der Wannenstecker oben links dient der Verbindung mit dem AVR, die beiden Wannenstecker in der Mitte dem Anschluss der Sensoren HP03s und HH10D.

Verbindung AVR<->Sensorboard

AVR Pin AVR Pin Bedeutung Sensorboard Wannenstecker Pin Sensorboard Pin Bedeutung
PB3 OC0A PWM Generator Output 4 MCLK von HP03s
PC0 1 SCL (Hardware I2C)
PC1 2 SDA (Hardware I2C)
PC2 3 XCLR von HP03s
PC4 5 SCL2 (Software I2C)
PC5 6 SDA2 (Software I2C)
PC6 7 FOUT von HH10D
9 GND
10 VCC (3,3V)

 


Bild: DD Megaboard rechts, in der Mitte das Sensorboard und ganz links der Sensor HP03s.

 


Das Sensorboard aus der Nähe. Auf dem Sensorboard ist die RTC und das EEPROM sowie die Sicherungsbatterie zu sehen.

I2C Adressen

Die I2C Adressen der einzelnen Bausteine müssen eindeutig sein.

Baustein I2C Adresse Bus Kommentar
Hope HP03s 0xA0 SW Adresse nicht änderbar
Hope HH10 0xA2 SW Adresse nicht änderbar
EEPROM 24FC1025 0xAx11x HW Alternativen möglich (A0,A1,A2)
PCF8583 0xA2 HW Alternativen möglich (A0)

Hier kollidieren die Adressen von RTC und dem Luftdrucksensor. Da beide Bausteine an verschiedenen Bussen liegen, macht dies aber nichts. Über meist vorhandene Adressleitungen A0,A1,A2,… kann die Basisadresse eines I2C Bausteins variiert werden. Dies ist bei den beiden Sensoren nicht möglich, deren Adressen sind fix.

RTC PCF8583 geht viel zu schnell (läuft viel zu schnell)

Bei den ersten Tests zeigte es sich, dass die RTC PCF8583 viel zu schnell lief. Und zwar etwa eine Stunde in 4 Stunden, also satte ~20% zu schnell.

Nachforschen im Datenblatt und in Foren brachte die Erkenntnis, dass direkt an den Pins VCC und GND ein Kondensator zum Abblocken der hochfrequenten Störsignale aus der Versorgungsspannung benötigt wird. Ich hatte im Design einen 100n-Kondensator vorgesehen, diesen aber leider nicht direkt am PCF8583 platziert. Ich habe dann zur Nachbesserung einen 10uF-Kondenstator direkt an die Pins des Chips gelötet (Platinenunterseite). Danach war die Uhr sehr genau (in einem Tag ca. 12 Sekunden Abweichung). Ein weiteres Feintuning muss mit einem 20pF-Trimmer erfolgen (im Datenblatt beschrieben). Diesen Trimmer habe ich zur Zeit noch nicht an der Uhr. Die Datenlogger-Software erlaubt es aber, die Zeit direkt neu einzugeben, somit kann ich mit dem momentanen Zustand und einer leichten Gangabweichung nach einigen Wochen vorübergehend leben.

Weiter

– Einbau in Gehäuse

Betriebssoftware

Für den Datenlogger wurde eine kleine Software geschrieben. Diese ist mittels doxygen in den Sourcen dokumentiert. Die mit doxygen generierte Dokumentation ist unter folgendem Link als Kopie vorhanden:

Dokumentation, erzeugt mit doxygen (Englisch)

Format der Datenausgabe

Im folgenden ein Auszug eines Datendumps:

<dump> 
<header>
 Environmental Data Logger $Revision: 625 $
 number of samples per day: 144
 oldest sample with complete timestamp: 12.01. 16:10
 newest sample with complete timestamp: 11.02. 12:40
 samples in total: 4180
 eeprom start byte: 0x000006
 eeprom end byte: 0x00b3a1
 total bytes in eeprom: 45980
 <date>11.02.</date>
 <time>12:44:15</time>
</header> 
<logdata>
 <log type="long">12.1. 16:10 18.5 1006.40 56.0</log>
 <log type="long">12.1. 16:20 19.2 1006.37 56.9</log>
 <log type="long">12.1. 16:30 19.7 1006.40 56.3</log>
 <log type="long">12.1. 16:40 12.4 1006.9 59.1</log>
 <log type="long">12.1. 16:50 9.1 1005.62 63.6</log>
 <log type="long">12.1. 17:00 7.8 1005.56 65.5</log>
 <log type="long">12.1. 17:10 7.4 1005.56 65.8</log>
 <log type="long">12.1. 17:20 7.1 1005.43 65.7</log>
 <log type="long">12.1. 17:30 7.0 1005.46 65.5</log>
 <log type="long">12.1. 17:40 7.0 1005.43 65.2</log>
 ...
 <log type="long">10.2. 22:50 -9.5 1018.21 34.8</log>
 <log type="long">10.2. 23:00 -9.5 1018.18 34.7</log>
 <log type="long">11.2. 12:40 21.6 1018.9 48.8</log>
<statistics> 
 <temp-min>-14.0</temp-min>
 <temp-max>21.6</temp-max>
 <pressure-min>987.53</pressure-min>
 <pressure-max>1020.87</pressure-max>
 <moisture-min>19.4</moisture-min>
 <moisture-max>78.0</moisture-max>
</statistics>
</logdata>
</dump>

I2C Debugging

Da der I2C Bus nur aus zwei Leitungen besteht, kann man die Aktivitäten auf dem Bus noch gut mit einem Speicher-Oszilloskop mit zwei Eingängen ansehen.

Viele Oszilloskope haben einen externen Triggereingang, den man irgendwo in der Schaltung anklemmt, wo ein Signal zur Verfügung steht, dass als Start-Trigger geeignet ist. Die beiden Eingänge werden dann an SDL und SDA gelegt. Wenn das Oszilloskop eine große Speichertiefe hat, kann man nun das Oszilloskop auf „Single“ Trigger eingestellt und das Trigger-Event herbeigeführt. Danach steht die Geschichte um das Trigger-Event herum im Oszilloskop-Speicher. Man kann nun hineinzoomen, bis man die einzelnen Bits auf den beiden Leitungen sieht. Durch sorgfältiges Abzählen kommt man so auf die Bits und die Bytes.

Ein Datenbit wird in I2C immer bei einer steigenden SCL-Flanke übernommen.

ATmega Universal Board

Das ATmega Universal Board ist ein möglichst einfaches Board, um 40-polige AVR Controller in Applikationen verwenden zu können.
Designziele waren:

  • Einseitige Platine, maximal 80x100mm
  • Alle IO-Ports zugänglich und nicht durch board-eigene Funktionen zwangsbelegt
  • RS232, ISP und Spannungsregulierung on Board
  • Mindestens nutzbar für ATmega32 und ATmega64(4)

(dargestellt ist Board Revision 1.0)

Features

  • Alle 32 IO-Pins auf 4 Steckerleisten herausgeführt (Port A-D)
  • Verwendbar für ATmega 32, 64,  644, 644P, bzw. alle ATmegas mit 40-poligem Gehäuse, die zum ATmega 32 pinkompatibel sind.
  • Betrieb mit ca. 8..15V DC (bzw. der Bereich, in dem der 7805 betrieben werden darf zuzüglich 0,6V, die an der Eingangsdiode abfallen).
  • Regulierte Spannungsversorgung, Verpolungsschutz durch Eingangsdiode
  • Regulierte +5V über Jumper JP1 für eigene Applikationen herausgeführt
  • LED1 für Betriebsspannung (via Jumper abschaltbar ab Rev 1.2)
  • LED2 an PD6 für einfache Statusanzeigen etc. (via Jumper abschaltbar)
  • RESET Taster
  • ISP Anschluß 10-polig (bis Rev 1.3a) bzw. 6 polig (ab Rev 1.4)
  • RS 232 Anschluß
  • Trimmpoti für Kontrastreglung eines LCD-Displays (ab Rev 1.2)
  • 75x100mm Platinengröße (ab Rev 1.3; vorher 79x100mm)

Hardware

Die Hardware orientiert sich an zahllosen anderen Schaltungsvorschlägen aus dem Internet. Neben der Bereitstellung der 4×8 IO-Pins ist beim AVR nicht viel zu tun. An XTAL1/2 liegt ein Quarz an, die beiden Kondensatoren C3,C4 sind Standardbeschaltung. Der RESET-Pin geht über R1 an den RESET-Taster. Der ISP-Anschluß ist „standard“-beschaltet, ein handelsüblicher ISP-Programmer mit 10-poligem Ausgang sollte also direkt passen. Die RS232-Anbindung an Pin RxD,TxD mittels MAX232 ist ebenfalls absolute Standardbeschaltung.
Um einseitig routen zu können, wurden drei Drahtbrücken per Hand eingefügt.
Die Ports A..D stehen schließlich an den Buchsen SV_A..SC_D zur Verfügung. An Pin 1 der Buchse SV_X steht immer PortX0, an Pin 8 der Buchse PortX7 zur Verfügung, d.h. die Buchsen sind an allen Ports gleich beschaltet.

Die Steckerleisten etc. sind z.B. bei http://www.reichelt.de  erhältlich. Produktnummern besonderer Bauteile bei Reichelt:

Steckerleisten 10-polig WSL 10G
Pfostenbuchsen 10-polig (SV_x) PFL 10
RS232-Buchse (X2) D-SUB BU 09EU
Anschlußklemme 2-polig (X1) AKL 101-02
Reset-Taster TASTER 3301B


Es empfiehlt sich, für den ATmega einen Sockel einzubauen. Sinnvoll ist auch die Nutzung eines Sockels für den Quarz. So kann man zwischen Prozessoren und zwischen CPU-Frequenzen einfach wechseln.

Statt des MAX232 kann auch ein MAX202CPE verwendet werden. (Dann langt es aus, statt der 1µF-Kondensatoren 0,1µF-Kondensatoren zu nehmen, man kann es aber auch bei den 1µF-Typen belassen).

Hinweis: Alle im folgenden gezeigten Bilder können durch Anklicken vergrößert werden.

Schaltplan


Der Schaltplan für das Board (dargestellt ist Revision 1.4).

 

Belegung der Steckerleisten und Jumper

X1 – Power Supply Input

Pin Funktion
1 +8..15V DC
2 GND

JP1 – VCC out

VCC regulated.
Can be used for external hardware. If used, honor 7805 maximum ratings regarding output current and thermal characteristics.

Pin Funktion
1 +5V regulated
2 GND

 

JP2 – LED2 Connector

Connection Jumper, connects PD6 to LED2 (via R3).
Can be used by application to give general purpose visual feedback. Disconnect LED if PD6 is used by the application for other purposes.

Pin Funktion
1 to PD6
2 to R3 + LED2

 

JP3 – LCD contrast voltage

Variable voltage 0..VCC.
Can be used for control contrast of an external LCD display.

Pin Funktion
1 0..VCC (controlled via R5)

 

JP4 – Power indicator LED

Connection jumper, connects VCC to LED1.
Can be used to disconnect Power LED for applications with low power requirements.

Pin Funktion
1 VCC
2 to R2 LED1

 

SV_x – Port Connectors

ATmegas Port A..D.

Pin SV_A Funktion SV_B Funktion SV_C Funktion SV_D Funktion
1 PA0 PB0 PC0 PD0
2 PA1 PB1 PC1 PD1
3 PA2 PB2 PC2 PD2
4 PA3 PB3 PC3 PD3
5 PA4 PB4 PC4 PD4
6 PA5 PB5 PC5 PD5
7 PA6 PB6 PC6 PD6
8 PA7 PB7 PC7 PD7
9 GND (*) GND (*)
10 +5V regulated (*)

*: since Rev 1.1 only / erst ab Rev 1.1

SV1 – ISP Connector (6 pin)

Pin Funktion
1 MISO
2 VCC
3 SCK
4 MOSI
5 RESET
6 GND

 

SV1 – ISP Connector (10 pin)

Pin Funktion
1 MOSI
2 VCC
3 N.C.
4 N.C.
5 RESET
6 GND
7 SCK
8 GND
9 MISO
10 GND

X2 – RS232 Connector

Pin Funktion
1 N.C.
2 TxD of AVR
3 RxD of AVR
4 =6
5 GND
6 =4
7 =8
8 =7
9 N.C.

 

Board Layout / Bohrungen

Alle Bohrungen 0.8mm außer den folgenden:

  • Stecker X1: Bohrungen mit 1.0 oder 1.2mm.
  • Befestigungslöcher RS232 Buchse: 2.8mm.
  • Drahtbrücken J1-Jn (je nach Revision) nicht vergessen!

Bestückungsplan


Der Bestückungsplan des Boards (dargestellt ist Board Revision 1.4).

Ein Aufsichtsfoto nach erfolgter Bestückung


Komplett bestücktes Board (dargestellt ist Board Revision 1.0).

Revisionshistorie und Dateien zum Download

Revision 1.4

Erweiterungen/Veränderungen gegenüber Revision 1.3a:

  • 6-polige Standard ISP Buchse (statt bisher Standard 10-polig)
  • Optimierung des Board-Layouts (16mil Bahnen wo immer möglich statt bisher 10mil Bahnen)
  • Boardmaße weiter reduziert auf 100x72mm

Eagle-Dateien (Schaltplan, Board): ZIP-File

Revision 1.3a

Erweiterungen/Veränderungen gegenüber Revision 1.2:

  • Boardmaße reduziert auf 100x75mm, so dass man aus einer Europlatine zwei Boards herstellen kann

Eagle-Dateien (Schaltplan, Board): ZIP-File

Revision 1.2

Erweiterungen gegenüber Revision 1.1:

  • Optionaler Trimmwiderstand R5 eingefügt. Dieser kann auf eine Spannung zwischen 0..VCC eingestellt werden und dient der Erzeugung der Kontraststeuerspannung eines LCD-Displays. Steuerspannung abgreifbar an neuem Jumper JP3

Revision 1.1

Erweiterungen gegenüber Revision 1.0:

  • VCC/GND an SV_A verfügbar (Pin 10 und Pin 9)
  • GND an SV_D verfügbar (Pin 9)
  • Bauelemente und Leiterbahnführung wurden optimiert

Eigentlich sollte an jedem Port VCC/GND zur Verfügung stehen. Dies hätte aber zahlreiche Brücke zur Folge. Für Selbstbauprojekte ist es ist oft ausreichend, dass an mindestens einem Port VCC/GND verfügbar ist.

Eagle-Dateien (Schaltplan, Board): ZIP-File

Revision 1.0

In dieser Version waren jeweils nur Pin 1..8 der 10-poligen Wannenstecker belegt. Die Versorgungsspannung für eigene Applikationen mussten am dafür vorgesehenen Jumper JP1 abgenommen werden.

Breakout Board für das ATmega Universal Board

Da die 10-poligen Wannenstecker fürs Experimentieren doch etwas fuzzlig sind, habe ich ein passendes Breakout Board entworfen, dass alle Pins auf Lötstifte führt.

Das Breakout Board. Port A-D sind auf Lötstifte geführt.

Breakout Board Dateien zum Download

Breakout Board, Eagle-Dateien (Schaltplan und Board-Datei):

Weiterführende Links