LCD auf Steckbrett, Störungen

OP #5322919
Lesenswert?

Hallo,

Ich habe dieses LCD 
(https://www.buydisplay.com/default/character-arduino-40x4-lcd-display-datasheet-ks0066-white-on-blue) 
bereits auf einer geätzten Platine in Betrieb, und das fehlerfrei. Nun 
habe ich ein neues Projekt und möchte dieses LCD wiederverwenden, die 
voll funktionstüchtige Software habe ich dabei nicht verändert und auch 
am PIC18F26K22 an den gleichen Pins angeschlossen. Allerdings habe ich 
derzeit nur einen Versuchsaufbau auf einem Steckbrett. Hier kommt es zu 
kuriosen Störungen wie auf einem Bild ersichtlich. Wenn ich allerdings 
den gelöteten Anschluss für den ICSP fest drücke und ins PicKit 
einstecke kommt es zu keinem Fehler wie auf dem ersten Bild ersichtlich. 
Die Verkabelung des LCD habe ich bereits 4 Mal neu aufgebaut, der Fehler 
ist jedes Mal der gleiche.
Den Schaltplan habe ich noch zusätzlich angehängt, hat aber, wie gesagt, 
so schon gut funktioniert.
Ich hoffe ihr habt gute Lösungsvorschläge und oder Angaben zum 
Problemauslöser für mich :)

LG und einen schönen Dienstag noch,
Markus

Edit: Das PCB Layout ist mir mitreingerutscht^^
Angehängte Dateien:
OP #5323040
Lesenswert?

Hallo,

Sorry, dachte es wäre klar. Bild 1 mit den 4 Zeilen ist wie es sein soll 
(wenn ich den ICSP header fest drücke kommt das eben auch raus) und Bild 
2 ist fehlerhaft. Das Pi von Bild 2 sollte da auf keinem Fall stehen, 
und die untern beiden Zeilen fehlen. Manchmal sind auch nur Zeile 3 & 4 
zu sehen und oben dafür nichts. Oder ganz was spezielles, ein "D" in 
Dauerschleife welches die oberen 2 Zeilen überschreibt. Es muss 
irgendwie mit den Enable-Leitungen zusammenhängen denke ich (E1 für 
Zeile 1 & 2, E2 für Zeile 3 & 4), nur habe ich die Leitungen alle 
durchprobiert und keine fehlerhafte Leitung finden können.
#5323052
Lesenswert?

Markus B. schrieb:
> Den Schaltplan habe ich noch zusätzlich angehängt, hat aber, wie gesagt,
> so schon gut funktioniert.

Hmm, wie kommt man drauf, D0...D3 an Masse kurzzuschliessen und RW von 
Controller z.B. auf READ schalten zu lassen ?

Wieso glaubt man, taugt ein IRF540 für schwache 5V Ansteuerspannung ?

Und dann soll der wohl erhebliche von ihm geschaltete Strom doch bitte 
nicht aus den 5V des Steckbretts kommen, oder doch ?

Über die Lage des Abblockkondenstaors beim Steckbrett ist ja nichts 
bekannt, über mangelnde Sternpunktführung von Masse auf der Platine aber 
schon.
OP #5323077
Lesenswert?

Michael B. schrieb:
> Hmm, wie kommt man drauf, D0...D3 an Masse kurzzuschliessen und RW von
> Controller z.B. auf READ schalten zu lassen ?

LCD läuft im 4 Bit modus, möchte mit einem Port auskommen, nur so geht 
das.
RW auf READ fürs Busyflag

Michael B. schrieb:
> Wieso glaubt man, taugt ein IRF540 für schwache 5V Ansteuerspannung ?

Das tut in meiner Fragestellung erstmal nichts zur Sache, aber ja, ein 
FET mit 4V Vgs(th) ist denkbar ungeeignet. Selbstverständlich kommt hier 
ein LL-FET zum Einsatz. Am Steckbrett habe ich gerade einen LU024N.
Mehr als 1,5A/7,5W werden damit nie geschalten. Allerdings auch erst mit 
der fertigen Platine. Am Steckbrett ist eine 20mA LED als ersatz für 
diesen Ausgang.

Michael B. schrieb:
> Über die Lage des Abblockkondenstaors beim Steckbrett ist ja nichts
> bekannt, über mangelnde Sternpunktführung von Masse auf der Platine aber
> schon.

Der Kondensator ist direkt am Steckbrett neben Pin 19&20 gesteckt. 
Selbstverständlich mit so kurzen Leitungen wie möglich.
Das Platinenlayout ist noch lange nicht fertig, daher der Testaufbau, 
dennoch lasse ich mich gerne über die "Sternpunktführung" belehren. 
(Kein Treffer zu Sternpunktführung durch Google :/)
Gast #5323112
Lesenswert?

