HD44780 - EMI Problem

Gast #6829337
Lesenswert?

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?
Gast #6829418
Lesenswert?

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?
Gast #6829476
Lesenswert?

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.
#6829534
Lesenswert?

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.
Gast #6829560
Lesenswert?

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.
Gast #6829564
Lesenswert?

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. :)
Gast #6829569
Lesenswert?

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.
Gast #6829667
Lesenswert?

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
#6829681
Lesenswert?

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.
Gast #6829703
Lesenswert?

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.
Gast #6829705
Lesenswert?

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 ;))
Gast #6829721
Lesenswert?

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
Gast #6829727
Lesenswert?

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.
Gast #6829729
Lesenswert?

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.
#6829853
Lesenswert?

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.
#6829861
Lesenswert?

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....
Angehängte Dateien:
#6830037
Lesenswert?

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
#6831780
Lesenswert?

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
Angehängte Dateien:

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