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
Probiers mal so:
Motorgeschwindigket = (Sollposition - Istposition) * Faktor
So wird der Motor beim Annähern an die Sollposition immer
langsamer/feiner.
:-)
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.
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
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?
> 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.
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
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
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?
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.
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.
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.
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/
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????
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?
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^^.
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.
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.
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
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!
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/vwContentByKey/W274AHFA065WEBRDE/$FILE/DC-Getriebemotor-1_61_050_de.pdf