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.
Gero schrieb: > Aus Zeitmangel möchte ich aber > nichts selber entwickeln. Hat jemand eine Idee? Mach ein Pflichtenheft und schiebe es rüber.
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?
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.
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.
> aber wie realisiere ich das mit meiner > Hardwarekonstellation softwaremäßig Schlag einfach nach unter PID Regler, das Stichwort wurde genannt.
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
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.