Forum: Mikrocontroller und Digitale Elektronik Störungen von Relais (EMI) bringen I2C-Display/USB aus dem Takt


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von M. B. (bema16)



Lesenswert?

Guten Tag zusammen,

ich arbeite gerade an einem Versuchsaufbau für eine Heizungssteuerung 
und habe Probleme mit Störeinkopplungen auf den USB- und I2C-Leitungen.

Verwendete Komponenten:
- Arduino Uno R4 Minima
- 230V Heizpatrone mit 400 W
- Meanwell RS-15-12 12V-Netzteil
- Vier PT100 mit jeweils einem MAX31865 Breakout-Board 
(SPI-Schnittstelle)
- SHT31 Feuchtigkeitssensor (I2C-Schnittstelle)
- OLED-Display (I2C-Schnittstelle)
- Encoder/Drehgeber mit integriertem Taster
- Zwei mechanische Relais, einmal als Sicherheitsabschaltung in 
Verbindung mit einem Thermoschalter und einmal als Regelkontakt

Der Arduino misst die Temperaturen mithilfe der PT100-Sensoren. Einer 
der Temperaturwerte wird verwendet, um mit einem PID-Regler die 
Temperatur an der Heizpatrone auf einem konstanten Wert zu halten.
Auf dem Display ist eine kleine Menüsteuerung realisiert, um die Heizung 
ein- und auszuschalten und die Solltemperatur vorgeben zu können. Die 
aktuellen Messwerte für Temperatur und Feuchtigkeit werden ebenfalls auf 
dem Display angezeigt. Zusätzlich werden diese Werte über die 
USB-Schnittstelle an den PC übertragen, um diese loggen zu können.

Hinweis: Bei den bisherigen Arduinos, die ich verwendet habe, geht die 
USB-Leitung auf einen USB-Seriell Wandler und anschließend auf den 
eigentlichen Mikrocontroller. Bei dem Arduino Uno R4 Minima geht die 
USB-Leitung hingegen direkt auf den Mikrocontroller, es ist kein 
USB-Seriell Wandler dazwischengeschaltet. Der Arduino erscheint am PC 
als virtueller COM-Port.

Weiter Hinweis: In den Relaissockeln sind bereits Freilaufdioden 
integriert, deshalb habe ich diese nicht in den Schaltplan 
eingezeichnet.

Die Software funktioniert soweit problemlos. Die Menüsteuerung 
funktioniert so wie sie soll und die PID-Regelung arbeitet erstaunlich 
genau. Über den Encoder lässt sich das ganze System einwandfrei 
bedienen.
Ein Foto vom Aufbau habe ich angehängt. Ich verwende eine einfache 
Sperrholzplatte mit 3D-gedruckten Hutschienen und Kabelkanälen. Der 
obere Kabelkanal enthält ausschließlich 230V-Leitungen, während der 
untere Kabelkanal nur Steuerleitungen (5V/12V) enthält. Nicht besonders 
schön, aber für diesen Versuchsaufbau erstmal ausreichend.

Leider habe ich mit dem aktuellen Aufbau folgende Probleme:
1. Sobald ich die Heizung einschalte, bricht nach einiger Zeit die 
Übertragung der Messwerte an den PC ab. Über das Terminal kommen die 
ganze Zeit Daten zum PC, aber irgendwann stoppt die Übertragung einfach 
und es kommen keine neuen Daten mehr an. Der Arduino ist nach wie vor am 
PC als COM-Port sichtbar.
Wenn ich das USB-Kabel ziehe, wieder einstecke und anschließend die 
Verbindung im Terminal neu aufbaue, kommen auch wieder Daten an.
Manchmal passiert dies 30 Sekunden nach dem Start der Messung, manchmal 
dauert es mehrere Minuten.

2. Es kommt ab und zu vor, dass die Anzeige auf dem Display einfriert 
und nicht mehr aktualisiert wird. Ich kann das Menü aber nach wie vor 
"blind" mit dem Encoder bedienen. Wenn ich z.B. blind zu dem Menüpunkt 
zum Ausschalten der Heizung navigiere, kann ich die Heizung auch 
ausschalten.
Wenn ich den Arduino resette, bleibt die Anzeige nach wie vor 
eingefroren. Ich muss das Display (bzw. den Arduino und das Display) 
komplett stromlos machen und anschließend wieder einschalten, damit das 
Display wieder funktioniert. Es scheint so, als ob das Display gar nicht 
mehr auf I2C-Kommandos reagiert.

3. Selten (ca. alle 5-10 Minuten) erhalte ich mal einen falschen 
Temperaturwert von einem der PT100 - wenn die Temperatur normalerweise 
bei 90 Grad liegt, bekomme ich bspw. auf einmal einen Wert von 714 Grad 
angezeigt.

Sowohl beim Ausfall des Display als auch der USB-Verbindung regelt der 
Arduino die Temperatur problemlos weiter. Ich gehe also davon aus, dass 
die Software nach wie vor läuft, aber die Kommunikation nach außen nicht 
mehr funktioniert.

Ich habe mal mein Oszilloskop an die Signalleitungen geklemmt und konnte 
beim Einschalten des Relais massive Störimpulse messen. Im Anhang 
beispielhaft drei Screenshots, bei denen ich die USB-Leitungen gemessen 
habe. Man sieht, dass hier kurzzeitig die komplette Datenübertragung 
gestört wird. Ähnliche Störungen sind auch auf den I2C-Leitungen 
vorhanden.
Die Störungen treten beim EINschalten des Relais auf, beim Ausschalten 
triggert mein Oszilloskop nicht.

Folgendes habe ich versucht, um das Problem in den Griff zu bekommen:
- Leitung vom Relais zur Heizpatrone (ca. 1,5 m) mit Alufolie umwickelt 
und diese mit PE oder GND verbunden - keine Veränderung
- Ich habe versucht, das Relais mit Alufolie/Metallplatten, die ich mit 
PE verbunden habe, abzuschirmen - keine Änderung
- Austausch des Relais durch ein SSR - die oben beschriebenen Probleme 
treten nach wie vor auf, ich habe hier aber leider keine Messungen mit 
dem Oszilloskop gemacht; kann ich bei Bedarf nachholen
- Schaltung zur Nulldurchgangserkennung (Zero-Crossing) gebaut, um das 
SSR nur im Nulldurchgang einzuschalten - keine Änderung, beim 
mechanischen Relais ist das Schalten im Nulldurchgang durch das 
verzögerte Anziehen in meinen Augen nicht sinnvoll möglich
- Anfangs habe ich einen Relaissockel von Phoenix Contact (2903362) 
verwendet, welcher laut Datenblatt 6 A schafft. Diesen habe ich durch 
ein Wago 788-311 ersetzt, welcher laut Datenblatt 8 A schafft (ist auch 
auf dem Bild im Anhang zu sehen, das Phoenix Relais links daneben ist 
das zur Sicherheitsabschaltung) - keine Änderung
- Beide Kontakte des Wago-Relais parallelgeschaltet - keine Änderung
- Snubber über die Relaiskontakte abgebracht (Versuch 1: 100 Ohm/100 nF, 
Versuch 2: 50 Ohm (2x100 Ohm parallel)/220 nF) - keine Veränderung
- Heizpatrone testweise abgeklemmt, nur noch die Leitung zur Heizpatrone 
ist am Relais angeschlossen (keine Last) - massive Verbesserung, aber 
selten kommt es doch noch zu Ausfällen

Nachdem ich die Ursache der Störungen nicht eindämmen konnte, habe ich 
mich am Filtern versucht:
- 22 pF Kondensatoren nach GND in die I2C-Leitungen geschaltet + 5V 
direkt am Display mit 100 uF gepuffert - spürbare Verbesserung, aber 
nach wie vor häufige Ausfälle
- Leitungen zwischen OLED und Arduino deutlich verkürzt - erneut leichte 
Verbesserung, aber nach wie vor Ausfälle
- Klappferrite um I2C-Leitungen und USB-Kabel angebracht (an beiden 
Enden) - keine Veränderung
- Pi-Filter in die USB-Leitung eingeschliffen (ich weiß, keine gute 
Idee) - Arduino wird am PC nicht erkannt, Deskriptor kann nicht 
abgerufen werden

Mit meinem Transistor-Tester aus China messe ich an der Heizpatrone nur 
Widerstand und keine Induktivität. Auch, wenn ich eine Spule in Serie 
schalte, messe ich nur die Induktivität der Spule und keine zusätzliche 
Induktivität durch die Heizpatrone.
So langsam bin ich mit meinem Latein am Ende und ich weiß nicht, was ich 
sonst noch tun kann. Würde eine geschirmte Leitung zur Heizpatrone evtl. 
etwas bringen? Ich könnte mir vorstellen, dass die Alufolie nicht 
besonders gut dämpft. Die Störungen an der Quelle einzudämmen erscheint 
mir zielführender, als es mit Filtern zu versuchen.
Ich habe den Eindruck, dass es am Prellen der Relaiskontakte liegt. 
Gleichzeitig frage ich mich aber, warum das SSR hier für keine Besserung 
gesorgt hat.

Vielleicht hat ja jemand eine Idee oder Hinweis, wie ich hier 
weiterkomme. Ich würde mich sehr freuen, wenn mir jemand weiterhelfen 
könnte :-)

Danke und ein schönes Wochenende.

EDIT: Ich sehe gerade, dass ich im Schaltplan die Heizpatrone und die 
Nulldurchgangserkennung direkt an den L (vor dem LSS) angeschlossen habe 
- sorry, das ist falsch, sowohl die Heizpatrone als auch die 
Nulldurchgangs-Erkennung sind über den Leitungsschutzschalter 
abgesichert.

: Bearbeitet durch User
von Jörg R. (solar77)


Lesenswert?

Ich würde erst einmal die Verdrahtung ändern. Kurze Verbindungen, 
zentraler Punkt für GND.

: Bearbeitet durch User
von Monk (roehrmond)


