Moin,
ich versuche gerade, eine Spannung von 12 V mit einem Arduino Micro über
PWM und Mosfet zu regeln. Das funktioniert soweit auch, allerdings habe
ich bei 1 % Duty Cycle vom PWM-Signal bereits 15 % Spannung an der Last.
Im Bereich bis ca. 70 % Duty Cycle verhält sich die Spannung dann linear
(10 % Duty Cycle = 25 %, 20 % Duty Cycle = 35 % usw.) und so ab 75 %
Duty Cycle flacht die Kurve zwar etwas ab, aber ich komme hoch bis 100
%.
Als Mosfet verwende ich einen IRL2203N, ansonsten besteht die Schaltung
erstmal nur aus einem Vorwiderstand am Gate sowie einem Pulldown
zwischen Gate und Source (siehe Bild). Die Spannung vom PWM-Signal
passt, dort ist das Verhalten linear.
Woran liegt es, dass ich nicht über den kompletten Bereich regeln kann?
Gruß und vielen Dank!
Ich sehe da keine Spannungsregelung oder Steuerung. Ich nehme an du
misst mit dem Multimeter. Dann sind das Messfehler. Deine Schaltung
macht entweder 0 oder 12V. Nur eben verschieden lang. Du hast als Last
nen widerstand - dann kann die Spannung nicht geglättet werden. wenn du
kein true rms Multimeter für den Frequenzbereich den du fährst, hast,
dann musst du mit oszi über einem Shunt messen...
Calgon schrieb:> Woran liegt es, dass ich nicht über den kompletten Bereich regeln kann?
Gute Frage, die Schaltung ist, wenn du sie so aufgebaut hast, wie im
Schaltbild, nahezu idiotensicher. Man kann einen defekten MOSFet
allerdings nicht ganz aussschliessen. Dazu trenne mal den Arduino ab und
messe den Reststrom im Lastkreis. Der Pulldown am Gate sollte in dem
Fall den MOSFet komplett sperren.
Wie hoch ist denn die PWM Frequenz? Und wie sieht das Programm aus? -
wären dann die nächsten Fragen. Der IRL2203 hat eine recht hohe
Gatekapazität und braucht an einen schwachen MC Ausgang schon einige
Zeit, um umgeladen zu werden.
Es ist ein einfaches Multimeter ohne True RMS (Voltcraft VC-220), mit
dem ich messe. Allerdings messe ich damit am Ausgang vom Arduino auch
die Spannung, die ich erwarten würde. Ein Oszilloskop habe ich privat
nicht. Muss ich mal gucken, ob ich eins auftreiben kann.
Der Arduino hat je nach Ausgang standardmäßig entweder 490 Hz oder 976
Hz als Frequenz für das PWM-Signal. Das Programm besteht an der Stelle
nur aus einem analogWrite() im Bereich von 0-255.
Calgon schrieb:> Das Programm besteht an der Stelle> nur aus einem analogWrite() im Bereich von 0-255.
Und scheint hoch geheim zu sein. Zeig den Sketch doch mal, hier reissen
einem nicht alle Leute den Kopf ab.
Der Sketch ist nicht hoch geheim, der ist nur zu Hause und ich sitze
gerade auf der Arbeit, daher kann ich ihn gerade nicht reinstellen :-)
Die Last ist aktuell ein Widerstand mit 100 kOhm, später soll damit ein
DC Motor betrieben werden. Grundsätzlich wäre die Funktion für die
Ansteuerung vom Motor auch so gegeben, da ich den Motor eh nur von
50-100 % ansteuern möchte. Aber ich würde halt gerne nachvollziehen
können, warum sich das Ganze so verhält.
So, ich habe jetzt mal einen Widerstand mit 1 kOhm und danach einen mit
560 Ohm als Last angehängt und siehe da, es lässt sich alles über den
kompletten Bereich regeln. Je kleiner der Widerstand, desto besser das
Ergebnis. Aber warum ist das so?
Ein Multimeter mit True RMS zeigt übrigens genau den gleichen Messwert
an, wie mein VC-220. Gemessene PWM-Frequenz am Ausgang vom Arduino sind
490,1 Hz.
Auf jeden Fall schon mal vielen Dank für die Hilfe.
100kOhm ist einfach zu hoch, um die Kapazitäten umzuladen, das konnte
garnicht funktionieren. Auf dem Scope hättest Du das sofort sehen können
was da schief geht.
Calgon schrieb:> Woran liegt es, dass ich nicht über den kompletten Bereich regeln kann?
Das könntest du nur bei einer symmetrischen PWM, sonst sind die Lade-
und Entlade-Zeiten niemals gleich. Wenn z.B. das Entladen der
vorhandenen Kapazitäten länger dauerd als das Laden, kommst du niemals
auf 0V herunter.
Georg