Hallo, habe hier einen "UV-Belichter im Scannergehäuse" zusammengebastelt. Die Beleuchtung besteht aus 4 Stück 15W UV-Leuchtstofflampen mit konventionellem Vorschaltgerät. Ein gesockelter Arduino Nano (auf einer Platine mit Relais zur Schaltung der 230 V Seite, Printnetzteil von Meanwell zur Versorgung des Nano und Kleinkram) versorgt das 2x16 HD44780 Display über 4 Datenleitungen. Das Kabel zum Display ist geschirmt und ca. 50 cm lang. Schirmung ist mit GND verbunden. RS, RW, E, D4, D5, D6, D7 haben 100 Ohm Serienwiderstände und 15 nF Kerkos gegen GND (direkt am Display). Das Display verabschiedet sich ab und an (meist nicht direkt, sondern erst nach ein paar Schaltvorgängen) mit Buchstabensalat. Der Arduino hängt sich dabei nicht auf. Habt Ihr noch ein paar Ideen, der EMI Herr zu werden?
Bullerbü schrieb: > Schirmung ist mit GND verbunden. RS, RW, > E, D4, D5, D6, D7 haben 100 Ohm Serienwiderstände und 15 nF Kerkos gegen > GND (direkt am Display). Was ist nah am Display? Nur die Kerkos oder auch die Widerstände? Außerdem: 100Ohm+15nF sind eigentlich viel zu viel. Das geht (wenn überhaupt) nur, wenn man das Display seeehr laaangsaaam ansteuert. Es kann aber durchaus auch sein, dass es Mindestanforderungen des Display bezüglich der Flankensteilheit verletzt. Aber egal, wenn normalerweise das Richtige erscheint, wird das Display scheinbar damit fertig und die Ansteuerung ist auch hinreichend langsam. > Das Display verabschiedet sich ab und an (meist nicht direkt, sondern > erst nach ein paar Schaltvorgängen) mit Buchstabensalat. Die Störungen kommen mit einiger Wahrscheinlichkeit über die Versorgung oder Masse. Versorgung läßt sich typisch leicht beheben, einfach besser entkoppeln. Floatende Massepotentiale bekommt man hingegen aber leider nur durch besseres Layout in Griff. Steckbrett-Aufbau?
Bullerbü schrieb: > RS, RW, E, D4, D5, D6, D7 haben 100 Ohm Serienwiderstände > und 15 nF Kerkos gegen GND (direkt am Display). Wenn man die Signale derart abflacht ist das kein Wunder. Da gehören überhaupt keine Kondensatoren hin. Wenn doch, dann würde ich höchstens 220pF verwenden. Aber nicht bei so kurzen Leitungen. c-hater schrieb: > Es kann aber durchaus > auch sein, dass es Mindestanforderungen des Display bezüglich der > Flankensteilheit verletzt. So ist es, mit Sicherheit. Konkret sind maximal 0,2µs für die steigenden und fallenden Flanken am Takteingang zulässig.
Thomas Z. schrieb:
> Wie hast du D0-D3 beschaltet? Ich hoffe doch auf VCC
Wieso auf VCC und nicht auf GND
Mr.Unklar schrieb: > Wieso auf VCC und nicht auf GND Weil der Chip intern Pull-Up Widerstände hat. Wenn du sie herunter ziehst, fließt unnötig viel Strom.
15nF scheinen mir auch viel zu hoch, max 100pF, wenn überhaupt. Man kann das LCD zyklisch neu initialisieren, d.h. den 4Bit-Mode. Das ist nicht zu sehen. Optimal schreibt man alles in einen RAM-Puffer, den man dann zyklisch ausgibt, z.B. im 1ms Interrupt immer je ein Byte.
Stefan ⛄ F. schrieb: > So ist es, mit Sicherheit. Konkret sind maximal 0,2µs für die steigenden > und fallenden Flanken am Takteingang zulässig. In dem mir vorliegenden HD44780-Datenblatt sind sogar noch steilere Flanken am E-Eingang spezifiziert: max. 25 ns für 2,7-4,5 V und max. 20 ns für 4,5 - 5,5 V. @ TO: Meine Empfehlung: nimm einfach am E-Eingang erst den Kondensator raus. wenn dann das Display richtig anzeigt, OK, ansonsten nimm noch den Serien-R raus. Alle anderen Verbindungen würde ich mal belassen.
Wieso machst du das über so viele Leitungen. Ich würde mir eine Adapter-Platine kaufen (mit PCF8574) kostet ca. 1.20 Euro. Dann das ganze via I2C anklemmen. Adapterplatine ist besser weil mit Helligkeitsregler (denn die Chinesen immer voll aufdrehen, deshalb nach den Einlöten, erst mal zurückdrehen des Poti). Funktioniert einwandfrei. Und verbaue ich immer. Die von dir genannten Pins brauche ich übrigens für die (meist) aufklebebare Membranen-Tastatur. :)
Nachtrag: Wenn du es so wie ich bauen würdest, und die Software anpassen, dann kannst du sogar die Zeit eingeben, Standart-Zeiten programmieren (nur die Zeit im nichtflüchtigen Speicher ablegen. Bei einer 16er Tastatur kannst du z.b. bei einer MENO-Taste dann 10 Werte fest o. Variable hinterlegen. Auf Wunsch sogar mit Beschreibung. Da gibt es gigantische Möglichkeiten.
Hi
>Wieso machst du das über so viele Leitungen.
Weil ein ATMega328xy mehr als ausreichnend IO-Pins zur verfügung hat. Da
muss man sich nicht noch durch so eine Duplo-Platine eine zusätzliche
Fehlerquelle ins Haus holen.
@Bullerbü
Wie sieht deine Stromversorgung aus. Wird das Relais aus der gleichen
Quelle wie der Nano versorgt?
Ich hatte vor ca. 15 Jahren einen ähnlichen Fall mit einem Belichter. Da
wurde oft der Controller beim Schalten der Leuchten resettet. Abhilfe
hat auf die schnelle die Trennung der Stromversorgung von Elektronik und
Lampenanteuerung geholfen.
MfG Spess
Bullerbü schrieb: > Hallo, > > habe hier einen "UV-Belichter im Scannergehäuse" zusammengebastelt. Die > Beleuchtung besteht aus 4 Stück 15W UV-Leuchtstofflampen mit > konventionellem Vorschaltgerät. Wie und wo wird da geschaltet? Vermutlich am Netzeingang des Vorschaltgeräts. > E, D4, D5, D6, D7 haben 100 Ohm Serienwiderstände und 15 nF Kerkos gegen > GND (direkt am Display). Die 15nF sind nicht sinnvoll, wurde ja schon gesagt. > Das Display verabschiedet sich ab und an (meist nicht direkt, sondern > erst nach ein paar Schaltvorgängen) mit Buchstabensalat. Beim Ein- oder Ausschalten? > Der Arduino > hängt sich dabei nicht auf. So ein Szenario gibt es oft. Der Würg-Around ist eine zyklische Neuinitialisierung des LCDs alle paar Sekunden. Man kann versuchen, die Störung zu minimieren, z.B. mit einem Snubber am Relais. Man kann versuchen, das LCD zu "härten". z.B. mit der GND-Verbindung des meist mestallischen Rahmens zu GND. Man kann auch versuchen, das LCD rückseitig mit Kupferfolie zu schirmen, alles schön mit GND verbinden. Kann helfen, muss nicht. Man kann dirkt am LCD VCC/GND nochmal mittels 100nF abzublocken. Man kann versuchen herauszufinden, ob das LCD auch abstürzt, wenn es keinerlei Kommandos bekommt. Wenn ja, ist es kein Problem der Ansteuersignale sondern von eingekoppelten Störungen, welche den LCD-Controller aus dem Takt bringen. Siehe oben.
Spendier mal den Datenleitungen auf einer Seite 10 kOhm Pullups oder Pulldowns, falls du nicht die internen Pullups verwendest. Ein Bild deiner Bastelei würde sicherlich helfen den Fehler zu finden.
Da ich ein HD44780 nur via i2c angeschlossen habe, kann ich nur vermuten. Aber das TO schreibt, er benutzt 4 !!! Datenleitungen. Lt. Datenblatt und Internet hat das Display aber 8 !!! Datenleitungen (d0 - d7). Kann es sein das der Treiber (die Lib) diese 8 Leitungen haben will. ??? Du also 8 Datenleitungen brauchst !! https://www.a-netz.de/blog/2007/08/hd44780-lc-display.html Wie gesagt, nur eine Vermutung. Aber als ich das Damals (andere Seite) gesehen habe waren mir so viele Pins zu viel, deshalb der Adapter und ICH bin glücklich damit.
Schlaumaier schrieb: > Kann es sein das der Treiber (die Lib) diese 8 Leitungen haben will. ??? Vermutlich um sich den 2. Takt zu sparen. Eine Ansteuerung über 4 Datenleitungen ist nämlich möglich, aber dann braucht man für die 8 Bits hat 2 Takte mit je 4 Bits. Steht alles im Link. Und habe ich auch damals gelesen aber vergessen. Wie gesagt zu viele Leitungen ;))
Hi >Aber das TO schreibt, er benutzt 4 !!! Datenleitungen. Lt. Datenblatt >und Internet hat das Display aber 8 !!! Datenleitungen (d0 - d7). Lässt sich in der Initialisierung umschalten: Function Set DL: Sets the interface data length. Data is sent or received in 8-bit lengths (DB7 to DB0) when DL is 1, and in 4-bit lengths (DB7 to DB4) when DL is 0.When 4-bit length is selected, data must be sent or received twice. >Eine Ansteuerung über 4 Datenleitungen ist nämlich möglich, aber dann >braucht man für die 8 Bits hat 2 Takte mit je 4 Bits. Das sind schon ein Paar mehr Takte. Hast du eigentlich schon mal ein LCD ohne C&P angesteuert? Deine Ahnungslosigkeit scheint 100% Programm Programm zu sein. MfG Spess
Schlaumaier schrieb: > Da ich ein HD44780 nur via i2c angeschlossen habe, kann ich nur > vermuten. Dann erspare uns Deinen akuten Schreibdurchfall! Die üblichen Chinesen-LCDs 1602 / 2004 habe ich sowohl parallel als auch mit I2C-Adapter in Betrieb. Die laufen durchgängig stabil und es gibt Gründe, weshalb man sich für welche Variante entscheidet. Wenn man sie blöd genug beschaltet, heißt das Eigentor. c-hater schrieb: > 100Ohm+15nF sind eigentlich viel zu viel. Das geht (wenn überhaupt) nur, > wenn man das Display seeehr laaangsaaam ansteuert. Es kann aber durchaus > auch sein, dass es Mindestanforderungen des Display bezüglich der > Flankensteilheit verletzt. Stefan ⛄ F. schrieb: > Wenn man die Signale derart abflacht ist das kein Wunder. Da gehören > überhaupt keine Kondensatoren hin. Anstatt mit RC zu pfuschen, wäre eine korrekte Verdrahtung des gesamten Gebildes anzustreben.
Wolfgang W. schrieb: > Meine Empfehlung: nimm einfach am E-Eingang erst den Kondensator raus. > wenn dann das Display richtig anzeigt, OK, ansonsten nimm noch den > Serien-R raus. Alle anderen Verbindungen würde ich mal belassen. Habe ich so umgesetzt. Display steigt immer noch nach ein paar Schaltvorgängen aus. Kondensatoren an RS, RW, E, D4, D5, D6, D7 entfernen bringt auch keinen Erfolg. Ich initialisiere jetzt nach jedem Belichtungsvorgang. Das funktioniert erstmal.
Hi >Ich initialisiere jetzt nach jedem >Belichtungsvorgang. Das funktioniert erstmal. Dann teste doch mal die Trennung der Stromversorgungen. MfG Spess
Wenn das Display beleuchtet ist würde ich mal einen Elko am Display ausprobieren.. 10uF oder die Beleuchtung testweise ausschalten. Falls die 50cm einen zu dünnen Querschnitt haben könnte VCC mit Beleuchtung schon am wackeln sein.
Schaltplan zeigen, Fotos vom Aufbau zeigen, Screenshots der Messung mit dem Oszi zeigen.
c-hater schrieb: > 100Ohm+15nF sind eigentlich viel zu viel Ja. Davon einmal abgesehen: Wertest du die Busy Flag aus? Einige Operationen des Controllers sind nämlich schnarchlangsam, und wenn man dann mit dem Schreiben nicht wartet, bis der Controller wieder bereit ist, gehen Daten verloren. Man kann auf die Auswertung des Busy verzichten, aber dann darf man nur sehr langsam schreiben, damit der Controller sich nicht verstolpert.
Hp M. schrieb: > Davon einmal abgesehen: Wertest du die Busy Flag aus? Wohl eher nich, mach keine Sau... > Einige Operationen des Controllers sind nämlich schnarchlangsam, Clear_Display, Return Home braucht fast 2ms! (So ab unter 10°C kanns auch was länger dauern, Takterzeugung RC-Schwinger) Der Rest < 40µs. Ich würd aber erst mal die gesamte Stromversorgung der Schaltung Entstören. PS&OT: Machs wie ich, spar dir das "überkandidelte" Display und nimm ne 7Seg. Anzeige. OK, das Loch is jetzt natürlich a bisserl groß für....
Bullerbü schrieb: > Ich initialisiere jetzt nach jedem > Belichtungsvorgang. Das funktioniert erstmal. Man kann auch versuchen, bei dem Schaltvorgang der Lampen ganz sicher KEINE LCD Zugriffe zu machen.
mit Foto meinte ich wies unter der Haube aussieht, also spricht deinen Aufbau, Platine, Verkabelung, ...
Thomas O. schrieb: > mit Foto meinte ich wies unter der Haube aussieht, also spricht deinen > Aufbau, Platine, Verkabelung, ... Sorry für die Verwirrung ABER ich bin NICHT der TO! Wäre auch ein extrem "Komisches" LCD... ;)
Hi, hab überhaupt keine Probleme mit Datenleitungslängen bis 50 cm (unabgeschirmtes Flachband) Das Einzige: der Enable-Impuls muss "sauber" rüberkommen. Alle anderen Bits sind reichlich unkritisch. Müssen aber zeitig genug am Bus anstehen, b e v o r die Ena-Impulsflanke (fallend) kommt. R/W ist fest gegen GND verschaltet. Busy wird nicht ausgewertet. LCD-Display-RAM hält normalerweise die Daten noch bei etwas wackliger 5V-Spannung innerhalb bestimmter Toleranzen. Sprich: An der Anzeige ändert sich nichts. Nur Schreib/Lesevorgänge klappen dann u. U. nicht mehr sauber. Meine Meinung: Layout-Fehler ciao gustav
Die m eisten dieser Display kann man sogar mit 3,3V betreiben. man muss dann aber eine negative Kontrastspannung für das Display bereit stellen.
Hatte ich auch mal. Bei mir war der Reset am Display nicht beschaltet. Ein Widerstand hat Wunder gewirkt...
Bullerbü schrieb: > RS, RW, > E, D4, D5, D6, D7 haben 100 Ohm Serienwiderstände und 15 nF Kerkos ... 15nF müssen alle raus. 200nF an VCC - GND an der Platine Zuleitungskabel nur "lang" verlegen, keine Windungen beim Verlegen verursachen.
Joe schrieb: > ... 15nF müssen alle raus. Hi, kann man ruhig drin lassen, nur dann den Enable-Impuls um die durch R und C in den Leitungen entstehende Zeitkonstante verzögern. Die Datenbits und Steuerbits sind "current state" bits, bei denen es auf die Flankensteilheit nicht so sehr ankommt. Das Enable-Bit ist aber ein "transition state" bit. Da kommt es sehr wohl auf die Flankensteilheit an. Da muss der Kondensator auf jeden Fall raus. Man kann das Weitere softwaremäßig lösen. Zum Beispiel vor dem Senden des Enable-Impulses eine Verzögerungsschleife einfügen. Nur wird das so wie so schon langsame LCD dann noch langsamer. 15 nF sind auch schon ziemlich viel. Wie so ein Impuls beispielsweise bei "nur" 2,2 nF Parallelkondensator aussieht -> siehe Bild. Der Enable-Impuls sollte wie mit "2" markiert aussehen. Sonst klappt das nicht. BTW: Über das Ansteuerprogramm wurde soweit ich das hier verfolgte, kein Wörtchen verloren. Welche LCD-Routine wird da verwendet, wie wird die ins Programm eingebunden? Vielleicht ist da auch noch etwas zu verbessern. ciao gustav
:
Bearbeitet durch User
Ich würde mir auch mal das gesamte Timing (ALLE!) der SW ansehen. Meiner Erfahrung nach liegen da 99% der Probleme mit HD44780 & Co. Denn, ist das knapp an Kante.....
Bullerbü schrieb: > RS, RW, > E, D4, D5, D6, D7 haben 100 Ohm Serienwiderstände und 15 nF Kerkos gegen > GND (direkt am Display). Hau raus den ganzen Mist. Die Aufladeströme der riesen Kondensatoren können Dir den GND des LCD anheben. Je nachdem, wie viele Pins gleichzeitig von 0V nach 5V wechseln. Daß das LCD spinnt, ist also völlig normal.
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.