www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DC Motor positionieren


Autor: Frankhi (Gast)
Datum:

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

Autor: Matthias Lipinsky (lippy)
Datum:

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

Autor: Frankhi (Gast)
Datum:

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

Autor: Henne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PI für statische Genauigkeit.

Autor: Henne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
edit: stationäre Genauigkeit.

Autor: Kupfer Michi (Gast)
Datum:

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

Autor: Kupfer Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>- der Strom bewirkt eine Beschleunigung

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

Autor: Matthias Lipinsky (lippy)
Datum:

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

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.