16x2 Display hängt sich sporadisch auf. Störung durch 230-V-Leitung daneben?

Hallo Ihr Wissenden,

da unser Keller zur Schimmelbildung neigt, versuche ich mit einem Arduino-Klon eine intelligente Lüftersteuerung zu bauen. Klappt ja prinzipiell ganz gut, aber sporadisch hängt sich das LCD-Display auf und zeigt nur noch Müll an. Das Problem scheint nicht am Arduino zu liegen, das Programm läuft weiter.

Ich nutze einen Arduino Pro Mini - Klon ("Dswy_Robot") und Billig-16x2 Display und -Relaiskarte von freundlichen Chinesen auf Ebay. Das ganze habe ich zusammen mit einer Steckdose in einen Kabelabzweigkasten 100 x 100 eingebaut. Ist schnuckelig klein, aber dafür laufen die 230 V-Leitungen im Zentimeterabstand von Display und Arduino.

Zur Stromversorgung nutze ich ein externes Steckerschaltnetzteil mit 7,5 V, im Gehäuse habe ich einen LM7805-Spannungsregler, an dem dann alle Komponenten hängen. Dazu noch 2 DHT-22 Sensoren (jeweils Feuchte und Temperatur) über 3-adrige Kabel und fertig ist die Steuer-Hardware. Zum Ausprobieren hängt ein Sensor aus dem Fenster, der andere liegt im Kellerraum und ein 230-V-Badlüfter wird geschaltet.

Nach einem Reset initialisiert sich das Display zunächst richtig, die Textausgabe "beginne Messung" im "void setup" wird, soweit ich bisher sah, immer richtig angezeigt. Sporadisch hängt sich das Display dann aber gleich danach auf und zeigt beliebige Zeichen. Es kann aber auch zu einem beliebigen Zeitpunkt später geschehen, wobei ich das Gefühl habe, das der Fehler häufiger nach einem Relais-Schalten auftritt. Bei Programmstart schaltet das Relais auch kurz an und gleich wieder ab. Der recht häufige Absturz beim Programmstart könnte also auch damit zusammenhängen.

Am Anfang trat der Fehler noch viel häufiger auf. Da hatte ich noch einige doch nicht benötigte Masseleitungen frei im Gehäuse herumliegen. Zumindest im zeitlichen Zusammenhang mit der Entsorgung der Masseleitungen tritt der Fehler viel seltener auf. Beim Spannungsregler hatte ich Eingang und Ausgang eh schon zur Schwingungsvermeidung über Kondensatoren mit 200 nF an Masse liegen, zusätzlich habe ich jetzt noch einen 100 µF-Elko zur Spannungsstabilisierung an Ausgang und Masse gelötet. Ausserdem habe ich irgendwo gelesen, dass die Displays stabiler laufen sollen, wenn man "enable" über einen hochohmigen Widerstand an die Versorgungsspannung legt, brachte aber alles nichts.

Ich denke am wahrscheinlichsten liegt der Fehler daran, dass die 230 V Leitung im Gehäuse Störungen zwischen Display und µ-PC verursacht. Ein Kabelbruch der Datenleitungen kann es nicht sein, ich habe den Arduino-Klon mit einer Stiftleiste direkt auf das Display gelötet :slight_smile: Eine schlechte Lötstelle hoffentlich auch nicht, ich habe mich bemüht, sorgfältig zu arbeiten.
Gibt es noch irgendwas, was ich tun kann, außer doch ein größeres Gehäuse zu nehmen? Oder liegt es an einfach am Billigdisplay? Als Workaround könnte ich den "lcd.begin" in void loop legen, dann würde das Display zumindest regelmäßig initialisiert, denke ich.

Liebe Grüße und vielen Dank für jede Antwort

Sokkel

Hallo Sokkel,

folgendes von mir sind jetzt nur Erfahrungswerte und was ich hier gelesen hab:

Zum einem mit den Widerständen am Display:

Hier wird einem wohl gerne gesagt, dass man je einen 4k7 Ohm WIderstand zwischen +5 V und SDA/SCL hängen soll, dann sollen noch mal ein paar Spinnereien weniger sein (ob auch diese weiß ich nicht :X).