Lesenswert?

Ich empfehle darüber hinaus 1,5k Ohm Pull-Up Widerstände am I2C Bus und 
Snubber entweder an den Kontakten der Relais oder (besser) parallel zur 
Last.

Beitrag #7739959 wurde vom Autor gelöscht.
von Falk B. (falk)


Lesenswert?

M. B. schrieb:

> 1. Sobald ich die Heizung einschalte, bricht nach einiger Zeit die
> Übertragung der Messwerte an den PC ab.

Was heißt das konkret? Nach welcher Zeit? Fällt das mit einem Schalten 
des Relais zusammen?

> ganze Zeit Daten zum PC, aber irgendwann stoppt die Übertragung einfach
> und es kommen keine neuen Daten mehr an. Der Arduino ist nach wie vor am
> PC als COM-Port sichtbar.

Klingt nach Softwarefehler in deinem Arduino.

> Wenn ich das USB-Kabel ziehe, wieder einstecke und anschließend die
> Verbindung im Terminal neu aufbaue, kommen auch wieder Daten an.

Da macht mindestens der USB-Teil einen Reset, ggf. sogar der ganze 
Arduino.

> Manchmal passiert dies 30 Sekunden nach dem Start der Messung, manchmal
> dauert es mehrere Minuten.

Wie oft schaltet das Relais für die Heizung?

> 2. Es kommt ab und zu vor, dass die Anzeige auf dem Display einfriert
> und nicht mehr aktualisiert wird. Ich kann das Menü aber nach wie vor
> "blind" mit dem Encoder bedienen. Wenn ich z.B. blind zu dem Menüpunkt
> zum Ausschalten der Heizung navigiere, kann ich die Heizung auch
> ausschalten.

Also klemmt der USB Teil und der Rest läuft weiter.

> Wenn ich den Arduino resette, bleibt die Anzeige nach wie vor
> eingefroren. Ich muss das Display (bzw. den Arduino und das Display)
> komplett stromlos machen und anschließend wieder einschalten, damit das
> Display wieder funktioniert.

Dann hast du ein Initialisierungsproblem in deiner Software,

> 3. Selten (ca. alle 5-10 Minuten) erhalte ich mal einen falschen
> Temperaturwert von einem der PT100 - wenn die Temperatur normalerweise
> bei 90 Grad liegt, bekomme ich bspw. auf einmal einen Wert von 714 Grad
> angezeigt.

Das kann ein Störpuls am Analogteil oder SPI sein.

> Ich habe mal mein Oszilloskop an die Signalleitungen geklemmt und konnte
> beim Einschalten des Relais massive Störimpulse messen. Im Anhang
> beispielhaft drei Screenshots, bei denen ich die USB-Leitungen gemessen
> habe. Man sieht, dass hier kurzzeitig die komplette Datenübertragung
> gestört wird. Ähnliche Störungen sind auch auf den I2C-Leitungen
> vorhanden.

Wie hast du das GENAU gemessen?

https://www.mikrocontroller.net/articles/Oszilloskop#Tastk%C3%B6pfe_richtig_benutzen

> Die Störungen treten beim EINschalten des Relais auf, beim Ausschalten
> triggert mein Oszilloskop nicht.

Der Kontakt prellt.

> Folgendes habe ich versucht, um das Problem in den Griff zu bekommen:
> - Leitung vom Relais zur Heizpatrone (ca. 1,5 m) mit Alufolie umwickelt
> und diese mit PE oder GND verbunden - keine Veränderung

Ist nicht sinnvoll. Wenn man schirmen will, muss die Schirmung auch auf 
ein Potential gelegt werden, meist PE oder GND.

> - Ich habe versucht, das Relais mit Alufolie/Metallplatten, die ich mit
> PE verbunden habe, abzuschirmen - keine Änderung

;-) Die Störungen breiten sich hier eher über die Kabel aus.

> - Austausch des Relais durch ein SSR - die oben beschriebenen Probleme
> treten nach wie vor auf,

Merkwürdig. SSR prellen nicht. Allerdings schalten die je nach Typ im 
Nulldurchgang der Spannung oder bei  beliebiger Phasenlage.

> - Anfangs habe ich einen Relaissockel von Phoenix Contact (2903362)
> verwendet, welcher laut Datenblatt 6 A schafft. Diesen habe ich durch
> ein Wago 788-311 ersetzt, welcher laut Datenblatt 8 A schafft (ist auch
> auf dem Bild im Anhang zu sehen, das Phoenix Relais links daneben ist
> das zur Sicherheitsabschaltung) - keine Änderung

Nutzlos.

> - Snubber über die Relaiskontakte abgebracht (Versuch 1: 100 Ohm/100 nF,
> Versuch 2: 50 Ohm (2x100 Ohm parallel)/220 nF) - keine Veränderung

Hmm, merkwürdig.

> - Heizpatrone testweise abgeklemmt, nur noch die Leitung zur Heizpatrone
> ist am Relais angeschlossen (keine Last) - massive Verbesserung, aber
> selten kommt es doch noch zu Ausfällen

Ein Indiz, daß da noch was faul ist.

> - 22 pF Kondensatoren nach GND in die I2C-Leitungen geschaltet + 5V
> direkt am Display mit 100 uF gepuffert - spürbare Verbesserung, aber
> nach wie vor häufige Ausfälle

Schon mal gut, kann man bis 100pF hochgehen.

> - Pi-Filter in die USB-Leitung eingeschliffen (ich weiß, keine gute
> Idee) - Arduino wird am PC nicht erkannt, Deskriptor kann nicht
> abgerufen werden

Das ist Unsinn.

> sonst noch tun kann. Würde eine geschirmte Leitung zur Heizpatrone evtl.
> etwas bringen?

Eher nicht.

> besonders gut dämpft. Die Störungen an der Quelle einzudämmen erscheint
> mir zielführender, als es mit Filtern zu versuchen.

Das ist der Idealfall in Lehrbuch, den man aber oft nicht erreicht. Ich 
glaube eher, daß deine Störsenke, der Arduino mit seinem Drumherum zu 
empfindlich ist. Man muss herausfinden, warum das so ist und 
Gegenmaßnahmen treffen.

> Ich habe den Eindruck, dass es am Prellen der Relaiskontakte liegt.

Vermutlich.

> Gleichzeitig frage ich mich aber, warum das SSR hier für keine Besserung
> gesorgt hat.

Gute Frage.

Du hast schon sehr viel gemacht. Dein Aufbau sieht erstmal gut aus. Aber 
hier noch ein paar Anmerkungen.

Die Ausgangsmasse vom Netzteil sollte geerdet sein, sprich mit PE 
verbunden.
Deine Sensoren soltlen nur über das Kabel zum Arduino geerdet sein, 
nicht zusätzlich irgendwo mit einem Kabel (sternförmige Erdung)
Du solltest eine Status-LED auf dem Arduino reglemäßig blinken lassen, 
wenn deine Sendefunktion zum USB aktiv ist. Damit sieht man, ob die noch 
läuft oder nicht.
Dein Kabel mit SPI zu den ADCs ist schon recht lang, das kann schief 
gehen. Hier sollte man mindestens eine Serienterminierung für SCK 
vorsehen, siehe Wellenwiderstand.
Prüfe, ob du den richtigen SPI-Mode eingestellt hast. Manchmal läuft das 
auch sehr grenzwertig und instabil mit dem falschen Modus.

Zum Testen sollte man die Störung STÄRKER machen. Sprich, schalte das 
Relais oft, sagen wir mit 0,5 Hz. Schalte wenn möglich einen stärkere 
Last. Dadurch provoziert man den Fehler leichter und häufiger und kann 
einfacher und schneller Gegenmaßnahmen prüfen.
Beobachte, wann die Funktionsstörung auftritt.
Dein Display braucht keine 100uF, das ist zuviel und nur bedingt HF 
wirksam. Nimm dort einen 100nF Keramikkondensator.
Den Snubber über dem Relaiskontakt sollte man behalten, dort ist er 
optimal.

von Falk B. (falk)


Lesenswert?

In der Software sollte man prüfen, ob das Display noch auf den I2C 
Zugriff reagiert. Wenn nein, muss man einen Softwarereset des Displays 
machen. Im Extremfall, wenn das allein nicht reicht, muss man dessen 
Stromversorgung vom Arduino schaltbar machen und einen Hardwarereset 
machen. Das ist zumindest ein Workaround fpr den Fall, daß man die 
Störung nicht bedämpfen kann.

von M. B. (bema16)


Angehängte Dateien:

Lesenswert?

Erstmal vielen Dank für die bisherige Beteiligung.
Der Elektronikaufbau steht gerade im Nachbarort, ich schaue, dass ich 
ihn bis morgen hier herhole, um die Vorschläge testen zu können.

Jörg R. schrieb:
> Ich würde erst einmal die Verdrahtung ändern. Kurze Verbindungen,
> zentraler Punkt für GND.

Ich werde schauen, wo ich hier noch optimieren kann. Aktuell sitzt auf 
dem Arduino eine Aufsteckplatine und alle Sensoren, das Display, das 
Relais etc. sind dort mittels Steckverbinder angeschlossen und bekommen 
dort auch ihre Masse und Versorgung. Einzige Ausnahme ist aktuell die 
Schaltung für die Nulldurchgangserkennung ganz rechts im Bild. Ich kann 
bei Bedarf ein besseres Bild nachliefern, sobald der Aufbau hier ist.

Monk schrieb:
> Ich empfehle darüber hinaus 1,5k Ohm Pull-Up Widerstände am I2C Bus und
> Snubber entweder an den Kontakten der Relais oder (besser) parallel zur
> Last.

Im Schaltplan sind 4,7k als Pullup beim I2C eingezeichnet, aber der 
Feuchtigkeitssensor und das Display sind "Breakout-Boards", auf denen 
ebenfalls nochmal Pullups sitzen. Ich müsste mal die resultierenden 
Pullup-Widerstände mit dem Multimeter nachmessen.
Snubber habe ich aktuell parallel zu den Relaiskontakten, parallel zur 
Last habe ich tatsächlich noch nicht getestet. Werde ich ausprobieren.

