Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD defekt?
Hallo,
ich habe seit ein paar Wochen den RP6. Mittlerweile habe ich die M32-Erweiterung und das LCD RP-DSP88 von Conrad.
Mein Problem ist nun dass auf dem Display lediglich eine dunkle und eine helle Reihe angezeigt werden. Das LCD ist am LCD-Stecker angeschlossen, die Hintergrundbeleuchtung funktioniert.
Ich habe bereits den Control-Selftest erfolgreich laufen lassen.
Sorry, falls die Angaben zu meinem Problem unzureichend sind. Ich bin noch neu auf dem Gebiet.
Grüsse, Jordi
Dann lad doch mal eines der Testprogramme die das Display verwenden und schau mal ob sich was tut. Außerdem kannst du mal probieren den Kontrast des Displays zu verändern, dazu gibt es auf der M32 einen Poti den man mit einem kleinen Schraubenzieher verstellen kann.
Ahh nur um sicher zu gehen: Du hast das Testprogramm auch in die M32 geladen und nicht in die Base ?
Hallo Shedepe,
danke für die schnelle Antwort.
In die Base habe ich das slave-Programm aus den Beispielen geladen.
In die M32 habe ich das Contol-Selftest-Programm und danach das LCD-Programm und das Master-06-Programm geladen. Wenn ich das richtig gesehen habe dann sprechen alle drei das Display an. Bei allen hatte ich nur eine helle und eine dunkle Reihe, aber keine Ausgaben.
Am Kontrast habe ich auch bereits gedreht.
Hallo,
überprüf mal die beiden Teile der Steckverbindung (Stecker auf Platine und am Kabel) auf Beschädigungen - verbogene oder fehlende Pins, Staub oder sonstiger Dreck im Steckverbinder. Lötkontakte auf der Unterseite der Platine...
Am LCD selbst ist oben eine Reihe von Lötkontakten - sind die alle in Ordnung? Das Kabel nirgendwo abgebrochen?
MfG,
SlyD
Hallo SlyD,
beide Stecker sind sauber, die Lötstellen an der M32- und an der LCD-Platine sind optisch in Ordnung. Kann ich mit einem Messgerät prüfen wo der Fehler liegt? Wenn ja, wie?
Grüsse, Jordi
Hast Du denn ein Multimeter oder kannst Dir eins leihen?
Falls ja, dann mal das M32 Modul vom RP6 abmontieren, LCD anschließen und daneben legen - alles so hinlegen das Du gut an die Lötstellen auf der Unterseite vom M32 Modul und die auf dem LCD rankommst.
Multimeter auf Druchgangsprüfer stellen. Dann jeweils schauen ob alle Pins vom 14 Poligen Stecker mit einem auf dem LCD Kontakt haben.
Der Fehler muss natürlich nicht da liegen kann auch ganz was anderes sei.
(irgendwo anders ne schlechte Lötstelle. Oder der Controller auf dem Display ist defekt. Oder ... schwer zu sagen)
Wenn man sich vor der Montage nicht geerdet hast (= entladen s. Sicherheitshinweise in der RP6 Anleitung) bzw die Platinen nur am Rand angefasst hat kann man die Teile auch durch elektrostatische Entladungen beim Zusammenbau durch bloßes berühren beschädigt haben...
MfG,
SlyD
Werde mir ein Multimeter leihen müssen. Melde mich sobald ich die Messungen gemacht habe. Danke erstmal.
Grüsse, Jordi
Schau mal auf die Pinbelegung.
Ich kenne das Bauteil zwar nicht aber ich gehe mal davon aus das es ein Display welches HD44780 oder zumindestens Kompatibel ist.
Ich hatte das gleiche Problem bei einem anderen Projekt.
Die beiden Zeilen weisen darauf hin das dein Display korrekt initalisiert wird aber keine weiteren Daten ankommen.
Leider erinnere ich mich nicht mehr genau woran es bei mir lag. Aber Fehlerbeschreibung war gleich.
Ich hatte später die Pin-Belegung am AVR verändert. Ich hatte zu erst die Steuerpins und dann die Datenpins am Port C und hab dann zu erst Data und dann Steuerpins an Port C gelegt. Danach lief es nach einigen Versuchen.
radbruch
18.06.2011, 18:01
Hallo
Diese Initialisierung verwende ich bei meinem Display für mein I2C-LCD am arm64 (http://www.youtube.com/watch?v=gx4wFKOHa-g). Der Code ist aus den Libraries des m32 kopiert:
// Initialize the LCD. Always call this before using the LCD!
void initLCD(void)
{
//delayCycles(34000); No need for Power ON delay as usually the
// Bootloader should have been executed before...
setLCDD(0b0011);
delayCycles(18000);
setLCDD(0b0011);
delayCycles(5500);
setLCDD(0b0011);
delayCycles(5500);
setLCDD(0b0010);
delayCycles(5500);
writeLCDCommand(0b00101000);
delayCycles(5500);
writeLCDCommand(0b00001000);
delayCycles(5500);
writeLCDCommand(0b00000001);
delayCycles(5500);
writeLCDCommand(0b00000010);
delayCycles(5500);
writeLCDCommand(0b00001100);
delayCycles(5500);
}
Der rote Bereich ist das CLS-Kommando. Dieses braucht zur Ausführung laut Datenblatt meines LCD aber bis zu 1,64ms! Alle anderen Befehle brauchen maximal 40µs. Das ist letztlich der Grund warum meine eigenen LCD-Ansteuerungen bisher nicht sauber liefen. Hier mein aktuelles Setup, die zweiten Werte sind die Wartezeiten in µs laut Datenblatt, sieht deshalb (seit heute;) so aus:
rsl;
_delay_ms(20); // Initialisieren >15ms nach dem Einschalten
lcd_write8(0b00110000,5000); // >4,1ms
lcd_write8(0b00110000,150); //
lcd_write8(0b00110000,150); //
lcd_write8(0b00110000,150); //
lcd_write8(0b00100000,150); // Function Set: 4bit-Modus starten
lcd_write4(0b00101000,40); // Function Set: 2 Zeilen, Font 0 (0010NFxx)
lcd_write4(0b00000001,1640); // Display Clear (dauert ewige 1,64ms!!!)
lcd_write4(0b00000110,40); // Entry Mode Set: inc, no shift
lcd_write4(0b00001100,40); // Display On and Cursor (00001DCB)
rsh;
Lange Rede, kurzer Sinn: Vielleicht stimmt die Initialisierung in der m32-Lib nicht:
// writeLCDCommand(0b00000001);
Gruß
mic
RoboHolIC
18.06.2011, 23:30
Die beiden Zeilen weisen darauf hin das dein Display korrekt initalisiert wird aber keine weiteren Daten ankommen.
Vielleicht habe ich das missverstanden, aber: Die dunkle und die helle Zeile weisen meines Wissens genau darauf hin, daß das Display nach dem internen Einschalt-Prozedere eben keine Konfigurierungsbefehle kriegt.
Wenn so wenig geht, würde ich zu allererst eine penible Sichtprüfung auf Lötbrücken, Zinnkleckse und schlechte Lötstellen machen. Dann die Enable-, Command/Data- und R/W-Leitungen auf eindeutige Funktion testen. Danach kann man in der Software nach dem Fehler fahnden, ohne sich am Ende "in den H...." beißen zu wollen, wenn doch ein Lötklecks schuld war ...
Kann man bei der fraglichen Hardware Vertauschungen von Leitungen ausschließen? Ist das Display definitiv pinkompatibel zum Standard? Ich hatte schon mal eines, da war die Pinbelegung nur beim ersten flüchtigen Blick OK.
Hallo,
danke für die Hinweise.
Das LCD ist dieses hier (http://www.conrad.de/ce/de/product/191621/DISPLAY-RP5RP6-BLAU-MIT-BACKLIGHT/2420181&ref=list). Aufgrund der Beschreibung gehe ich davon aus dass die Pin-Belegung passen müsste.
Ich habe mir nochmal die Lötstellen angeschaut. Ich kann wirklich keine lockeren Lötstellen oder Lötbrücken erkennen. Ein Messgerät habe ich noch nicht zur Verfügung...aber bald.
Grüsse, Jordi
Das LCD ist dieses hier (http://www.conrad.de/ce/de/product/191621/DISPLAY-RP5RP6-BLAU-MIT-BACKLIGHT/2420181&ref=list). Aufgrund der Beschreibung gehe ich davon aus dass die Pin-Belegung passen müsste.
Dann prüf sie noch mal ;)
Ich hab sie bei meinem gefühlte 20x getestet.
Wenn du die Möglichkeit hast sortiere die Pin-Belegung am AVR mal um.
Sprich erst oder Data Pins und dann die Steuer Pins bzw andersrum.
Hallo rylix,
das Display hängt am LCD-Anschluss der M32-Platine. Wie prüfe ich die Belegung?
Gruss, Jordi
Gar nicht!
Das ist ein fertig konfektioniertes LCD genau passend zu dem Board da kanns also nicht dran liegen.
Wohl aber an einem gebrochenen Kabel oder sonstigen Hardwaredefekten wie ich ja schon schrieb.
Die Initialisierung in Software sollte es eigentlich auch nicht sein, mit dem Display Typ wurde das ja getestet und (es gibt verschiedene Controller je nach Display verhält sich das anders... ).
Aber sicherheitshalber @Jordi ändere mal die von radbruch angegebene Zeile in
writeLCDCommand(0b00000001);
delayCycles(34000);
um. Sollte daran aber nicht liegen.
(ACHTUNG: Danach einmal make clean ausführen damit die Library auch sicher aktualisiert wird - danach den Selftest nochmal neu compilieren...)
MfG,
SlyD
radbruch
20.06.2011, 22:24
Hallo
Ein Versuch kann ja nicht schaden. Ich habe leider kein vernünftiges Datenblatt für das verwendete Display gefunden. Für einen schnellen Test könnte man initLCD() auskommentieren und durch die geänderte Initialisierung ersetzen:
// initLCD(); // auskommentiert
setLCDD(0b0011);
delayCycles(18000);
setLCDD(0b0011);
delayCycles(5500);
setLCDD(0b0011);
delayCycles(5500);
setLCDD(0b0010);
delayCycles(5500);
writeLCDCommand(0b00101000);
delayCycles(5500);
writeLCDCommand(0b00001000);
delayCycles(5500);
writeLCDCommand(0b00000001); // längere Wartezeit nach cls
delayCycles(34000);
writeLCDCommand(0b00000010);
delayCycles(5500);
writeLCDCommand(0b00001100);
delayCycles(5500);
So braucht man nicht an den Dateien der Library rumfummeln;)
Gruß
mic
Hallo SlyD,
daran lags wirklich nicht.
Grüsse, Jordi
Hallo,
hier mal ein Feedback. Ich habe jetzt die Messungen vorgenommen.
Zuerst habe ich auf der LCD-Platine immer benachbarte Lötstellen über das Messgerät verbunden um nach ungewollten Lötbrücken zu fahnden. Alle Messungen waren i.O., d.h. das Messgerät zeigte keinen Durchgang an.
Dann habe ich wie weiter oben im Thread beschrieben Board + LCD-Platine durchgemessen. Bei allen 14 Verbindungen wurden Durchgänge angezeigt.
Naja, werde das LCD-Display wohl zurückschicken müssen. Trotzdem danke an alle für ihre Hinweise und Vorschläge.
Grüsse, Jordi
RP6fahrer
30.07.2011, 12:51
Hallo!
Ich habe mir jetzt auch ein Display bei Reichelt (DIP162-DNLED) gekauft und habe genau das gleiche Problem. Ich habe mich schon bei Google durch zahlreiche Foren gewälzt, aber niemand hat dafür eine Lösung für den RP6. Ich habe herausgefunden. dass es normal ist, dass (bei 2 zeiligen Displays) die erste Zeile nur der Kontrast veränderbar ist. Die Zweite Zeile ist sozusagen von der ersten Abhängig. Wenn die erste sich nicht initialisiert, dann macht das die zweite auch nicht und zeigt somit auch nichts an.
Jetzt wollte ich mal Fragen, ob ihr eine Idee habt, was ich bei der Initialisierung noch ändern kann/ muss, damit es funktioniert. Vielleicht hatte auch jemand das gleiche Problem und kennt schon die Lösung.
Vielen Dank schon mal.
MfG
RP6fahrer
Hallo,
ich würde als erstes mal die Hardware ganz genau überprüfen - da Du das ja selbst zusammengelötet haben musst, kann es durchaus sein, dass die Verbindungen falsch sind, z.B. die Datenleitungen in verkehrter Reihenfolge, spiegelverkehrt oder sonstwas.
Schlechte Lötstellen könnens natürlich auch sein.
Der Kontrastregler ist wie im Datenblatt angegeben realisiert und richtig eingestellt?
ACHTUNG:
Anders als bei dem normalen Display für den RP6, musst Du die Hintergrundbeleuchtung mit nem Widerstand / Stromquelle anschließen sonst zieht das zuviel und geht kaputt. Beim RP6 Display ist das schon integriert.
Steht aber alles im Datenblatt ;)
MfG,
SlyD
RP6fahrer
01.08.2011, 12:20
Danke SlyD!
Aber ich habe die Hardware schon sorgfältig überprüft. Auch keine kalten Lötstellen. Hintergrundbeleuchtung funktioniert auch noch. Ich habe in einem anderen Forum gelesen, dass wenn die erste Zeile mit Balken ist, dass Display nicht richtig initialisiert. Allerdings gibt es im Datenblatt kein Beispiel für Initialisierung 4 Bit Datenbus.
Hast du noch eine Idee hast, was ich bei initLCD(); noch ändern kann, damit es funktioniert? Ich habe bereits die Zeiten verlängert(weil irgendwo auch stand, dass das Display eine gewisse Zeit braucht.
Aber trotzdem vielen Dank!!
MfG
RP6fahrer
Die Initialisierung ist genauso wie bei allen anderen LCDs mit HD44870 Controller daher steht da auch nix weiter in dem Datenblatt.
Und nein, ich wüsste nicht was man an der Initialisierung ändern sollte (es funktioniert mit anderen HD44870 Displays wunderbar also passt die Initialisierung und es ist wahrscheinlich ein Hardware Problem).
Aber vielleicht hilft Dir das hier:
http://www.sprut.de/electronic/lcd/
> Aber ich habe die Hardware schon sorgfältig überprüft.
Und Du bist 100% sicher das die richtigen Datenleitungen verwendet wurden (D4-D7 und richtige Reihenfolge?) die anderen müssen auf Masse gelegt werden! EN, RS, und RW sind auch richtig angeschlossen?
MfG,
SlyD
RP6fahrer
02.08.2011, 17:42
Hallo SlyD
Danke für die Hilfe. Ich habe ein ganz komisches Phänomen gehabt. Ich habe die Initialisierung (die initLCD()) verändert und zwar so:
setLCDD(0b0011); //0011
delayCycles(18000); //18000
setLCDD(0b0011); //0011
delayCycles(18000); //5500
setLCDD(0b0011); //0011
delayCycles(18000); //5500
writeLCDCommand(0b00111000);
delayCycles(55000); //5500
writeLCDCommand(0b00001111);
delayCycles(55000); //5500
writeLCDCommand(0b00000001);
delayCycles(55000); //5500
sound(240,80,25);
writeLCDCommand(0b00000110);
delayCycles(55000); //5500
das originale habe ich ausgeklammert.
Nach dem Starten hatte ich dann mit einmal ganz komische Zeichen auf dem Display( alsp p, q - ~ ) in irgendeiner komischen Reihenfolge. Dann habe ich das Programm gestoppt. Wieder alles auf Original zurückgestellt und seit dem geht es. Ich kann mir nicht erklären, warum es zu diesem komischen Problem gekommen ist. Also jedenfalls, das Display funktioniert jetzt einwandfrei.
Also nochmal vielen Dank!
LG
RP6fahrer
roboterfummler
03.08.2011, 14:25
Dreh doch mal am potis vielleicht liegt es daran
Morpheus1997
15.08.2011, 21:18
hey,
ich habe auch ein problem,das in diesen thread wohl gut hineinpasst.
ich habe nämlich folgendes display bei mir gefunden: http://www.farnell.com/datasheets/66206.pdf
da die pins die gleiche reihenfolge hatten, wie bei den für die m32 spezifischen displays, wollte ich es auch gleich ausprobieren und hab mir aus einem alten computer ein flachbandkabel genommen und mir daraus ein kabel für das display gebastelt.
was mir schon einwenig komisch vorkam ist, dass bei meinem display die letzten beiden pins für das hintergrundlicht waren. dies sollte man mit 115 volt betreiben.
doch da ich das sowieso nicht wollte, habe ich mir da auch nichts weiter bei gedacht.
allerdings tat es nicht, als ich das kabel dann fertig hatte. also als ich den roboter dann anmachte reagiert das display gar nicht!
liegt es vielleicht an den letzten beiden pins? denn die anderen waren ja genau identisch zu den anschlussbelegungen des display-ports...
Ich hoffe ihr könnt mir bei meinem Problem weiterhelfen. Bei fehlenden Details, bitte melden!
vielen dank schonmal im vorraus!
LG Marcel
@Marcel:
Zwei Ideen:
1. Das ist ja ein Backlight Display.
Da wird man wohl nichts sehen, wenn das Backlight nicht angeschlossen ist.
2. Ich finde keine Angabe zum Controller des Displays.
Vielleicht muss man eine andere Initialisierung schreiben...
Morpheus1997
15.08.2011, 22:03
hey, dirk....
also eigentlich müsste man wohl was sehen können ohne angeschlossenes backlight... denn ich habe einfach mal das display mit gnd und vdd verbunden und dann konnte man da schon etwas sehen also so schwarze rechtecke.. vielleicht hab ich nur irgendwo beim löten einen kurzschluss verursacht oder so...
am besten werde ich es nochmal löten und es dann nochmal ausprobieren...
LG Marcel
radbruch
15.08.2011, 22:17
Hallo
Das Backlight kann je nach Displaytyp mit AC125V oder mit Gleichspannung betrieben werden.
Das einzige von mir gefundene 20*4-LCD bei Farnell mit einem 66206.pdf als Datenblatt ist dieses:
http://de.farnell.com/everbouquet/mc2004e-sblw/lcd-modul-a-n-20x4/dp/9449132
Und das ausführliche Datenblatt zu dessen Kontroller ist hier:
http://www.farnell.com/datasheets/319678.pdf
Beschreibung der Steuercodes ab Seite 7, 4-Bit ab ca. Seite 9. Leider hab ich grad keine Zeit das Setup zu überprüfen, aber vielleicht gelingt es dir auch selbst.
Ganz schön hochpreisig, vielleicht ist es auch das falsche Display.
Gruß
mic
Morpheus1997
16.08.2011, 09:11
oh dann hab ich ja noch ein ganz schön teures gefunden... :)
ich habe die nämlich alle mal geschenkt bekommen ....
ähm ja also das http://de.farnell.com/everbouquet/mc...0x4/dp/9449132 (http://de.farnell.com/everbouquet/mc2004e-sblw/lcd-modul-a-n-20x4/dp/9449132)
ist auf jedenfall mein LCD. Ich kenn mich jetzt mit Controllern etc. nicht besonders aus, aber vielleicht kann mein Vater mir ja helfen ;)
LG Marcel
was mir schon einwenig komisch vorkam ist, dass bei meinem display die letzten beiden pins für das hintergrundlicht waren. dies sollte man mit 115 volt betreiben.
Die 115 Volt gelten bei Deinem Display nur für die EL Backlight Variante, nicht für die normalen LED Varianten.
Das normale RP6 Display hat die Versorgung für die LED Hintergrundbeleuchtung auf der Display Platine - über einen kleinen Widerstand (mit RL auf der Display Platine gekennzeichnet) daher werden hier die zusätzlichen Pins 15 und 16 nicht verwendet.
Bei anderen Displays muss man sich selbst drum kümmern, dass das korrekt mit Widerstand oder Stromquelle angeschlossen wird!
MfG,
SlyD
Morpheus1997
16.08.2011, 16:21
hey SlyD,
danke für die schnelle Rückmeldung;)
aber wenn es nicht daran lag, woran liegt es denn dann, dass das Display nicht reagiert?
LG Marcel
Ich hab in diesem Thread schon eigentlich alles mögliche geschrieben woran sowas liegen kann - lies das nochmal durch und überprüf ALLES nochmal GANZ GENAU.
Wenns kein Hardware Problem ist: Google SPLC780D
(nö das mache ich nicht für Dich das musst Du schon selbst erledigen ;) )
MfG,
SlyD
Morpheus1997
16.08.2011, 17:40
so, nachdem ich alles nochmal neu aufgelötet habe, tuts nun endlich....
es war wohl einfach nur irgendwo eine lötbrücke oder ein kurzschluss
Danke an alle, die versucht haben, das problem zu lösen ;)
LG Marcel
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.