Forum: Mikrocontroller und Digitale Elektronik Kurze Frage SSR + Arduino zuverlässig?


von Mr. Ahnungslos (Gast)


Lesenswert?

Möchte eigentlich nur wissen ob SSR am Arduino wirklich keine Probleme 
mehr machen.

Hatte die übliche 4x Relais Karte am Arduino und schalte damit vier 
einfache 230V 250-300W Motore (Tauchpumpen). Manchmal ist beim schalten 
dann der Arduino abgestürzt. Mal nach einigen Schaltungen und mal auch 
erst bei über 200. Hatte ich nicht so erwartet da die alte Steuerung vor 
dem Arduino deutlich primitiver und viel schwächer war.

Hier steht irgendwo das sein wohl normal so. Also habe ich mir nun eine 
SSR Platine verbaut. Habe ich damit nun endlich Ruhe?

von Einer K. (Gast)


Lesenswert?

Ich vermute mal, dass du ganz andere Sorgen hast, als du denkst.

Hast du schon von "Snubber" gehört?
Nein?
Dann solltest du dich mal kundig machen.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Jou, kenn ich von meiner Rolladen-Steuerung: 16-fach-Relaiskarte steuert 
Rohrmotore. Erschwerden dkommt hinzu, dass der Arduino (Mega) mittels 
Ethernet-Shield an einem PLC-Adapter hängt. Auf diese Weise komme ich 
mit meiner selbstgestrickten Handy-Web-App per WLAN auf die Steuerung 
...

Bim Schalten stürzt manchmal der Mega bzw. der Ethernet-Shield ab und 
manchmal verliert auch der PLC-Adapter für Sekunden die Verbindung.

Ich konnte die Häufigkeit der Abstürze durch den Einsatz von solchen 
aufklickbaren Mantelstromfiltern auf die Motorleitungen deutlich 
reduzieren. Für den Rest nutze ich einen Hardware-Watchdog ...

https://www.elektro4000.de/images/product_images/thumbnail_images/E-P-Elektrik-Mantelstromfilter-AF4Lose-546092_0.jpg

Würde man mehr Aufwand vor und nach dem Netzteil für den Arduino 
treiben, ließe sich bestimmt noch Einiges herausholen. Für ein anderes 
Projekt bin ich ganz extreme Störimpulse übers Netzteil durch eine 
solche Kette losgeworden:

Hutschienen-Netzteil 230V zu 24V -> Dual-Ringkerndrossel -> 
Elko/Folienkond. parallel -> Stepdown-Wandler 24V zu 12V -> 
Dual-Ringkerndrossel -> Elko/Folienkond. parallel -> Stepdown-Wandler 
12V zu 5V USB.

Aus den 12V werden Relais gespeist, die 230V-Motore schalten, aus dem 
USB versorge ich den Arduino ...

https://asset.conrad.com/media10/isa/160267/c1/-/de/1088020_BB_00_FB/drossel-ringkern-sektionell-radial-bedrahtet-rastermass-45-mm-39000-h-3000-m-03-a-wuerth-elektronik-we-cmb-744821039-1-st.jpg

: Bearbeitet durch User
von Mr. Ahnungslos (Gast)


Lesenswert?

Klar habe ich schon von einem Löschglied gehört, aber soll ich das Ding 
mittels Trial and Error auslegen? Extra einen Oszi kauf ich nicht dafür. 
Darum habe ich ja SSR gekauft.


Wie gesagt, zuvor hat der Spaß nicht mal ein noch billigeres und noch 
kleineres Relais und deren Steuerung gestört. Das Relais war bei der 
Belastung nahe am Datenblatt Anschlag, denn bei dem lief alles über das 
eine Relais. Hätte es dort großartig Abreißfunken gegeben dann wäre das 
schon längst hin.

von Stefan F. (Gast)


Lesenswert?

Der Haken ist, dass SSR ohne Snubber ratz-fatz kaputt gehen. Relais 
überleben kleine Funken üblicherweise etwas länger.

von Gerhard O. (gerhard_)


Lesenswert?

Manchmal reagieren naheliegende uC auf EMP Störfelder die durch Schalten 
von höheren Wechselstromlasten entstehen.

Da hilft nur Entkopplung und auch optional Abschirmen. Wenn GPIO direkt 
die Relais Treiber steuern empfiehlt sich ganz NAHE auf der uC Seite 
(Arduino) Serienwiderstände von 470 Ohm - 1K einzufügen. KEINE I/O 
Leitung des uC darf ohne Serienwiderstand nach außen in die Welt geführt 
werden weil die sonst als Antennen wirken und empfindliche Flanken 
reagierende Schaltkreise im inneren des uC beeinflussen können. Auch 
hilft bei Eingängen oft noch Cs nach Masse um energiereiche 
hochfrequente Störsignale abzuschwächen. Auch hilft es niederohmige 
Pullups an Eingang-Pins des uC zu haben. Auch TVS Dioden helfen, 
strategisch eingesetzt. Der beim Arduino relative hochohmige und 
empfindliche RESET Input sollte nach dem Programmieren fest auf Vcc 
gebracht werden.