Falk B. schrieb:
> Was heißt das konkret? Nach welcher Zeit? Fällt das mit einem Schalten
> des Relais zusammen?

Der Ausfall fällt definitiv mit dem Schalten des Relais zusammen. 
Manchmal kommt es 10 Sekunden nach dem Einschalten der Heizung zu einem 
Ausfall, manchmal erst nach einigen Minuten, ein Muster erkenne ich 
nicht.
Lasse ich die Heizung ausgeschaltet, funktionieren sowohl Kommunikation 
als auch Display dauerhaft problemlos.

Falk B. schrieb:
> Klingt nach Softwarefehler in deinem Arduino.
>
>> Wenn ich das USB-Kabel ziehe, wieder einstecke und anschließend die
>> Verbindung im Terminal neu aufbaue, kommen auch wieder Daten an.
>
> Da macht mindestens der USB-Teil einen Reset, ggf. sogar der ganze
> Arduino.

Der Arduino macht definitiv keinen Reset, die Heizung bleibt 
eingeschaltet und der PID-Regler regelt weiterhin. Dass der USB-Teil 
einen Reset macht, ist aber gut möglich.

Falk B. schrieb:
> Wie oft schaltet das Relais für die Heizung?

Die Periodendauer beträgt eine Sekunde, der PID-Regler gibt eine 
Einschaltdauer von 0-1000 ms vor. Werte unter 50 ms ignoriere ich in der 
Software (Relais wird nicht eingeschaltet), weil es in meinen Augen 
keinen Sinn macht, ein mechanisches Relais nur so kurz einzuschalten.

Falk B. schrieb:
> Wie hast du das GENAU gemessen?
>
> 
https://www.mikrocontroller.net/articles/Oszilloskop#Tastk%C3%B6pfe_richtig_benutzen

Guter Punkt. Ich habe die Masse mit der Krokodilklemme vom Tastkopf 
abgegriffen, was natürlich nicht optimal ist.
Ich werde die Messung mit einer Massefeder wiederholen und auch den Tipp 
mit der GND-Messung anwenden.

Falk B. schrieb:
>> Folgendes habe ich versucht, um das Problem in den Griff zu bekommen:
>> - Leitung vom Relais zur Heizpatrone (ca. 1,5 m) mit Alufolie umwickelt
>> und diese mit PE oder GND verbunden - keine Veränderung
>
> Ist nicht sinnvoll. Wenn man schirmen will, muss die Schirmung auch auf
> ein Potential gelegt werden, meist PE oder GND.

Ich habe die Alufolie mittels Krokokabel auf PE und GND gelegt (das 
meinte ich in dem von dir zitierten Teil), beides hat für keine 
merkliche Besserung gesorgt.

Falk B. schrieb:
>> - Snubber über die Relaiskontakte abgebracht (Versuch 1: 100 Ohm/100 nF,
>> Versuch 2: 50 Ohm (2x100 Ohm parallel)/220 nF) - keine Veränderung
>
> Hmm, merkwürdig.

Falk B. schrieb:
>> Gleichzeitig frage ich mich aber, warum das SSR hier für keine Besserung
>> gesorgt hat.
>
> Gute Frage.

Ich sehe schon, ich sollte das SSR nochmal einbauen und Messungen mit 
dem Oszilloskop machen. Es ist leider eines dieser "China 40 A SSRs" 
(siehe Bild im Anhang), aber das sollte jetzt erstmal keine Rolle 
spielen. Klicken tut es jedenfalls nicht :D

Falk B. schrieb:
> Die Ausgangsmasse vom Netzteil sollte geerdet sein, sprich mit PE
> verbunden.

Ich habe mal das Blockdiagramm des Netzteils aus dem Datenblatt 
angehängt. Hier ist ein Kondensator von GND nach PE eingezeichnet, eine 
gewisse Filterung sollte also schon vorhanden sein. Ich klemme GND aber 
testweise mal direkt auf PE.

Falk B. schrieb:
> Deine Sensoren soltlen nur über das Kabel zum Arduino geerdet sein,
> nicht zusätzlich irgendwo mit einem Kabel (sternförmige Erdung)

Ich werde prüfen, ob das wirklich überall der Fall ist und ggf. 
Anpassungen vornehmen.

Falk B. schrieb:
> Du solltest eine Status-LED auf dem Arduino reglemäßig blinken lassen,
> wenn deine Sendefunktion zum USB aktiv ist. Damit sieht man, ob die noch
> läuft oder nicht.

Das ist eine gute Idee, werde ich so umsetzen.

Falk B. schrieb:
> Dein Kabel mit SPI zu den ADCs ist schon recht lang, das kann schief
> gehen. Hier sollte man mindestens eine Serienterminierung für SCK
> vorsehen, siehe Wellenwiderstand.
> Prüfe, ob du den richtigen SPI-Mode eingestellt hast. Manchmal läuft das
> auch sehr grenzwertig und instabil mit dem falschen Modus.

Serienterminierung werden ich so umsetzen, ggf. kann ich auch das Kabel 
kürzer machen. Für die MAX31865 verwende ich eine fertige Bibliothek von 
Adafruit, ich werde prüfen, welcher SPI-Modus hier verwendet wird und ob 
es zum Datenblatt des MAX31865 passt.

Falk B. schrieb:
> Zum Testen sollte man die Störung STÄRKER machen. Sprich, schalte das
> Relais oft, sagen wir mit 0,5 Hz. Schalte wenn möglich einen stärkere
> Last. Dadurch provoziert man den Fehler leichter und häufiger und kann
> einfacher und schneller Gegenmaßnahmen prüfen.
> Beobachte, wann die Funktionsstörung auftritt.

Das klingt sinnvoll, werde ich so machen. Evtl. finde ich noch eine 
zusätzliche Last, die ich zur Heizpatrone parallelschalten kann.

Falk B. schrieb:
> Dein Display braucht keine 100uF, das ist zuviel und nur bedingt HF
> wirksam. Nimm dort einen 100nF Keramikkondensator.

Falk B. schrieb:
> Schon mal gut, kann man bis 100pF hochgehen.

Werde ich beides entsprechend abändern.

Falk B. schrieb:
> In der Software sollte man prüfen, ob das Display noch auf den I2C
> Zugriff reagiert. Wenn nein, muss man einen Softwarereset des Displays
> machen. Im Extremfall, wenn das allein nicht reicht, muss man dessen
> Stromversorgung vom Arduino schaltbar machen und einen Hardwarereset
> machen. Das ist zumindest ein Workaround fpr den Fall, daß man die
> Störung nicht bedämpfen kann.

Auch hier verwende ich eine fertige Bibliothek von Adafruit. Ich werde 
prüfen, ob das ACK/die Antworten vom Display überprüft werden und ob ich 
ggf. eine Funktion zum Resetten einbauen kann.
Einen Hardwarereset sehe ich als letzte Möglichkeit an, vielleicht 
schaffe ich es ja auch ohne. Wenn es nicht klappt, muss es aber wohl 
sein.



Schon mal vielen Dank für die vielen Hinweise. Ich kümmere mich darum, 
dass ich den Aufbau in die Finger bekomme und werde zeitnah Rückmeldung 
geben, sobald es neue Erkenntnisse gibt.

von Thomas Z. (usbman)


Lesenswert?

Besorg dir USBDeviceView von Uwe Sieber. Dann kontrolliere ob nach einem 
USB Absturz noch die die Deskriptoren geliefert werden. Sollten die 
kommen funktioniert USB und die Bulkpuffer sind festgefahren.
Das kann auch an einer schlechten VCP Implementierung liegen. Gibt es 
sowas wie flush?

von Chris K. (kathe)


Lesenswert?

Zu viel Text.

Viel zu viel lange Kabel die als Antenne sich gegenseitig beinflussen 
können. Die Relais sind nicht sichtbar.
Getrennte Kabelführung zu dem Poti und "Hochstrom" Schaltern sehe ich 
nicht ....

von Monk (roehrmond)


Angehängte Dateien:

Lesenswert?

Chris K. schrieb:
> Die Relais sind nicht sichtbar.

von Falk B. (falk)


Lesenswert?

Chris K. schrieb:
> Viel zu viel lange Kabel die als Antenne sich gegenseitig beinflussen

Blödsinn. Aber Hauptsache geschwätzt.

> können. Die Relais sind nicht sichtbar.
> Getrennte Kabelführung zu dem Poti und "Hochstrom" Schaltern sehe ich
> nicht ....

Weil du blind bist.

von Chris V. (nagut)


Lesenswert?

Offenbar fängst Du Dir Störungen vom Laststromkreis (logisch), aber auch 
von der Relaisansteuerung (!) ein. Letzteres wird ersichtlich durch den 
Versuch mit abgeklemmter Last.

Ich würde mir die Relaisansteuerung nochmal genauer anschauen 
(Funktioniert die angeblich im Sockel eingebaute Diode wirklich?), und 
die 12V-Versorgung für die Logikschaltkreise vorm Arduino über ein 
LC-Filter führen. Danach dann auf ordentliche Masseführung achten, und 
alle Leitungen (auch die +5V-Versorgung) weit weg von den mutmaßlich 
"verseuchten" 12V und Netzleitungen.

D.h. Dein gemischter Niederspannungkabelkanal mit Logikleitungen zum 
Dreh-Encoder und Relaisansteuerung schön parallel geführt ist vermutlich 
nicht die beste Idee.


PS: die USB-Messungen zeigen zwar, dass die Kommunikation genau dann 
abzureißen scheint (Stoerungen_USB_2.png), aber die gemessene Störung 
ist im Gleichtakt auf beiden Busleitungen. Sehr wahrscheinlich ist das 
ohnehin nur ein Artefakt Deiner Messstrippen - aber selbst wenn es 
wirklich so auf dem Busleitungen liegt, würde es den USB-Bus nicht 
durcheinanderbringen. Genau deswegen benutzt man dort ein symmetrisches 
Signal.