Was mir heut auch auffiel:

Ich schick auch Daten an meinen Arduino, über einen MAX487. Da ich gerade noch am basteln bin, liegt alles "nur lose aufm Schreibtisch rum". Dementsprechend ging auch eine ungeschirmte Ader zur Datenübertragung an der Lötstation vorbei. Als ich die vorher abgeschalten hab, hab ich mir gedacht: wtf?! Soviel zum Thema EMV..
Heißt, ich brauch auf jeden Fall eine abgeschirmte Datenleitung :wink:
Wie schauts denn mit deinen Messleitungen aus? Abgeschirmt und Schirm geerdet? Dein Abzweigkasten wird wahrscheinlich Platisk sein? Somit brauchte den nicht erden^^.
Was die 230 V Leitung angeht (soweit ich das in der Arbeit richtig verstanden hab ^^) sollte die eigentlich nichts ausmachen, sofern L und N im gleichen Kabel sind, da sich die Magnetfelder dann gegenseitig aufheben.

Ansonsten würde mir nur noch eins einfallen:
Ist irgendwas in der Nähe, was Frequenzen hat oder irgendwas, was funkt?

Falls das alles keine Lösungen sein sollten, weiß ich nichts mehr, und falls ich da falsches Zeug verzapft, ich wars nicht .__. :smiley:

LG

Fipsi

  1. Versuch mal probeweise einen Aufbau wo 230V und Arduino genügen Abstand haben. Dann kannst Du mit Sicherheit sagen ob es Störungen vomn den 230V sind.
  2. Du könntest ein SNUBBER-Glied paralell zu den Kontakten anschließen. EIn Snuubberist ein 100 Ohm Widerstand mit einem 0;1µF in Reihe. Diese gibt es bereits fertig in einem Gehäuse.
    Snubber – Wikipedia

Grüße Uwe

Fipsi:
Hallo Sokkel,

folgendes von mir sind jetzt nur Erfahrungswerte und was ich hier gelesen hab:

Zum einem mit den Widerständen am Display:

Hier wird einem wohl gerne gesagt, dass man je einen 4k7 Ohm WIderstand zwischen +5 V und SDA/SCL hängen soll, dann sollen noch mal ein paar Spinnereien weniger sein (ob auch diese weiß ich nicht :X).

Die 4k7 sind PullUp Widerstände. Die sollten eigentlich schon verbaut sein.

Du könntest mal schauen, ob du auf der Platine des I2C auch einen Keramikkondensator findest. Bin mir nicht sicher, ob die Chinesen an sowas immer denken.

Ich schick auch Daten an meinen Arduino, über einen MAX487. Da ich gerade noch am basteln bin, liegt alles "nur lose aufm Schreibtisch rum". Dementsprechend ging auch eine ungeschirmte Ader zur Datenübertragung an der Lötstation vorbei. Als ich die vorher abgeschalten hab, hab ich mir gedacht: wtf?! Soviel zum Thema EMV..

Kenn ich. Passiert bei meiner Weller Lötstation auch.

Abgeschirmte Leitung, auch wenn es nur Telefonkabel ist, sollte bereits abhilfe schaffen. Desweitern sollte man Steuerspannungen nicht parallel mit 230V Leitungen verlegen. Wenn möglich irgendwie getrennt.

Alternativ die Lösung von uwe, wenn nichts hilft.

sschultewolter:

Fipsi:
Hallo Sokkel,

folgendes von mir sind jetzt nur Erfahrungswerte und was ich hier gelesen hab:

Zum einem mit den Widerständen am Display:

Hier wird einem wohl gerne gesagt, dass man je einen 4k7 Ohm WIderstand zwischen +5 V und SDA/SCL hängen soll, dann sollen noch mal ein paar Spinnereien weniger sein (ob auch diese weiß ich nicht :X).

Die 4k7 sind PullUp Widerstände. Die sollten eigentlich schon verbaut sein.