Zwischen externen Pullup und Eingangspin sollte ein hochohmiger Serien R 
sein (10K) und ein C nach Vdd wenn aktiv nach Masse geschaltet wird.

Noch besser ist der Einsatz von Opto Isolatoren.

Alle diese Maßnahmen machen den Unterschied zwischen nackter Elektronik 
wie bei Arduino und Co und industrieller Elektronik aus. Man muss da für 
Störsicherheit schon einen gewissen Aufwand treiben. Solche Probleme 
kommen in der Industrie niemals oder nur extrem selten vor.

von Mr. Ahnungslos (Gast)


Lesenswert?

Die Relaiskarten haben doch alle Optokopler.

Eingänge habe ich nur zwei, und die haben natürlich Widerstände drauf.
Der Rest ist komplett auf Ausgang geschaltet, und dann sollen doch 
angeblich die Pullups vom Arduino selbst auf geschaltet sein?

von Stefan F. (Gast)


Lesenswert?

Wenn irgendwo Funken entstehen (sei es bei den Kontakten von Relais oder 
in Motoren oder noch banaler im Lichtschalter, Staubsauger, oder 
Feuerzeug), entstehen auch starke elektromagnetische Felder, die in 
elektrischen Leitern Spannung induzieren.

Daher sollte man Funken generell verhindern, wo immer es möglich ist. 
Geht beim Feuerzeug natürlich nicht. Bei elektrischen Geräten dienen 
Snubber dazu, Funken zu reduzieren oder ganz zu verhindern.

Dann hast du oben Tipps bekommen, wie man den µC durch äußere 
Beschaltung weniger empfindlich macht.

Und drittens solltest du alle Masse Verbindungen sternförmig auf einen 
Punkt zusammen laufen lassen. Je dicker die Leitungen dorthin sind, umso 
besser.

von Mr. Ahnungslos (Gast)


Lesenswert?

Ok, also wieder was gelernt. SSR brauchen also auch ein Löschglied. 
Soweit so gut.
Aber Störungen die mir den Arduino abschießen dürfen ja jetzt eigentlich 
nicht mehr kommen durch die SSR?
Mir wird es jetzt nur irgendwann ein SSR nach dem anderen zerschießen?
Wie äußert sich das eigentlich? Rums und Loch drin, oder einfach nur 
tot, oder dauerhaft an?

Bei dem was ein komplettes Löschglied kostet, bekomme ich für jedes 
einzelne auch 4 SSR. Von da her wäre es zu verkraften wenn sie nicht all 
zu oft nippeln, solange der Arduino weiter macht.

von Stefan F. (Gast)


Lesenswert?

> Aber Störungen die mir den Arduino abschießen dürfen
> ja jetzt eigentlich nicht mehr kommen durch die SSR?

Prinzipiell machen SSR bezüglich dieser Störungen keinen wesentlichen 
Unterschied zu Relais. Die Störungen werden ja nicht vom Relais erzeugt, 
sondern sie breiten sich lediglich über die Leitungen, 
Elektromagnetische Felder und parasitäre Kondensatoren aus. Solche 
Effekte kann ein SSR nicht besser verhindern, als ein Relais.

Einzig SSR mit Zero-Cross Option sind unter Umständen vorteilhafter. Ob 
das der Fall ist, hängt stark von der angeschlossenen Last ab. Doch 
Vorsicht: Sie eignen sich nicht für jede Last. Relais sind universeller 
und robuster.

von Einer K. (Gast)


Lesenswert?

Stefanus F. schrieb:
> Einzig SSR mit Zero-Cross Option sind unter Umständen vorteilhafter.
Bei induktiven Lasten eher nicht.

Tipp immer das Datenblatt des SSR befragen!

Es gibt SSR mit integriertem Löschglied.
Aber selbst dann, kann ein SSR, welches für 25A Ohmsche Last geeignet 
ist, schon bei 2A induktiver Last überfordert sein.

Mr. Ahnungslos schrieb:
> oder dauerhaft an?
Genau!
Dauerhaft an, ist der übliche Fehler.
Loch, Knall und Rauch, ist eher selten.

von Mr. Ahnungslos (Gast)


Lesenswert?

Aber wo kommen nun noch die Störungen her? Ich dachte die kommen durch 
Funken, die hab ich doch gar nicht mehr?
Einfach nur die Induktion auf der Leitung ohne einen Funken stört auch?

von Stefan F. (Gast)


Lesenswert?

Spannungsabfall auf den GND Leitungen könnte noch ein offenes Problem 
sein. Außerdem Funken in den Motoren der Pumpen. Und auch Funken in 
Dingen, die nicht direkt mit deinem Bauwerk zu tun haben, wie der 
besagte Staubsauger, Lichtschalter und das Feuerzeug.

