Forum: Mikrocontroller und Digitale Elektronik Arduino Motoransteuerung Probleme


von Marxx (Gast)


Angehängte Dateien:

Lesenswert?

Moin alle zusammen,

ich habe ein Problem bei der Regelung des Gleichstrommotors mit dem 
Arduino. Würde mich sehr freuen, wenn ich von euch einen Ratschlag und 
Hilfe bekommen würde.
Mein Problem:
Sobald ich meine Schaltung mit Spannung versorge und den Motor 
einschalten will, stürzt der Arduino ab und der Motor beschleunigt bis 
zu einer Geschwindigkeit. Daraufhin habe ich einen Oszilloskop an den 
Ausgang des Treibers angeschlossen und wieder die Spannung angelegt. 
Dabei habe ich festgestellt, dass bei Betätigung des Gaspedals die PWM 
bei einem Wert stehen bleibt. Drückt man das Gaspedal schnell 
beschleunigt der Motor auf eine höhere Geschwindigkeit. Anschließend 
reagiert der Arduino auf keine Eingangssignale. Erst wenn ich die 
Spannung entferne kommt der Motor zum Stillstand.
Mir ist auch aufgefallen, dass manchmal der Motor auf direkt beim 
Anlegen der Spannung startet.
Einen Software-Fehler kann ich ausschließen, da ohne den Motor alle 
Funktionen funktionieren.
Im Anhang habe ich den dazuhörigen Schaltplan reingestellt mit den 
verwendeten Komponenten.

Mfg Marxx

von Stefan F. (Gast)


Lesenswert?

Die Kondenatoren patallel zum Motor müssenweg, sie erzeugen bei jedem 
PWM Impuls einen Kurzschluss. Die Freilaufdiode gehört parallel zum 
Motor angeschlossen, nicht parallel zum Transistor.

Dann wäre ein Bild von der Leitungsführung, insbesondere GND 
interessant. Der Hohe Strom durch Motor (und Kondensatoren) kann 
erheblichen Einfluss auf das GND Potential an unterschiedlichen Punkten 
haben.

GND muss Sternförmig verdrahtet werden.

von MaWin (Gast)


Lesenswert?

Marxx schrieb:
> Einen Software-Fehler kann ich ausschließen

Schaltungsfehler wohl nicht.

Wieso schaust du nicht vorher, wie man es richtig macht ? Wie kommt man 
auf die Idee einer Freilaufdiode parallel zum Schalttransistor ? Wie 
kommt man auf die Idee, nach der PWM Elkos anzubringen, die jedesmal 
wenn der Schalttransistor einschaltet die Betriebsspannung auf ihre 
Entladespannung runterzerren und gigantische Stromspitzen anfordern um 
sich aufzuladen ? Ein Elko nach dem Puls bildet eine 
Spitzenwertgleichrichtung auf die immer gleiche Versorgungsspannung, da 
ist nichts mehr mit regeln.
Und wie kommt man darauf, den Motor nicht zu entstören ?
1
                 +--47uH--+---+---+
2
                 |        |   |   |
3
                 |        | 47nF  |
4
 ----------------+        |   |   |
5
verdrillte Zuleitung    47nF  +--(M)
6
 ----------------+        |   |   |
7
                 |        | 47nF  |
8
                 |        |   |   |
9
                 +--47uH--+---+---+

von Marxx (Gast)


Lesenswert?

Die Kondensatoren parallel zum Motor wurden da eingebaut weil der Motor 
vorher brutal unrund lief. Mit den Elkos lief der Motor immerhin rund 
auch mit den MOSFETS ohne Probleme, nur der Arduino schmiert ab. Das mit 
der Diode über die MOSFETS war gedacht um die MOSFETS zu schützen da 
laut einem anderen Experten die Body Dioden zu klein seien und zu einer 
unnötig zusätzlichen erwärmung führen.
Also eine Diode parallel zum Motor werden wir einbauen, die 
Kondensatoren nehmen wir auch testhalber weg bzw. Probieren es mit 
wesentlich kleineren Kapazitäten.

MfG

von Gerhard O. (gerhard_)


Lesenswert?

Zu dem was schon gesagt wurde, möchte ich noch vorschlagen zwischen 12V 
Regler und dem Eingang des zweiten Reglers vorsichtshalber zum 
Diagnostizieren eine Seriendiode und 470uF oder größer Elko nach Masse 
schalten. Diese Maßnahme soll verhindern, daß kurze Einbrüche der 12V 
Versorgung keine (kurzzeitigen) Unterbrechungen der 5V verursachen. 
Schaltregler reagieren meist viel langsamer auf plötzliche 
Laständerungen als lineare Regler. Die von Stephanus vorgeschlagene 
Sternverdrahtung ist anzustreben. Auch dem MosFET Treiber würde ein 
lokaler Stütz-Elko nicht schaden.