Du könntest mal schauen, ob du auf der Platine des I2C auch einen Keramikkondensator findest. Bin mir nicht sicher, ob die Chinesen an sowas immer denken.

In meinem Platinenthread hatte jemand gesagt, dass die PullUps kaum auf den I2C's verbaut sind.. deswegen hab ich die nochmal eingebaut.
Und da die I2C-Platine im SMD-Style ist: hab ich keine Ahnung.

sschultewolter:

Ich schick auch Daten an meinen Arduino, über einen MAX487. Da ich gerade noch am basteln bin, liegt alles "nur lose aufm Schreibtisch rum". Dementsprechend ging auch eine ungeschirmte Ader zur Datenübertragung an der Lötstation vorbei. Als ich die vorher abgeschalten hab, hab ich mir gedacht: wtf?! Soviel zum Thema EMV..

Kenn ich. Passiert bei meiner Weller Lötstation auch.

Abgeschirmte Leitung, auch wenn es nur Telefonkabel ist, sollte bereits abhilfe schaffen. Desweitern sollte man Steuerspannungen nicht parallel mit 230V Leitungen verlegen. Wenn möglich irgendwie getrennt.

Alternativ die Lösung von uwe, wenn nichts hilft.

Also ich werd für mein des fertigen Projektaufbau sicherlich abgeschirmte Leitungen haben. Wollte mir nur jetzt noch keine kaufen und hatte noch 18 m Einzelader rumliegen, deswegen dachte ich mir, nehm ich die.. was dabei raus kommt, hab ich ja gesehn hust. Zum Testen aber ja in Ordnung, für mich^^.

LG

Fipsi

Hallo Fipsi, sschultewolter und Uwe,

vielen Dank für eure Antworten. Es liegt wirklich an den Störungen durch den Netzstrom. Ziehe ich den Lüfterstecker bei laufendem Motor aus der Steckdose an der Steuereinheit, dann flippt das Display jedes Mal aus, manchmal stürzt auch der Arduino-Klon ab. Beim "normalen Schaltvorgang" im ein paar cm weiter entfernten Relais sind die Auswirkungen halt nicht ganz so krass, da läuft der Arduino gewöhnlich weiter und auch das Display stürzt nur sporadisch ab.

Die Sensorleitungen sind bisher nicht geschirmt, aber das wird wohl auch nichts helfen. Es ist halt alles zu nah zusammen. Danke auch für den Hinwies auf den Snubber. Hätte nicht gedacht, dass das Schalten eines 12-Watt-Lüfters solche Auswirkungen hat, selbst bei einem 10-fachen Anlaufstrom dürfte der ja nur 0,5 A ziehen. Noch mehr 230 V-Gewurschtel will ich in dem kleinen Gehäuse lieber nicht schaffen, ich bau jetzt alles doch in ein größeres ein.

An sich sind mir diese winzigen China-Relais eh unheimlich. Da steht zwar "250V / 10 A" drauf und sie laufen problemlos. Aber wie das nach einer vielleicht jahrlangen Nutzung aussieht, wenn durch die Abnutzung der Kontakte nennenswerte Übergangswiderstände entstehen... Meinen Versuchsaufbau habe ich mit 1,6 A abgesichert und will eh noch eine Temperatursicherung einbauen. Und vielleicht doch lieber gleich ein teureres Relais.

Das Display ist übrigens kein I2C, sondern ein ganz simples mit HD44780-Controller. Das hätte ich eigentlich gleich im ersten Beitrag schreiben können:)

Vielen Dank noch einmal

Sokkel

Sokkel:
Das Display ist übrigens kein I2C, sondern ein ganz simples mit HD44780-Controller. Das hätte ich eigentlich gleich im ersten Beitrag schreiben können:)