Zudem ist jede Leitung eine Antenne und empfängt daher mehr oder weniger 
vom WLAN, TV, Radio, handy-Netze, Taxi-Funk, usw...

von Gerhard O. (gerhard_)


Lesenswert?

Auch der schnelle Anstieg oder das Ausschalten von Lasten erzeugt EMP 
Energie durch die schnelle Änderung des Stroms die sich auf empfindliche 
CMOS Bausteine auswirken kann. Der starke Stromfluss erzeugt starke 
Magnetfelder die bei plötzlicher Strom Änderung besonders stark werden 
und Elektronik in der Nähe beeinflussen können.

Man kann das ganz schön mit einem Weller Magnastat Lötkolben testen 
indem man das Lötkolben Kabel in der Nähe der Schaltung hat. Bei jeden 
Ausschalten des Magnastat wird ein starker EMP Impuls erzeugt der oft 
Flanken getriggerte Schaltungen beeinflusst. Versucht es mal. So etwas 
ist ein EMP Augenöffner:-) Das ist wirklich kein Jägerlatein.

von Mr. Ahnungslos (Gast)


Lesenswert?

Leiterbahnen sind kurz und dick. Ist auch nur das nötigste vorhanden. 
Selbst der Arduino hat nur die Pins die er braucht.

Die Motoren sind, wenn ich das richtig deute, einfache Kondensator 
Motore. Da funkt nix, weil keine Bürsten und keine Schalter, nur ein 
großer Folienkondensator mit 6µF und für 450V.

Als Netzteil nutze ich eines dieser 230V auf 5V 3W Dinger.
http://www.hlktech.net/product_detail.php?ProId=54

Das Netz ist hier eigentlich auch recht stabil. Stromschwankungen haben 
wir nicht, und Stromausfall in den letzten 30 Jahren auch nicht. 
Störungen in Geräten ebenso nicht. Norden halt, viel Strom aber kaum 
Abnehmer dafür.

Tollen Lötkolben für Störungsexperimente habe ich nicht. LS Digi 60 
Lötstation nenne ich schon über zwei Jahrzehnten mein eigen. Das Ding 
geht einfach nicht kaputt.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Mr. Ahnungslos schrieb:
> Tollen Lötkolben für Störungsexperimente habe ich nicht.

Nimm einfach ein Feuerzeug mit Elektrozündung. Ich habe dazu extra ein 
leeres Exemplar in meiner Werkzeugschublade.

von Gerhard O. (gerhard_)


Lesenswert?

Mr. Ahnungslos schrieb:
> Leiterbahnen sind kurz und dick. Ist auch nur das nötigste
> vorhanden.
> Selbst der Arduino hat nur die Pins die er braucht.
Wie schon geraten sollten sie mit Serienwiderständen und Cs geschützt 
werden. Kein uC I/O darf ungeschützt den Arduino verlassen. Ich kann Dir 
nur raten diese Vorschläge ernst zu nehmen. Ich entwickle nun schon seit 
über 20 Jahren Industrie Elektronik und habe damit Erfahrung. 
Konzentrier Dich hauptsächlich auf die uC Umgebung.
>
> Die Motoren sind, wenn ich das richtig deute, einfache Kondensator
> Motore. Da funkt nix, weil keine Bürsten und keine Schalter, nur ein
> großer Folienkondensator mit 6µF und für 450V.
Beim Abschalten sucht sich je nach Phasen Moment die in der Induktivität 
der Wicklung gespeicherte Energie einen Weg nach außen. Da helfen auch 
Snubber nichts. Die beschützen nur den Schalter. Einzig und alleine muss 
die Steuerelektronik durch entsprechende Schaltungsmassnahmen dagegen 
geschützt sein.
>
> Als Netzteil nutze ich eines dieser 230V auf 5V 3W Dinger.
> http://www.hlktech.net/product_detail.php?ProId=54
Sollte normalerweise nicht störanfällig sein.
>
> Das Netz ist hier eigentlich auch recht stabil. Stromschwankungen haben
> wir nicht, und Stromausfall in den letzten 30 Jahren auch nicht.
> Störungen in Geräten ebenso nicht. Norden halt, viel Strom aber kaum
> Abnehmer dafür.
Das hat wenig mit Deinen Problem zu tun.
>
> Tollen Lötkolben für Störungsexperimente habe ich nicht. LS Digi 60
> Lötstation nenne ich schon über zwei Jahrzehnten mein eigen. Das Ding
> geht einfach nicht kaputt.
Naja, der Magnastat ist diesbezüglich ein Unikum. Aber recht wirksam um 
Schwachstellen zu finden. Ein altes Gerät mit konventionellen Trafo kann 
auch ähnliche Störungen erzeugen.

: Bearbeitet durch User
von Mr. Ahnungslos (Gast)