: Bearbeitet durch User
von L.S. (lagerschaden)


Angehängte Dateien:

Lesenswert?

Monk schrieb:
> Ich empfehle darüber hinaus 1,5k Ohm Pull-Up Widerstände am I2C
> Bus und
> Snubber entweder an den Kontakten der Relais oder (besser) parallel zur
> Last.

Das ist m.E. die vordringlichste Massnahme. Der häufigste Fehler bei 
I2C-Problemen sind die Pullups, weil viele den I2C-Bus nicht verstehen.

Bei 3V3 kann man mit den Pullups (Geamtwert) sogar bis auf 1 k 
heruntergehen, siehe Bild

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

L.S. schrieb:
> Das ist m.E. die vordringlichste Massnahme. Der häufigste Fehler bei
> I2C-Problemen sind die Pullups, weil viele den I2C-Bus nicht verstehen.

So wie du EMV nicht verstehst. Für eine HF-Störung ist der Unterschied 
zwischen 5k und 1k Pull Up Widerstand sehr gering. Die deutlich größere 
Wirkung erzielt man dabei mit einem Kondensator, denn der ist um 
GRÖßENORDNUGNEN niederohmiger im entscheidenden Frequenzbereich. Der 
liegt nicht bei ein paar kHz sondern einigen MHz.
1
XC = 1/(2*Pi*f*C) = 1/(2*Pi*10MHz*100pF) = 160 Ohm

Dort kommt man mit niederohmigen Pull Ups nicht mal ansatzweise hin, 
schon gar nicht bei höheren Frequenzen.

von Frank O. (frank_o)


Lesenswert?

M. B. schrieb:
> Folgendes habe ich versucht, um das Problem in den Griff zu bekommen:
> - Leitung vom Relais zur Heizpatrone (ca. 1,5 m) mit Alufolie umwickelt

Versuche doch einmal einen anderen Stromkreis für die Heizpatrone zu 
nehmen, als für dein Netzteil.
Dann dickere Kabel an die Heizpatrone.
Dicke Kondensatoren am Ausgang vom Netzteil.

Beitrag #7740482 wurde vom Autor gelöscht.
von Rainer W. (rawi)


Lesenswert?

M. B. schrieb:
> Weiter Hinweis: In den Relaissockeln sind bereits Freilaufdioden
> integriert, deshalb habe ich diese nicht in den Schaltplan
> eingezeichnet.

Das ist kein Grund, die Freilaufdioden im Schaltplan zu verschweigen. 
Gerade, wenn es um Störungssuche geht, sind die essenziell. Dazu wären 
auch Angaben zu der Höhe der geschalteten Ströme hilfreich.

Der Schaltplan soll zeigen, wie die Schaltung aufgebaut ist und nicht, 
welche Modules es gibt. Das ist der Unterschied zwischen Schaltplan und 
Blockschaltbild.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Rainer W. schrieb:
> Das ist kein Grund, die Freilaufdioden im Schaltplan zu verschweigen.
> Gerade, wenn es um Störungssuche geht, sind die essenziell. Dazu wären
> auch Angaben zu der Höhe der geschalteten Ströme hilfreich.

Versuchs mal mit Lesen und dem ohmschen Gesetz.

> Der Schaltplan soll zeigen, wie die Schaltung aufgebaut ist

Das tut er!

von M. B. (bema16)



Lesenswert?

So, ich habe die Holzplatte mit der Elektronik heute morgen zu mir 
geholt und es gibt neue Erkenntnisse.

Als erstes habe ich mit dem Oszilloskop und einem Tastkopf mit 
Massefeder (ohne Krokoklemme) gegen GND gemessen und die Heizung 
eingeschaltet. Hierbei konnte ich keine Störungen auf dem Oszilloskop 
erkennen - Einkopplungen in die Tastkopfleitung sollten also nicht 
vorhanden sein.

Anschließend habe ich nochmal die Störungen beim Einschalten des Relais 
auf den USB- und I2C-Leitungen gemessen, ebenfalls mit der Massefeder. 
Screenshots vom Oszi habe ich angehängt, die gelbe Linie ist jeweils das 
USB/I2C-Signal und die violette Linie die 230V, die vom Relais 
geschalten werden. Ich denke, damit ist auf jeden Fall klar, dass die 
Störungen beim Einschalten des Relais das Problem sind. Auch auf die 5V 
Versorgung koppeln die Störungen ein.

Anschließend habe ich nochmal das SSR eingebaut und die Messungen 
wiederholt. Hierbei konnte ich überhaupt keine Störungen auf dem 
Oszilloskop erkennen, was mich überrascht hat, weil ich mit dem SSR, wie 
oben beschrieben, ebenfalls Probleme hatte. Auf der anderen Seite macht 
es aber natürlich Sinn, dass ich mit dem SSR keine Störungen habe, weil 
dieses nicht prellt und zusätzlich im Nulldurchgang eingeschaltet wird. 
Das war schließlich auch der Grund, weshalb ich überhaupt auf die Idee 
gekommen bin, das SSR einzubauen.
Die Screenshots habe ich ebenfalls wieder angehängt.

Nun habe ich mit dem SSR nochmal einen Dauerlauf gestartet - Arduino an 
den PC gehängt, Terminal geöffnet, 70 Grad als Zieltemperatur 
eingestellt und die Heizung aktiviert. Der Arduino hat die Temperatur 
geregelt und das SSR wurde jede Sekunde ein- und ausgeschaltet. Nach 
kurzer Zeit (ca. vier Minuten) ist wieder das Display ausgestiegen 
(Anzeige eingefroren), aber die USB-Kommunikation hat die ganze Zeit 
(gute zwei Stunden) problemlos funktioniert und ich hatte keinen 
Ausfall. Komische Temperaturwerte hatte ich ebenfalls nicht.
Ich habe im Kopf, dass ich bei meinem ersten Versuch mit dem SSR auch 
Probleme mit dem USB hatte, aber es kann gut sein, dass ich den Test 
beim ersten Versuch direkt abgebrochen habe, als das Display eingefroren 
ist, und ich das jetzt durcheinanderbringe. Deshalb: Immer alles 
dokumentieren und nicht "mal eben schnell" etwas ausprobieren - hier 
habe ich wahrscheinlich etwas schludrig gearbeitet, mein Fehler.

Durch den Test von oben habe ich das Gefühl, dass das Problem mit dem 
Display eher softwarebedingt ist, ich werde aber trotzdem mal die 100 pF 
Kondensatoren an SDA und SCL hängen und den 100 uF Kondensator durch 100 
nF ersetzen. Auch die Pullups werde ich nochmal überprüfen und ggf. 
verkleinern, mir ist aufgefallen, dass die Anstiegsflanken auf dem Oszi 
nicht so klasse aussehen. Falls das nicht hilft, schaue ich mir die 
Software nochmal genauer an.

Ich will mich noch nicht zu früh freuen und ich werde noch einige Tests 
machen, aber aktuell sieht es so aus, dass es mit dem SSR entgegen 
meinem ersten Test doch (fast) zuverlässig funktioniert. Ich werde auf 
jeden Fall ein Update geben, wenn es Neuigkeiten gibt :-)

Danke an alle, die Gedanken gemacht haben und Hinweise gegeben haben. 
Ich wünsche noch einen schönen Sonntag Abend.

von Stephan S. (uxdx)


Lesenswert?

und hast Du jetzt auch mal die Pullups auf 1k geändert und gemessen?

von Frank O. (frank_o)


Lesenswert?

Hast du eigentlich einmal den Strom gemessen oder zumindest zusammen 
gerechnet. Bei dem ganzen Zeug, was du da dran hast, sind die 1,3A nicht 
gerade überschwänglich viel Strom.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

M. B. schrieb:
> Anschließend habe ich nochmal die Störungen beim Einschalten des Relais
> auf den USB- und I2C-Leitungen gemessen, ebenfalls mit der Massefeder.
Und wo hast du die Massefeder kontaktiert? Denn wenn du wissen willst, 
wa das jeweilige Bauteil "sieht", musst du direkt am IC den Signalpin 
kontaktieren und direkt an selben IC den nächstgelegenen Massepunkt. 
Dann siehst du auf dem Oszi, was das IC auch sieht.

> mal die 100 pF Kondensatoren an SDA und SCL hängen
Das ist wildes Gebastel. Besser als das Beschönigen von Symptomen ist 
die Behebung der Ursache.

> Auch auf die 5V Versorgung koppeln die Störungen ein.
Miss mal "Masse gegen Masse" also die Masseklemme des Oszis an einen 
Massepunkt (z.B. am µC) und die Messpitze an einen anderen Massepunkt 
(z.B. am I²C-Device). Im Idealfall solltest du dann (wegen Masse = 
Masse) immer einen geraden Strich bei 0V auf dem Oszi sehen. Was siehst 
du tatsächlich? Wenn da genau dasselbe wilde Gezappel zu sehen ist, dann 
hast du einfach nur eine schlechte Masseführung.

> will mich noch nicht zu früh freuen und werde noch einige Tests machen
Das solltest du tun, denn deine Schaltung ist ja nicht nur auf die 
Störungen sensibel, die sie selber produziert, sondern natürlich auch 
auf die, die von aussen kommen.

Ich mache da immer so einen einfachen Burst-Test mit einem "Kerbl 
Handyshock" Nachbau, wie im
Beitrag "Re: Tiefentladungsschutz mit Attiny und P-Kanal Fet" beschrieben. Wenn 
das gut geht, dann ist meine Schaltung ordentlich aufgebaut. Die 
rustikalere Variante eines solchen Tests ist im selben Thread weiter 
unten im Beitrag "Re: Tiefentladungsschutz mit Attiny und P-Kanal Fet" 
beschrieben.

