Forum: Digitale Signalverarbeitung / DSP / Machine Learning PWM Drehzahlregler


von Thorsten (Gast)


Lesenswert?

Hallo,

ich habe die Aufgabe eine digitale Drehzahlregelung mit einem µC zu 
realisieren.
Und zwar handelt es sich um einen Getriebemotor(Gleichstrommotor, 12V, 
3A, 0-70Upm), der auf einer Maschine montiert ist. Das Lastmoment 
verändert sich mit jeder Umdrehung (winkelabhängig), so dass ich bei 
einer konstanter Motorspannung, einen annähernd sinusförmigen Strom 
messe. Im Mittel ist es über den gesamten Drehzahlverlauf nahezu 
konstant, kann aber von Maschine zu Maschine schwanken. Die Drehzahl 
messe ich über 28 Impulse/Umdrehung. Den Motorstrom über einen Shunt. 
Der Motor wird per PWM angesteuert.

Die klassische Variante wäre jetzt ein Kaskadenregler. Ein 
Drehzahlregler, der dem unterlagerten Stromregler ein Sollmoment bzw. 
einen Sollstrom vorgibt.

Bei einer Erhöhung des Lastmomentes müsste ich ja logischerweise meine 
PWM so weit erhöhen, dass das Motormoment wieder gleich dem Lastmoment 
ist.

Um den Strom bzw. das Motormoment gleich zu halten würde der Stromregler 
aber in diesem Fall genau das Gegenteil machen. Er würde feststellen, 
dass der Ist-Strom größer als der Sollstrom ist und folglich die PWM 
reduzieren. So damit die Regelabweichung zu Null wird. Dadurch würde die 
Differenz der Momente aber noch weiter steigen und die Drehzahl weiter 
abfallen.

Genau das verstehe ich nicht. Ich habe doch ein ganz klassisches 
Problem. Dafür würde ich gerne die klassische Methode nutzen. Die macht 
aber genau das Gegenteil. Irgendwas muss ich da noch nicht richtig 
verstanden haben.

Ich hoffe Ihr könnt mir weiterhelfen.

von Michael B. (laberkopp)


Lesenswert?

Warum sollte deine Regelung den Strom regeln, also die Kraft, wenn du in 
Wirklichkeit die Drehzahl, also Geschwindigkeit halten willst ? Nimm 
doch die mittlere Motorspannung als Regelwert.

Ingesamt stellt sich die Frage, ob 28 Impulse pro Umdrehung reichen, 
wenn die Last schon von Impuls zu Impuls so schwankt, daß auch die 
Drehzahl schwankt.

Man könnte es mit einer Prediction probieren, also deine sinusförmige 
Belastung als Modell annehmen, und nur die Sinusphasenlage und Amplitude 
versuchen so zu regeln, daß deine 28 Impulse zeitlich aquidistant 
kommen.