Hi

>LCD läuft im 4 Bit modus, möchte mit einem Port auskommen, nur so geht
>das.
>RW auf READ fürs Busyflag

Die Datenleitungen der Displaycontroller besitzen interne 
PullUp-Widerstände.  Da ist das auf Masse legen eher contraproduktiv. Im 
Normalfall lässt man die Datenleitungen einfach offen.

MfG Spess
OP #5323116
Lesenswert?

spess53 schrieb:
> Hi
>
>>LCD läuft im 4 Bit modus, möchte mit einem Port auskommen, nur so geht
>>das.
>>RW auf READ fürs Busyflag
>
> Die Datenleitungen der Displaycontroller besitzen interne
> PullUp-Widerstände.  Da ist das auf Masse legen eher contraproduktiv. Im
> Normalfall lässt man die Datenleitungen einfach offen.
>
> MfG Spess

Können da nicht Störungen bei der Initialisierung Probleme machen? so 
habe ich immer definierte 0 Pegel.
#5323123
Lesenswert?

Nop schrieb:
> Dann könnte die SW von den Timings her auch bisher schon an der Kante
> gewesen sein, und mit dem fliegenden Aufbau geht's nicht mehr gut.

Solche Phänomene wegen kritischen Timings hatte ich auch schon mal. 
Allerdings war bei mir das kritische Timing eher bei der Initialisierung 
des Displays. D.h. es zeigte sporadisch nach Initialisierung gar nichts 
an oder vertauschte High- und Lownibble oder funktionierte einwandfrei. 
Dass nach erfolgreicher Initialisierung die Datenübertragung gestört war 
hatte ich da jedoch nicht.
Aber unterschhiedliche Displays auf brauchten da tatsächlich auch 
unterschiedliche Timings.
#5323125
Lesenswert?

> Die Datenleitungen der Displaycontroller besitzen interne
> PullUp-Widerstände.  Da ist das auf Masse legen eher contraproduktiv. Im
> Normalfall lässt man die Datenleitungen einfach offen.


Ich hatte hier schon Displays mit HD44780-Controller, die erst gingen, 
als ich die ungenutzen eingänge auf GND gelegt hatte.
Generell lege ich freie Eingänge lieber auf ein definiertes Potential.
#5323127
Lesenswert?

Karl K. schrieb:
> nimm sowas:
>
> 
https://www.ebay.de/itm/2004-20X4-Character-LCD-Display-0x27-0x3F-5V-IIC-I2C-TWI-SP-I-Interface/172403282443?hash=item282409520b:g:54EAAOSwcUBYItkY
>
> problemfrei mit nur 4 Leitungen

Eine tolle Lösung für ein anderes Problem: wenn IO Mangel herrscht. Ist 
hier aber nicht das Problem. Warum also einen Stromfresser und eine 
potentielle zusätzliche Fehlerquelle einbauen?
Moderator Persönliche Seite #5323190
Lesenswert?

Markus B. schrieb:
> Hab mich vertan

Ja, hast Du. Es wäre ein klassischer Knieschuss, wenn man den 
4-Bit-Modus deshalb nicht erreichen könnte, weil ein oder mehrere Bits 
gesetzt sind, die gar nicht zu den verwendeten 4 Bits gehören.

Der allgemeine Tenor zu HD44780-Displays ist: Man lässt die ungenutzten 
Pins offen, Ausnahmen bestätigen aber die Regel. In diesem Forum gibt 
es dutzende von Threads zu genau diesem Thema, siehe auch HD44780.

Zum Thema:

Der TO soll ein anderes Steckbrett verwenden oder das Zeug auf einer 
Platine festlöten. Diese Steckbretter können immer Wackelkontakte haben. 
Und genau danach sieht es aus, wenn man dem Wortlaut des 
Eröffnungsbeitrags folgt.
#5323201
Lesenswert?

Direkt am Display zwischen Vcc und Vss ist es ein feiner Zug, auch noch 
einen 100n Kerko zu platzieren. Mit Masse und +5V magst du alle 
Komponenten erreicht haben, aber nach dem Prinzip "Lichterkette" alles 
hinternander weg und schön schmal, damit die Leiterbahn auch ja noch 
zwischen 2 DIL Pins durchpasst, Abblockkondensatoren irgendwo, wo gerade 
Platz war, platziert. Masse und +5V sollen im Idealfall sternförmig 
verlegt werden und der Sternpunkt sind die Lötaugen des Elkos nach dem 
Spannungsregler - auch kein T, wo der Elko über einen langen dünnen 
Stich angebunden ist. Und breitere Leiterbahnen, wenn du schon keine 
Masseflächen machen willst. 1mm oder besser noch darüber.
Wenn bei dir ganz hinten in der Kette der FET die Hintergrundbeleuchtung 
einschaltet - bei 47 Ohm fließen rund 100 mA, womöglich noch PWM 
gedimmt, dann "wackelt" Masse und 5V am Display und am Controller lustig 
mit. Und es ist kein Abblock C vor Ort, der das ansatzweise abfangen 
könnte. Probiere das Ganze erst mal ohne Hintergrundbeleuchtung, die 
"säuft" vermutlich am Meisten ;-)
#5323456
Lesenswert?