Lesenswert?

"Serienwiderständen und Cs geschützt
werden"

Und das bewerkstellige ich wie genau? Die Atmels auf dem Arduino haben 
doch interne 20kOhm Pull-Up Widerstände. Die muss man aber halt extra 
aktivieren, was ich eigentlich bei allen Pins die ich nicht nutze 
gemacht habe.

Reicht das nicht schon aus? Muss ich an jeden ungenutzen Pin dann noch 
einen Kondensator hängen, oder nur an die genutzten? Und wie groß?

von MaWin (Gast)


Lesenswert?

Mr. Ahnungslos schrieb:
> Möchte eigentlich nur wissen ob SSR am Arduino wirklich keine Probleme
> mehr machen

Bei dir werden sie wohl Probleme machen.
Denn  andere Leute kriegen auch Schaltungen mit Relais störungsfrei hin, 
was dir offenbar nicht gelingt.
Warum sollte es denn plötzlich mit einem SSR klappen ?
Man muss verstehen warum eine Schaltung empfindlich ist.

von Gerhard O. (gerhard_)


Lesenswert?

Mr. Ahnungslos schrieb:
> "Serienwiderständen und Cs geschützt
> werden"
>
> Und das bewerkstellige ich wie genau? Die Atmels auf dem Arduino haben
> doch interne 20kOhm Pull-Up Widerstände. Die muss man aber halt extra
> aktivieren, was ich eigentlich bei allen Pins die ich nicht nutze
> gemacht habe.
Liste mal kurz Deine Ein- und Ausgänge.

Generell würde ich irgendwelche Schalter nach Masse schalten. Der 
Schalter selber soll über einen externen Pullup von einigen kOhm genug 
Strom über die Kontakte haben, dass ein paar mA fließen um die 
Schalterkontakte sauber zu halten. Vom Schalter verbinde den uC Input 
Pin mit 10KOhm. Direkt am Input Pin beim Arduino schliess einen 
Kondensator von 10n-0.1u nach Vdd (5V) an. Dieser Serien Widerstand und 
das C blockieren sehr wirksam externe Stör Energie. Den internen Pullup 
dann deaktivieren damit der externe R keinen Spannungsteiler mit dem 
internen macht.Der Grund warum das C nach Vdd gehen soll ist, dass beim 
Einschalten durch das Aufladen des Cs kein ungewollter Schaltvorgang 
ausgelöst wird. Prinzipiell kannst Du den C nach Masse auch anschließen. 
Musst aber aufpassen, dass Diene Software nicht regiert wenn Du es nicht 
willst.

Die Ausgänge zu Den Relais Treibern sollten auch einen Serienwiderstand 
direkt am Arduino haben um etwaige vagabundierende Stör Energie 
abzuhalten den Widerstand zu umgehen was der Fall wäre wenn Du Dich nur 
auf den Strombegrenzungswiderstand des Opto-Isolators verlässt.

Generell halte von den Wechselspannung und Last führenden Kabel so weit 
wie möglich weg vom uC. Idealerweise sollte der Controller in einem 
Metallgehäuse hausen.

Manchmal muss man eine Strategie mehrerer Methoden verwenden um zum Ziel 
zu kommen.

>
> Reicht das nicht schon aus? Muss ich an jeden ungenutzten Pin dann noch
> einen Kondensator hängen, oder nur an die genutzten? Und wie groß?
Nein. Brauchst Du nicht. Ungenutzte I/O Pins konfiguriert man am Besten 
als Ausgänge und lass sie unbeschaltet so dass keine Stör Energie 
eingekoppelt wird (Nach Möglichkeit)

: Bearbeitet durch User
von Mr. Ahnungslos (Gast)


Lesenswert?

Ich habe 4 Digitale Ausgänge zu den SSR.
https://www.ebay.de/itm/4-Kanal-Solid-State-Relais-5V-DC-2A-Omron-Modul-Arduino-Raspberry-Pi-/253093672937

Dann nutze ich den I²C Bus für ein OLED, das läuft nur per Tastendruck 
für 5s.
https://www.ebay.de/itm/0-96-Zoll-Arduino-OLED-Display-SSD1306-Weiss-128x64-I2C-IIC-Modul-Raspberry-P/252794945535?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649


Und nochmal zwei Analoge Pins für ein 4x4 Folien Tastenfeld.
Zwischen Tastenfeld und Arduino ist noch eine Platine mit Widerständen.
An jedem Pin hängt ein 10k Widerstand um ihn stabil zu halten. Bei 
Drücken der Tasten kommen dann weitere hinzu. Nichts aufregendes.

Das war es dann auch schon. Alles andere macht die Software, im Grunde 
nur eine programmierbare Zeitschaltuhr die für meine Bedürfnisse besser 
passt als das was man so kaufen kann.

von Stefan F. (Gast)


Lesenswert?

