Forum: Mikrocontroller und Digitale Elektronik Arduino Motoransteuerung = absturz


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Servus,

Ich weiß es gibt schon einige Threads mit diesem Thema, aber es waren 
noch nicht die richtigen Vorschläge dabei.

Mein Problem : Ich möchte mit einem Arduino UNO und mit 4 Kanal Relais 
einen 0,75kW Motor steuern, allerdings stürzt der UNO fast jedesmal ab, 
wenn ich den Motor einschalten will und startet sofort wieder(allerdings 
vergisst der natürlich den bisherigen Zustand). Bzw wenn er mal läuft 
kann passiert es manchmal, dass er beim Ausschalten abstürzt. Während er 
läuft ist stürzt er nie ab..nur beim Ein- oder Ausschalten

Mittlerweile habe ich das Relais Modul ca 20cm vom Arduino weggebaut um 
sicherzustellen, dass Induktivität nicht das Problem ist. Kondensatoren 
halten die Spannung beim Einschalten des Motors stabil (wurde auch schon 
gemessen)

Wenn der Motor abgeklemmt ist, funkt alles einwandfrei und 100% 
ausfallsicher - also auch kein Softwarefehler


bitte um Hilfe..
Lg Thomas

von Stefan F. (Gast)


Lesenswert?

Woher bezieht der Motor seine Stromversorgung?

Ein Foto oder Plan vom ganzen Aufbau wäre hilfreich.

von MaWin (Gast)


Lesenswert?

Ja nun, Motoren sind Störfeuerwerke. Du muss man halt eine störsichere 
Schaltung aufbauen und den Motor entstören und bei Funken an Funk 
denken, die auch ohne Kabel übertragen werden, z.B. vom Relaiskontakt 
zur Relaisspule.

von Sebastian S. (amateur)


Lesenswert?

Hübsch bunt die Relaisplatine!
Allerdings erschließt sich mir nicht, ob nicht vielleicht eine rote 
besser gewesen wäre;-)

Also Spaß beiseite; Ernst komm raus!
Oder wie der Stephan bereits, indirekt gesagt hat: Prosa ist eine Sache, 
ein Schaltbild eine andere.

von Thomas (kosmos)


Lesenswert?

ich denke das der Motor die komplette Stromversorung wo auch der Arduino 
mit dran hängt runterzieht.

Vom Aufbau her sind diese Relaisplatinen ganz üblich, also Optokoppler 
einem2ten nachgeschaltetem Transistor dahinter und die übliche 
Freilaufdiode für die Relaisspule damit es keine Induktionsspannungen 
gibt.

Warscheinlich verwendest du auf beiden Seiten der Optokoppler die 
gleiche Spannungsquelle. Wenn also die Relaisspule zuviel Strom zieht, 
zieht es dir auch die Versorgungsspannung des Arduinos runter.

von Stefan F. (Gast)


Lesenswert?

> Wenn also die Relaisspule zuviel Strom zieht, zieht
> es dir auch die Versorgungsspannung des Arduinos runter.

Diese Relais "ziehen" mitsamt Ansteuerschaltung jeweils etwas weniger 
als 50mA. Dafür reicht der interne Spannungsregler aller Arduino Module 
aus.

von Thomas (kosmos)


Lesenswert?

Auf dem Arduino Board sitzt vielleicht ein 5V/1A Regler, was aber wenn 
das Netzteil nicht soviel liefern kann?

von Stefan F. (Gast)


Lesenswert?

> was aber wenn das Netzteil nicht soviel liefern kann?

Ja, gute Frage.

von Nop (Gast)


Lesenswert?

Stefan U. schrieb:

> Diese Relais "ziehen" mitsamt Ansteuerschaltung jeweils etwas weniger
> als 50mA. Dafür reicht der interne Spannungsregler aller Arduino Module
> aus.

Deswegen läuft der Aufbau ja auch, solange der Motor nicht angeklemmt 
ist. Aber wenn die Versorgung für den Einschaltstrom des Motors nicht 
reicht, sackt die Spannung am Arduino AUCH weg, und es gibt nen Reset.

Eine billige Abhilfe wäre es, am Arduino-Eingang der Versorgungsspannung 
einen fetten Elko zu setzen, aber vor dem Elko noch eine Diode. Dann 
kann die Versorgung mal wegbrechen, der Elko puffert den Arduino, und 
die Diode verhindert, daß der Elko den Motor speist.

Wäre jedenfalls mein quick&dirty-Hack hier, um erstmal zu gucken.

von Otto (Gast)


Lesenswert?