Versuch auch den Digitalteil oder 12V Teil mit einem Labornetzgerät zu 
versorgen um festzustellen ob es auch so Probleme gibt.

Alle digitalen Eingänge zum uC sollten übrigens mit Rs und Cs Tiefpass 
gefiltert sein. Dasselbe gilt für digitale Ausgänge.

Microcontroller IO sollte galvanisch nie ungeschützt die Bord verlassen. 
Auch bei Outputs Serien Rs verwenden. Nur wenn man konsequent den uC vor 
EMP schützt, kann man störungsfreie Operation erwarten. Das kann man gar 
nicht dick genug unterstreichen.

Flip-Flops reagieren ungemein leicht auf elektromagnetisch induzierte 
Störungen. Sehr gut man diesen Effekt mit einer alten Weller Magnastat 
TCP Lötstation testen wenn man das Lötkolbenkabel quer über die 
Schaltung legt und warten bis der Magnastat ausschaltet. Ungeschützte 
Digitallogik wird fast ausnahmslos darauf reagieren.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Die Kondensatoren müssen ganz weg, weil sie Kürzschlüsse verursachen.

L/C Filter sind aber Ok, WENN sie bei der Frequenz nicht allzu viel 
Strom fressen.

von Gerhard O. (gerhard_)


Lesenswert?

Stefanus F. schrieb:
> Die Kondensatoren müssen ganz weg, weil sie Kürzschlüsse
> verursachen.
>
> L/C Filter sind aber Ok, WENN sie bei der Frequenz nicht allzu viel
> Strom fressen.

Das habe ich auch vergessen zu erwähnen. Die Elkos sollten dort zwischen 
Masse und 42V liegen, nicht parallel zum Motor. Die Freilaufdiode sollte 
in Sperrrichtung parallel zum Motor sitzen.

: Bearbeitet durch User
von Hubert G. (hubertg)


Lesenswert?

Ein Widerstand von etwa 47k zwischen Gate und Source sollte verhindern 
das der Motor beim anlegen der Spannung oder wenn der Arduino abgestürzt 
ist, unkontrolliert anläuft.
Sehe gerade du hast einen Treiber für den Fet. Den Widerstand dann an 
den Ausgang des Arduino geben.

: Bearbeitet durch User
von GEKU (Gast)


Lesenswert?

Marxx schrieb:
> Probieren es mit wesentlich kleineren Kapazitäten.

Der FET schaltet sehr sehr schnell, das Laden der Kondensatoren,  auch 
wenn sie klein sind, ruft große Spitzenströme mit steilen Flanken 
hervor. Die dadurch entstehenden Störungen bringen den ProZensor zum 
Absturz.

Ich hatte eine ähnliches Problem beim Anschalten eines Funkmodulspannung 
mit einem FET.
Der Funkmodul hatte Kondensatoren in der Versorgung, die beim Anlegen 
der Spannung über den FET große Stromspitzen verursachten.
Das Problem war nur mit drei Maßnahen in den Griff zu bekommen:

1.)  sauber Leuterbahnführungen,
2..) Entstörung der Spannungsversorgung und der IOS des Prozessors,
3.) Reduzierung der Flankensteilheit des FET'S

von GEKU (Gast)


Lesenswert?

Marxx schrieb:
> vorher brutal unrund lief

Kann dies nicht durch ständige Abstürze und Wiederanlauf des Prozessors 
verursacht worden sein. unrund = pumpen ?

von GEKU (Gast)


Lesenswert?

GEKU schrieb:
> ständige Abstürze und Wiederanlauf des Prozessors

Ich würde das Programm mit einem Debugger laufen lassen und einen 
Breakpoint nach dem Reset setzen. Damit kann man erkennen, ob es zu 
ungewollten Restart kommt.

von Stefan F. (Gast)


Lesenswert?

Ich würde dem Taster an D6 einen Pull-Up Widerstand (z.B. 4,7kΩ) 
spendieren. Der interne Pull-Up des Mikrocontrollers ist rechts schwach 
und daher in der Nähe des Motors und der Schaltwandler störanfällig.

Welchen Widerstand hat denn dein Gaspedal? Es sollten maximal 10kΩ sein.

Mich beschleicht gerade ein Dejavu-Gefühl. Hatten wir das nicht schon 
einmal vor etlichen Monaten?

von Marxx (Gast)


Lesenswert?

Danke euch allen für die Tipps und Hilfestellungen.
Die Elkos kommen raus.

Hubert G. schrieb:
> Sehe gerade du hast einen Treiber für den Fet. Den Widerstand dann an
> den Ausgang des Arduino geben.

Hubert G., inwiefern soll ich den Widerstand an den Ausgang des Arduinos 
geben? Das habe ich noch nicht ganz verstanden.