von Thorsten (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mich nur mit dem Stromregler beschäftigt, weil das anscheinend 
die Standardlösung für diese Aufgabenstellung ist.

Mein derzeitiger Ansatz ist ein normaler Drehzahlregler mit einer 
Lastmomentkompensation. Dabei ermittle ich mit dem PI(D) Drehzahlregler 
eine PWM. Anschließend gebe ich den gemessenen Strom auf ein P-Glied, 
invertiere das Signal und erhalte somit eine dem Strom entgegengesetzte 
PWM, welche ich wiederum vom Ausgang des Drehzahlreglers abziehe. Klappt 
gar nicht mal so schlecht. Aber im unteren Drehzahlbereich (<5Upm) 
bekomme ich zu wenig Drehzahlimpulse.
Im besten Fall muss der Drehzahlregler dann gar keine Störungen mehr 
ausgleichen.

Legt man das Drehzahl- und das Stromsignal übereinander sind sehr 
ähnlich. Sie unterscheiden sich nur noch in der Amplitude und dem 
Mittelwert. Ich könnte mein Drehzahlsignal auch mithilfe des Stromes 
interpolieren.

Mit deinem Vorschlag mit der Prediction verbinde ich sehr viel 
Einarbeitung und Aufwand. Ich bin leider kein Regelungstechniker.
Die Regelung muss nicht perfekt sein, aber der Motor darf bei sehr 
geringen Drehzahlen auch nicht stottern oder sogar anhalten.

von m.n. (Gast)


Lesenswert?

Thorsten schrieb:
> Ich habe doch ein ganz klassisches
> Problem. Dafür würde ich gerne die klassische Methode nutzen.

Hier eine andere 'klassische Klasse' zur Regelung: 
Beitrag "Drehzahlregler für DC-Motor, ATmega48-328"

von Possetitjel (Gast)


Lesenswert?

Thorsten schrieb:

> Die klassische Variante wäre jetzt ein Kaskadenregler.

Klassische Lösung klingt gut - aber wie lautet das klassische
Problem?

> Ein Drehzahlregler, der dem unterlagerten Stromregler ein
> Sollmoment bzw. einen Sollstrom vorgibt.

Hmm. Schön.

> Bei einer Erhöhung des Lastmomentes müsste ich ja
> logischerweise meine PWM so weit erhöhen, dass das
> Motormoment wieder gleich dem Lastmoment ist.
>
> Um den Strom bzw. das Motormoment gleich zu halten würde
> der Stromregler aber in diesem Fall genau das Gegenteil
> machen.

???

> Er würde feststellen, dass der Ist-Strom größer als der
> Sollstrom ist und folglich die PWM reduzieren.

Nein.
Der Stromregler regelt, wie der Name sagt, den Strom. Anders
ausgedrückt: Es handelt sich um eine steuerbare Konstant-
stromquelle. Der Strom bleibt einfach konstant.

> So damit die Regelabweichung zu Null wird. Dadurch würde
> die Differenz der Momente aber noch weiter steigen und
> die Drehzahl weiter abfallen.

Nein, auch nicht.

Bei konstanten Motorstrom bleibt das Motormoment auch
konstant. - Bei konstantem Motormoment und steigendem
Lastmoment sackt die Drehzahl ab.
Das registriert der Drehzahlregler und hebt den Sollwert für
den Motorstrom an. Jetzt reagiert auch der Stromregler und
spielt so mit der Spannung, dass der höhere geforderte Strom
erreicht wird. Damit steigt das Motormoment und auch die
Drehzahl.

Die Kaskadenregelung funktioniert; der unterlagerte
Stromregler bringt aber meiner Meinung nach keinen Nutzen.

> Genau das verstehe ich nicht. Ich habe doch ein ganz
> klassisches Problem. Dafür würde ich gerne die klassische
> Methode nutzen.

Nun, ich glaube, ein unterlagerter Stromregler ist für
einen DC-Permanentmagnetmotor (=Nebenschlusskennlinie =
steife Drehzahl) nicht sinnvoll. Die Drehzahl geht mit
der Spannung; der Strom pendelt sich je nach gefordertem
Lastmoment selbsttätig ein. Wozu ein Stromregler?

Bei "Drehstrommotoren" (Asynchron-, Synchron-, Schrittmotor,
BLDC) mag das anders aussehen. Hier geht die Drehzahl mit
der Frequenz; die Spannung muss aber in jedem Augenblick so
gewählt sein, dass einerseits der Strom für das geforderte
Moment vorhanden ist, andererseits der Motor nicht elektrisch
überlastet wird. Die Aufgabe übernimmt der unterlagerte
Stromregler.

von Thorsten (Gast)


Lesenswert?

Ok! Ein Stromregler scheint dann in diesem Fall wirklich nicht geeignet 
zu sein.

Ich habe das Problem, dass bei niedrigen Drehzahlen das Drehzahlsignal 
zu selten aktualisiert. Außerdem ist die Zeitverzögerung des Signals zu 
groß.

Ich bekomme aber alle 10ms einen bereits gemittelten Strom. Zudem 
erhalte ich es schon wesentlich früher. Aus diesem Grund muss ich 
versuchen die Last weitestgehend mit dem Strom zu kompensieren. Wie ich 
das derzeit mache habe ich ja bereits weiter oben schon beschrieben. Die 
Drehzahl schwank im unteren Drehzahlbereich aber immer noch zu sehr.

Das mit der Prediction (Sinus annähern) habe ich mir überlegt. Ist 
prinzipiell ein guter Vorschlag, aber was würde passieren, wenn ich auf 
einer anderen Maschine pro Umdrehung plötzlich mehrere 
Lastmomenterhöhungen habe. Dann würde das wohl scheitern. Diesen Fall 
kann ich nach weiteren Überlegungen nicht mehr ausschließen.

Hat jemand einen Ansatz? Wie könnte man das Problem angehen?

Wenn ich die Impulse zähle, dann könnte ich die Last einem Drehwinkel 
zuordnen. Vielleicht könnte man damit was anstellen?

von m.n. (Gast)


Lesenswert?

Thorsten schrieb:
> Hat jemand einen Ansatz? Wie könnte man das Problem angehen?

Ich glaube, Du bist garnicht in der Lage, eine Lösung auch als solche zu 
begreifen.

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.