Forum: Mikrocontroller und Digitale Elektronik Motor ruckelt bei niedrigen Drehzahlen


von Kartoffel (Gast)


Lesenswert?

Hallo Leute,

nicht ohne eure Unterstützung habe ich meinen Regler endlich fertig (na 
ja schön wär's wenn es so wäre). Der Regler regelt, allerdings nicht bei 
Drehzahlen unter  50 U/min. Die max. Drehzahl beträgt 3300U/min.
Manche von euch werden sagen, dass es auch unmöglich ist, einen 
Schnellläufer bei niedrigen Drehzahlen sauber zu regeln (möchte bei min. 
20U/min noch regeln), aber es ist mit Sicherheit nicht unmöglich.
Ein paar Angaben:
µC: XC167
Soft: Keil µVision

Abtastperiode Regler: 1,6 ms
Frequenz PWM: 1KHz (damit der Strom Zeit hat, anzusteigen)

Mit Last läuft der Motor sauberer als ohne.

WAs ich schon gemacht hab: ich hab für niedrige Drehzahlen andere 
Reglerparameter definiert, denn die können ja nicht über die ganze 
Bandbreite optimal sein. Da es mir aufgefallen ist (mit alten 
Reglerparametern), dass der Motor so große Sprünge macht, habe ich Kp 
niedriger gewählt, seit dem ist es ein bisschen besser, aber noch lange 
nicht optimal.

Habt ihr vllt. Ideen, was ich noch machen könnte?

Danke schön

von 3357 (Gast)


Lesenswert?

Ein DC Kollektormotor ? Der hat gegen den Stillstand hin eine 
Kollektorspannung, die Ueberwunden werden muss, sowie eine Reibung. 
Enthaelt das modell diese beiden Komponenten oder ueberlaesst man es dem 
I-Anteil ?

von klodeckel (Gast)


Lesenswert?

Wie mißt Du denn die Drehzahl?

Bei den geforderten 20/min braucht das Teil fast 3 Sekunden für eine 
Umdrehung. Da wird ein Tachogenerator wohl nix gescheites liegern.

Also, erzähl mal!

guude
ts

von Kartoffel (Gast)


Lesenswert?

@ 3357:
Das ist ein DC Kollektormotor, ja.
Also ich überlasse es alles dem I-Anteil, hab nämlich einen ganz 
"normalen" PI-Regler programmiert.
Wie soll man die Komponenten, die du erwähnt hast, ins Modell 
übernehmen?

von Kartoffel (Gast)


Lesenswert?

@  klodeckel:
Die Drehzahl messe ich mittels Encoder, der am Motor dranhängt :).
Die Drehzahlmessung müsst schon passen. Hab die ausgegebenen Werte mit 
einem Drehzahlmessgerät überprüft, passt, sitzt, hat Luft!

von 3357 (Gast)


Lesenswert?

Die Kollektorspannung, die es fuer Null Drehzahl braucht hinzuzaehlen. 
Die Reibung ergibt einen Strom fuer Null Drehzahl, auch hinzuzaehlen.

von Kartoffel (Gast)


Lesenswert?

@ 3357:
Wozu hinzuzählen?

Meinst du, dass ich dann damit die Nichtlinearität zw. Drehzahl und PWM 
in den unteren Drehzahlbereichen weg bekomme?

von 3357 (Gast)


Lesenswert?

Je besser das Streckenmodell ist, desto besser ist das Regelverhalten. 
Wenn man dem I-Regler eine Nivhtlineare strecke anhaengt, ist das immer 
suboptimal. Man solle bei erhoehten Anforderungen daher linearisieren. 
Und ein Linearisierter Motor braucht zum Anlaufen eine Mindestspannung.

von Kartoffel (Gast)


Lesenswert?

@3357:
du meinst, dass wenn ich z.B. ne Drehzahl von 50 brauch, dass ich dann 
den Motor mit der dafür berechneten (angenommen linearen) beaufschlage + 
die GegenEMK?

von Olaf (Gast)


Lesenswert?

> Der Regler regelt, allerdings nicht bei Drehzahlen unter  50 U/min.