Aber eines ist sicher: dein störempfindlicher Aufbau wird keinen dieser 
Tests fehlerfrei bestehen.

: Bearbeitet durch Moderator
von M. B. (bema16)


Lesenswert?

Stephan S. schrieb:
> und hast Du jetzt auch mal die Pullups auf 1k geändert und gemessen?

Das wollte ich gerade tun und dabei ist mir folgendes aufgefallen:
- Am Arduino habe ich - wie im Schaltplan eingezeichnet - 4,7 kOhm 
Pullups vorgesehen
- Der Feuchtesensor verfügt über zwei 10 kOhm Pullups nach VCC, die 
bereits auf dem Breakout-Board installiert sind
- Auf der Platine des OLED-Displays ist ein 3,3 V Spannungsregler 
vorgesehen, welcher aus den 5V die Versorgung für das Display generiert. 
Offensichtlich verträgt dieses nur 3,3 V.
Zusätzlich gibt es zwei 10 kOhm Pullups, die aber gegen 3,3 V und nicht 
gegen 5 V geschaltet sind.

-> Das ist natürlich Murks, so arbeiten die Pullups gegeneinander. 
Nachdem ich nochmal mit dem Oszi nachgemessen habe, habe ich 
festgestellt, dass ich nur 4 V Signalpegel auf dem I2C-Bus habe.
Bevor ich jetzt die Pullups verändere, baue ich erstmal einen 
Pegelwandler zwischen Display und Arduino ein, damit die Pegel sauber 
sind. Anschließend gehe ich mal mit den Pullups weiter runter.

Frank O. schrieb:
> Hast du eigentlich einmal den Strom gemessen oder zumindest zusammen
> gerechnet. Bei dem ganzen Zeug, was du da dran hast, sind die 1,3A nicht
> gerade überschwänglich viel Strom.

Ich habe gerade nachgemessen, der Stromverbrauch auf der 12V Seite 
beträgt 90 mA bei eingeschaltetem Relais. Die 1,3 A sollten also auf 
jeden Fall ausreichen.

Lothar M. schrieb:
> Und wo hast du die Massefeder kontaktiert?

Beim I2C habe ich die SDA/GND bzw. SCL/GND Pins direkt am Display 
verwendet, beim USB bin ich auf die ESD-Schutzdioden hinter der Buchse 
gegangen. Auch hier die Tastspitze auf das USB-Signal und die Massefeder 
an das direkt gegenüberliegende GND-Pad von dem Dioden-IC.

Lothar M. schrieb:
> Miss mal "Masse gegen Masse" also die Masseklemme des Oszis an einen
> Massepunkt (z.B. am µC) und die Messpitze an einen anderen Massepunkt
> (z.B. am I²C-Device).

Einen so großen Abstand kann ich mit dem Tastkopf und der Massefeder 
nicht überbrücken, hiermit kann ich nur benachbarte Pins messen. Oder 
ist es ok, wenn ich an der Tastspitze einen kurzen Draht anbringe, um 
zum Display zu gelangen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

M. B. schrieb:
> Oder ist es ok, wenn ich an der Tastspitze einen kurzen Draht anbringe,
> um zum Display zu gelangen?
Du kennst diese üblichen Masseclips, die mit jedem Tastkopf ausgeliefert 
werden? Damit kann man gut 20cm überbrücken.

von Falk B. (falk)


Lesenswert?

Lothar M. schrieb:
>> Oder ist es ok, wenn ich an der Tastspitze einen kurzen Draht anbringe,
>> um zum Display zu gelangen?
> Du kennst diese üblichen Masseclips, die mit jedem Tastkopf ausgeliefert
> werden? Damit kann man gut 20cm überbrücken.

Genau DAS wollte er VERMEIDEN!

von Frank O. (frank_o)


Lesenswert?

M. B. schrieb:
> Ich habe gerade nachgemessen, der Stromverbrauch auf der 12V Seite
> beträgt 90 mA bei eingeschaltetem Relais.

Du hast noch ein Display dran, das, wenn ich mich recht erinnere, bis zu 
300mA ziehen kann. Dein Arduino zieht mit Sicherheit auch schon mal 
kurzzeitig mehr. Beim Anziehen braucht dein Relais sicher auch deutlich 
mehr Strom, als im Betrieb.
Und wer weiß, ob das überhaupt 1300mA bringt.
Ich tippe immer noch auf das Netzteil.

von Falk B. (falk)


Lesenswert?

Frank O. schrieb:
> Du hast noch ein Display dran, das, wenn ich mich recht erinnere, bis zu
> 300mA ziehen kann.

So ein Käse. Außerdem zieht das keine 300mA bei 12V.

> Dein Arduino zieht mit Sicherheit auch schon mal
> kurzzeitig mehr.

Nö, warum auch?

>Beim Anziehen braucht dein Relais sicher auch deutlich
> mehr Strom, als im Betrieb.

Schon wieder falsch! Relais haben keinen Einschaltstrompuls!

> Und wer weiß, ob das überhaupt 1300mA bringt.
> Ich tippe immer noch auf das Netzteil.

Was für ein sinnloses Gelaber!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Falk B. schrieb:
> Genau DAS wollte er VERMEIDEN!
Genau DAS ist mir schon klar, aber man kann ja auch einfach mal als *1. 
Schritt* und Bezugsmessung die lange Masseklemme und die Prüfspitze an 
exakt den selben Massepunkt in der Schaltung halten und sehen, was 
dann einkoppelt (das sind die Funkstörungen, die in diese 
"Tastkopfschleife" einstrahlen).

Und dann kann man im *2. Schritt* die Masseklemme an der selben Stelle 
lassen und mit der Spitze andere Massepunkte messen. Wenn dann immer 
noch dasselbe wie bei der 1. Messung zu sehen ist, dann ist die Masse 
tadellos. Wenn mehr Störungen zu sehen sind, dann kommen die mit hoher 
Wahrscheinlichkeit von Strömen, die sich auf der weit verstreuten Masse 
tummeln.

M. B. schrieb:
> Es kommt ab und zu vor, dass die Anzeige auf dem Display einfriert
Nicht zu selten kommen solche Fehler als Folgefehler: weil vorher auf 
irgendeinem anderen Portpin eine Störung aufgetreten ist, tut die 
Software als Reaktion auf diese Störung irgendwas Anderes und hat a) 
keine Zeit mehr für den Rest oder b) beginnt eine Aktion, die natürlich 
nicht weitergeht.

Die allermeisten "abgestürzten" Programme laufen mit Vollgas in einer 
endlosen Scheife mit irgendeiner Abfrage und warten darauf, dass eine 
externe oder interne Hardware etwas tut, was nie kommen wird.

Frank O. schrieb:
> Ich tippe immer noch auf das Netzteil.
Ich tippe immer noch auf die nicht ungeplante Masseführung, Und die 
insgesamt vogelwilde Verkabelung. Vermutlich in Zusammenhang mit einer 
nicht ausreichend gegen Störungen resistenten Software. Denn alle 3 
beschriebenen Fehler deuten darauf hin, dass die Software "im Prinzip" 
weiterläuft, aber nicht in der Lage war, die aufgetretenen Störungen zu 
behandeln.

: Bearbeitet durch Moderator
von Axel R. (axlr)


Lesenswert?

Schwarz, rot, rosa, weiß gehen zu den beiden Relais, wenn man das auf 
dem Foto so interpretieren mag und verschwinden im Kabelkanal. (Foto ist 
immer schlecht zu deuten, is ja klar) Wo kommen die wieder raus und wo 
sind die angeschlossen?
Der kleine gelochte Kasten scheint das Netzteil zu sein. Mit schwarz und 
gelb (statt rot und schwarz). Das geht genau wohin?

Nimm dir doch bitte mal n A3 Blatt, Lineal, Bleistift und Radiergummi 
und zeichne das in geraden Strichen genau so auf, wie der tatsächliche 
Verlauf deiner Verdrahtung aussieht.
Dann sieht man unter Umständen sofort, wo die Ströme nicht nur hin - 
sondern auch zurückfließen.
Nütz ja kein Mustergültiger Aufbau mit adernendhülsen usw. Wenn die 
umspannten Leiterflächen da n halben Quadratmeter am Ende umspannen und 
die Masseleitungen samba tanzen.
Bei Schaltreglern werden diese Stromschleifen/Flächen hier im Forum 
immer gern eingezeichnet.
Wundere mich, diesen Hinweis hier noch nicht gelesen zu haben. Würde ich 
hier auch mal einzeichnen. Das einzige, was klickt und Last abwirft, 
sind die Relais.
Deren Rückleitung muss direkt zum Netzteil verlegt werden. Da darf kein 
anderer Strom drüber fließen.

Bei so einer Zeichnung kann man dann den Kabelkanal auch so breit 
zeichnen, dass alle Kabel nebeneinander laufen und man man kann den 
Deckel quasi weglassen.
Ist ne scheissarbeit, das zu zeichnen, hilft aber ungemein.
Vielleicht in Zukunft (für andere, wenn nicht für sich selbst) sinnvolle 
Kabelfarben verwenden und nicht die vier Farben, die man gerade zur Hand 
hat.
Das Netzteil reicht ja wohl dicke aus. Verstehe die Diskussion darum 
garnicht. Liegt definitiv an der Leitungsführung.

von Axel R. (axlr)


Lesenswert?

https://docs.arduino.cc/resources/schematics/ABX00080-schematics.pdf

Was steckt denn da noch oben auf dem Arduino für’n „shield“ drauf? 
Gibt’s da auch nen Link dazu?

von Monk (roehrmond)


Lesenswert?

M. B. schrieb:
> Nachdem ich nochmal mit dem Oszi nachgemessen habe, habe ich
> festgestellt, dass ich nur 4 V Signalpegel auf dem I2C-Bus habe.

Dem Arduino UNIO reichen sogar 3,3 Volt aus.

