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
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 ?
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
@ 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?
@ 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!
Die Kollektorspannung, die es fuer Null Drehzahl braucht hinzuzaehlen. Die Reibung ergibt einen Strom fuer Null Drehzahl, auch hinzuzaehlen.
@ 3357: Wozu hinzuzählen? Meinst du, dass ich dann damit die Nichtlinearität zw. Drehzahl und PWM in den unteren Drehzahlbereichen weg bekomme?
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.
@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?
> 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
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!
> 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
@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 :-)
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.
@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.
> 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
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?
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
@Olaf: ich kann sie ja nicht öfter berechnen, als die Impulse kommen!
@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!
> 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
@Olaf: ich habe einen Encoder, keinen Tachogenerator. Einen anderen bekomme ich leider nicht für dieses Projekt :-(
> 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
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.