Das sind typische Probleme.

Lies mal hier:

http://www.wescottdesign.com/articles/Friction/friction.html


> Mit Last läuft der Motor sauberer als ohne.

Mit Last hast du selbstverstaendlich eine andere Regelstrecke und
musst alle deine Parameter erneut anpassen. Und wenn die Last im
Betrieb wechselt wird es erneut interessanter.

> Die Drehzahl messe ich mittels Encoder, der am Motor dranhängt :).

Ich hoffe der hat genug Aufloesung. Die Frage nach der Art
der Drehzahlmessung war naemlich nicht dumm. Wenn deine Regelung 
ansonsten
sehr gut ist, was derzeit sicher nicht der Fall ist, dann haengt davon
in der tat die minimale Drehzahl ab.

> Man solle bei erhoehten Anforderungen daher linearisieren.

I second that. :-)
Aber er hat ja einen mordsmaessig ueberfetteten Controller fuer so
eine Anwendung, da ist das ja alles kein Problem.

Brauchst du eigentlich nur Drehzahlregelung oder auch Lageregler?
Wenn du nur ersteres brauchst so scheint mir ein Encoder etwas viel
Aufwand. Das geht auch einfacher indem man die BackEMF misst.

Olaf

von Kartoffel (Gast)


Lesenswert?

Zum Encoder: er hat 500 Impulse pro Umdrehung.
Drehzahlmessung: Periodendauermessung (Zeit zw. 2 Encoderimpulsen), ist 
ja für niedrige Umdrehungszahlen besser.
Ich brauche nur eine Drehzahlregelung, aber dass ich den Encoder nutze, 
das ist Vorgabe.
Die Drehzahlbestimmung ist scho fertig.

Schade, dass der Artikel auf Englisch ist, aber ich werd mich 
durchbeißen.

Ach ja: ich bin eine Sie!

von Olaf (Gast)


Lesenswert?

> Drehzahlmessung: Periodendauermessung (Zeit zw. 2 Encoderimpulsen), ist
> ja für niedrige Umdrehungszahlen besser.

Gut, kann man machen wenn man nicht zu schnell drehen will.

> aber dass ich den Encoder nutze, das ist Vorgabe.

Ist ja auch keine schlechte Loesung wenn Geld keine Rolle spielt.

> Schade, dass der Artikel auf Englisch ist, aber ich werd mich
> durchbeißen.

Ist ab einem bestimmten Level aber normal. Ausserdem habe ich schon
Regelungstechnikbuecher gesehen die auf Deutsch schwerer zu
verstehen waren. Und wer will schon "Losbrechkraft" lesen. :-)

> Ach ja: ich bin eine Sie!

Suesskartoffel?
Das ist keine Variable der Regelstrecke und daher fuer den Regler
vollkommen irrelevant. :-P

Olaf

von Kartoffel (Gast)


Lesenswert?

@Olaf:
ich mein ja nur, du hast geschrieben :"Aber er hat ja einen mordsmaessig 
ueberfetteten Controller fuer so eine Anwendung, da ist das ja alles 
kein Problem."
Ich wollt's ja nur berichtigen, nichts persönliches :-)

von 3357 (Gast)


Lesenswert?

Zur Linearisierung des Motors ... Du misst den Motor aus als Graph 
rpm(U), mit dem Drehmoment als Parameter. Angefangen mit Drehmoment 
Null. Die Funktion rpm vs volt ist eine Gerade, die aber nicht durch 
Null geht. Die verbleibende Spannung muss man hinzuzaehlen. Wichtig in 
dieser Hinsicht ist ein U(Null+) und ein U(Null-) je nachdem man von 
Positiv oder von Negativ kommt. Die beiden Werte muessen nicht gleich 
sein. Heisst die Kollektorspannung fuer Null Drehzahl kann von der 
Drehrichtung abhaengen.

von Kartoffel (Gast)


Angehängte Dateien:

Lesenswert?

@3357:
ich hab ja sogar eine Motorkennlinie vom Hersteller.
Hab da nur einen Strom als Achse.
Nach deinem Vorschlag könnte ich schon vorgehen, aber ich kann kein 
Drehmoment messen, hab nix dafür.
Aber ich könnte ja nach der Spannung im Datenblatt schauen, die 
überwunden werden muss.
Ja, das mach ich.