Antennen im Consumer Markt werden mit 50 bis 75 Ohm terminiert. Der 
interne Pull-Up des Mikrocontrollers hat 20-50kΩ und beeindruckt den 
Effekt der Leitungen als Antennen ungefähr gar nicht.

Früher waren Druckerkabel an den Enden so terminiert, damit sie 
zuverlässig funktionieren.
1
 
2
                                                     4,7k
3
                                                +---[===]---o 5V
4
           100Ω                           100Ω  |
5
IC out o--[===]---+--(L)---Kabel---(L)---[===]--+-----------o IC in
6
                  |                             |
7
           220pF ===                           === 220pF
8
                  |                             |
9
                 GND                           GND

(L) sollen Ferrit Perlen darstellen. Sie reduzieren sehr hochfrequente 
Störungen. Der Tiefpass beim Sender (links) reduziert die 
Flankensteilheit der Signale und damit störende Seiteneffekte auf andere 
Leitungen und Geräte. Der Empfänger (rechts) filtert hochfrequente 
Störungen mit einem weiteren Tiefpass heraus und sorgt mittels Pull-Up 
für einen definierten Pegel, falls kein Gerät angeschlossen ist. 
Weiterhin reduziert diese Schaltung Reflexionen im Kabel aufgrund der 
Terminierung, die ungefähr dem Wellenwiderstand der Leitung entspricht.

Je größer die Kondensatoren sind, umso wirkungsvoller reduzieren sie 
Störungen. Aber sie Bedämpfen auch das Signal und reduzieren die 
übertragbare Frequenz. Bei Tastern und Schaltern für manuelle Betätigung 
sind 100nF Ok.

Überspannungsschutz ist hier noch nicht mit drin, ich denke das ist zur 
Zeit auch deine geringste Sorge.

von Mr. Ahnungslos (Gast)


Lesenswert?

Es ist ein Arduino Nano, das Netzteil geht auf die 5V, die beiden GND 
Pins des Arduino hängen zusammen an Masse. Die Kupferlage zwischen den 
Leiterbahnen ist nicht auf Masse, sollte sie wohl? Direkt, oder was 
dazwischen?

Die 230V sind freigefräßt, da ist kein Kupfer im Umkreis von etwas mehr 
als 6mm.


Aus dem CAD
Leiterbahnen:
http://www.bilder-upload.eu/upload/99315d-1525895578.jpg

Bestückungsseite:
http://www.bilder-upload.eu/upload/c97607-1525895625.jpg

von Stefan F. (Gast)


Lesenswert?

Hier ist das Datenblatt zu den SSR Omron G3MB-202P: 
https://www.openhacks.com/uploadsproductos/g3mb-ssr-datasheet.pdf
(Mr. Ahnungslos, das wäre dein Job gewesen)

Diese SSR enthalten den fragwürdigen Zero-Cross Detector. Leider konnte 
ich keine Angabe finden, inwifern diese für induktive Lasten geeignet 
sind. Im Zweifelsfall würde ich lieber andere SSR nehmen, die 
ausdrücklich für induktive Lasten gedacht sind.

Schau Dir auch das an: 
https://www.ia.omron.com/support/guide/18/further_information.html

von Mr. Ahnungslos (Gast)


Lesenswert?

Zumindest steht im Datenblatt das bei Motoren 1,6A Maximallast drin 
sind.
Also gehe ich mal davon aus das die schon Induktive Lasten vertragen 
müssten.

Ich brauche ja nur so um die 1-1,2A

von Gerhard O. (gerhard_)


Lesenswert?

Falls die Relais noch dran sind wie am Anfang des Threads. Verbinde mal 
den RESET Eingang mit Vcc und schalte dann mal so viel wie Du kannst. 
Der RESET Eingang ist beim Arduino relativ hochohmig ausgeführt um den 
Bootloader durch DTR zu triggern. Es ist auch die Achillesferse der uC. 
Das würde mich sehr interessiersn ob das alleine dein Problem 
möglicherweise reduziert oder unterbindet.

von Mr. Ahnungslos (Gast)


Lesenswert?

Geht leider nicht, das ganze ist dauerhaft im Einsatz.

Problem ist halt das zwischen den letzten beiden Abstürzen gute 200 
Schaltungen der mechanischen Relais lagen. Ich kann die Pumpen auch 
nicht so oft an und abstellen.

von Gerhard O. (gerhard_)


Lesenswert?

Mr. Ahnungslos schrieb:
> Geht leider nicht, das ganze ist dauerhaft im Einsatz.
>
> Problem ist halt das zwischen den letzten beiden Abstürzen gute 200
> Schaltungen der mechanischen Relais lagen. Ich kann die Pumpen auch
> nicht so oft an und abstellen.

Den RESET Eingang würde ich aber trotzdem falls zugänglich auf Vcc 
legen. Vielleicht verbessert sich dann die Situation. Schaden kann es 
auf keinen Fall. Nur nicht vergessen die Verbindung zu entfernen wenn Du 
den Controller neu Flashen möchtest.