In der Tat! Das hätte uns allen viel Raterei in der falschen Richtung erspart.
Wie lang sind denn deine Kabel zum Display überhaupt? Mehr als 10-15 cm würde ich bei normaler, paralleler Ansteuerung nicht machen.
I2C ist eine durchaus nützliche Alternative 2m sind damit absolut kein Ding. Ich habe dafür einfach einen Rest LAN-Kabel genommen. Eines der verdrillten Adernpaare für die Daten und ein anderes Paar für die Stromversorgung, ein weiteres Adernpaar für eine Status-LED. Schirm am Prozzi auf Masse. Das Kabel liegt ungefähr 1m parallel zu etlichen Netzspannung führenden Leitungen. Selbst ein LM35, der eine analoge Spannung um die 300mV liefert, liegt dort. Ebenfalls an einem geschirmten Kabel. Das Ganze läuft erzstabil. :slight_smile:
Ich habe keinen Arduino, sondern nur den ATMEGA328 mit Quarz auf Lochraster verbaut. Sowohl der ATMEGA hat einen 47µF Elko und 100n KerKo, als auch auf Displayseite über der Betriebsspannung nochmals das Selbe.
Der Analoginput mit dem LM35 hat gegen Masse einen 2,2µ MKT Folienkondensator sitzen. Dazu kommt dann noch einen Mittelwertbildung über mehrere Messungen. Man kann mit einem durchdachten Konzept also durchaus auch neben Netzkabeln brauchbare Ergebnisse erzielen :wink:

Gruß Gerald

Hallo,
wieviel Potensialausgleich (Schutzerde) nutzt Du denn in Deiner Schaltung?

Eine 220v Strippe in der Nähe des Arduino sollte den nicht aus den Takt
bringen.

"Ziehe ich den Lüfterstecker bei laufendem Motor"
Ist diese "Steckdose" potenzialfrei? Was schaltest Du da? Phase oder Null oder
beide?
Wenn Du die Last durch "Stecker ziehen" trennst, und Deine Schaltung spielt
verrückt, dann hast Du Dreck auf Deiner 220v Leitung. Den bekommst Du auch
nicht weg, wenn Du die Abstände vergrößerst.

Probiere einmal, das Steckernetzteil anders herum zu stecken.
Dann verwende ein Netzteil von guter Qualität.
Was noch in Betracht kommen würde, ist Deine Spannungsversorgung durch den
Stabi. Wie hast Du die Schaltung aufgebaut?
Bei den geringen Strömen brauchst Du keine Spannungsstabilisierung, sondern
eine einwandfreie Gleichspannung.
Das wäre der erste Weg dazu:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Hardware
unten, unter Spannungsversorgung.

Nicht wie bei Dir- mit "wird schon passen Kondensatoren"

Dann könnste Du in die Zuleitung zum µC noch einige KeramikKondensatoren
schalten.

Stabi + Acc
100n, 100n, 100n
Stabi - GND

Gruß und Glück
Andreas

ein ganz simples mit HD44780-Controller

Damit hatte ich auch mal Schwierigkeiten. Zeitweise hatte ich mit mehr oder weniger Erfolg die 20 cm Flachbandkabel zwischen Arduino und Display mit Alufolie abgeschirmt. Irgendwann hatte wohl der Display-Controller einen bleibenden Schaden abgekriegt und wurde zum Elektroschrott erklärt.

Mit einem anderen Display und anderem Aufbau gings dann viel besser.

Das Problem scheint nicht am Arduino zu liegen, das Programm läuft weiter.

Dass ein HD44780 empfindlicher auf Dreck reagiert als ein Arduino ist für mich schon glaubwürdig.
Spezielle Tricks um das Display zu resetten während der Arduino weiterläuft sind aber wohl nicht die wirkliche Lösung

Hallo,
"HD44780-Controller"
nach meinem WissensStand wird der schon lange nicht mehr produziert. Schaue doch am Display mal nach,
was es denn tatsächlich für einer ist.
Vielleicht verträgt der sich nicht mit Deiner DisplayLib. VerdrahtungsFehler bei Display´s verursachen auch gerne Fehler.
Gruß und Spaß
Andreas

Wenn kein Original, dann kompatibel. Der HD44780 ist fast Standard bei 16x2 und 20x4 Displays.

Aber LCD + Relais ist doch bekannt dafür Probleme zu machen.

Hallo und vielen Dank für eure Antworten,

