Copilot schlug folgende Lösungen vor:
1. Verstärkungs-Kennfeld: Regelgrößen Kp, Ki, Kd in Abhängigkeit der Sollposition setzen
2. Kaskadierte Regelung mit unterlagerter Stromregelung
3. Vorsteuerung der Federkraft
Ich habe 3 ausprobiert und es funktioniert sehr gut: Die Idee ist, dass man zunächst die Auslenkungen je PWM-Wert ermittelt.
Da der Zusammenhang in erster Näherung linear ist. Rechnet man erst einen groben PWM-Wert aus, und addiert den Output-Wert vom PID-Regler. Da dieser nur eine kleine Korrektur ausgleichen muss, arbeitet man mit kleineren Regler-Werten.
Motorisierter Open-Source-XYZ-Mikromanipulator
Forumsregeln
Bitte beachte die Forumsregeln!
Bitte beachte die Forumsregeln!
Re: Motorisierter Open-Source-XYZ-Mikromanipulator
Exzellente Ergebnisse habe ich jetzt mit einem Lautsprecher erzielt - ja, den hatten wir schon mal:
Und in einer Copilot-Session eine optimierte PWM-Ansteuerung (>10 bit) mit fraktionaler PWM (Dithering) via IRQ und Auto-Calibration.
(Man sieht, ich bin der AI nicht grundsätzlich abgeneigt)
Der Lautsprecher (gewissermaßen echte Voice-Coil
) hat gegenüber der GeeTech-Voice-Coil den Vorteil, dass er keine Haftreibung hat und deutlich empfindlicher auf PWM bzw. Spannungsänderungen reagiert. Bei der Voice-Coil gibts eine Druckstange, die in einem Loch läuft. Diese Stange verhakt sich schon mal und man muss den PWM-Wert schon um einige Counts erhöhen, um die Coil in Bewegung zu setzen. Wenn sie das dann tut, sorgt ihre Massenträgheit dafür, dass sie etwas überschießt.
Beim Lautsprecher hatte ich mit reiner 10-Bit PWM-Ansteuerung bereits bei einer Wertänderung von 1 eine Änderung der Position um 100-150 Counts. Das ist schon sehr krass. Also Widerstand davor und dieses Dithering.
Für einen Nachbau ist der Lautsprecher deutlich besser geeignet als eine spezielle (teure) Voice-Coil. Und besser funktionierte es auch.
Jetzt könnte man, sofern Interesse besteht, noch Alles etwas "Fischertechnikisieren" und dann kann das jeder nachbauen.
Ach ja, die Linearisierung vom Magnetencoder fehlt noch und ein Detektor für Nullposition.
Was kann man damit machen? Z.B. einen Seismograph
Grüße
Florian
(Man sieht, ich bin der AI nicht grundsätzlich abgeneigt)
Der Lautsprecher (gewissermaßen echte Voice-Coil
Beim Lautsprecher hatte ich mit reiner 10-Bit PWM-Ansteuerung bereits bei einer Wertänderung von 1 eine Änderung der Position um 100-150 Counts. Das ist schon sehr krass. Also Widerstand davor und dieses Dithering.
Für einen Nachbau ist der Lautsprecher deutlich besser geeignet als eine spezielle (teure) Voice-Coil. Und besser funktionierte es auch.
Jetzt könnte man, sofern Interesse besteht, noch Alles etwas "Fischertechnikisieren" und dann kann das jeder nachbauen.
Ach ja, die Linearisierung vom Magnetencoder fehlt noch und ein Detektor für Nullposition.
Was kann man damit machen? Z.B. einen Seismograph
Grüße
Florian
Re: Motorisierter Open-Source-XYZ-Mikromanipulator
Inzwischen klappt es sowohl mit der Voice-Coil als auch mit dem Lautsprecher.
Hier eine Treiberschaltung mit Stromregelung über Opamp und n-Kanal Mosfet.
Die erste Verstärkerstufe bildet einen Summationsverstärker (Nicht-invertierender Verstärker), der den Sollwert an die zweite Stufe leitet. An der ersten Stufe kann ein Offset addiert werden. Die PWM wird über einen Spannungsteiler eingeleitet.
Wichtig ist hier, dass ein Opamp mit Rail-to-Rail-Fähigkeit eingesetzt wird.
Die zweite Stufe arbeitet als Stromregler: Die Regelspannung wird am Source des Mosfet abgegriffen und dem invertierenden Eingang der zweiten Stufe über einen 220 Ohm Widerstand zugeführt. Steigt nun der Strom durch die Spule, nimmt die Spannung am - Eingang zu. Der Opamp regelt dann die Gate-Spannung herunter, wodurch der Strom durch die Spule wieder sinkt. Der 100 nF Kondensator soll Regelschwingungen verhindern.
Hier eine Treiberschaltung mit Stromregelung über Opamp und n-Kanal Mosfet.
Die erste Verstärkerstufe bildet einen Summationsverstärker (Nicht-invertierender Verstärker), der den Sollwert an die zweite Stufe leitet. An der ersten Stufe kann ein Offset addiert werden. Die PWM wird über einen Spannungsteiler eingeleitet.
Wichtig ist hier, dass ein Opamp mit Rail-to-Rail-Fähigkeit eingesetzt wird.
Die zweite Stufe arbeitet als Stromregler: Die Regelspannung wird am Source des Mosfet abgegriffen und dem invertierenden Eingang der zweiten Stufe über einen 220 Ohm Widerstand zugeführt. Steigt nun der Strom durch die Spule, nimmt die Spannung am - Eingang zu. Der Opamp regelt dann die Gate-Spannung herunter, wodurch der Strom durch die Spule wieder sinkt. Der 100 nF Kondensator soll Regelschwingungen verhindern.
Re: Motorisierter Open-Source-XYZ-Mikromanipulator
Da 3D-Druck nicht jedermanns Sache ist, habe ich Versuche, mit einem Flexure aus Fischertechnik gemacht.
Als Aktuator setze ich einen 4 Watt-Lautsprecher ein, der das Shuttle über eine Rastachse drückt. Man beachte auch die seitlichen Stabilisatoren dieses Flexures. Sie sind unbedingt notwendig, um ungewollte parasitäre Bewegungen zu reduzieren.
Für die Positionsmessung wird 21-Bit magnetischer Winkelencoder MT6835 mit einem Stapel von Zylindermagneten verwendet, der an der Unterseite des Shuttles montiert ist. Die Ansteuerung erfolgt diesmal nicht über PWM, sondern über einen 16-Bit-Digital-Analog-Wandler. (Hier ein DAC703, den ich noch aus Urzeiten übrig hatte; Das Ding braucht aber mindestens +/- 12V, um überhaupt zu funktionieren. Ein aktueller Arduino-kompatibler DAC wäre sicher angebracht. Das 16-Bit-Digitalwort wird dem DAC über zwei 8-Bit TTL-Latches 74LS374 übermittelt). Die Treiberschaltung ist die gleiche wie im vorigen Post beschrieben.
Die Kombination erreicht ebenfalls eine sehr gute Regelgenauigkeit von +/- 1 Counts, was für Fischertechnik unvorstellbar krass ist.
Als nächstes habe ich selber eine Aktuator-Spule mit 300 Windungen gewickelt. Im Kern befindet sich ein Stapel von Scheibenmagneten. Als "Joch" verwende ich ein Stück Eisenrohr, das von einem Tischbein übrig geblieben ist. Meine Idee war es, die Reibung zu verhindern. Allerdings kommen jetzt Schwingungen zu Tage, die die Genauigkeit auf +/- 300 Counts begrenzen. Mit einer provisorischen Wirbelstromdämpfung oben, wird es geringfügig besser: +/- 100 Counts.
Aber leider wird die Spule (und der Steuertransistor) auch sehr heiß. Ich frage mich, wie ich den Aktuator besser hinbekommen könnte.
Die durch die Reibungsfreiheit dieses Antriebs ermöglichten mechanischen Schwingungen lassen einen darüber nachdenken, die Anordnung als Seismographen zu nutzen.
Als Aktuator setze ich einen 4 Watt-Lautsprecher ein, der das Shuttle über eine Rastachse drückt. Man beachte auch die seitlichen Stabilisatoren dieses Flexures. Sie sind unbedingt notwendig, um ungewollte parasitäre Bewegungen zu reduzieren.
Für die Positionsmessung wird 21-Bit magnetischer Winkelencoder MT6835 mit einem Stapel von Zylindermagneten verwendet, der an der Unterseite des Shuttles montiert ist. Die Ansteuerung erfolgt diesmal nicht über PWM, sondern über einen 16-Bit-Digital-Analog-Wandler. (Hier ein DAC703, den ich noch aus Urzeiten übrig hatte; Das Ding braucht aber mindestens +/- 12V, um überhaupt zu funktionieren. Ein aktueller Arduino-kompatibler DAC wäre sicher angebracht. Das 16-Bit-Digitalwort wird dem DAC über zwei 8-Bit TTL-Latches 74LS374 übermittelt). Die Treiberschaltung ist die gleiche wie im vorigen Post beschrieben.
Die Kombination erreicht ebenfalls eine sehr gute Regelgenauigkeit von +/- 1 Counts, was für Fischertechnik unvorstellbar krass ist.
Als nächstes habe ich selber eine Aktuator-Spule mit 300 Windungen gewickelt. Im Kern befindet sich ein Stapel von Scheibenmagneten. Als "Joch" verwende ich ein Stück Eisenrohr, das von einem Tischbein übrig geblieben ist. Meine Idee war es, die Reibung zu verhindern. Allerdings kommen jetzt Schwingungen zu Tage, die die Genauigkeit auf +/- 300 Counts begrenzen. Mit einer provisorischen Wirbelstromdämpfung oben, wird es geringfügig besser: +/- 100 Counts.
Aber leider wird die Spule (und der Steuertransistor) auch sehr heiß. Ich frage mich, wie ich den Aktuator besser hinbekommen könnte.
Die durch die Reibungsfreiheit dieses Antriebs ermöglichten mechanischen Schwingungen lassen einen darüber nachdenken, die Anordnung als Seismographen zu nutzen.