: Bearbeitet durch User
von Mr. Ahnungslos (Gast)


Lesenswert?

Da sich beide Pins nebeneinander befinden, müsste ich das per Jumper 
realisieren können.

von Gerhard O. (gerhard_)


Lesenswert?

Mr. Ahnungslos schrieb:
> Da sich beide Pins nebeneinander befinden, müsste ich das per
> Jumper
> realisieren können.

Schlaflos?

Ja. Das stimmt. Zwischen dem dritten und viertem Pin auf der rechten 
Seite von der USB Buchse.

: Bearbeitet durch User
von Gerhard O. (gerhard_)


Lesenswert?

Gerhard O. schrieb:
> Mr. Ahnungslos schrieb:
>> Da sich beide Pins nebeneinander befinden, müsste ich das per
>> Jumper
>> realisieren können.
>
> Schlaflos?
>
> Ja. Das stimmt. Zwischen dem dritten und viertem Pin auf der rechten
> Seite von der USB Buchse.

Stimmt nicht. Ist auf der entgegengesetzten Seite.

von Wolfgang (Gast)


Lesenswert?

Mr. Ahnungslos schrieb:
> Die Relaiskarten haben doch alle Optokopler.

Benutzt du die auch zur Isolation oder haben Arduino und Relaistreiber 
gemeinsame Masse und VCC?

von Stefan F. (Gast)


Lesenswert?

Man könnte auch ein Dupont Kabel auf die ISP Stiftleiste stecken, um 
Reset mit VCC zu verbinden.

von Peter D. (peda)


Lesenswert?

Mr. Ahnungslos schrieb:
> Manchmal ist beim schalten
> dann der Arduino abgestürzt.

Wie äußert sich das konkret?
Hast Du nach einem "Absturz" mal die Resetquelle ausgelesen?

von Einer K. (Gast)


Lesenswert?

Peter D. schrieb:
> Hast Du nach einem "Absturz" mal die Resetquelle ausgelesen?
Eigentlich eine gute Idee!

Aber leider wird das Register vom Bootloader überschrieben.
Die Information kommt also normalerweise nicht bis zum Hauptprogramm 
durch.

von Mr. Ahnungslos (Gast)


Lesenswert?

https://components101.com/sites/default/files/component_pin/Arduino-Nano-Pinout.png

Reset gibt es 2x, einmal neben dem 5V Pin, einmal neben Masse auf der 
anderen Seite.


Aber wie kann man da was auslesen wenn der Arduino hängt? Würde er 
einfach ein Rest machen, das würde ich gar nicht merken. Da der Absturz 
an einem Punkt kommt wo der Programmablauf ohnehin von vorne beginnt.
Der Arduino hängt richtig. Ich muss den Stecker ziehen, oder halt das 
Gehäuse öffnen und Reset drücken.


Die alte Relaiskarte:
https://www.ebay.de/itm/4-Kanal-Relais-5V-230V-Raspberry-Pi-Optokoppler-Modul-Channel-Relay-Arduino/252895985560?hash=item3ae1c67f98:g:lKcAAOSwGPxaD2TB

Selbe Stromversorgung wie der Arduino. Die Optokopler trennen nur Relais 
und Datenleitungen.

von Gerhard O. (gerhard_)


Lesenswert?

Mr. Ahnungslos schrieb:
> https://components101.com/sites/default/files/comp...
>
> Reset gibt es 2x, einmal neben dem 5V Pin, einmal neben Masse auf der
> anderen Seite.
>
> Aber wie kann man da was auslesen wenn der Arduino hängt? Würde er
> einfach ein Rest machen, das würde ich gar nicht merken. Da der Absturz
> an einem Punkt kommt wo der Programmablauf ohnehin von vorne beginnt.
> Der Arduino hängt richtig. Ich muss den Stecker ziehen, oder halt das
> Gehäuse öffnen und Reset drücken.
>
> Die alte Relaiskarte:
> Ebay-Artikel Nr. 252895985560
>
> Selbe Stromversorgung wie der Arduino. Die Optokopler trennen nur Relais
> und Datenleitungen.

Wenn Dein Arduino einen Watchdog tauglichen Bootloader hat, würde ich 
Dir den als Wink mit dem Zaunpfahl (für den AVR) bis zur wahren Behebung 
des Problems empfehlen den zu aktivieren. Nicht alle Bootloader sind 
aber Watchdog tauglich. Die Optiboot können das in der Regel.

Sonst würde ich Dir raten die Ein und Ausgänge in industrieller Manier 
zu festigen. Zumindest, arbeite mit niedrigen Pullups(2-5K) Verlasse 
Dich nicht auf die internen schwachen Pullups. Auch die 5V 
Stromversorgung könnte von den Störungen beeinflußt werden. Hänge da mal 
einen externen 47uF von Vcc nach Masse. Brownout sollte auch in den 
Fuses aktiviert sein.(Ist meist der Fall bei Arduinos - aber da müsste 
ich mal nachschauen.)