Es könnte aber sein, dass dein Display es gar nicht gerne hat, wenn 
seine I/O Pins auf außerhalb der Spezifikation (mehr als 3,8 Volt) hoch 
gezogen werden.

Ändere die Schaltung so, dass alle Pull-Ups auf 3,3V ziehen.

Der Feuchtesensor kann laut Datenblatt mit 3,3V betrieben werden. Ich 
weiß aber nicht, was die auf deinem Modul noch drum herum gebaut haben.

: Bearbeitet durch User
von Frank O. (frank_o)


Lesenswert?

Falk B. schrieb:
> So ein Käse. Außerdem zieht das keine 300mA bei 12V.

Stand bei den OLED im Datenblatt. Allerdings habe ich das auch nie 
messen können.

Falk B. schrieb:
> Schon wieder falsch! Relais haben keinen Einschaltstrompuls!

Asche auf mein Haupt. War völliger Quatsch.

Dann halte ich mal die Finger still und bin gespannt was dabei 
rauskommt.

Lothar M. schrieb:
> Frank O. schrieb:
>> Ich tippe immer noch auf das Netzteil.
> Ich tippe immer noch auf die nicht ungeplante Masseführung, Und die
> insgesamt vogelwilde Verkabelung.
Das sicher auch.
Ich bin gespannt.

von Frank O. (frank_o)


Lesenswert?

Falk B. schrieb:
> In der Software sollte man prüfen, ob das Display noch auf den I2C
> Zugriff reagiert. Wenn nein, muss man einen Softwarereset des Displays
> machen. Im Extremfall, wenn das allein nicht reicht, muss man dessen
> Stromversorgung vom Arduino schaltbar machen und einen Hardwarereset
> machen. Das ist zumindest ein Workaround fpr den Fall, daß man die
> Störung nicht bedämpfen kann.

Hallo Falk!
Das sind die Beiträge, die ich von dir gewohnt bin und auch schätze.

Falk B. schrieb:
> Was für ein sinnloses Gelaber!

In letzter Zeit öfter so was. Klar, da hast du recht gehabt. Vor allem 
mit dem Relais. Aber was sollen solche Beleidigungen?
Du hast auch keine Lösung und wir machen uns doch alle Gedanken, woran 
es liegen könnte.
Dass ich dir in der Elektronik nicht das Wasser reichen kann und auch 
gar nicht möchte, sollte dir hinlänglich bekannt sein. Aber dennoch habe 
ich 37 Jahre Erfahrung in der Fehlersuche und da ist es sehr häufig die 
Stromversorgung.
Bitte lass diese Art doch sein! Es steht dir nicht, denn damit machst 
du, zumindest bei mir, deinen guten Ruf kaputt.

von M. B. (bema16)


Lesenswert?

Danke für die Beteiligung und die vielen Hinweise!
Ich wollte nur kurz Bescheid geben, dass ich mitlese und den Thread hier 
nicht vergessen habe, aber gestern und heute leider keine Zeit hatte, an 
dem Projekt weiterzumachen.
Ich denke, dass ich am Freitag oder am Wochenende etwas Zeit finden 
sollte und dann werde ich auf die Hinweise eingehen und 
Bilder/Informationen nachliefern.
Bis dahin bitte etwas Geduld, Danke :-)

von Frank O. (frank_o)


Lesenswert?

M. B. schrieb:
> Bis dahin bitte etwas Geduld, Danke :-)

Gibt keinen Zwang abzuliefern und schon gar nicht zeitlich. Aber schön 
wäre es trotzdem, wenn du dann was gefunden hast und uns das mitteilst.

von Lu (oszi45)


Lesenswert?

Viel Lyrik hier. Bei der Sauerkrautverdrahtung würde ich mir ein paar 
Pfeile wünschen, wo genau man den Fehler gemessen hat. Ansonsten werfe 
ich mal die Worte Relais-Kontaktprellen und Snubber ein, wenn die 400W 
geschaltet werden. https://www.mikrocontroller.net/articles/Snubber

von M. B. (bema16)



Lesenswert?

Ich hatte über das Wochenende ein wenig Zeit und konnte weiterarbeiten.

Als erstes habe ich einen Pegelwandler für das Display gebaut, damit 
dieses 3,3 V I2C-Pegel erhält. Der Pegelwandler sitzt unterhalb des 
Displays auf einer Lochrasterplatine, auf den Bildern ist er daher 
schlecht zu erkennen.
Die Pullups auf der 5 V Seite habe ich auf 1,5 kOhm verringert, auf der 
3,3 V Seite verwende ich 2 kOhm Pullups. Da der Pegelwandler direkt 
unter dem Display sitzt, ist die Leitungskapazität eher gering und ich 
hatte als SMD nicht wirklich etwas da, was besser gepasst hätte.
Ich habe das Display sicherheitshalber ausgetauscht, um sicherzugehen, 
dass ich das alte Display nicht durch die zu hohen Pegel beschädigt 
habe.
--> Ergebnis: In Verbindung mit dem SSR scheint nun alles stabil zu 
funktionieren - bei einem Dauerlauf über ca. 1,5 h gab es keine Probleme 
mit USB und Display.
Baue ich das mechanische Relais wieder ein, habe ich nach kurzer Zeit 
wieder Probleme.

Ich könnte es nun bei der Lösung mit dem SSR belassen, ich möchte aber 
nochmal ein wenig Zeit investieren, um evtl. doch das mechanische Relais 
verwenden zu können. Ich traue dem AliExpress SSR nicht wirklich über 
den Weg und gleichzeitig würde ich für die Zukunft gerne verstehen, wie 
ich solche Probleme in den Griff bekomme.
Ich habe daher wie empfohlen einige Oszi-Messungen durchgeführt - siehe 
Screenshots + Fotos vom Messaufbau im Anhang.

- Bilder mit Präfix "06": Massefeder + Tastkopf am gleichen Massepunkt 
auf dem Shield --> auch ohne Schalten des Relais sind Störungen 
(Netzteil?) erkennbar, beim Schalten sind die Störungen deutlich 
erkennbar
- Bilder mit Präfix "07": Statt der Massefeder die Krokoklemme 
verwendet, aber nach wie vor am gleichen Massepunkt --> Ergebnis 
unverändert
- Bilder mit Präfix "08": GND-Differenz zwischen Shield/OLED gemessen

Verbinde ich GND direkt mit PE, kann ich keine Verbesserung erkennen - 
vermutlich deshalb, weil GND schon intern im Netzteil über einen 
Kondensator mit PE verbunden ist.

Das Arduino-Shield ist ein Lochraster-Shield, welches ich selbst gelötet 
habe. Einige Taster und LEDs sind bereits auf dem Shield vorhanden, 
bspw. für den Reset. Ich verwende diese aber nicht.

Im Anhang findet sich auch ein PDF, in denen ich die Kabelführung im 
Nieder- und Hochspannungskanal aufgezeichnet habe. Aus meiner Sicht ist 
die Leitungsführung nicht so katastrophal, alle Signale (abgesehen vom 
Thermoschalter) gehen eigentlich auf das Arduino Shield und somit auf 
eine zentrale Masse. Ich lasse mich aber gerne eines besseren belehren 
:-).

von Falk B. (falk)


Lesenswert?

M. B. schrieb:

> Die Pullups auf der 5 V Seite habe ich auf 1,5 kOhm verringert, auf der
> 3,3 V Seite verwende ich 2 kOhm Pullups.

Ganz schön wenig, geht aber gerade noch so.

> --> Ergebnis: In Verbindung mit dem SSR scheint nun alles stabil zu
> funktionieren - bei einem Dauerlauf über ca. 1,5 h gab es keine Probleme
> mit USB und Display.

Schon mal gut, aber

> Baue ich das mechanische Relais wieder ein, habe ich nach kurzer Zeit
> wieder Probleme.

Und das trotz ziemlich niederohmiger I2C Pull-Ups. Aber welche Probleme 
hast du jetzt noch konkret?

Display ziegt nix gescheites mehr an?
Virtueller COM Port über USB liefert keine Daten mehr?

Stimmt das?

> den Weg und gleichzeitig würde ich für die Zukunft gerne verstehen, wie
> ich solche Probleme in den Griff bekomme.

Gute Einstellung!

> Ich habe daher wie empfohlen einige Oszi-Messungen durchgeführt - siehe
> Screenshots + Fotos vom Messaufbau im Anhang.

Sieht soweit OK aus. Die 200mV Störung sind natürlich nicht so schön. 
Aber da muss man weiter forschen.

> Verbinde ich GND direkt mit PE, kann ich keine Verbesserung erkennen -
> vermutlich deshalb, weil GND schon intern im Netzteil über einen
> Kondensator mit PE verbunden ist.

Ja, aber nur AC mäßig. Das kann reichen, muss es aber nicht. Kommt drauf 
an. Aber da der Arduino nicht abstürzt, würde ich meinen, es reicht.

> Das Arduino-Shield ist ein Lochraster-Shield, welches ich selbst gelötet
> habe.

Sieht OK aus.

> Im Anhang findet sich auch ein PDF, in denen ich die Kabelführung im
> Nieder- und Hochspannungskanal aufgezeichnet habe.

Hochspannung, soso. :-)
230V Netzspannung ist Niederspannung im professionellen Sprachgebrauch. 
Echte Hochspannung geht bei 110kV los ;-)

> Aus meiner Sicht ist
> die Leitungsführung nicht so katastrophal,

Ist sie auch nicht. Du hast Netzspannung und Schutzkleinspannung 
räumlich getrennt. Es ist auch kein Kabelsalat und riesige Schleifen. 
Passt schon.

Tja, doch wie nun weiter? Der Fehler wurde noch nicht gefunden. Darum 
nochmal die Frage. Welche Störungen treten immer noch wie auf?

von Frank O. (frank_o)


Lesenswert?

Falk B. schrieb:
> Tja, doch wie nun weiter? Der Fehler wurde noch nicht gefunden. Darum
> nochmal die Frage. Welche Störungen treten immer noch wie auf?