ich muss gestehen, ich habe das Teil schon wieder zerlegt und will jetzt 2 von diesen Kästchen aneinanderschrauben; eins für die Steuerung und eines für das Relais mit Steckdose. Deswegen überlegt euch, ob ihr überhaupt noch weiterlesen wollt. Ich bin für eure Aufmerksamkeit natürlich weiter dankbar, will eure Zeit aber nicht vergeuden und vielleicht ist das Problem mit dem verdoppelten Gehäuse ja gelöst :slight_smile:

"HD44780-Controller"
nach meinem WissensStand wird der schon lange nicht mehr produziert

Ist halt ein kompatibles Teil, die werden noch massenhaft gefertigt.

wieviel Potensialausgleich (Schutzerde) nutzt Du denn in Deiner Schaltung?

Praktisch keine. Der Schutzleiter ist natürlich zur Steckdose durchgereicht, das Relais mit Nylonschrauben/-Muttern im Plastikgehäuse befestigt, der Sicherungshalter ist auch ganz aus Kunststoff. Ganz VDE-gerecht ist das natürlich nicht, da die Niedervoltteile mit Metallschrauben befestigt sind und theoretisch ein spannungsführendes Kabel sich lösen und ein Metallteil unter Strom setzen könnte.

Wenn Du die Last durch "Stecker ziehen" trennst, und Deine Schaltung spielt
verrückt, dann hast Du Dreck auf Deiner 220v Leitung

Ich dachte halt, dass ich beim Ziehen des Steckers einen Störimpuls verursache, etwa in der Art eines Funkensenders. Unter dem Tisch steht ein Gitarrenverstärker, der immer aus Sympathie laut mitknackt, wenn ich den oben erwähnten Lüfterstecker ziehe (und lustig "Musik" macht, wenn mein Handy kommuniziert).

Was noch in Betracht kommen würde, ist Deine Spannungsversorgung durch den
Stabi.

Für die Ausgangsseite des 7805 werden ja teilweise, wie für den Eingang, 330 nF, aber auch 100 nF empfohlen. Da dachte ich, mit den 2 x 200 nF mach ich auch nichts falsch. Das könnte ich aber natürlich noch ändern.

Ist diese "Steckdose" potenzialfrei? Was schaltest Du da? Phase oder Null oder
beide?

Ich schalte nur einpolig, habe natürlich brav dafür das braune Kabel genutzt. Das nutzt aber nicht viel, da das Teil eingangsseitig auch ein normales Netzkabel mit Stecker hat. Und darauf, ob ich den Eingangsstecker "richtigrum" einstecke, habe ich nicht geachtet.

Wie lang sind denn deine Kabel zum Display überhaupt?

Der Arduino-Klon hängt direkt am Display, alle Datenverbindungen < 2 cm. Nur Stromversorgung, Kontrast etc. sind länger.

Liebe Grüße und vielen Dank

Sokkel

Hallo,
"dass ich beim Ziehen des Steckers einen Störimpuls verursache"
den verursachst Du ohne Zweifel.
Der kann in Dein Netzteil gehen, von dort zum Stabi, von dort zum Arduino...
Probiere das mal mit zwei Gehäusen, vielleicht hat es sich dann schon erledigt.
Gruß und Glück
Andreas

Hallo Ihr Wissenden,

für den Fall, dass jemand mit ähnlichen Problemen hier nachliest, schreibe ich mal, wie es mir weiter erging:

die räumliche Trennung von Steuerung und Relais brachte nichts, auch nicht mit über einem Meter Abstand zwischen beiden und einem mehr oder minder abgeschirmten Kabel (AV-Cinch-Kabel) zur Relaisansteuerung. Auch ein Wechsel des Netzteils brachte nichts, auch nicht die Verwendung eines Labornetzteil mit Ringkerntrafo und dicken Kondensatoren. Ebenso wenig Erfolg hatte ich damit, das Netzteil in eine andere Steckerleiste als den Stecker für den Lüfter zu stecken. Es lag auch nicht speziell an dem Billig-Lüfter, den ich für die Versuche verwendete, mit dem deutlich teureren, der für den Dauerbetrieb vorgesehen ist, gabs die gleichen Probleme.

