Go Down

Topic: Probleme mit LCD-Initialisierung (I2C-LCD) (Read 968 times) previous topic - next topic

vieledinge

Hallo zusammen,

ich habe eine 16x2-LCD (HD44780), welches ich via I2C-LCD-Adapter (der übliche PCFxxxx-Decoder) an einem Arduino Leonardo betreibe. Montiert ist das LCD samt Adapter auf nen Protoshield, also kurze Kabelwege (2-3cm).

Im Wesentlichen funktioniert das Ganze auch zufriedenstellend, wenn denn der Anlauf geklappt hat. Ich habe oftmals nach Anlegen der Versorgungsspannung das Problem, das wirre Zeichen auf dem LCD stehen und auch bei Zuweisung anderer Anzeigewerte nur andere wirre Zeichen dargestellt werden. Ein Resetten des Arduino bringt meistens Abhilfe, manchmal aber auch erst der 2. oder 3. Reset. Danach läuft alles ohne weitere Macken.

Mir fehlt grad der Ansatz, wie ich das in den Griff bekommen könnte.


marau

Hallo,

nach welcher Schaltung hast Du das aufgebaut?

Denke daran, dass der PCF8574 'Open Collector'-Ausgänge hat, d.h. es müssen alle Ausgänge auf logisch '1' gesetzt werden, damit sie auf GND gezogen werden.
Evtl. werden hier auch noch Pull-Up-Widerstände (z.B. 10 K-Ohm) benötigt.

Pull-Up-Widerstände für SDA und SCL vorhanden?


Gruß

Martin

nix_mehr_frei

Die China I2C Adapter haben auch keinerlei Pufferkondensator. Parallel zwischen 5V und Masse auf der Adapterplatine gehört noch ein 100nF Keramik-C und ein 47µF Elko. Kostet fast nix und erspart einem u.U. eine umständliche Fehlersuche.
Auf den Chinaplatinen ist nicht mehr, als zur unbedingten Funktion notwendig ist - also nicht zur sicheren Funktion  :)

Gruß Gerald
rot ist blau und Plus ist Minus

sschultewolter

Mit welchem Sketch bekommst du die Probleme? Was hast du noch am I2C angeschlossen? Mein Panel läuft ohne 100nF sehr gut und fehlerfrei, selbst mit 4 Einzeladern ohne Schirm bei 50cm Länge
Keinen technischen Support über PN!

jurs


Ein Resetten des Arduino bringt meistens Abhilfe, manchmal aber auch erst der 2. oder 3. Reset. Danach läuft alles ohne weitere Macken.

Mir fehlt grad der Ansatz, wie ich das in den Griff bekommen könnte.


Es gibt ja mittlerweile so ungefähr eine handvoll verschiedener I2C-Libraries zur Ansteuerung von LCDs über I2C. Mit Standard-Pinbelegung, für abweichende Pins an den Adaptern, Libraries mit erweiterten Funktionen, Libraries die besonders schnell sein sollen, Libraries die außer Arduino noch andere Mikrocontroller unterstützen, ich weiß gar nicht was alles.

Hast Du alle diese verschiedenen Liquidcrystal-I2C-Libraries ausprobiert und alle Libraries zeigen dieselben Fehler mit Deinem LCD?

Ich selbst verwende diese Library, die einfach nur die Standard-Liquidcrystal-Library von 2009 ist, umgeschrieben auf I2C:
http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/LiquidCrystal_I2C.zip
Bei mir funktioniert diese Library mit zwei verschiedenen Adaptern und verschiedenen billigen China-Modulen mit schwarz-grün und weiß-blau Darstellung völlig einwandfrei.

vieledinge


Ich selbst verwende diese Library, die einfach nur die Standard-Liquidcrystal-Library von 2009 ist, umgeschrieben auf I2C:
http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/LiquidCrystal_I2C.zip
Bei mir funktioniert diese Library mit zwei verschiedenen Adaptern und verschiedenen billigen China-Modulen mit schwarz-grün und weiß-blau Darstellung völlig einwandfrei.


SainSmart liefert genau diese Lib mit aus, nur ein paar Konstanten in der Header-File sind anders deklariert.

Ich werde erst mal die Puffer-Cs ergänzen, dann sehen wir weiter.

Schachmann

#6
Aug 28, 2013, 10:23 pm Last Edit: Aug 28, 2013, 10:26 pm by Schachmann Reason: 1

Denke daran, dass der PCF8574 'Open Collector'-Ausgänge hat, d.h. es müssen alle Ausgänge auf logisch '1' gesetzt werden, damit sie auf GND gezogen werden.


Hallo,

ich habe gerade mal im Datenblatt geschnüffelt, hab' aber keine Erwähnung von Open-Collector-Ausgängen gesehen. Lediglich der Reset-Pin hat einen Open-Drain-Ausgang. Habe ich da was übersehen? Auf dem Breadboard schaltet der Chip einen Pin auf 5V, wenn ich ein HIGH sende (also das entsprechende Bit auf 1), und auf GND, wenn ich ein LOW (das entsprechende Bit auf 0) sende. Lediglich, wenn ein Pin als Eingang verwendet wird, benötigt er einen Pull-Up-Widerstand. Benutzt habe ich folgendes Datenblatt: http://www.ti.com/lit/ds/symlink/pcf8574.pdf

Gruß,
Ralf

PS. Habe ich gerade vergessen - Ich habe auch ein I²C-Display in Benutzung. Bei mir funktioniert folgende Lib: https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads. Vielleicht hilft die ja auch dem TO weiter.
Es gibt 10 Arten von Menschen, die einen verstehen Binär, die anderen nicht...

Serenifly

Die I/Os sind bi-direktional. Können daher gar nicht OC sein. Auf Seite 3 ist ein Port skizziert. Ganz normale CMOS Technik mit zwei komplementären FETs.

Und es ist der Interrupt-Ausgang der Open Drain ist.

Schachmann

Ja klar, sorry, hab' mich ver"sprochen", natürlich ist es der Interrupt-Pin.

Gruß,
Ralf
Es gibt 10 Arten von Menschen, die einen verstehen Binär, die anderen nicht...

Go Up