Nop schrieb:
> Stefan U. schrieb:
>
>> Diese Relais "ziehen" mitsamt Ansteuerschaltung jeweils etwas weniger
>> als 50mA. Dafür reicht der interne Spannungsregler aller Arduino Module
>> aus.
>
> Deswegen läuft der Aufbau ja auch, solange der Motor nicht angeklemmt
> ist. Aber wenn die Versorgung für den Einschaltstrom des Motors nicht
> reicht, sackt die Spannung am Arduino AUCH weg, und es gibt nen Reset.
>
> Eine billige Abhilfe wäre es, am Arduino-Eingang der Versorgungsspannung
> einen fetten Elko zu setzen, aber vor dem Elko noch eine Diode. Dann
> kann die Versorgung mal wegbrechen, der Elko puffert den Arduino, und
> die Diode verhindert, daß der Elko den Motor speist.
>
> Wäre jedenfalls mein quick&dirty-Hack hier, um erstmal zu gucken.

Der 0,75kW-Motor wird wohl kaum auf der Niederspannungsseite 
angschlossen sein. Natürlich kann es nicht schaden, dass Netzteil 
robuster zu machen.

Vermutlich ist aber die beim Ein- und Ausschalten entstehende 
Spannungsspitze die Ursache.

von Nop (Gast)


Lesenswert?

Otto schrieb:

> Vermutlich ist aber die beim Ein- und Ausschalten entstehende
> Spannungsspitze die Ursache.

Dagegen wäre eine TVS-Diode nach GND eine Abhilfe. Diese würde ich vor 
die Sperrdiode setzen. Und vor die TVS-Diode eine angemessene Sicherung.

von Stefan F. (Gast)


Lesenswert?

> Der 0,75kW-Motor wird wohl kaum auf der
> Niederspannungsseite angschlossen sein

Es sei denn, er ist Kollege von dem Typ, der ein Labornetzteil mit 60V 
40A haben wollte :-)

von Thomas (Gast)


Lesenswert?

Vorerst danke für die vielen Antworten!

noch ein paar Daten:

Spannungsversorgung Arduino : 9V, 1A Netzteil & mit Elkos stabilisiert 
- Spannungseinbruch ist nicht das Problem, habe ich schon gemessen

Spannungsspitzen Da der Motor an den 230VAC hängt (und das Netzteil 
natürlich auch) sind im Netzteil  logischerweise Dioden drinnen - sonst 
wäre keine Gleichspannung möglich. Also Spannungsspitze vom Motor sollte 
auch kein Problem sein

Stromaufnahme Relais Ich gehe vom 5V Pin des Arduinos zu VCC vom 
Relais Shield, weil wenn ich das direkt an das 9V Netzteil anhänge 
schalten alle Relais automatisch durch (möglicherweise sind die 
Optokoppler nicht für 9V ausgelegt?)  Daher kann das ein Problem sein, 
weiß allerdings nicht wie ich das beheben soll.. und verstehe auch nicht 
wieso das weniger Strom aufnehmen sollte wenn der Motor abgeklemmt ist

Schaltplan leider sitzt ich gerade im Flugzeug und habe keinen Zettel 
bei mir aber ich gehe mit 230 an dem Motor und zum Netzteil
mit 9V über Elkos zum Arduino und vom Arduino zum Relais Shield

von Stefan F. (Gast)


Lesenswert?

Ich denke die Nachforschungen sollten in Richtung EMV gehen.

Ist eventuell der Reset-Pin vom Arduino hochohmig angebunden ohne 
Kondensator oder mit einem Pul-Up >10k Ohm)?

Kann es sein, dass ein besonders Kurzer Impuls an einem Eingang eine 
Fehlfunktion der Software auslöst? Oder eine Kombination von 
Eingangssignalen, die im Programm nicht vorgesehen sind?

von spess53 (Gast)


Lesenswert?

Hi

Bei mir hat in einem ähnlichem Fall die Trennung der Controller- von der 
Relaisstromversorgung geholfen. Vielleicht mal mit 2 getrennten 
Netzteilen testen. Masseverbindung nicht vergessen.

MfG Spess

von Thomas (kosmos)


Lesenswert?

die Relaisplatine besitzt ja Optokoppler als sollte man auch beide 
Seiten getrennt versorgen sonst könnte man gleich auf den Optokoppler 
verzichten. Mit einem Multimeter wird man keinen kurzfristigen 
Spannungsabfall messen können hier muss man mit einem Oszilloskop ran. 
Also mal zw. VCC und GND bzw. Reset und GND Pin messen.

von spess53 (Gast)


Lesenswert?

Hi

>die Relaisplatine besitzt ja Optokoppler als sollte man auch beide
>Seiten getrennt versorgen sonst könnte man gleich auf den Optokoppler
>verzichten.

Da oft die Ein- und Ausgänge der Optokoppler den gleichen Massebezug 
haben sind die eh reine Kosmetik. Also Schwachsinn und verzichtbar.

MfG Spess

von MWS (Gast)


Lesenswert?

Thomas schrieb:
> Stromaufnahme Relais Ich gehe vom 5V Pin des Arduinos zu VCC vom
> Relais Shield, weil wenn ich das direkt an das 9V Netzteil anhänge
> schalten alle Relais automatisch durch (möglicherweise sind die
> Optokoppler nicht für 9V ausgelegt?)

