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!
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
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...
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?
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 ;-)
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
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
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
@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?
@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
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
@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
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.