Hallo, ich versuche zurzeit ein 16x2 LCD Display mit HD44780 Treiber an meinem Arduino zu betreiben. Verkabelung habe ich entsprechend dem Datenblatt des LCD Displays vorgenommen. Leider ergibt sich bei der Einstellung des Kontrastes über ein 10kΩ Potentiometer folgendes Problem: Die übereinander und nebeneinander liegenden Pixel beeinflussen sich gegenseitig. Dies geht sogar über beide Zeilen. Zur besseren Erläuterung, noch einmal zwei Bilder, welche verschiedene Kontrasteinstellungen anzeigen. Nun meine Frage: Ist dies ein Fehler des Displays und muss ich mir ein neues bestellen, oder kann es auch andere Ursachen für dieses Verhalten geben? Ich kann mir nicht vorstellen, dass dies das gewünschte Verhalten oder normal ist, da es die Funktion doch erheblich einschränkt. Vielen Dank schon einmal im Voraus
Diese Darstellungsfehler haben ziemlich sicher nichts mit der Kontrasteinstellung zu tun. Daten-Pins vertauscht oder /R/W und/oder /Enable auf dem richtigen Pegel? Gruß
Betriebsspannung der LCD und der Kontrastreglung gut abgeblockt? Old-Papa
Datenpins und R/S sowie Enable sind richtig eingesteckt. Im Prinzip zeigt das Display ja auch genau was ich haben möchte (habe mehrere Texte und Zeichen ausprobiert), nur leider ist es nicht möglich, alle Zeichen gleichzeitig lesbar darzustellen, da entweder andere Pixel ebenfalls zu leuchten beginnen, oder eben nicht alle Pixel beleuchtet werden.
Fabian T. schrieb: > Ist dies ein Fehler des Displays und muss ich mir ein > neues bestellen, Dieses Verhalten kenne ich von einem Display an das ich aus Versehen 10V statt 5V an Pin2 angelegt habe. Damit war es dann kaputt und zeigt nur noch solchen Unsinn an.
Bussard schrieb: > Daten-Pins vertauscht oder /R/W und/oder /Enable auf dem richtigen > Pegel? Das vermute ich eher nicht, es werden ja scheinbar korrekte Zeichen angezeigt. ##### Leider ist es hier wieder so das man fast nichts sieht, keinen Schaltplan, keine aussagekräftigen Fotos vom Aufbau. Also kann nur spekuliert werden.
:
Bearbeitet durch User
Schaltplan habe ich gemäß dem beiliegenden Datenblatt gewählt, lediglich für die Ansteuerung der Hintergrundbeleuchtung habe ich sicherheitshalber noch eienn 220Ω Vorwiederstand eingefügt. Die Verkabelung kann man im beiliegenden Bild sehen. Da ich lediglich den Arduino zur Spannungsversorgung habe, würde ich eine Überspannung eigentlich ausschließen, könnte es vielleicht einfach ein "Montagsexemplar" sein?
Fabian T. schrieb: > würde ich eine Überspannung eigentlich ausschließen Könnte es eine "Unterspannung" sein? Hast du das mal gemessen? BTW: die Blockkondensatoren sollten schon irgendwie mit ran. Ich würde einen von Vcc nach GND und einen von Vo nach GND machen. > 220Ω Vorwiederstand Widerstand
:
Bearbeitet durch Moderator
Fabian T. schrieb: > könnte es vielleicht einfach ein "Montagsexemplar" sein? Nein. Aber die üblichen Abblock-Kondensatoren fehlen. Versuch: Setze direkt am LCD einen Elko 10uF und einen keramischen Kondensator 100nF. Setze deine Vcc- und GND-Verbindungen direkt an das LCD, nicht über diese lange Steckbrett-Schiene.
Ok, habe jetzt den Elko parallel zur verkürzten Spannungsversorgung, den keramischen Kondensator parallel zu Abgriff Poti/ GND. Ich hoffe das war so richtig? Es scheint leicht besser geworden zu sein, zumindest soweit, dass das Display einigermaßen lesbar ist. Das Problem bleibt zwar in Grundzügen bestehen, aber ich kann es einigermaßen verwenden und hab wieder was gelernt, was eigentlich noch viel wichtiger ist, als das Display.
Fabian T. schrieb: > Leider ergibt sich bei der Einstellung des > Kontrastes über ein 10kΩ Potentiometer folgendes Problem Die lange Leitung vom Poti zum Kontrast-Pin des LCDs fängt leicht Störungen auf da sie relativ hochohmig ist und die Steuerleitungen / Steuerpins in der Nähe sind. Ich würde dem Kontrast-Pin auch noch ein Abblock-C 100nF nach Masse spendieren.
Fabian T. schrieb: > Ok, habe jetzt den Elko parallel zur verkürzten Spannungsversorgung, den > keramischen Kondensator parallel zu Abgriff Poti/ GND. Ich hoffe das war > so richtig? Nicht ganz. Auch 100nF an Vcc und GND. Am LCD. Versuche die Masseverbindung noch zu verbessern indem zu zwei oder drei Masseleitungen vom Arduino zum LCD legst.
Arduinoquäler schrieb: > Versuche die Masseverbindung noch zu verbessern indem zu > zwei oder drei Masseleitungen vom Arduino zum LCD legst. Ich würde erst mal messen, wie viel Spannung am Display ankommt. Ich meine, sowas schon mal geschrieben zu haben... Fabian T. schrieb: > Ok, habe jetzt den Elko parallel zur verkürzten Spannungsversorgung, den > keramischen Kondensator parallel zu Abgriff Poti/ GND. Direkt am Display?
:
Bearbeitet durch Moderator
Den 100nF-C direkt an die Displayanschlüsse anlöten, der Elko kann ein paar mm entfernt sein...
Leider fehlt mir momentan sowohl Multimeter als auch Lötausrüstung. Ich werde dies versuchen, sobald ich entsprechendes Werkzeug zur Verfügung hab.
Du löschst nicht zufällig immer das komplette Display und schreibst dann neu oder? Wie oft änderst/aktualisierst du denn den Bildschirminhalt?
Evtl. schreibst du auch zu schnell an das Display. Alle paar 100ms reicht völlig aus. Oder es liegt generell am Timing. Diese Displays sind verhältnissmäßig langsam im Vergleich zum Controller. Manchmal sollen die Delays zwischen den einzelene Bytes länger sein.
Bastler schrieb: > Evtl. schreibst du auch zu schnell an das Display. Das kann ich mir durchaus auch vorstellen, denn zumindest im Bild dort https://www.mikrocontroller.net/attachment/326795/IMG_20170412_131656.jpg sehen die meisten Zahlen gut aus...
Die Tipps mit den Kondensatoren und Veränderung der Verkabelung wurden ja schon genannt. Das solltest Du auch umsetzten, vor allem kurze Verbindungen legen. Ausgenommen davon ist die 3-Fache GND Verbindung. Versuche dich auch erst einmal nur das Klassische "Hello World" auszugeben, auf beiden Zeilen. Hier kannst Du auf einen fertigen Sketch zurückgreifen, er muss halt nur für die 2te Zeile ergänzt werden. Wobei, zur Fehlereingrenzung reicht auch erst einmal der unveränderte Sketch. Merkwürdig ist das erste Zeichen in der ersten Zeile. Das kennt der Controller nicht, es sei denn es wurde selbst definiert. Hast Du evtl. noch ein weiteres Display? Sind die Leitungen in Ordnung? Beginnende Kabelbrüche? Ist das Breadboard in Ordnung? Korrision?
:
Bearbeitet durch User
Ingo L. schrieb: > Du löschst nicht zufällig immer das komplette Display und schreibst dann > neu oder? Wie oft änderst/aktualisierst du denn den Bildschirminhalt? Nein, es wird nur einmal in der Setup Routine beschrieben, nicht im Loop, um ein "Ghosting" Verhalten auszuschließen (Das war meine erste Annahme) Jörg R. schrieb: > Versuche dich auch erst einmal nur das Klassische "Hello World" > auszugeben, auf beiden Zeilen. Hier kannst Du auf einen fertigen Sketch > zurückgreifen, er muss halt nur für die 2te Zeile ergänzt werden. Wobei, > zur Fehlereingrenzung reicht auch erst einmal der unveränderte Sketch. Habe ich ganz zu Beginn getan, selbe Resultate wie jetzt. Jörg R. schrieb: > Merkwürdig ist das erste Zeichen in der ersten Zeile. Das kennt der > Controller nicht, es sei denn es wurde selbst definiert. Ja, das habe ich mir erlaubt selbst zu definieren. Das sollte ein Thermometer darstellen. Jörg R. schrieb: > Hast Du evtl. noch ein weiteres Display? Wird die Tage bestellt, dauert aber bestimmt, bis es ankommt
:
Bearbeitet durch User
Fabian T. schrieb: > Das sollte ein Thermometer darstellen. Da sach ich jetz ma nix zu... Ich würde einen Kringel unten hin machen. Schließlich hat so ein Thermometer ja auch eine Blase. Und die Striche nur auf einer Seite.
1 | #### |
2 | ## |
3 | #### |
4 | ## |
5 | ## |
6 | # # |
7 | ## |
Blöderweise kennt so ein analoges Thermometer eh' keiner mehr, und dieses Symbol ereilt das selbe Schicksal wie z.B. auch das Diskettensymbol, das von manchen Programmen zum Speichern verwendet wird...
:
Bearbeitet durch Moderator
Guck mal auf den ersten Bildern, da sieht man das es eignetlich so aussehen sollte: --#-- -#-#- -#-#- -###- -###- ##### ##### -###- Dies macht ja genau das Problem mit den komsichen Kontrasten deutlich. Zusammen mit der 1 aus der darunter liegenden Zeile fehlt entweder was oder es ist alles voll.
Anhand des Bildes von 13:22 Uhr würde ich sagen, tausch mal alle Kabel aus, insbesondere die der Daten- und Steuerleitungen.
Was hatte ich oben gefragt? Ohne richtige Spannungsversorgung an Ub und auch Kontrastreglung zeigen diese Dinger immer Mist an. "Richtig" bedeutet gut abgeblockt (mit Kondensatoren so dicht am Display wie möglich) hnd natürlich auch halbwegs stromfähig. Und ja, auch Arduino-Frickler sollten als Erstes gutes Löt- und Messzeugs anschaffen. Erst danach einen Arduino. Old-Papa
Old P. schrieb: > Was hatte ich oben gefragt? So lange ist das doch noch gar nicht her -und trotzdem kannst Du Dich nicht erinnern? ;)
Fabian T. schrieb: > Schaltplan.PNG Warum sollte das Display schärfer als der Schaltplan sein. Wenn das Bild erstmal verhunzt ist, nützt das schönste PNG Format nichts mehr.
Die Kabel für die Datenleitungen sind viel zu lang. Mach die mal kürzer.
Pete K. schrieb: > Die Kabel für die Datenleitungen sind viel zu lang. Mach die mal kürzer. Wie soll die Länge der Datenleitung die Darstellung beeinflussen, wenn gar nichts übertragen wird? Fabian T. schrieb: > Nein, es wird nur einmal in der Setup Routine beschrieben, nicht im > Loop, um ein "Ghosting" Verhalten auszuschließen (Das war meine erste > Annahme) Offensichtlich kommen die Daten doch an.
Dieter F. schrieb: > Offensichtlich hat er seinen Fehler gefunden. > > Sketch? > Poti? > ...? Ich vermute er wird sich noch melden. Er hat ja wohl auch ein weiteres Displays bestellt um das als Fehlerqüelle auszuschließen. Ich vermte aber das es nicht am Display liegt.
Dieter F. schrieb: > Welchen Wert hat Dein Poti für die Kontraststeuerung? Der Poti hat einen Wert von 10kΩ. Dieter F. schrieb: > Zeig mal bitte Deinen Sketch.
1 | #include <LiquidCrystal.h> |
2 | |
3 | #define RS 7
|
4 | #define E 8
|
5 | #define D4 9
|
6 | #define D5 10
|
7 | #define D6 11
|
8 | #define D7 12
|
9 | #define COLS 16
|
10 | #define ROWS 2
|
11 | |
12 | LiquidCrystal lcd(RS,E,D4,D5,D6,D7); |
13 | void setup() { |
14 | byte charMap[][8] = { |
15 | {B00100, |
16 | B01010, |
17 | B01010, |
18 | B01010, |
19 | B01110, |
20 | B11111, |
21 | B11111, |
22 | B01110}, |
23 | |
24 | {B00100, |
25 | B00100, |
26 | B01010, |
27 | B01010, |
28 | B10001, |
29 | B10001, |
30 | B10001, |
31 | B01110} |
32 | };
|
33 | |
34 | lcd.begin(COLS,ROWS); |
35 | lcd.createChar(0,charMap[0][]); |
36 | lcd.createChar(0,charMap[1][]); |
37 | lcd.clear(); |
38 | lcd.print((char)0); |
39 | lcd.print(" 21,3" + String(char(223)) + "C "); |
40 | lcd.setCursor(0,1); |
41 | lcd.print(sizeof(charMap)); |
42 | |
43 | }
|
44 | void loop() { |
45 | }
|
Also den Fehler hab ich noch nicht gefunden, konnte die Darstellung durch die Verwendung der Kondensatoren jedoch ausreichend verbessern, sodass eine Verwendbarkeit gegeben ist. Für das neue Display muss ich wohl bis zu 4 Wochen Lieferzeit einkalkulieren, mal sehen wie schnell die Chinesen sind. Werde mich danach auf jeden Fall nochmal melden.
Fabian T. schrieb: > Also den Fehler hab ich noch nicht gefunden, konnte die Darstellung > durch die Verwendung der Kondensatoren jedoch ausreichend verbessern, > sodass eine Verwendbarkeit gegeben ist. Ja, ohne ausreichende Abblockung direkt an den ICs bzw. Baugruppen und einer stabilen Spannungsversorgung (keine billige SNT-Wandwarze) geht bei Elektronik eben nichts, gar nichts! > Für das neue Display muss ich wohl bis zu 4 Wochen Lieferzeit > einkalkulieren, mal sehen wie schnell die Chinesen sind. Werde mich > danach auf jeden Fall nochmal melden. Das wird ohne Kondensatoren und mit eventuell weicher/verspikter Spannungsversorgung wohl auch nicht anders aussehen. Old-Papa
Um zu sehen, ob es an der Software liegt, könnte man für die unveränderte Schaltung ein anderes Programm schreiben, das keine Sonderzeichen enthält. Wenn das Resultat immer noch so aussieht, weiß man wenigstens, daß es daran nicht lag.
Fabian T. schrieb: > Dieter F. schrieb: >> Zeig mal bitte Deinen Sketch. Das ist nicht der Sketch, welchen Du auf dem Arduino hast. Der lässt sich nicht fehlerfrei compilieren. Fabian T. schrieb: > lcd.createChar(0,charMap[1][]); Das definiert das Zeichen 0 nochmal ... mit anderem Inhalt
Old P. schrieb: > Ja, ohne ausreichende Abblockung direkt an den ICs bzw. Baugruppen und > einer stabilen Spannungsversorgung (keine billige SNT-Wandwarze) geht > bei Elektronik eben nichts, gar nichts! Ich habe keine Idee, was ich falsch gemacht habe: Habe mir vor knapp zwei Jahren China-Unos und 1602-Displays gekauft, den Kram auf eine Lochrasterkarte gelötet und er hat binnen weniger Stunden funktioniert. Liegt das daran, dass ich zu alt bin, diese Kindersteckbretter zu verwenden?
Manfred schrieb: > Liegt das daran, dass ich zu alt bin, diese Kindersteckbretter zu > verwenden? Auf diesen "Kindersteckbrettern" habe ich schon komplette Uhren aus 74er bzw. 4000er IC's aufgebaut. Funktioniert tadellos. Das hat nix mit dem Alter zu tun?
Da ich auch Löten vor den lesen gelernt habe baue ich alles auch Lochrasterkarten. Ganze Bussystem für 8085 und 8086 habe ich früher so gebaut. Das Steckbrett habe ich nach einem versuch wieder ausgemustert. Es nervt einfach nur. Lochraster ist einfach genial zum Entwickeln und für die Einzelstücke. mfg Michael
Michael_ohl schrieb: > Das Steckbrett habe ich nach einem versuch wieder ausgemustert. > Es nervt einfach nur. Lochraster ist einfach genial zum Entwickeln und > für die Einzelstücke. Ich möchte auf das Steckbrett nicht mehr verzichten, jedenfalls für einfache digitale Schaltungen und Sachen rund um den Arduino, Raspi usw. Ich arbeite nach wie vor mit 74er und 4000er ICs. Da ist es auf dem Steckbrett wesentlich einfacher mal eben eine oder mehrere Verbindungen umzustecken, als sie auf Lochraster umzulöten. Ich versuche allerdings die Schaltungen übersichtlich aufzubauen, kurze Verbindungen usw. Aber, die Geschmäcker sind natürlich verschieden. Jeder so wie er es mag? Empfindliche Analogschaltungen sowie Hochfrequenzschaltungen (ist auch nicht mein Gebiet) würde ich darauf auch nicht aufbauen.
Jörg R. schrieb: > Ich möchte auf das Steckbrett nicht mehr verzichten, jedenfalls für > einfache digitale Schaltungen und Sachen rund um den Arduino, Raspi usw. ich auch nicht > Ich arbeite nach wie vor mit 74er und 4000er ICs. Da ist es auf dem > Steckbrett wesentlich einfacher mal eben eine oder mehrere Verbindungen > umzustecken, als sie auf Lochraster umzulöten. ich auch > Ich versuche allerdings die Schaltungen übersichtlich aufzubauen, kurze > Verbindungen usw. deswegen benutze ich farbigen Schaltdraht passend gekürzt statt fertiger Steckbrücken und wichtiges wie VCC und GND und I2C lege ich doppelt dann klemmts auch nicht mit einem wackligen Draht. > Aber, die Geschmäcker sind natürlich verschieden. Jeder so wie er es > mag? > Empfindliche Analogschaltungen sowie Hochfrequenzschaltungen (ist auch > nicht mein Gebiet) würde ich darauf auch nicht aufbauen. sehe ich genauso, bis jetzt gings immer gut, also so schlecht kann die Methode Steckbrett nicht sein, einiges trage ich während der Entwicklung locker 2 Jahre mit mir rum bevor eine Leiterplatte draus wird.
Joachim B. schrieb: > deswegen benutze ich farbigen Schaltdraht passend gekürzt statt fertiger > Steckbrücken und wichtiges wie VCC und GND und I2C lege ich doppelt dann > klemmts auch nicht mit einem wackligen Draht. Farbige Steckbrücken benutze ich auch, aktuell flexible von Reichelt. Leider gibt es die nur in einer Länge. Das macht es bei komplexeren Schaltungen schon mal etwas unübersichtlich. Deswegen überlege ich auch mir die Verbindungen selber herzustellen, in verschiedenen Längen. Mal sehen, der nächste Winter und die dunkle Jahreszeit kommt bestimmt. Das ist dann Position 235 auf meiner ToDo Liste:-) Joachim B. schrieb: > sehe ich genauso, bis jetzt gings immer gut, also so schlecht kann die > Methode Steckbrett nicht sein, einiges trage ich während der Entwicklung > locker 2 Jahre mit mir rum bevor eine Leiterplatte draus wird. Vor Jahren habe ich mal eine Uhr, bestehend aus ca. 15 IC's, auf einem Steckbrett aufgebaut. Vor kurzem viel mir das Konstrukt wieder in die Hände. Und, siehe da, sie funktioniert noch:-) Fabian T. schrieb: > Für das neue Display muss ich wohl bis zu 4 Wochen Lieferzeit > einkalkulieren, mal sehen wie schnell die Chinesen sind. Werde mich > danach auf jeden Fall nochmal melden. Davon gehen wir aus;-) Du solltest das Problem aber auch ohne neues Display lösen können. Ich kann nicht so recht glauben dass das vorhandene defekt ist. Ich würde die Schaltung nochmals neu aufbauen, ggf. auf einem anderen Breadborad oder anderer Position auf dem jetzigen. Beherzige die Tipps mit den kurzen Leitungen, Verwendung von Abblockkondensatoren usw. Noch ein Tipp wie ich Verbindungen auf dem Breadbord setze: Ich setze Verbindungsleitungen nach Möglichkeit immer so das die Anschlussreihe kein offenes Ende hat, also keine kleine Antenne entsteht. Mich würde interessieren was andere User dazu anmerken oder ob sie das anders sehen. Und, ich würde erst einmal mit einem Sketch aus der Beispiel-Bibliothek arbeiten und ein "Hello World" senden. Und zwar solange bis es funktioniert. Danach erst würde ich mit eigenen Sketchen und definierten Zeichen arbeiten. Hat Dein Display den erwähnten Controller HD44780 oder einen kompatiblen?
:
Bearbeitet durch User
Jörg R. schrieb: > Leider gibt es die nur in einer Länge. Das macht es bei komplexeren > Schaltungen schon mal etwas unübersichtlich. Deswegen überlege ich auch > mir die Verbindungen selber herzustellen, in verschiedenen Längen. Kurze, nach Länge farbkodierte Steckbrücken wurden schon erfunden, ideal um die Verdrahtung auf dem Steckbrett nicht zu einem wirren Knäul flexibler Verbindungen werden zu lassen. Nur die "Fernverbindungen" sind dann noch flexibel. https://www.reichelt.de/index.html?ACTION=3;ARTICLE=79056
Wolfgang schrieb: > Jörg R. schrieb: >> Leider gibt es die nur in einer Länge. Das macht es bei komplexeren >> Schaltungen schon mal etwas unübersichtlich. Deswegen überlege ich auch >> mir die Verbindungen selber herzustellen, in verschiedenen Längen. > > Kurze, nach Länge farbkodierte Steckbrücken wurden schon erfunden, ideal > um die Verdrahtung auf dem Steckbrett nicht zu einem wirren Knäul > flexibler Verbindungen werden zu lassen. Nur die "Fernverbindungen" sind > dann noch flexibel. > https://www.reichelt.de/index.html?ACTION=3;ARTICLE=79056 Ja, die kenne ich und benutze sie auch. Mir gefällt die Zusammensetzung nicht so gut und preiswert sind sie auch nicht.
Hi Wenn es nur ein paar dutzend Steckbrücken sind: Beim heimischen Elektriker darfst Du Dir bestimmt einen Meter Telefonkabel vom Reste-Haufen mitnehmen. Sind nominal 0,6er bzw. 0,8er Drähte drin (Beide gehen im Steckbrett) und je nach Kabel-Dicke auch sehr viele. Solltest nur darauf achten, kein Fett-Kabel mit heim zu nehmen - das Zeug hat den Namen nicht umsonst und ist eine mittelgroße Sauerei (schwarzes Kabel, recht starr, gelbliches Fett quillt aus beiden Kabelenden, ist für Erdverlegung gedacht, das Fett verhindert das Eindringen von Wasser, sollte der Mantel beschädigt werden). Bei normalem JY(st)Y machst Du aber Nichts falsch - die Reste (Mantel, Schirm) sind im gelben Sack nicht gerne gesehen (da der Hersteller nicht fü+r die Entsorgung per 'grüne Punkt' bezahlt) und je nach Müll-Mann bleibt der Müll dann, mit einem Aufkleber verziert, liegen. MfG https://de.wikipedia.org/wiki/Telefonkabel
Patrick J. schrieb: > Solltest nur darauf achten, kein Fett-Kabel mit heim zu nehmen - das > Zeug hat den Namen nicht umsonst und ist eine mittelgroße Sauerei > (schwarzes Kabel, recht starr, gelbliches Fett quillt aus beiden > Kabelenden, ist für Erdverlegung gedacht, das Fett verhindert das > Eindringen von Wasser, sollte der Mantel beschädigt werden). Erzähle das mal einem vom Fach?
Jörg R. schrieb: > Erzähle das mal einem vom Fach? Braucht er nicht. Der weiß das. Wer das nicht weiß, der liest bei Wikipedia: Zitat: 2. Verzweigungskabel, die Kabel, die die dritte Kabelebene bilden und im Ortsbereich eingesetzt werden, sind längswassergeschützt. Die Hohlräume zwischen den Aderpaaren sind mit Vaseline gefüllt. Im Falle einer Beschädigung des Kabels dringt Wasser nur unmittelbar an der beschädigten Stelle in den Kabelmantel ein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.