Chris L. schrieb:
> Ich hatte hier schon Displays mit HD44780-Controller, die erst gingen,
> als ich die ungenutzen eingänge auf GND gelegt hatte.
> Generell lege ich freie Eingänge lieber auf ein definiertes Potential.

Hi,
die Diskussion hatten wir ja schon einmal.
Als Kompromiss nehme ich 4,7 kOhm Widerstände von D0 bis D3 auf GND.
Das ist zwar nicht richtig aber auch nicht ganz falsch.
Meine Überlegung war:
Beim Experimentieren  - gerade mit der Busy-Flag-Abfrage - schalte ich 
zeitweise die Eingänge zu Ausgängen um. Und jetzt habe ich die direkt 
auf GND gelegt. Was passiert da wohl? -> Kurzschluss. Wenn ein R noch 
drin ist, wird zumindest der Strom noch begrenzt.
Ist die SW ok, kann eigentlich nichts passieren. Aber das weiß man ja 
vorher nicht. Die Datenblätter empfehlen da wohl das Richtige.
Die EA DOGM 162 sagen, dass D0-D3-Anschlüsse auf + Vcc gelegt werden 
sollen.
https://www.lcd-module.de/deu/pdf/doma/dog-m.pdf
Seite 4 Mitte rechts


Frank M. schrieb:
> Der allgemeine Tenor zu HD44780-Displays ist: Man lässt die ungenutzten
> Pins offen, Ausnahmen bestätigen aber die Regel.


ciao
gustav
#5337664
Lesenswert?

Markus B. schrieb:
> Damit kommt man nicht mehr in den 4-Bit modus, aber ja, der Ansatz ist
> natürlich gerechtfertigt.

Hi,
habe einmal die Routine umgeschrieben, so dass statt der 30 bzw. 03  3F 
bzw. F3 auf den Port gegeben wird, was ja einem +Vcc (high) auf den 
"unbenutzen" Pins entspricht.
Tatsächlich scheint der der Wechsel zum Vierbit-Modus zu funktionieren.
Aber nach internem CPU-Reset (z. B. Watchdog) zeigt das Display im 
Hintergrund schwach Balken.
Erst bei Power off und wieder on, wird wieder richtig initialisiert.

Also ist die Überlegung, auf keinen Fall die unbenutzten Pins nach 
"high" zu setzen, von der Logik her nicht ganz falsch.
Es geht ja nur um die erste Sequenz nach dem vom Display selbst 
ausgeführten POSR. Der POSR endet im Achtbitmodus. Schaltet das Display 
aus.
Die für den Vierbitmodus vom Display ignorierten unteren vier Bit werden 
im Achtbitmodus eben noch nicht ignoriert.
Wenn jetzt schon die Verdrahtung für den Vierbitmodus fertiggestellt 
ist,
dann läßt man die unteren Datenbits - wie oben schon gesagt - offen.
Also Tristate sind sie nicht. Erst nach dem Durchlaufen der  30-er 
Sequenz
und dem Einrichten des Vierbitmodus.
Um jetzt diese Eingänge irgendwie zu schützen, hätte ich den Vorschlag,
zwei Klemmdioden mit Schutzwiderstand vor jedes Portbit zu schalten.
Mit den Schutzdioden könnte die Spannung am Eingang nie größer +Vcc und 
nie kleiner als GND (0V) werden, und durch einen geeigneten Widerstand 
würde ein Strom begrenzt. (Stichwort Backpowering)
https://www.mikrocontroller.net/articles/Pegelwandler#Schutzdioden

ciao
gustav
Angehängte Dateien:
#5337698
Lesenswert?

Las die scheiß unbenutzten offen! ALLE Init Befehle nutzen nur die 
oberen 4bit, der Rest wird IGNORIERT, nix mit 8Bit Modus.
Der Fehler deute darauf hin das deine Init (o. die komische 
Schutzbeschaltung) fehlerhaft ist (einzeilig) und ohne den Automatischen 
Reset nicht funktioniert.
#5337711
Lesenswert?