Die wirkliche Ursache oder Weg der Störungen in den AVR zu finden wird 
nicht leicht sein.

von Stefan F. (Gast)


Lesenswert?

Wer das nötige Equipment (ISP Programmer) hat, den Bootloader 
auszuwechseln, kann auch gleich drauf verzichten.

von Gerhard O. (gerhard_)


Lesenswert?

Stefanus F. schrieb:
> Wer das nötige Equipment (ISP Programmer) hat, den Bootloader
> auszuwechseln, kann auch gleich drauf verzichten.

Das wollte ich nicht sagen, dachte es aber:-)

Was den Arduino betrifft, habe ich schon einige Projekte mit AC Relais 
Schaltern gemacht und nie die o.g. probleme erfahren. Allerdings schütze 
ich den Arduino in industrieller Manier. Prinzipiell besteht kein Grund 
dem Arduino diesbezüglich mißtrauisch gegenüber zu stehen. Jeder uC oder 
digitale Steuerschaltung braucht eben den nötigen Schutz gegen die 
externe Welt.

Vielleicht könnte der TO ein genaues Schaltbild hier veröffentlichen. 
Dann könne man konkrete Verbesserungen vorschlagen. So ist das etwa wie 
ins Dunkle zu schießen...

Ein Oszi wäre auch nicht so verkehrt. Manchmal ist es ein Augenöffner 
wenn man sieht was da für welche durch Schalten EM induzierte 
Spannungsimpulse auftreten.

von Peter D. (peda)


Lesenswert?

Mr. Ahnungslos schrieb:
> Der Arduino hängt richtig. Ich muss den Stecker ziehen, oder halt das
> Gehäuse öffnen und Reset drücken.

Dann kann es sein, daß die Mainloop hängt, weil an einem unerwarteten 
Zustand auf ewig gewartet wird.
Ewig warten sollte man daher verbieten, z.B. in jedem If/Switch einen 
default vorsehen oder wenn nicht anders möglich, einen Timeout 
aufsetzen.

Ich programmiere immer so, daß nirgends gewartet wird. Wenn ein Ereignis 
noch nicht eingetroffen ist, geht die Funktion wieder zum Main zurück 
und testet dann im nächsten Aufruf.

Es kann auch sein, daß das Programm scheinbar nichts tut, aber einfach 
nur das Display an einer langen Leitung sich verklemmt hat. Ich 
initialisiere daher das Display zyklisch wieder neu. Wenn man dabei kein 
Display-Clear ausführt, bleibt einfach der alte Text stehen, d.h. das 
Initialisieren bleibt unsichtbar.

Ich habe auch oft eine LED, die in der Mainloop alle 0,5s getoggled 
wird, d.h. man sieht quasi den Herzschlag des Programms.

von Mr. Ahnungslos (Gast)


Lesenswert?

Da kann nichts hängen, da er auf nichts wartet. Keine schleifen, kein 
delay, nix, nur einfache abfragen im loop.

Mir scheint als hätte es immer irgendetwas im Speicher zerschossen. Ich 
hatte 2x eine dauerhafte Anzeige auf dem OLED. Damit das OLED überhaupt 
etwas anzeigt müsste ich eine bestimmte Taste drücken. Bei der Anzeige 
auf dem OLED hätte sogar dann ein Ausgang aktiv sein müssen. War er aber 
nicht, und die Anzeige hätte sich jede Sekunde aktualisieren müssen, tat 
sie aber nicht sie stand. Er reagiert dann auch nicht mehr auf Tasten.

Das ist mein erster Arduino, ich habe also nichts zum Bootloader 
auswechseln.

Kondensator an das Netzteil werde ich machen, einen Keramik Kondensator 
hänge ich dann noch an das Keypad. Den I²C Bus kann ich nicht irgendwie 
zusätzlich absichern? Viel mehr ist ja nicht.

Was ist mit der Kupferfläche zwischen den Leiterbahnen? Die ist noch 
nicht auf Masse, sollte ja auch etwas gegen Störungen helfen? Einfach so 
auf Masse oder noch irgend etwas dazwischen?

von Manfred (Gast)


Lesenswert?

Gerhard O. schrieb:
> Stefanus F. schrieb:
>> Wer das nötige Equipment (ISP Programmer) hat, den Bootloader
>> auszuwechseln, kann auch gleich drauf verzichten.
> Das wollte ich nicht sagen, dachte es aber:-)

Überlasst das Denken den Pferden, die haben den größeren Kopf.

Ich habe hier Hardware fertig, Gehäuse zu, an der Software muß aber noch 
gearbeitet werden. Da ist eine USB-Buchse in der Rückwand und erlaubt 
dank Bootloader / Arduino einen komfortablen Zugriff.

