Forum: Mikrocontroller und Digitale Elektronik PWM Stromregelung.


von Joe Crumb (Gast)


Lesenswert?

Hallo,

ich möchte mittels PWM ein elektrohydraulisches Ventil ansteuern.
Dazu habe ich einen uC der ein PWM-Signal von 100Hz produziert. Mit
dieser PWM steuere ich einen BTS462 Transistor an. Dieser schaltet dann
24V auf das Ventil.

Zur Strommessung habe ich auf der Masse-Seite einen Widerstand und
einen OP zur Verstärkung.

Den so gemessenen Strom lese ich mittels ADC wieder in den Controller
ein.
Wie kann ich nun den Strom regeln? Wie bilde ich den arithmetischen
Mittelwert?

Danke!

von Jens123 (Gast)


Lesenswert?

du musst die spannung am PWM aendern..

den mittelwert bekommst du, wenn du 4 5 6 mal den ADC einliesst
miteinander addierst und dann durch 4 5 6 teilst ;)

ganz einfach

von AxelR. (Gast)


Lesenswert?

Schafft der BTS462 die 100Hz? gerade so, oder
Schaltet der nicht selber ab, wenn der Strom zu groß wird.
Ich fürchte, für PWM muss Du einen 'normalen' PFet nehmen.
Ich kann nur aus Erfahrung berichten. Verwende einen IPS521G, der ist
zu langsam...

von Joe Crumb (Gast)


Lesenswert?

So einfach ist das leider nicht. Mir ist schon klar das ich das
Tastverhältnis ändern muss. Bei 0% Tastverhältnis ist der Strom gleich
0A und bei 100% Tastverhätnis ist der Strom maximal.

Wenn ich den Strom (rechteckförmiger Verlauf) einigermassen (2%) genau
messen möchte, muß ich ihn mindestens 50mal innerhalb von 10ms messen
und dann durch 50 teilen. Ich bekomme dann aber nur alle 10ms einen
neuen Stromwert. Wenn ich dann einen PI-Regler nachschalte, dann ist
der Regler entweder sehr langsam oder er schwingt?

Das ganze sollte genau und sehr dynamisch werden.

Irgendwelche Ideen?

von Joe Crumb (Gast)


Lesenswert?

BTS462 geht sehr gut. Das Ventil hat 21Ohm und 2mH. 24V/21R = 1,14A
maximal. BTS462 und IPS521G sind sich bis auf das Gehäuse recht
ähnlich. Den BTS gibts halt günstig bei Reichelt ;-)

von AxelR. (Gast)


Lesenswert?

Ja ist ja klar, gent ja auch nicht um den Strom, den schaffen beide.
Es geht um die Schaltgeschwindigkeit. Sieh hier bitte nochmal im
Datenblatt nach. Beide Schaltkreise sind ja gegen allen Sch...
geschützt. Wenn Du nun das Ventil mit PWM anblasen willst, entstehen am
Ausgang heftige negative Spannungen, die die interne Schutzschaltung vom
Switch anspringen lassen wird. Versuch macht kluch..

Axel

von Robert (Gast)


Lesenswert?

Joe,

so wird das nix. Es gibt fertige IC's (z.B. UC3843) oder spezielle
Spulentreiber die das erledigen. Als Leistungsschalter einen Mosfet
statt BTS.

Wenn's unbedingt ein Micro sein muss dann würde ich mich darauf
beschränken den maximalen Strom zu messen und danach mit einem PI
Regler die Pulsbreite zu bestimmen.

Robert

von Florian -der Flo- Scharf (Gast)


Lesenswert?

Hey Joe (scnr)

das mit dem ADC und PWM bei induktiven Verbrauchern ist ein spannendes
Thema, denn du musst ADC und PWM möglichst genau synchronisiert
bekommen. Stell dir vor, du gibst auf die Spule von deinem Ventil nen
Spannungssprung, was passiert mit dem Strom? Er wird langsam ansteigen,
und dann nach dem Abschalten durch die Freilaufdiode, die Du sicherlich
hast, langsam wieder abklingen, bis zum nächsten Durchlauf. Das heisst,
Du musst immer zum selben Zeitpunkt der Periode den Strom messen, und
möglichst nicht genau direkt nach dem Einschalten, denn da bekommst
Du keine Spannung am Messwiderstand, sondern irgendwo, wo Du einen
gewissen Abstand hast, und trotzdem noch im AN-Modus bist. Ansonsten
bringt dir die ganze schöne Stromregelung mit Mittelwertbildung und dem
ganzen Krams nichts.

Naja, und wenn Du dann am Regeln bist, geht das schon mit einem
einfachen PI Regler. Wenn Du gleichzeitig von 100Hz und *sehr
dynamisch* redest, dann wird das kaum ins Gewicht fallen. ;)


Gute Nacht,

der Flo

von Michael (ein anderer) (Gast)


Lesenswert?

@Joe Crumb:

Ich fürchte, Du misst an der falschen Stelle. Merke: Wer viel misst,
misst Mist. Dieser blöder Spruch ist leider zu 100% wahr.

Du willst ja den Strom messen, der durch Deine Spule fliesst, und nicht
den Strom den Dein Schalter gerade ableitet. Wenn Dein Schalter aus ist,
fliesst ja der Strom auch durch die Spule, allerdings nicht über die
Versorgungsspannung, sondern über die Freilaufdiode. Der Strom durch
den Schalter ist nur dann gleich dem Strom durch die Spule, wenn der
Schalter an ist. Aber das weist Du ja schon.