Zwischenzeitlich hatte ich noch einen analogen Temperatursensor (LM35) auf das Relais gepappt, da ich mir ja, wie oben geschrieben, nicht so sicher bin, wie sich die Billigteile im Dauerbetireb machen. Der sollte bei einer Temperaturerhöhung die Steuerung abschalten. Interessanterweise brannte mir dabei aber mehrmals, wenn ich durch Ziehen des Lüftersteckers im laufenden Lüfterbetrieb das Störereignis provozierte, der jeweils verwendete analoge Eingang des Arduinos durch. Weiterer Schaden entstand nicht, nur das Abfragen der "verbrauchten" Eingänge führt jetzt regelmäßig zu einem Reset.

Irgendwann hatte ich dann die Schnauze voll und habe mir ein paar Halbleiterrelais bestellt. Das Sharp S202 S12 im SIP-Gehäause z.B. schaltet im Nulldurchgang, hat einen eingebauten Snubber-Kreis und kostet bei Reichelt 8,55 Euro, dass S202 S02 ohne Snubber sogar nur 3,30 Euro (ebenso wie das S202 S01, aber das hat keine Nulldurchgangsschaltung!). Bei einem 22-Watt-Lüfter sind die Teile mit 8 A mehr als großzügig überdimensioniert und sie unterliegen keinem mechanischen Verschleiß. Mit einem S12 habe ich jetzt keine Störungen beim Schalten mehr, ein S02 hätte wahrscheinlich auch gereicht. Da gibt es eigentlich keinen Grund mehr dafür, die mechanischen China-Relais einzusetzen.

Interessanterweise führt jetzt auch das Ziehen des Lüftersteckers während der Lüfter läuft zu keinem Reset mehr. Das verstehe ich zwar nicht so ganz, begrüße es aber :slight_smile: Jetzt könnte ich den Gehäuse-Temperatursensor verwenden, aber es gibt keinen Grund dafür. Das Sharpteil produziert bei dieser minimalen Belastung praktisch keine Wärme und zur Sicherheit hab ich es auf eine gößeres, geerdetes Alublech montiert.

Viele Grüße und nochmals vielen Dank

Sokkel

Kannst du mal bitten Schaltungsunterlagen und Bilder nachreichen? Temperaturüberwachung von Bauteilen halte ich für überflüssig. Ausser bei Anwendung, die es erforderlich machen, da die Temperaturen je nach Anwendungsbereich etwas geregelt werden müssen.

Hallo,
wenn Du tatsächlich nur das Relais gegen ein Halbleiterrelais getauscht hast, dann wird es wohl daran gelegen haben, da Du eine (keine/falsche)
Freilaufdiode am Relais betrieben hast- und diese Störung durch den Abreißfunken des Relais erzeugt wurde.
Aber es läuft jetzt ja.
Gruß und Spaß
Andreas

Halbleiterrelais sind auch meine Favoriten, wenn es darum geht, Netzspannung zu schalten. Die Sharp's sind halt nur etwas kniffelig, was die Luftstrecken zwecks Isolation betrifft. Aber wenn du was sollche Arbeiten betrifft, fit bist, passt das schon. Ich hätte das Teil halt nicht jedem X-Beliebiegen empfohlen, wo ich nicht weiß, ob er damit umgehen kann. Dann lieber eine Nummer "dicker" mit Schraubklemmen.

Noch "Zu Fuß aufgebaute" SSR's mochte ich schon vor 30 Jahren. Solche Dinge, wie Lichtschlauch und Lichtorgel bekamen von mir alle per Optokoppler getrennte Leistungsstufen mit Triac. Da komplette Opto's schwer erhältlich und teuer waren, nahm ich runde 4mm IR-LEDs und Fototransistoren und schob die Face to Face in ein Stück Textilschlauch :slight_smile:
Was das Zeug damals kostete! So eine Leistungsstufe war preislich vergleichbar mit einem (original) Arduino :roll_eyes:
Aber dafür konnte ich sorglos im Steuerteil rumfummeln :wink:

Gruß Gerald