Vor allem, äußern sie sich gleich oder sind es jetzt völlig andere 
Fehler.

Und übrigens, ich bin immer noch bei der Stromversorgung für Arduino und 
sein Gefolge.
Egal was ihr sagt und wie viele Minuspunkte ich dafür bekomme. Ich habe 
ähnliche Fehler so oft gesehen und es lag immer an der Stromversorgung.

von M. B. (bema16)


Lesenswert?

Falk B. schrieb:
> Und das trotz ziemlich niederohmiger I2C Pull-Ups. Aber welche Probleme
> hast du jetzt noch konkret?
>
> Display ziegt nix gescheites mehr an?
> Virtueller COM Port über USB liefert keine Daten mehr?
>
> Stimmt das?

Auf einem der Bilder oben kann man das Display-Interface vollständig 
erkennen. Alle 250 ms wird einer der Temperatursensoren (T1 - T2 - T3 - 
T4 - T1 - T2 - ...) gemessen und bei Änderungen wird die Anzeige auf dem 
Display aktualisiert. Auch die Werte für die Luftfeuchtigkeit (H1/H2, 
wobei H2 gerade nicht angeschlossen ist) werden regelmäßig aktualisiert. 
Im Normalfall sieht man also regelmäßig Aktivität auf dem Display.
Drehe ich am Encoder, bewegt sich der kleine Pfeil > links über die 
einzelnen Einträge.
Aktiviere ich die Heizung (= Relais schaltet) friert die Display-Anzeige 
nach einer zufälligen Zeit ein, d.h. die Temperatur-/Feuchtigkeitswerte 
werden nicht mehr aktualisiert und wenn ich am Encoder drehe, ändert 
sich die Position des Pfeils nicht mehr. Ich habe sozusagen ein 
Standbild.

Ich kann das System aber bei eingefrorener Anzeige noch blind bedienen. 
Drehe ich bpsw. den Encoder einige Positionen nach rechts (= Eintrag 
"Back" ist ausgewählt) und drücke anschließend den Taster am Encoder, 
wird die Heizung ausgeschaltet. Das ist genau das, was ich erwarte, weil 
die Software dann in das Hauptmenü wechselt und hier die Heizung 
automatisch deaktiviert wird. Das Display zeigt jedoch weiterhin nur das 
Standbild mit den Temperaturen an und nicht das Hauptmenü.

Die USB-Verbindung fällt ebenfalls nach einer zufälligen Zeit aus, 
jedoch gibt es zeitlich keinen Zusammenhang zwischen Display- und 
USB-Ausfall. Es kann sein, dass das Display nicht mehr läuft, obwohl 
über USB noch Daten kommen und umgekehrt.
Der Arduino ist nach dem Ausfall immer noch am PC als COM-Port im 
Gerätemanager sichtbar, aber HTerm empfängt keine Daten mehr. Erst, wenn 
ich das USB-Kabel ziehe und neu einstecke oder (wie ich gerade 
festgestellt habe) kurz das DTR-Signal in HTerm toggle, werden wieder 
Daten gesendet.

Falk B. schrieb:
> Hochspannung, soso. :-)
> 230V Netzspannung ist Niederspannung im professionellen Sprachgebrauch.
> Echte Hochspannung geht bei 110kV los ;-)

Ich hoffe mal, dass ich im oberen Kanal keine 110 kV habe, dafür wäre 
die Isolation vermutlich etwas zu knapp :D
Ich habe mir schon gedacht, dass es fachlich so nicht korrekt ist, aber 
so ist es auf jeden Fall unterscheidbar.

von M. B. (bema16)


Lesenswert?

Frank O. schrieb:
> Vor allem, äußern sie sich gleich oder sind es jetzt völlig andere
> Fehler.

Deine Antwort hat sich zeitlich mit meiner überschritten, aber wie in 
meiniem vorherigen Beitrag beschrieben, sind es nach wie vor dieselben 
Fehler.

Frank O. schrieb:
> Und übrigens, ich bin immer noch bei der Stromversorgung für Arduino und
> sein Gefolge.

Ich kann testweise mal mein Labornetzteil anstelle des 
Meanwell-Netzteils anschließen. Dann kann ich zum einen den 
Stromverbrauch überwachen und das Labornetzteil kann auch 3 A statt nur 
1,3 A wie das Meanwell-Netzteil.

von Rainer W. (rawi)


Lesenswert?

Frank O. schrieb:
> Dein Arduino zieht mit Sicherheit auch schon mal kurzzeitig mehr.

Die sechs 22µF Kondensatoren sind schnell aufgeladen.

von Falk B. (falk)


Lesenswert?

M. B. schrieb:

> sich die Position des Pfeils nicht mehr. Ich habe sozusagen ein
> Standbild.

Das kann zwei Dinge bedeuten. Das Display reagiert nicht mehr auf 
Steuerbefehle oder es wird nicht mehr angesteuert.

> Ich kann das System aber bei eingefrorener Anzeige noch blind bedienen.
> Drehe ich bpsw. den Encoder einige Positionen nach rechts (= Eintrag
> "Back" ist ausgewählt) und drücke anschließend den Taster am Encoder,
> wird die Heizung ausgeschaltet.

Also reagiert das Display nicht mehr. Es hat sich verschluckt. Hier kann 
man versuchen, regelmäßig einen Softwarereset zu machen. Reicht das 
nicht, dann einen gesteurten Hardwarereset mit Abschaltung der 
Versorgungsspannung für das Display. Damit kann man zumindest die 
Fehlerursache nachweisen.

> Die USB-Verbindung fällt ebenfalls nach einer zufälligen Zeit aus,
> jedoch gibt es zeitlich keinen Zusammenhang zwischen Display- und
> USB-Ausfall. Es kann sein, dass das Display nicht mehr läuft, obwohl
> über USB noch Daten kommen und umgekehrt.

Hier muss man versuchen, regelmäßige Debuganzeigen bei der Ausgabe auf 
USB zu erzeugen, z.B., eine blinkende LED. Damit kann man zumindest 
zeigen, daß  ein Teil der Software zur Datenausgabe noch läuft.

> Der Arduino ist nach dem Ausfall immer noch am PC als COM-Port im
> Gerätemanager sichtbar, aber HTerm empfängt keine Daten mehr. Erst, wenn
> ich das USB-Kabel ziehe und neu einstecke oder (wie ich gerade
> festgestellt habe) kurz das DTR-Signal in HTerm toggle, werden wieder
> Daten gesendet.

Interessant. Könnte eine falsche Einstellung des Handshakes sein. Oder 
ein offener Steuereingang? Nee, geht nicht, der USB-Tranceiver steckt ja 
im Mikrocontroller.

von Falk B. (falk)


Lesenswert?

M. B. schrieb:
> Ich kann testweise mal mein Labornetzteil anstelle des
> Meanwell-Netzteils anschließen. Dann kann ich zum einen den
> Stromverbrauch überwachen und das Labornetzteil kann auch 3 A statt nur
> 1,3 A wie das Meanwell-Netzteil.

Kann man probieren, ich glaub aber nicht daran. Denn die ausfallenden 
Komponenten (USB und LCD) hängen an der 5V vom Arduino, nicht direkt am 
12V Netzteil. Außerdem ist deren Stromverbrauch gering. Dein Arduino R4 
hat einen 1,2A Schaltregler für die 5V Versorgung, der reicht hier 
locker.

Bei LCD tippe ich auf eine kapazitive Störeinkopplung. Man könnte das 
LCD auf eine kupferbeschichtete Leiterplatte legen, natürlich isoliert 
und die Platte kurz an den GND Anschluß des LCDs anlöten (<20mm).

von Hubert G. (hubertg)


Lesenswert?

M. B. schrieb:

> --> Ergebnis: In Verbindung mit dem SSR scheint nun alles stabil zu
> funktionieren - bei einem Dauerlauf über ca. 1,5 h gab es keine Probleme
> mit USB und Display.
> Baue ich das mechanische Relais wieder ein, habe ich nach kurzer Zeit
> wieder Probleme.
Wenn ich mir Schaltungen aufbaue die, wie hier, auf der 12V Seite noch 
Verbraucher haben, dann kommt in die 12V Leitung zum Arduino eine Diode 
und danach ein 100n und ein 100µ Kondensator. Damit ist der Arduino 
weitgehend von den 12V Verbrauchern entkoppelt. Den GND der 12V 
Verbraucher so nahe wie möglich zum Netzteil legen.

von Falk B. (falk)


Lesenswert?

Hubert G. schrieb:
> Wenn ich mir Schaltungen aufbaue die, wie hier, auf der 12V Seite noch
> Verbraucher haben, dann kommt in die 12V Leitung zum Arduino eine Diode
> und danach ein 100n und ein 100µ Kondensator. Damit ist der Arduino
> weitgehend von den 12V Verbrauchern entkoppelt.

Dort sind keine mordsmäßigen Verbraucher angeschlossen, welche die 12V 
einbrechen lassen! Nur ein einfaches Relais!

> Den GND der 12V
> Verbraucher so nahe wie möglich zum Netzteil legen.

Ist hier gar nicht relevant.

von Frank O. (frank_o)


Lesenswert?

Jetzt hört sich die Fehlerbeschreibung auch schon etwas deutlicher an.
Das was Falk da mit der Led meint, mache ich auch so und ist immer eine 
gute Debug-Methode.

M. B. schrieb:
> Der Arduino ist nach dem Ausfall immer noch am PC als COM-Port im
> Gerätemanager sichtbar, aber HTerm empfängt keine Daten mehr.

Das kannst du vernachlässigen. Windows ist und war da immer sehr träge.
Mal kann das ziemlich schnell von Windows "bemerkt" werden und ein 
anderes Mal dauert das wirklich sehr lange, bis dem Windows das 
auffällt.
Hat wohl nicht so eine hohe Priorität.

