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
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.
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 ?
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
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.
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.
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.
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.
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
Marxx schrieb:> vorher brutal unrund lief
Kann dies nicht durch ständige Abstürze und Wiederanlauf des Prozessors
verursacht worden sein. unrund = pumpen ?
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.
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?
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.
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.
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.
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.
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.
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?
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.
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!
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?