GEKU schrieb:
> Marxx schrieb:
>> vorher brutal unrund lief
>
> Kann dies nicht durch ständige Abstürze und Wiederanlauf des Prozessors
> verursacht worden sein. unrund = pumpen ?

Das kann natürlich gewesen sein, habe dies damit nicht in Verbindung 
gebracht. Werde dies aber prüfen.

von Hubert G. (hubertg)


Lesenswert?

Marxx schrieb:
> Hubert G., inwiefern soll ich den Widerstand an den Ausgang des Arduinos
> geben? Das habe ich noch nicht ganz verstanden.

Beim Einschalten der Spannung oder wenn der Arduino abstürzt, werden die 
Ausgänge hochohmig und damit das Potential auf der Leitung unbestimmt. 
Der Widerstand sorgt für ein eindeutiges Potential und verhindert das 
der Treiber den Fet einschaltet.

von GEKU (Gast)


Lesenswert?

GEKU schrieb:
> Ich würde das Programm mit einem Debugger laufen lassen und einen
> Breakpoint nach dem Reset setzen. Damit kann man erkennen, ob es zu
> ungewollten Restart kommt.

Wenn man keinen Debugger benutzt, dann kann man auch bei Programmbeginn 
in einer  1 sec dauernde Schleife eine Leuchtdiode ansteuern.
Blinkt die Leuchtdiode,  dann weiß man, dass ständig 
Programmwiederanläufe (RESTARTS) passieren.

von Marxx (Gast)


Lesenswert?

Stefanus F. schrieb:
> Welchen Widerstand hat denn dein Gaspedal?

Das ist ein Gaspedal einer alten Playstation. Die hat einen 
Potentiometer von 100k verbaut. Der wird aber nicht komplett genutzt 
sondern nur in einem Bereich. Den weiß ich jetzt momentan nicht aus dem 
Kopf.

von GEKU (Gast)


Lesenswert?

Hubert G. schrieb:
> Der Widerstand sorgt für ein eindeutiges Potential

ist auch beim Hochfahren von Vorteil.

von GEKU (Gast)


Lesenswert?

Marxx schrieb:
> Die hat einen Potentiometer von 100k verbaut

ist der dazugehörige Eingang entstört?  (Eingangsfilter zur Begrenzung 
der Bandbreite)

von Stefan F. (Gast)


Lesenswert?

Marxx schrieb:
> Die hat einen
> Potentiometer von 100k verbaut.

Ungeeignet. Damit bekommst du keine stabilen ADC Werte, da der 
Sample&Hold Kondensator im ADC die Spannung runter zieht und nicht 
schnell genug geladen werden kann.

Entweder packst du einen Spannungsfolger zwischen Poti und ACD oder du 
stabilisierst die Spannung mit einem Kondensator (z.B. 100nF) und lässt 
zwischen den Abfragen reichlich Zeit verstreichen, damit das Poti den 
Kondensator nachladen kann.

von Marxx (Gast)


Lesenswert?

Hubert G. schrieb:
> Marxx schrieb:
> Hubert G., inwiefern soll ich den Widerstand an den Ausgang des Arduinos
> geben? Das habe ich noch nicht ganz verstanden.
>
> Beim Einschalten der Spannung oder wenn der Arduino abstürzt, werden die
> Ausgänge hochohmig und damit das Potential auf der Leitung unbestimmt.
> Der Widerstand sorgt für ein eindeutiges Potential und verhindert das
> der Treiber den Fet einschaltet.

Ok, das leuchtet mir ein. Kannst du mir noch sagen zwischen welchen Pins 
ich den Widerstand schließen und in welchem Bereich dieser liegen soll?

von Stefan F. (Gast)


Lesenswert?

D5 und GND

von E.Zumutung (Gast)


Lesenswert?

Marxx schrieb:
> Schaltplan.jpeg

Ist es wirklich so schwierig, ein Bild vor dem Hochladen so zu drehen, 
dass Oben auch oben ist und die Belichtung so einzustellen, dass weißes 
Papier weiß aussieht.

von Stefan F. (Gast)


Lesenswert?

E.Zumutung schrieb:
> und die Belichtung so einzustellen, dass weißes
> Papier weiß aussieht.

Aber dann blendet das doch. Heutzutage ist dark-style und hellgraue 
Schrift auf dunkelgrauem Hintergrund angesagt, alles andere gilt als 
un-ergonomisch.

Und setzt dich gefälligst gerade hin, du bekommst einen krummen Rücken!

von Nölarsch (Gast)


Lesenswert?

E.Zumutung schrieb:
> Marxx schrieb:
>> Schaltplan.jpeg
>
> Ist es wirklich so schwierig, ein Bild vor dem Hochladen so zu drehen,
> dass Oben auch oben ist und die Belichtung so einzustellen, dass weißes
> Papier weiß aussieht.

Eigentlich nicht. Soll ich es Dir anhand von Irfanview erklären?

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.