Wenn es wirklich nur mit dem Relais so ist, dass der Fehler auftritt, 
dann fehlt da irgendwo der Strom. Andernfalls ist durchaus auch ein 
Softwarefehler möglich. Wie sieht der Stack aus? Wenn dem der Speicher 
knapp wird, kommt es auch zu solchen ungewöhnlichen Fehlern.

: Bearbeitet durch User
von M. B. (bema16)


Angehängte Dateien:

Lesenswert?

Ich habe den Feiertag heute genutzt, um das Problem weiter zu 
untersuchen:

M. B. schrieb:
> Ich kann testweise mal mein Labornetzteil anstelle des
> Meanwell-Netzteils anschließen.

Das hat leider nicht geholfen, ich hatte erneut Ausfälle. Meine 
Digitalanzeige am Labornetzteil zeigt einen Strom von 0,1 - 0,12 A an. 
Das passt zu den 90 mA, die ich weiter oben gemessen habe. Dass die 
Anzeige am Labornetzteil etwas höher ist, würde ich als normal 
einstufen, es ist kein besonders hochwertiges Gerät.

Falk B. schrieb:
> Hier muss man versuchen, regelmäßige Debuganzeigen bei der Ausgabe auf
> USB zu erzeugen, z.B., eine blinkende LED. Damit kann man zumindest
> zeigen, daß  ein Teil der Software zur Datenausgabe noch läuft.

Das habe ich so implementiert, vor dem Aufruf der Funktionen zum Senden 
über USB wird die LED eingeschaltet und danach wieder ausgeschaltet. 
Trotz USB-Ausfall flackert die LED fröhlich weiter. Ich kann damit 
natürlich nicht beurteilen, ob sich evtl. die USB-Peripherie im 
Mikrocontroller verschluckt hat, aber an der Software scheint es nicht 
zu liegen. Das passt auch zu der Tatsache, dass es mit dem SSR und 
derselben Software zuverlässig funktioniert.

Mit dem Display habe ich nach wie vor Probleme, aber je länger ich mit 
dem mechanischen Relais teste, desto mehr habe ich den Eindruck, dass es 
seit dem Wechsel auf 1,5 kOhm Pullups stabiler funktioniert. Ich habe 
zwar nach wie vor Ausfälle, aber gefühlt dauert es länger als vorher, 
bis es zu einem Ausfall kommt - und das, obwohl ich aktuell keine 
Kondensatoren mehr in den SDA- und SCL Leitungen und in der Versorgung 
vom Display habe. Ich glaube also, dass wir hiermit schon auf dem 
richtigen Weg sind.

Für die Probleme mit dem USB habe ich zwischenzeitlich einen Workaround 
gefunden: Ich lasse die Daten über den Hardware-UART (TX) vom Arduino 
ausgeben und leite das Signal über ein geschirmtes Kabel auf eine kleine 
Lochraterplatine mit einem RC-Filter (330 Ohm/1 nF). Das Signal hinter 
dem Filter geht direkt auf einen USB-UART Adapter und dieser in den 
USB-Anschluss vom PC. Das UART-Signal ist deutlich unkritischer zu 
filtern und hiermit funktioniert nun die Datenübertragung dauerhaft 
problemlos (Baudrate 115200). Im Anhang ein Foto von dem Aufbau.

Über das Wochenende bin ich leider unterwegs und kann deshalb nicht 
weitermachen, aber als nächstes werde ich das mit der Kupferplatte und 
dem Software-Reset am Display testen. Die 100 pF Kondensatoren in SDA 
und SCL werde ich ebenfalls mal testen, bisher hatte ich ja nur 22 pF 
versucht. Den Hinweis mit dem LC-Filter und dem Stack habe ich ebenfalls 
gelesen, aber beim Stack bin ich mir unsicher, wie ich das genau prüfen 
soll - evtl. den Stackpointer regelmäßig per UART ausgeben und prüfen, 
ob er immer weiter anwächst...? Oder wie sollte ich hier vorgehen?

von Frank O. (frank_o)


Lesenswert?

Wenn es doch dauerhaft mir dem SSR funktioniert, dann muss man sich 
Gedanken machen was beim Betrieb mit SSR anders ist, als mit dem Relais.
Das SSR wird sicher schneller schalten und weniger Strom brauchen als 
dein Relais.
Wenn es ein Problem mit der Zeit ist und dann ein paar Befehle zu viel 
auf dem Stack landen, kann man in diese Richtung suchen. Ist es der 
Strom, dann muss das Relais irgendwo etwas weg ziehen. Letzteres ist 
sicher leichter zu finden.
Danke für deine ausführliche Rückmeldung. Ist auf jeden Fall immer noch 
interessant.
Und zum Stack: Vielleicht kannst du mal testweise eine nicht so wichtige 
Routine sperren. Ist womöglich einfacher als jetzt den Speicher 
überwachen zu wollen.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Frank O. schrieb:
> Wenn es doch dauerhaft mir dem SSR funktioniert, dann muss man sich
> Gedanken machen was beim Betrieb mit SSR anders ist,

In der Tat.
> als mit dem Relais.

Auch ein SSR ist ein Relais, Solid State Relais, Halbleiterrelais

> Das SSR wird sicher schneller schalten und weniger Strom brauchen als
> dein Relais.

Mit dem Stromverbraucht hast du wohl einen Narren gefressen? Der ist 
vollkommen OK. Der Unterschied ist, daß ein SSR prellfrei schaltet, 
während ein einfaches, mechanisches Relais das nicht kann. Der Snubber 
kann hier aber helfen. Tut er aber nur bedingt, wie die Test zeigen. 
Also liegt die Störung und der Koppelpfad anders.

> Und zum Stack: Vielleicht kannst du mal testweise eine nicht so wichtige
> Routine sperren. Ist womöglich einfacher als jetzt den Speicher
> überwachen zu wollen.

Man muss keinen Speicher überwachen. Wenn das Display ausfällt und der 
Controller normale weiter läuft, heißt das zu 99%, daß sich das Display 
verschluckt hat. Sowas kommt häufiger vor. Eine Gegenmaßnahme habe ich 
mehrfach genannt.

von Falk B. (falk)


Lesenswert?

Noch ein Trick. Synchronisiere die Zugriffe auf des Display mit dem 
Schalten des Relais. Sprich, wenn das Relais schaltet, dürfen definitiv 
keine I2C Zugriffe stattfinden! Natürlich auch ein paar Dutzend 
Millisekunden danach, denn so ein mechanisches Relais braucht um die 
10-20ms zum Schalten und Prellen. Man kann auch die 100pF Kondensatoren 
an SDA/SCL wieder einlöten, aber nah am Display! Dann mal testen.

von Manfred P. (pruckelfred)


Lesenswert?

Frank O. schrieb:
> Ist es der
> Strom, dann muss das Relais irgendwo etwas weg ziehen.

Oder etwas anheben oder zurück pupsen, weil es induktiv ist.

Falk B. schrieb:
> Mit dem Stromverbraucht hast du wohl einen Narren gefressen? Der ist
> vollkommen OK. Der Unterschied ist, daß ein SSR prellfrei schaltet,

Der eine am Strom, der andere am Prellen.

Falk B. schrieb:
> Man kann auch die 100pF Kondensatoren
> an SDA/SCL wieder einlöten, aber nah am Display!

Kondensatoren auf Digitalleitungen ist Bastelpfusch.

von Falk B. (falk)


Lesenswert?

Manfred P. schrieb:
>> Man kann auch die 100pF Kondensatoren
>> an SDA/SCL wieder einlöten, aber nah am Display!
>
> Kondensatoren auf Digitalleitungen ist Bastelpfusch.

Meistens ja, manchmal nein.

von Frank O. (frank_o)


Lesenswert?

Falk B. schrieb:
> Mit dem Stromverbraucht hast du wohl einen Narren gefressen?

Stimmt! Falk, du weißt doch, man sucht immer dort, wo man üblicherweise 
die meisten Fehler erwartet. Bei den Staplern ist es häufig die 
Stromversorgung  und zwar meistens die Batterie.
Klar weiß ich, dass ein SSR auch ein Relais ist, nur eben aus 
Halbleitern.
Aber trotzdem danke für deine Ausführungen!
Ich habe jetzt bei dem Bremsentester (den ich nun leider nicht mehr 
fertig bau, weil ich nicht wieder arbeiten gehen) zum ersten Mal nach 
langer Zeit wieder etwas mit Display gemacht.
Damals, als ich zum ersten Mal mit den Mikrocontrollern anfing, da waren 
das eher nur Übungen. Dazwischen habe ich eher Tiny10 verwendet.  Dann 
weißt du wie "umfangreich" meine Sachen waren. Deshalb kenne ich das 
"Verschlucken" von so einem Display nicht.
Ich stelle eh nur Mutmaßungen an. Aber es ist natürlich interessant für 
mich, wenn Leute wie du und deiner Erfahrung, solche Speicherfehler 
ausschließen. Für mich ist das insgesamt interessant und Lernstoff für 
eigene Sachen. Allerdings werde ich auch ohne solche profunde 
Erfahrungen, wie du sie hast, den einen oder anderen Gedanken 
beisteuern.

: Bearbeitet durch User
von Frank O. (frank_o)


Lesenswert?

Falk B. schrieb:
> Synchronisiere die Zugriffe auf des Display mit dem
> Schalten des Relais. Sprich, wenn das Relais schaltet, dürfen definitiv
> keine I2C Zugriffe stattfinden! Natürlich auch ein paar Dutzend
> Millisekunden danach, denn so ein mechanisches Relais braucht um die
> 10-20ms zum Schalten und Prellen.

Das halte ich auch für eine ausgesprochen gute Idee!

von Frank O. (frank_o)


Lesenswert?

Manfred P. schrieb:
> Oder etwas anheben oder zurück pupsen, weil es induktiv ist.

Richtig, Manfred!

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
Noch kein Account? Hier anmelden.