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?
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.
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
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.
Der Haken ist, dass SSR ohne Snubber ratz-fatz kaputt gehen. Relais überleben kleine Funken üblicherweise etwas länger.
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.
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?
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.
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.
> 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.
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.
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?
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...
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.
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.
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.
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
"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ß?
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.
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
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.
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.
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
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
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
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.
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.
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
Da sich beide Pins nebeneinander befinden, müsste ich das per Jumper realisieren können.
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
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.
Mr. Ahnungslos schrieb: > Die Relaiskarten haben doch alle Optokopler. Benutzt du die auch zur Isolation oder haben Arduino und Relaistreiber gemeinsame Masse und VCC?
Man könnte auch ein Dupont Kabel auf die ISP Stiftleiste stecken, um Reset mit VCC zu verbinden.
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?
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.
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.
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.
Wer das nötige Equipment (ISP Programmer) hat, den Bootloader auszuwechseln, kann auch gleich drauf verzichten.
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.
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.
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?
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.
> 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.
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.
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.
Schön, dass du in die Tiefe gehen willst. Damit hatte ich nicht gerechnet.
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.
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?
> 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.
Bis heute keinerlei Ausfälle mehr, läuft zuverlässig das ganze.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.