Die LEDs der Optokoppler hängen an VCC, ein Signal auf GND aktiviert die 
Led.
Bei VCC 9V und Controller 5V leiten dessen Clamp-Dioden, die 4V 
Differenz reicht den LEDs.

Da ist ein Jumper rechts im Bild, den ziehst Du ab, am Pin JD-VCC des 
Jumpers speist Du die 9V vom Netzteil ein, an VCC (kann auch VCC der 6er 
Stiftleiste sein) legst Du die 5V vom Controller. Dann bist Du das 
Problem los.

Die Relais könnten ein wenig warm werden dabei, die auf dem Bild sind 
für Spulenspannung 5V ausgelegt, wenn's ganz ordentlich sein soll, dann 
JD-VCC mit 'nem kleinen 5V-Regler aus 9V versorgen.

von Peter D. (peda)


Lesenswert?

Thomas schrieb:
> Wenn der Motor abgeklemmt ist, funkt alles einwandfrei und 100%
> ausfallsicher - also auch kein Softwarefehler

Schau mal ins Datenblatt des AVR. Man kann auslesen, welche Resetquelle 
den Reset ausgelöst hat. Ist kein Bit gesetzt, dann ist es ein 
Softwarefehler.

von Thomas (Gast)


Lesenswert?

Peter D. schrieb
> Schau mal ins Datenblatt des AVR. Man kann auslesen, welche Resetquelle
> den Reset ausgelöst hat. Ist kein Bit gesetzt, dann ist es ein
> Softwarefehler.
Wie mach ich das? - habe nichts in diesem Datenblatt gefunden.


MWS schrieb:
> Bei VCC 9V und Controller 5V leiten dessen Clamp-Dioden, die 4V
> Differenz reicht den LEDs.
klingt logisch, es werden zwar auch die Spulen angezogen aber guter 
einwand

Ich werde sobald ich zu Hause bin mal die 9V vom Netzteil mittls Dioden 
auf ca 5V bringen und an VCC von den Relais anklemmen und schauen ob das 
funktioniert..

von MWS (Gast)


Lesenswert?

> MWS schrieb:
>> Bei VCC 9V und Controller 5V leiten dessen Clamp-Dioden, die 4V
>> Differenz reicht den LEDs.
> klingt logisch, es werden zwar auch die Spulen angezogen aber guter
> einwand

Bei 0V oder 5V vom Controller sehen die Optokopplerleds bei VCC 9V 
entweder 9V oder 4V, leuchten also immer. Natürlich ziehen dann auch 
alle Relaisspulen an.

> Ich werde sobald ich zu Hause bin mal die 9V vom Netzteil mittls Dioden
> auf ca 5V bringen und an VCC von den Relais anklemmen und schauen ob das
> funktioniert..

Hier sollte man genau sein, diese 5V nicht an VCC der Relaisplatine, 
sondern an JD-VCC, nachdem der Jumper entfernt wurde. VCC der 
Relaisplatine geht an 5V des Controllers.

Schaltplan:
http://www.haoyuelectronics.com/Attachment/Four-Relay-Module/4%20channel%20SCH.pdf

Der Optokopplerteil ist so vom Relaisteil getrennt, bis auf gemeinsames 
GND natürlich. Peaks von den Relais können nur den Umweg über den 
Spannungsregler nehmen und das dürfte die Sache sehr entspannen.

von Peter D. (peda)


Lesenswert?

Thomas schrieb:
> Wie mach ich das? - habe nichts in diesem Datenblatt gefunden.

MCUSR:
"Bit 3 – WDRT: Watchdog System Reset Flag
This bit is set if a Watchdog System Reset occurs. The bit is reset by a 
Power-on Reset, or by writing a '0'
to the flag.
Bit 2 – BORF: Brown-out Reset Flag
This bit is set if a Brown-out Reset occurs. The bit is reset by a 
Power-on Reset, or by writing a '0' to the
flag.
Bit 1 – EXTRF: External Reset Flag
This bit is set if an External Reset occurs. The bit is reset by a 
Power-on Reset, or by writing a '0' to the
flag.
Bit 0 – PORF: Power-on Reset Flag
This bit is set if a Power-on Reset occurs. The bit is reset only by 
writing a '0' to the flag.
To make use of the Reset Flags to identify a reset condition, the user 
should read and then Reset the
MCUSR as early as possible in the program. If the register is cleared 
before another reset occurs, the
source of the reset can be found by examining the Reset Flags.
Atmel"

von Chris K. (Gast)


Lesenswert?

Vorsicht vor diesen China Relais Platinen mit vermeintlicher 
galvanischer Trennung. Das mag auf den ersten Blick ganz gut aussehen 
mit der Isolationsfräsung. Nur leider sind die Relais so gebaut, dass 
die heiße Seite direkt neben dem Pin für die Relaisspule liegt. Also ist 
die Isolationsstrecke nur ungefähr 2 mm. Ergo bringt der Optokoppler mal 
so rein gar nichts.

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.