von Stefan F. (Gast)


Lesenswert?

> Was ist mit der Kupferfläche zwischen den Leiterbahnen?
Kann niemand abschätzen, ohne entsprechende Messungen.

> Den I²C Bus kann ich nicht irgendwie zusätzlich absichern?
Pull-Up Widerstände auf 2,2k oder 4,7k Ohm verringern, falls du das noch 
nicht gemacht hast.

Wenn du wirklich voran kommen willst, dann mache was. Du hast genug 
Anregungen bekommen. Durch Fragen über Fragen wird es nicht besser.

von Alexander S. (alex998)


Lesenswert?

Mr. Ahnungslos schrieb:
> Ich
> hatte 2x eine dauerhafte Anzeige auf dem OLED. Damit das OLED überhaupt
> etwas anzeigt müsste ich eine bestimmte Taste drücken. Bei der Anzeige
> auf dem OLED hätte sogar dann ein Ausgang aktiv sein müssen. War er aber
> nicht, und die Anzeige hätte sich jede Sekunde aktualisieren müssen, tat
> sie aber nicht sie stand. Er reagiert dann auch nicht mehr auf Tasten.

> I²C Bus

Falls du noch keinen hast, besorg dir mal so nen preiswerten 
Logicanalyzer zB. 
https://www.amazon.de/AZDelivery-Logic-Analyzer-kompatibel-Version/dp/B01MUFRHQ2/ref=sr_1_1?ie=UTF8&qid=1526035103&sr=8-1&keywords=logic+analyzer 
, dazu SigRok und schau mal was auf dem Bus passiert.

von Mr. Ahnungslos (Gast)


Lesenswert?

Stefanus F. schrieb:
> Durch Fragen über Fragen wird es nicht besser.

Ähm doch, ich verstehe dank der Antworten die Zusammenhänge besser. Und 
bekommen dadurch auch wichtige Stichpunkte für meine weitere 
Informationsbeschaffung. Ich bin kein Elektrotechniker, ich bin 
Informatiker.

Wenn ich früher mal eine Schaltung brauchte bin ich zum örtlichen Radio 
und Fernsehtechniker. Der hat mir den Schaltplan aufgezeichnet und die 
Bauteile verkauft. Der gute ist aber nicht mehr, und jetzt rächt sich 
meine Faulheit von damals so langsam. Dachte halt ich muss nur die 
fertigen Sachen kaufen, zusammen stecken, und dann läuft das schon. 
Schein wohl nicht so zu sein.

von Stefan F. (Gast)


Lesenswert?

Schön, dass du in die Tiefe gehen willst. Damit hatte ich nicht 
gerechnet.

von Einer K. (Gast)


Lesenswert?

Mr. Ahnungslos schrieb:
> Dachte halt ich muss nur die
> fertigen Sachen kaufen, zusammen stecken, und dann läuft das schon.
> Schein wohl nicht so zu sein.

Doch natürlich!
Muss allerdings die richtigen Sachen kaufen und dann auch richtig 
zusamemenstöpseln.

Mr. Ahnungslos schrieb:
> Ich bin kein Elektrotechniker, ich bin
> Informatiker.
Geschätzte 3 Jahre intensive Beschäftigung damit, dann hast du auch die 
elektronischen Grundlagen auf dem Schirm.
Dann sind solche Schaltungen keine Hürde mehr.

von Mr. Ahnungslos (Gast)


Lesenswert?

Heute waren dann meine Kondensatoren in der Post und ich konnte alles 
mal einlöten.

An den I2C habe ich an beide Leitungen 2,2K Pull-Up gelötet.

An die Arduino 5V zu GND Pins einen Keramik Kondensator.

An die beiden Analogen Eingänge für das Tastenfeld, jeweils einen 
Keramik Kondensator nach GND. 10K Pull-Up hatten die schon von Anfang 
an.

Wo ich jetzt unschlüssig bin. Die SSR Karte, da sind ja einige 
Widerstände drauf. Trotzdem noch Pull-Up einlöten?


Und für das nächste Projekt, wo gehören Pull-Up hin, so dicht wie 
möglich an den Arduino. Oder so dicht es geht an den was auch immer 
angeschlossen wird? Oder sogar auf beiden Seiten jeweils einer? Oder in 
der Regel egal?

von Stefan F. (Gast)


Lesenswert?

> Die SSR Karte, da sind ja einige
> Widerstände drauf. Trotzdem noch Pull-Up einlöten?

Lass mal, die werden kaum einen Einfluss auf die Zuverlässigkeit des µC 
haben.

> Und für das nächste Projekt, wo gehören Pull-Up hin

Kann man so pauschal nicht beantworten.

von Mr. Ahnungslos (Gast)


Lesenswert?

Bis heute keinerlei Ausfälle mehr, läuft zuverlässig das ganze.

von Ling L. (Firma: none) (ling1995)


Lesenswert?


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.