Forum: Mikrocontroller und Digitale Elektronik DC Motor positionieren


von Frankhi (Gast)


Lesenswert?

Hallo!
Zu Folgendem braeuchte ich mal ein paar Sinnvolle Ratschlaege:

Hab einen 12V DC Getriebemotor. Am Ende des Getriebes befindet sich ein 
Potentiometer welches logischerweise den aktuellen Stand der Welle 
angibt.

Das ganze wird ueber eine der beiden H-Bruecken des lm298 angesteuert. 
Der Enable Eingang des Motortreibers liegt am PWM Ausgangs meines 
ATMEGA32.

Das Potentiometer von der Welle liegt an 5V und der Schleifer geht auf 
den ADC1 Eingang des Controllers.
Der Aufbau funktioniert soweit recht wuenschenswert.

SOLL:
Der Motor soll 2 Stellungen, ca. 90 Grad entfernt voneinander, anfahren.
Muss nicht besonder genau sein (ca. +-3Grad). ADC Wert hab ich schon auf 
6Bit gekuerzt.

Mein Frage dazu:
Hat jemand eine Idee wie ich die Regelung in Software durchfuehren kann?
Doch nach welchem System soll ich die Regelstrecke ausfuehren? P? I? PI 
oder vll PID? Leider habe ich nicht gerade viel Erfahrung in der 
Regelungstechnik.
ASM Beispielcode waere gut. Oder wenigstens einen Loesungsansatz.

Thx in advance.

Frank

PS:Bitte nicht einfach nen Link fuer Regelungstechnik I + II posten, das 
hab ich schon probiert.

von Matthias L. (Gast)


Lesenswert?

>Doch nach welchem System soll ich die Regelstrecke ausfuehren? P? I? PI
Die RegelSTRECKE hast du doch schon vorgegeben.
Lageregler ist immer was mit I.

>Leider habe ich nicht gerade viel Erfahrung in der Regelungstechnik.
Das ist schlecht. Denn das ist ein sehr komplexes Thema und nicht mal 
schnell in einem Thread beschrieben.

>Loesungsansatz.
Was willst du erreichen? Sollen die beiden Positionen (abwechselnd) 
angefahren werden, also interessieren NUR die beiden Positionen, oder 
willst du dazwischen auch genau sein?
Also ne "Umschaltung" zwischen A und B oder ist es wichtig, dass, wenn 
du am Soll-Poti drehst, die Ist-Position auch immer stimmt?
Danach muss der Regler ausgelegt werden. Du brauchst somit entweder 
einen P oder PI-Regler. (Das ergibt zwar ein I2, also schwingfähiges 
Verhalten, aber sonst können Sollrampen nicht ausgeregelt werden)

>ASM Beispielcode waere gut
Ich würde dir C raten. Sonst musst du dich zusätzlich zur 
Regelungstechnik noch damit beschäftigen, wie du die 
Differenzengleichung in ASM umsetzt.

>Muss nicht besonder genau sein
Warum nimmst du nicht einfach einen Fensterkomparator. Wenn die 
Istposition weniger als x Grad von Soll entfernt ist, wird einfach der 
Motor (über die H-Brücke) kurzgeschlossen. Er steht dann praktisch 
sofort still. Weils ja ein Getriebe hat, dreht er sich nicht besonders 
weiter...

von Frankhi (Gast)


Lesenswert?

Danke erstmal

Zum Fensterkomperator:
Im Moment funktioniert mein Programm mit einem Fensterkomperator.
Doch ich dachte mir das muss doch auch eleganter gehen, und wollte eben 
das Projekt gleich als Einstieg in die Regelungstechnik benutzen und 
somit einen Regler nachbilden.

Meine erste Version funktioniert soweit. Jetzt moechte ich das ganze 
erweitern:
Am ADC2 moechte ich nun ein Poti anschliesen, mit dem man die Grenzwerte 
A und B vorgeben kann.

>>Also ne "Umschaltung" zwischen A und B oder ist es wichtig, dass, wenn
du am Soll-Poti drehst, die Ist-Position auch immer stimmt?

Ja es ist wichtig.

Danach muss der Regler ausgelegt werden. Du brauchst somit entweder
einen P oder PI-Regler.

Ok! gut. Und welchen?


Der erste Schritt ist geschafft.

von Henne (Gast)


Lesenswert?

PI für statische Genauigkeit.

von Henne (Gast)


Lesenswert?

edit: stationäre Genauigkeit.

von Kupfer Michi (Gast)


Lesenswert?

Zwischen Errorsignal, Sollposition und Reglerausgang gibt es bei Servos 
keinen direkten Zusammenhang. Daher ist eine Regelung mit einem 
einfachen PID Regler nicht einfach (stabil) hinzubekommen, denn:
- das Fehlersignal (Soll-Ist Position) erzeugt einen Stellgroesse = 
Strom in den Motor
- der Strom bewirkt eine Beschleunigung
- die Beschleunigung über die Zeit ergibt eine Geschwindigkeit
- die Geschwindigkeit integriert über die Zeit ergibt eine Rotorposition 
= neue Ist-Position

Daher sollte man in einem Regler diese zweifache Integration in der 
Reglerauslegung berücksichtigen um eine schwingungsfreie Regelung 
hinzubekommen.

Wie das geht kann man z.B. hier sehen (wenn auch etwas knapp 
beschrieben):

ELM - DC Servomotor Controller
http://elm-chan.org/works/smc/report_e.html

ELM - Home Built Laser Projector
Fig.5 How Servo Works
http://elm-chan.org/works/vlp/report_e.html

von Kupfer Michi (Gast)


Lesenswert?

>- der Strom bewirkt eine Beschleunigung

soll natürlich lauten:
- der Strom bewirkt ein Drehmoment das zu einer Beschleunigung führt

von Matthias L. (Gast)


Lesenswert?

>Daher sollte man in einem Regler diese zweifache Integration in der
>Reglerauslegung berücksichtigen um eine schwingungsfreie Regelung
>hinzubekommen.

Ja. Die Wurzelortskurve muss den Punkt (-1;0) links liegen lassen ;-)

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.