von Olaf (Gast)


Lesenswert?

> Hab da nur einen Strom als Achse.

Und? Kommt das aus dem Regler als Stellgroesse raus?
Nein? Sieht nach einer guten Chance aus noch mehr zu linearisieren. .-)

> Nach deinem Vorschlag könnte ich schon vorgehen, aber ich kann kein
> Drehmoment messen, hab nix dafür.

Notfalls bau irgendeinen Stab an die Achse und lass den auf eine Waage 
druecken.

Olaf

von Kartoffel (Gast)


Lesenswert?

Also ich hab da ein paar andere Berechnungen gemacht:

Meine niedrigste Solldrehzahl beträgt 20 U/min. Das entspricht 166 
Imp/s.
Das wiederum heißt, ich habe alle 6 ms einen Impuls. Und somit die 
Drehzahlberechnung. Und abfragen tue ich alle 1,6 ms. Der Regler braucht 
die Istdrehzahl als Übergabeparameter.
Das heißt: bei 20 U/min regel ich ja trotzdem alle 1,6ms, obwohl eine 
Drehzahlberechnung alle 6ms stattfindet (wenn man auf 1/4 der Umdrehung 
mittelt), dann steht mir eine frisch ermittelte Drehzahl alle 
6*125=750ms zur Verfügung.

Bei Änderungen kann der Regler natürlich nicht schnell reagieren, denn 
der arbeitet die meiste Zeit mit einem eingefrohrenen Wert der Drehzahl. 
Daher könnte das Schwingen kommen. Verletzung des Abtasttheorems!
Der Regler kann NICHT LANGSAMER gemacht werden, ganz sicher!!!! Ich hab 
dazu noch in ein paar Büchern was gefunden. Tabtast = 1/10 der 
Streckenzeitkonstanten!

Was mir geraten wurde: den P-Anteil viel kleiner machen und den I-Anteil 
viel langsamer. Dann bräucht der Regler länger und würde sich nicht über 
den Sollwert hinaus intergrieren.
Was hält ihr davon????
Gibt es da noch ne andere Möglichkeit?

von Olaf (Gast)


Lesenswert?

Drehzahl einfach viel oefter berechnen!

Olaf

von tom (Gast)


Lesenswert?

versuch die eingangsgröße (ist-drehzahl) als gleitenden mittelwert aus 
mehreren messungen  (z.b. aus 3..10 messungen) zu bilden, dann springen 
deine eingangswerte nicht so sehr

von Kartoffel (Gast)


Lesenswert?

@Olaf:
ich kann sie ja nicht öfter berechnen, als die Impulse kommen!

von Kartoffel (Gast)


Lesenswert?

@tom:
das würde ja die Sache noch mehr verschlechtern, weil ich dann noch 
länger für die Drehzahlberechnung brauchen würde. Heißt, mein Regler 
würde denken: 20 U/min -> Gas geben, oh immer noch 20 -> noch mehr Gas, 
das führt dann zu Schwingungen!

von Olaf (Gast)


Lesenswert?

> ich kann sie ja nicht öfter berechnen, als die Impulse kommen!

Dann musst du eine anderen Tachogenerator verwenden. Ohne Eingangssignal 
hast du nunmal keinen Regler.

Olaf

von Kartoffel (Gast)


Lesenswert?

@Olaf:
ich habe einen Encoder, keinen Tachogenerator.
Einen anderen bekomme ich leider nicht für dieses Projekt :-(

von Olaf (Gast)


Lesenswert?

> ich habe einen Encoder, keinen Tachogenerator.

Das bleibt sich ja gleich.

> Einen anderen bekomme ich leider nicht für dieses Projekt :-(

Dann musst du halt schneller drehen. Ich sehe keine Moeglichkeit einen 
Regler laufen zu haben wenn du keine Eingangsignale hast.

BTW: Was soll das eigentlich werden?

Olaf

von w. (Gast)


Lesenswert?


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.