Teo D. schrieb:
> unbenutzten offen!

Ja,
keine Angst, bleibt alles beim alten. Aber oben stand ja auf "...+Vcc 
legen..." . Freut mich, dass ich nicht alleine dastehe mit meiner 
Meinung, dass das in der Mehrzahl der Fälle garnicht geht. (Was der 
Versuch ja auch eindeutig zeigt.) (Ausnahmen bestätigen die Regel.)

ciao
gustav

P.S.:
"Meine" Widerstände nach GND bleiben drin. Das geht.
Wert auf 47 k erhöht.
#5337731
Lesenswert?

Teo D. schrieb:
> Karl B. schrieb:
>> keine Angst, bleibt alles beim alten.
>
> OK..... und Sorry für die Freundlichkeit (warst leider schneller), hab
> ech'n miesen Tag.
>
> Sorry noch mal, so bin ich normal nich.

Hi,
bei uns ist alles eingefroren...da kommt so etwas schon mal vor.

OK.
Als Dankeschön für die Bestätigung noch einmal ein Update, das auch die 
Portbeschränkung beim ATtiny2313/4313 bei Port D berücksichtigt. PortB 
brauche ich ja für den AC.

Bis bald.

ciao
gustav
Angehängte Dateien:
#5338163
Lesenswert?

Teo D. schrieb:
> Was wird den eigentlich befürchtet, wenn die Kontakte offen bleiben.
> Statische Aufladung, Floating,...?

Hi,
habe die Spannung an den vier unteren Ports mit 2,7 Kiloohm-Widerständen 
gegen GND (0V) angeschlossenen mit 0,22V (bei 4,92 V +Vcc) gemessen. Die 
Gesamt-Stromerhöhung beträgt also ca. 400 Mikroampere gegenüber 
unbeschalteten Kontakten. Bei Batteriebetrieb könnte ich mir denken, 
wäre das ein Argument, auf die unnötige Stromverschwendung zu 
verzichten, indem man die vier Widerstände wegläßt.
Warum beharre ich nun meinerseits hartnäckig auf der Montage dieser vier 
Widerstände?:
OK. Habe festgestellt, dass es sogar unter Umständen parasitäre 
Schwingungen bis in den UKW/FM-Bereich geben kann, die eindeutig vom 
Display ausgehen, wenn man beim Basteln einzelne Kontakte sehr 
schluderig verdrahtet oder bei Berühren mit dem Finger die Netzfrequenz 
einkoppelt. Gerade der Enable-Eingang ist da sehr empfindlich. Wenn Ihr 
wollt, kann ich das per Bild und Ton demonstrieren hier. Deswegen habe 
ich mir es zum Grundsatz gemacht, wenn schon basteln, dann zumindest 
rudimentär einigermaßen die Antistatikbedingungen einzuhalten.
Das heißt für mich: Vor Anlegen der Betriebsspannung alle Ein- und 
Ausgänge auf definiertes Potenzial. Und wenn es Bedenken gegenüber 
Kurzschluss gibt, eben geeignete Widerstände einsetzen.
Diese ominösen Widerstände sind also eher als Vorsichtsmaßnahme beim 
Basteln gedacht. Wie es die eigene Erfahrung zeigt, haben sie da 
durchaus ihre Berechtigung, denn ich habe drei Displays geschrottet und 
kann es mir eigentlich nicht anders erklären, dass es eben die 
beschriebene Sorglosigkeit im Umgang mit empfindlichen Dingen gewesen 
ist. Wenn es hinterher funktioniert, das Gerät "in Serie gehen soll", 
kann man auf so manchen unnötigen Aufwand gerne verzichten.

Manfred schrieb:
> An meinem Übungsaufbau, Arduino Uno mit LCD, sind die vier Leitungen
> offen, da gab es zu keiner Zeit ein Problem mit. Das ist aber kein
> Wackel-Kasper-Steckbrett-Gespiele, sondern auf Lochrasterplatte sauber
> gelötet.

Genau.

Und im Bild ist's gezeigt, wie ich meine Displays geschrottet hatte.
Man kann es kaum erwarten, und dann kommt man in der Hektik auf die 
verrücktesten Ideen. Also bitte - so nicht.

ciao
gustav
Angehängte Dateien:
#5338249
Lesenswert?

OK, verstehe.
Beim Basteln könnten die ~100k(max.) wirklich wenig sein, aber warum 
gegen die internen PullUps arbeiten?


PS: Könnte durchaus auch eine Erklärung sein, wie sich ein kleines 2x16 
für 1,30€ aus China, zerschossen hat.
Allerdings geh ich immer noch davon aus, das es an der schlechten 
Lagerung lag. lose in der Ramschkiste. :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren