www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DC Motor: Wie Position regeln?


Autor: Günther K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Motor und Regelungsspezialisten,

bevor ich meine Frage stelle, ein kurzer Überblick zur Situation:

Vor mir liegt ein DC-Motor mit Getriebe, welcher innerhalb eines 
Drehwinkels von 180° gradgenau positioniert werden soll.
Die Ansteuerung des Motors erfolgt über eine 
Halbleiter-Brückenschaltung, PWM geht auch wenn nötig.
Die Position kann über ein im Motorgehäuse integriertes Poti bestimmt 
werden.

Letztendlich soll der User eine Gradzahl angeben und der Motor soll 
diese Anfahren und auch halten.

Meine eher laienhaften Versuche sahen bisher so aus, dass ich den Motor 
in die entsprechende Richtung drehen lies und während dessen den 
Poti-Sollwert mit dem Poti-Istwert verglichen haben. Ein Motor-Stopp 
sollte bei Istwert=Sollwert erfolgen. Das hatte jedoch bisher immer zur 
Folge, dass der Motor um die Position herum zittert anstatt stehen zu 
bleiben.

Bisher habe ich nur Regelungen für die Drehzahl gefunden, aber keine für 
die Positionierung.

Wie sieht eine solche Regelung sinnvollerweise aus? Nimmt man PID?

Mfg
Günther

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probiers mal so:
Motorgeschwindigket = (Sollposition - Istposition) * Faktor
So wird der Motor beim Annähern an die Sollposition immer 
langsamer/feiner.
:-)

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günther K. schrieb:
> Das hatte jedoch bisher immer zur
>
> Folge, dass der Motor um die Position herum zittert anstatt stehen zu
>
> bleiben.

Das liegt wohl daran, daß der mit dem ADC ermittelte Wert nicht stabil 
ist, sondern um einen Wert "herumhampelt".

AVCC und AVref richtig beschalten und Mittelwert bilden. Evtl. reichen 
statt 10 Bit auch 8. Dann fällt das "Gewackel" von Bit 0 und 1 ganz weg.

mfg.

Autor: Gero (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hier möchte ich mich mal mit einklinken.
Ich habe ein ähnliches Problem und möchte das mit einer fertigen 
Baugruppe lösen. Der Motor hat 24V und ca 1A. Ein Poti für die Position 
ist vorhanden. Der Sollwert steht als 4...20mA Signal zur Verfügung. Es 
handelt sich um einen Elektrischen Drehantrieb für Kugelventile. Die 
Ventile arbeiten standartmäßig nur als auf/zu Ventile und sollen nun zu 
Proportionalventilen umgebaut werden. Aus Zeitmangel möchte ich aber 
nichts selber entwickeln. Hat jemand eine Idee?

Gruß
Gero

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gero schrieb:
> Ein Poti für die Position
> ist vorhanden. Der Sollwert steht als 4...20mA Signal zur Verfügung. Es
> handelt sich um einen Elektrischen Drehantrieb für Kugelventile. Die
> Ventile arbeiten standartmäßig nur als auf/zu Ventile und sollen nun zu
> Proportionalventilen umgebaut werden.

Dann musst du die Durchflussmenge als Regelgröße messen und nicht den 
Winkel deines Drehantriebs, sonst ist das alles nur nicht propertional.

Gero schrieb:
> Aus Zeitmangel möchte ich aber nichts selber entwickeln. Hat jemand eine > > 
Idee?
kaufen?

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> dass der Motor um die Position herum zittert anstatt stehen zu bleiben.

Man muß schon intelligenter regeln, integraler Anteil der PID-Regelung 
ist das Stichwort, bei analoger Elekronik bloss ein Kondensator am OpAmp 
an der passenden Stelle.

Fertige Chips z.B. aus Autoscheinwerferleuchtweitenreglungsservos 
heissen TLE4206 und TDA3629 geht bis 0.8A, MC33030 bis 1A, 
DRV590/591/593/594 bis 3A per PWM oder aus dem Modellbaubereich 
SN76604/SN28654=B654, ZN409, NE544, neuer: NJR2611, M51660, M52461, 
M64611, AA51880 die durch analoge Ansteueung auch durchaus auf 1/180 
geau gesteuert werden können, wenn Impulsquelle und Versorgungsspannung 
genau genug sind.

Hilft aber bei vorhandener Elektrnik eher wenig, da wird man den 
PD-Regler selber aufbauen üssen, geht ja auhc mit einem LM324.

Autor: Frank Q. (franki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gero schrieb:
> Aus Zeitmangel möchte ich aber
> nichts selber entwickeln. Hat jemand eine Idee?

Mach ein Pflichtenheft und schiebe es rüber.

Autor: EMF0815 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal bei Rinck elektronik nach Dreipunktwandler mit 
Rückführung, liegt so etwa bei 50-60Euro und ist genau für diese 
Anwendung gedacht...
Gruß aus Lübeck EMF0815

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm


Motor, der eine so geregelt werden soll, dass eine mechanische Einheit 
eine bestimmte Position anfährt und auch hält (und Rückmeldung über 
Poti).

Das nennt man in der Modellbaubranche ein Servo. Und die gibt es von 
winzig bis hin zu richtigen Kraftlackeln.

Modellbauservo Ansteuerung

Autor: Günther K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Eckmann schrieb:
> Das liegt wohl daran, daß der mit dem ADC ermittelte Wert nicht stabil
> ist, sondern um einen Wert "herumhampelt".
>
> AVCC und AVref richtig beschalten und Mittelwert bilden. Evtl. reichen
> statt 10 Bit auch 8. Dann fällt das "Gewackel" von Bit 0 und 1 ganz weg.

Die Wackelbits sind schon weggefiltert und die Beschaltung sollte so 
stimmen.
Ich glaube das mein Problem daher kommt, dass der Motor noch minimal 
weiter läuft wenn er gestoppt wird. Dadurch stimmt der der vorher 
passende Istwert nicht mehr mit dem Sollwert und es wird nachkorrigiert. 
In die Gegenrichtung passiert dann das gleiche, darum zuppelt der Motor 
um die Sollposition. Ein Versuch das zu kompensieren führt zwar zu 
weniger zuppeln, dafür aber zu großen Ungenauigkeiten beim 
Positionieren, da der Motor zu früh oder zu spät anhält.



Floh schrieb:
> Probiers mal so:
> Motorgeschwindigket = (Sollposition - Istposition) * Faktor
> So wird der Motor beim Annähern an die Sollposition immer
> langsamer/feiner.
> :-)
Das ist ein guter Tipp, geht dann aber nur über PWM.



MaWin schrieb:
> Man muß schon intelligenter regeln, integraler Anteil der PID-Regelung
> ist das Stichwort

So eine Lösung suche ich, aber wie realisiere ich das mit meiner 
Hardwarekonstellation softwaremäßig?
Die Regelgröße wäre das Poti, die Führungsgröße ist die User-Eingabe, 
aber wie kommt man auf eine Stell-/Steuergröße, wenn man den Motor über 
eine H-Brücke ansteuern muss?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günther K. schrieb:

>> Man muß schon intelligenter regeln, integraler Anteil der PID-Regelung
>> ist das Stichwort
>
> So eine Lösung suche ich, aber wie realisiere ich das mit meiner
> Hardwarekonstellation softwaremäßig?

Was du realisierst ist ein 'Servo' wie es im Modellbau benutzt wird.
Servoelektroniken gibt es für kleines Geld zu kaufen.
Es gibt aber auch Open-Source Servo Projekte im Web. Google mal danach 
und sieh dir die dortige Regelschleife an.

Autor: Günther K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz Buchegger schrieb:
> Das nennt man in der Modellbaubranche ein Servo. Und die gibt es von
> winzig bis hin zu richtigen Kraftlackeln.

Ich habe lange was passendes gesucht, aber in meiner mittleren 
Drehmomentklasse ist nicht viel zu finden. Enweder sind die Servos 
mikrig (Modellbau), oder die sind extrem stark, extrem groß und vor 
allem extrem teuer (Industrie). Oder es passt der Spannungsbereich nicht 
mit dem Rest zusammen.

Da ich einen kräftigen DC-Motor mit Getriebe habe und auch sonst alles 
vorhanden ist, wollte ich nicht unnötig Geld fürs Hobby ausgeben. Der 
Motor soll übrigens einen Hebelarm betätigen, der ein Schleifband je 
nach Wunsch schrägstellt.

Autor: Günther K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz Buchegger schrieb:
> Es gibt aber auch Open-Source Servo Projekte im Web. Google mal danach
> und sieh dir die dortige Regelschleife an.

Das klingt gut, da werde ich mich gleich dran machen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Günther K. schrieb:

> mikrig (Modellbau), oder die sind extrem stark, extrem groß und vor
> allem extrem teuer (Industrie). Oder es passt der Spannungsbereich nicht
> mit dem Rest zusammen.

OK.

Nichts desto trotz passt das Servo-Prinzip

http://www.openservo.com/

Autor: Schweizer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die gemessene Istposition muss erstmal gefiltert werden (um tolleranzen 
des ADC, sonstige Störungen möglichst zu eleminieren) Sprich nur die 
"tiefen" Frequenzen sind interessant (wird sich ja nach beschreibung 
kaum um ein hochdynamisches System handeln).
Bei der Regelung drängt sich ein klassischer PI-Regler auf. Wie Regelst 
du? P-Regler????

Autor: Günther K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schweizer schrieb:
> Bei der Regelung drängt sich ein klassischer PI-Regler auf. Wie Regelst
> du? P-Regler????

Es kommt im Moment keine richtige Regelung zum Einsatz, die Umsetzung 
meines Problems in eine Regelung (digital über die Software) suche ich 
ja gerade :)

Da ich keine Erfahrung mit Regelungstechnik habe, wurden bisher 
lediglich einfache if-else-Anweisungen getestet, in etwa sowas:

if (Sollwert < Istwert)
   drehMotorNachRechts();
else if (Istwert > Sollwert)
   drehMotorNachLinks();
else
   motorAnhalten();

Natürlich funktioniert das nur bedingt.

Die Regelungstechnik-Grundlagen füttere ich mir gerade an. Mein Problem 
kann ich jetzt vielleicht genauer beschreiben: Wie kann ich bei 
gegebener Soll-Position und einem Poti-Istwert die Regelschleife für die 
H-Brücke aufbauen?

Z.B. bei einer PID-Regelung. Soll- und Istwert gehen in die PID rein und 
es kommt eine Regeldifferenz aus der PID-Regelung heraus. Nur, was mache 
ich damit? Wie steuere ich damit die H-Brücke an? Geht das nur mit 
AN/AUS/Rechts/Links, also ohne PWM oder nur mit PWM, oder sonst wie?

Autor: G a s t (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Betrag der Regeldifferenz ist dein Tastverhältnis für die PWM. Mit 
dem Vorzeichen der Regeldifferenz wählst du die Polarität der H-Brücke.

Autor: Nn Nn (jaytharevo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Darf man fragen wieviel Drehmoment du benötigst?

Kann mir nicht vorstllen, dass es kein passendes Servo zu kaufen gibt^^.

Das dass Problem der ADC ist kann ich mir nicht vorstllen. Der TE meint 
ja der Motor würde Pendeln also eine periodische Bewegung machen. Also 
falls Störungen des ADC sowas bewirken hat er aber ganz schön 
konsequente Störungen^^.

Autor: G a s t (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Schwingen wird daher kommen, dass der Motor bisher beim Erreichen 
des Sollwertes einfach ausgeschaltet wird. Durch seine Trägheit schwingt 
dann über. Das sollte durch den Proportionalanteil des Reglers 
wegzubekommen sein.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> aber wie realisiere ich das mit meiner
> Hardwarekonstellation softwaremäßig

Schlag einfach nach unter PID Regler,
das Stichwort wurde genannt.

Autor: pankow (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denke pid alleine reicht nicht, wahrscheinlich musst du noch eine 
hysterese oder ein dead-band einbauen. I anteil ist eh nicht sinnvoll, 
eher gefährlich. P reicht, wenn du am anfang mehr geschwindigkeit 
willst, machste noch nen d anteil dazu.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
pankow schrieb:
> ich denke pid alleine reicht nicht, wahrscheinlich musst du noch eine
> hysterese oder ein dead-band einbauen. I anteil ist eh nicht sinnvoll,
> eher gefährlich. P reicht, wenn du am anfang mehr geschwindigkeit
> willst, machste noch nen d anteil dazu.

Hallo,

bevor du solche Märchen erzählst, solltest du dich mal mit der Theorie 
der PID-Regler beschäftigen. Wie man aus deinen aus der Luft gegriffenen 
Behauptungen sieht, geht es nicht ohne, als Empfehlungen führen sie zur 
garantierten Nichtfunktion.

Ein Servo ist nicht eine Regelschleife, sondern zwei: die 
H-Brücken-Mimik mit PWM stellt eine Geschwindigkeits-Regelschleife dar, 
der Motorstrom wird so geregelt, dass sich die gewünschte 
Geschwindigkeit einstellt, unabhängig von der Belastung.

Diese Geschwindigkeit wird von der übergeordneten 
Positions-Regelschleife vorgegeben. Diese regelt die Geschwindigkeit so, 
dass eine gewünschte Position angefahren wird (PID!). Dazu muss diese 
mit einem Positions-Sensor erfasst werden, entweder potentiometrisch 
oder durch einen digitalen Zähler. I.A. wird dieser gleichzeitig für die 
Geschwindigkeitsmessung verwendet, da diese die Ableitung der Position 
nach der Zeit darstellt.

Meistens handelt es sich sogar um 3 Regelschleifen, weil auch der 
Motorstrom durch einen Schaltregler geregelt wird - das Tastverhältnis 
der PWM ist nicht vorgegeben, sondern wird so eingestellt, dass der 
gewünschte Motorstrom fliesst. Das ist oft schon in der H-Brücke 
eingebaut, der Strom wird mit Messwiderständen gemessen.

Die Tatsache, dass man alle 3 Regelschleifen als Software in einem 
µController realisieren kann, ändert am grundsätzlichen Aufbau 
garnichts. Sind alle Parameter aller Regelschleifen richtig eingestellt, 
läuft der Servo wunderbar asymptotisch an die gewünschte Position.

Gruss Reinhard

Autor: Günther K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Julian Schild schrieb:
> Darf man fragen wieviel Drehmoment du benötigst?
>
> Kann mir nicht vorstllen, dass es kein passendes Servo zu kaufen gibt^^.

Ich brauche min. 4,5 Nm besser 5 Nm Drehmoment. Das was ich an passenden 
Servos gefunden habe (Drehmoment, Haltemoment, Strom- u. 
Spannungsbereiche, Drehwinkel, Getriebe etc.), hatte Preise von 250 Euro 
und dann steil aufwärts. Wohlgemerkt das waren nur die reinen 
Motorpreise, ohne Regelungs- bzw. Ansteuerungseinheiten.
Für mein Hobbyprojekt eindeutig zu teuer.
Zudem funktioniert meine Hardware ja wenn man es ganz grob betrachtet. 
Ich muss es "nur" schaffen eine Regelung einzubauen. ;)


MaWin schrieb:
> Schlag einfach nach unter PID Regler,
> das Stichwort wurde genannt.

Uiuiui, jetzt muss ich schmunzeln, denn ich selbst war es, der das 
Stichwort bereits im ersten Posting genannt hat... und dazu weiter oben 
auch konkrete Fragen gestellt hat, nämlich wie man einen PID-Regler mit 
meiner Hardware anwendet um zu positionieren - und nicht etwa (wie in 
fast allen Beiträgen zu PID) um die Motordrehzahl zu regeln.


G a s t schrieb:
> Der Betrag der Regeldifferenz ist dein Tastverhältnis für die PWM. Mit
> dem Vorzeichen der Regeldifferenz wählst du die Polarität der H-Brücke.

Danke, damit kann ich schon eher was anfangen. Ich versuche mir das bei 
den Open-Source-Servo-Projekten abzuleiten und abzuschauen, aber dort 
geht es ganz schön zur Sache. Das ist schon eine größere Herausforderung 
für mich da durchzublicken.


Reinhard Kern schrieb:
> Ein Servo ist nicht eine Regelschleife, sondern zwei: die
> H-Brücken-Mimik mit PWM stellt eine Geschwindigkeits-Regelschleife dar,
> der Motorstrom wird so geregelt, dass sich die gewünschte
> Geschwindigkeit einstellt, unabhängig von der Belastung.
>
> Diese Geschwindigkeit wird von der übergeordneten
> Positions-Regelschleife vorgegeben. Diese regelt die Geschwindigkeit so,
> dass eine gewünschte Position angefahren wird (PID!). Dazu muss diese
> mit einem Positions-Sensor erfasst werden, entweder potentiometrisch
> oder durch einen digitalen Zähler. I.A. wird dieser gleichzeitig für die
> Geschwindigkeitsmessung verwendet, da diese die Ableitung der Position
> nach der Zeit darstellt.
>
> Meistens handelt es sich sogar um 3 Regelschleifen, weil auch der
> Motorstrom durch einen Schaltregler geregelt wird - das Tastverhältnis
> der PWM ist nicht vorgegeben, sondern wird so eingestellt, dass der
> gewünschte Motorstrom fliesst. Das ist oft schon in der H-Brücke
> eingebaut, der Strom wird mit Messwiderständen gemessen.
>
> Die Tatsache, dass man alle 3 Regelschleifen als Software in einem
> µController realisieren kann, ändert am grundsätzlichen Aufbau
> garnichts. Sind alle Parameter aller Regelschleifen richtig eingestellt,
> läuft der Servo wunderbar asymptotisch an die gewünschte Position.

WOW, das klingt wirklich kompliziert und aufwendig. Aber ich habe es 
verstanden und es bringt mich wirklich weiter. Vielen Dank!

Autor: Sampler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende den 1.61.050.447 mit 12V. Auf der Antriebsseite hat er ein 
Schneckengetriebe und rückwärtig eine Motorachse, an die sich prima ein 
Drehgeber anschließen läßt. Angesteuert mit einem L6203 per PWM wird die 
Zielposition mit 100% angefahren und kurz vor Erreichen der Sollposition 
auf 30% reduziert. An der Sollposition wird der Motor durch Kurzschluß 
gestoppt.
Um gradgenau zu positionieren bedarf es keiner weiteren Regelung; in 
Ruhe sorgt das Getriebe dafür, dass der Motor auf seiner Position 
bleibt. Daher wird auch die Drehgeberposition im abgeschalteten Zustand 
nicht verändert; es bedarf keiner weiteren abs. Nullstellung.

http://www.buehlermotor.de/C12572D40025EAF8/vwCont...

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.