Das Prinzip soll wohl sein, dass Du beim Erreichen eines bestimmten
Stroms in der Spule den Schalter abschaltest, und so der Strom durch
die Spule wieder kleiner wird. Beim Erreichen einer unteren Grenze für
den Strom möchtest Du den Schalter wieder einschalten.

Dabei hast Du aber keine feste Frequenz für Deine PWM, sondern die
Frequenz und das Tastverhältnis wird ausschliesslich durch den
Verbraucher (Spule) und der Strom-Hysterese (die Du gewählt hast)
bestimmt.

Mach die Hysterese nicht zu klein, damit die Frequenz nicht unnötig
hoch wird.

Die andere, weitaus einfachere, Möglichkeit ist, den Strom nicht zu
regeln, sondern einfach zu steuern. D.h. einfach ein fesgelegtes oder
empirisch ermitteltes PWM-Signal an den Schalter legen.

Wozu willst Du den Strom überhaupt regeln? Was macht dieses
elektrohydraulische Ventil?

von Joe Crumb (Gast)


Lesenswert?

@Michael (ein anderer)

Ich messe schon den Strom durch die Spule und nicht den Strom durch den
Transistor. Deine Idee mit dem Stromkomperator geht nur wenn die
Zeitkonstante passt (relativ gross ist). Bei 2mH und 21R: T = L/R =
95us.

Wenn der Schalter geschlossen wird, fließt nach 475us (ca. 5*T) der
maximale Strom von 1,14A. Wenn ich nun den Komperator mit 1.14A
vergleiche, ist der Transistor für ca. 475us an, und für 475us aus.
Das giebt dann eine Frequenz von ca. 1kHz. Ich brauche aber eine
Frequenz von ca. 100Hz.
Das Proportionalventil steuert einen Hydraulikzylinder an. Wenn ich
100mA auf die Spule gebe, dann beginnt es sich zu öffnen, und bei 500mA
ist es ganz auf. Der Strom durch die Spule erzeugt ein Magnetfeld, und
diese Magnetfeld öffnet den Schieber für das Hydrauliköl. Da das
Magnetfeld und somit die Kraft proportional zum Strom ist, muß ich den
Strom durch die Spule einstellen. Die PWM-Frequenz von 100Hz ist
notwendig, daß sich der Schieber im Ventil ständig in "Bewegung" ist.
Dadurch folgt der Schieber kleinen Stromänderungen sofort, da nur die
Gleitreibung und nicht die Haftreibung zu Überwinden ist. Diese
Frequenz nennt sich auch Ditherfrequenz und der Stromripple der
entsteht heisst Ditheramplitude.

@AxelR
BTS462 und IPS521G schalten beide etwa gleich schnell. Die Hardware
habe ich schon aufgebaut, und ich kann die PWM von 0%..100% ausgeben,
bei Frequenzen von 50Hz..2000Hz. Am PWM Ausgang liegt mein Problem
nicht. Die Strommessung geht auch sehr gut. Wenn ich über 100ms im uC
integriere, dann stimmt mein gemessener Strom sehr gut. Momentan
sampelt der ADC den Strom mit ca. 600Hz und ich bilde den Mittelwert
über 64 Sampels. Ich benütze ein EWMA-Filter (Exponentially Weighted
Moving Average Filter)
(http://lorien.ncl.ac.uk/ming/filter/filewma.htm)


Mein Problem ist folgendes: Wenn ich den Strom nur über 10..20ms
integriere, dann hat mein Stromwert nach dem ADC noch einen Ripple von
100Hz aufmoduliert. Dieser Ripple ist dann noch nach dem
Soll-Istwertvergleich im Regler vorhanden und stört die Regelung. Wenn
ich über 100ms integriere, dann ist der Ripple weg, aber die Regelung
folgt Sollwertänderungen nur noch sehr langsam (ca. 1s) da ich die
Verstärkung im Regler wegen Schwingen zurücknehmen muß.

Hilft es etwas wenn ich statt einem Filter 1.Ordnung ein Filter 5.
Ordnung oder noch höher einbaue? Was ist mit der Einschwingzeit des
Filters.

Joe

von Uwe (Gast)


Lesenswert?

Hi!
Nur mal so, hast du schon mal gleitende Mittelwertbildung versucht?
Bsp.: 8 Messwerte
neuer Messwert->8.Messw.->7.......->1.Messwert (1. wird überschrieben)
Du kannst also mit jedem Sampel einen neuen Mittelwert berechnen.

MFG Uwe

von Joe Crumb (Gast)


Lesenswert?

@Uwe

habe ich als erstes versucht. Das EWMA-Filter und die gleitende
Mittelwertbildung liefern fast das selbe Ausgangssignal. Das
EWMA-Filter braucht nur bedutend weniger Speicherplatz. Im folgende
Link werden beide Verfahren beschrieben
(http://lorien.ncl.ac.uk/ming/filter/filewma.htm)

Die "gleitende Mittelwertbildung" nennt sich dort "Moving Average
Filter".

Joe

von AxelR. (Gast)


Lesenswert?

Was hälts Du davon, deine Samplelei nicht im Freerun mode zu
veranstalten, sondern irgentwie synchronisiert mit der PWM-Frequenz,
dann hast Du vielleicht kein Ripple drauf.
axelR.

von Michael (ein anderer) (Gast)


Lesenswert?

@Joe Crumb:

Vielen Dank für die Erklärung! Sehr interessant! Nur eine Lösung für
Dein Problem fällt mir auch nicht so recht ein...

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.