mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Motor ruckelt bei niedrigen Drehzahlen


Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 3357 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: klodeckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: 3357 (Gast)
Datum:

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

Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 3357:
Wozu hinzuzählen?

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

Autor: 3357 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: 3357 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kartoffel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Drehzahl einfach viel oefter berechnen!

Olaf

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kartoffel (Gast)
Datum:

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

Autor: Kartoffel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kartoffel (Gast)
Datum:

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

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: w. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.