Hallo Zusammen,
ein funktionierendes Brushless Gimbal habe ich noch nicht, aber meinen ersten Schritt dahin möchte ich hier vorstellen:
Ich habe einen Standar BLDC Regler mit einer neuen Firmware geflasht so das er jetzt als Regler für die Brushless Motoren von BL-Gimbals taugt.
Es gibt ja mittlerweile einige wirklich tolle BL-Gimbal Controller Boards (Martinez, ...). Also, warum dieser (Um)Weg?
1) Mir sind die bisherigen Lösungen zu gross, ich will ein kleines Gimbal haben, Keychain-Kamera Größe oder so.
2) Warum nicht.
Extra ESC für die Motoren bringt sicher einige Nachteile mit sich:
- größerer Verdrahtungsaufwand
- Einstellen von Parametern wird mühseliger
- bisher gibt es keine gebräuchliche "Schnittstelle" zwischen Hauptcontroller-Board und ESC
- ...
Extra ESC für die Motoren haben aber IMHO auch Vorteile:
- wenn ein Motortreiber/ESC ausfällt ist ein Ersatz leichter und billiger
- da die Motoransteuerung nicht mehr im Hauptcontroller mit integriert ist, wird dort Platz und Rechenzeit frei für andere Funktionen
- da die Motoransteuerung von einem extra Regler mit eigenem Rechenhirn übernommen wird, ist Platz und Rechenpower da um auch ausgefeiltere Modulationsmethoden umzusetzen
- ein und der selbe Hauptcontroller kann für verschiedene Motor/Gimbal-Größen benutzt werden
- ein Aufrüsten der Motoren/Reglers ist leichter/billiger möglich
- Update der Firmware für Hauptcontroller und Motorentreiber muss nicht mehr Hand in Hand gehen
- ...
Als ESC habe ich einen Turnigy Plush 6A mit Atmega8A genommen. Der ist i) klein, ii) vom Schaltungslayout her das Vorbild für fast alle anderen ESC mit Atmega, und iii) hatte ich den halt übrig. Es gibt ihn nicht mehr zu kaufen (die neuen haben Silabs) aber das macht nichts, denn wegen ii) geht die Firmware auch auf anderen ESC oder kann schnell angepasst werden. Als Motor habe ich einen C10 aus meinen BLBL-Koax Umbau gestolen. Der C10 ist vom Format ähnlich zum Turnigy 1811, das KV ist 2900 rpm/V, 9 Zähne, 12 Magnete. Es ist ein deutliches Rasten zu spüren (also nicht ideal, man siehts später auch), aber das Rasten ist viel schwächer als bei anderen kleinen BL-Motoren die ich da habe (Turnigy 1811-3800, C05M, HP05v2). Die Ansteuerung ist im Moment im üblichen PPM Format, also 1-2ms high Signal, mit ner low Pause (<25 ms) dazwischen. Habe ich nicht getestet, aber als maximale Updaterate sollten die bekannten 490Hz funktionieren (ich spile mit dem Gedanken auf 1kHz PWM als Eingang zu gehen). Beim Einschalten wird die Mitte gesucht, welche typisch bei 1520us liegt. Abweichungen von der Mitte entsprechen der Drehgeschwindigkeit. Fällt das Signal am Eingang aus, werden alle Fets ausgeschaltet (Failsafe).
Das Programmieren der Firmware fand ich nicht einfach, da musste ich doch mehr knobeln als zunächst gedacht und ein paar Tricks einbauen. Das liegt vorallem daran, dass die Hardware-Möglichkeiten des Atmega8 maximal schlecht ausgenutzt werden. Es wird weder das ICP benutzt, noch ist irgendeiner der PWM-Ausgänge an einen der Fets gelegt (zwischenzeitlich war ich fast schon so weit einen Atmega88 einzulöten... und aufzugeben...). Zusätzlich habe ich (mit Schrecken) festgestellt, dass die high-side Fets 3us (ja 3000ns) zum Ausschalten brauchen... da muss man sich wenn man drei Brücken PWM modulieren will schon gut überlegen was man wie macht wenn man nicht die ganze Zeit nur in Interrupts festhängen will. Da der Plush den internen 8Mhz Oszillator benutzt, habe ich mir den Trick von SimonK ausgeborgt und OSCCAL hochgesetzt... mein Plush läuft nun mit 15.1 MHz. Damit ist die PWM Frequenz nicht ganz 8kHz (ja, es fiept leise). Die Auflösung ist 252 Schritte (und nicht wie beim BruGri 256 Schritte), hat Vorteile. Die SinusKurve is mit 12 bit abgespeichert (Brugri 8 Bit), womit man die Amplitude in "Echtzeit" anpassen kann, und kein Floatingpoint braucht.
Ich habe ein kleines Video gemacht, aber das Hochladen auf Youtube hat nicht funktioniert weil mir Google meinen Account irgendwie umgemodelt hat (langsam geht mir das rücksichtlose Vorgehen von Goolge echt auf den Sack, die hätten wenigstens die alten Sachen übernehmen können, kann jeder heutzutage, nur Google nicht, rrrh). Daher soweit nur hier zum downloaden... Sorry.
[video]www.olliw.eu/uploads/blgtgy6a_v008_4fpvrcg.flv[/video]
Wie ihr seht, ist der Motor im Originalzustand nicht optimal für den Zweck, das Rasten beim Langsamlaufen ist deutlich. Aber ansonsten scheint mir alles sehr gut zu gehen. Die Leistung habe ich drastisch runterdrosseln müssen, den sonst ist der Motor extrem heiss geworden (die ESC nicht). Da werde ich mich wohl mal ans Motorwickeln machen müssen... LOL.
Der Hauptcontroller fehlt auch noch. BruGri sollte sich aber SEHR leicht umstricken lassen, und dann gibt es ja auch nicht den MultiWii-Brushless-Gimbal Ableger von PatrikE, der sich vermutlich direkt benutzen lässt.
Im Anhang findet ihr die momentane Firmware, Version v0.08, ist natürlich absolut BETA!!!!
Die Firmware taugt, wie gesagt, nicht nur für den Plush6A, sondern für viele andere ESC, auch stärkere/größere (eine Liste potentieller Kandidaten: https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZR lE#gid=0). D.h. man könnte sie für die im Moment so aktuellen Gimbalmotoren der GoPro-oder-größer-Klasse testen... würde mich interssieren wie sie sich an einem vernünftigen Gimbalmotor so schlägt.
Wie es bei mir weitergeht ist klar. Motor. Hauptcontroller. Dann möchte ich einen der ESC mit nur-N-Fets testen, um die blöden 3us los zu werden. Und auf die blöde IMU warte ich auch immer noch... aber der erste Schritt ist getan...
Cheers, Olli
Anhang anzeigen blgtgy6a_v008.zip
ein funktionierendes Brushless Gimbal habe ich noch nicht, aber meinen ersten Schritt dahin möchte ich hier vorstellen:
Ich habe einen Standar BLDC Regler mit einer neuen Firmware geflasht so das er jetzt als Regler für die Brushless Motoren von BL-Gimbals taugt.
Es gibt ja mittlerweile einige wirklich tolle BL-Gimbal Controller Boards (Martinez, ...). Also, warum dieser (Um)Weg?
1) Mir sind die bisherigen Lösungen zu gross, ich will ein kleines Gimbal haben, Keychain-Kamera Größe oder so.
2) Warum nicht.
Extra ESC für die Motoren bringt sicher einige Nachteile mit sich:
- größerer Verdrahtungsaufwand
- Einstellen von Parametern wird mühseliger
- bisher gibt es keine gebräuchliche "Schnittstelle" zwischen Hauptcontroller-Board und ESC
- ...
Extra ESC für die Motoren haben aber IMHO auch Vorteile:
- wenn ein Motortreiber/ESC ausfällt ist ein Ersatz leichter und billiger
- da die Motoransteuerung nicht mehr im Hauptcontroller mit integriert ist, wird dort Platz und Rechenzeit frei für andere Funktionen
- da die Motoransteuerung von einem extra Regler mit eigenem Rechenhirn übernommen wird, ist Platz und Rechenpower da um auch ausgefeiltere Modulationsmethoden umzusetzen
- ein und der selbe Hauptcontroller kann für verschiedene Motor/Gimbal-Größen benutzt werden
- ein Aufrüsten der Motoren/Reglers ist leichter/billiger möglich
- Update der Firmware für Hauptcontroller und Motorentreiber muss nicht mehr Hand in Hand gehen
- ...
Als ESC habe ich einen Turnigy Plush 6A mit Atmega8A genommen. Der ist i) klein, ii) vom Schaltungslayout her das Vorbild für fast alle anderen ESC mit Atmega, und iii) hatte ich den halt übrig. Es gibt ihn nicht mehr zu kaufen (die neuen haben Silabs) aber das macht nichts, denn wegen ii) geht die Firmware auch auf anderen ESC oder kann schnell angepasst werden. Als Motor habe ich einen C10 aus meinen BLBL-Koax Umbau gestolen. Der C10 ist vom Format ähnlich zum Turnigy 1811, das KV ist 2900 rpm/V, 9 Zähne, 12 Magnete. Es ist ein deutliches Rasten zu spüren (also nicht ideal, man siehts später auch), aber das Rasten ist viel schwächer als bei anderen kleinen BL-Motoren die ich da habe (Turnigy 1811-3800, C05M, HP05v2). Die Ansteuerung ist im Moment im üblichen PPM Format, also 1-2ms high Signal, mit ner low Pause (<25 ms) dazwischen. Habe ich nicht getestet, aber als maximale Updaterate sollten die bekannten 490Hz funktionieren (ich spile mit dem Gedanken auf 1kHz PWM als Eingang zu gehen). Beim Einschalten wird die Mitte gesucht, welche typisch bei 1520us liegt. Abweichungen von der Mitte entsprechen der Drehgeschwindigkeit. Fällt das Signal am Eingang aus, werden alle Fets ausgeschaltet (Failsafe).
Das Programmieren der Firmware fand ich nicht einfach, da musste ich doch mehr knobeln als zunächst gedacht und ein paar Tricks einbauen. Das liegt vorallem daran, dass die Hardware-Möglichkeiten des Atmega8 maximal schlecht ausgenutzt werden. Es wird weder das ICP benutzt, noch ist irgendeiner der PWM-Ausgänge an einen der Fets gelegt (zwischenzeitlich war ich fast schon so weit einen Atmega88 einzulöten... und aufzugeben...). Zusätzlich habe ich (mit Schrecken) festgestellt, dass die high-side Fets 3us (ja 3000ns) zum Ausschalten brauchen... da muss man sich wenn man drei Brücken PWM modulieren will schon gut überlegen was man wie macht wenn man nicht die ganze Zeit nur in Interrupts festhängen will. Da der Plush den internen 8Mhz Oszillator benutzt, habe ich mir den Trick von SimonK ausgeborgt und OSCCAL hochgesetzt... mein Plush läuft nun mit 15.1 MHz. Damit ist die PWM Frequenz nicht ganz 8kHz (ja, es fiept leise). Die Auflösung ist 252 Schritte (und nicht wie beim BruGri 256 Schritte), hat Vorteile. Die SinusKurve is mit 12 bit abgespeichert (Brugri 8 Bit), womit man die Amplitude in "Echtzeit" anpassen kann, und kein Floatingpoint braucht.
Ich habe ein kleines Video gemacht, aber das Hochladen auf Youtube hat nicht funktioniert weil mir Google meinen Account irgendwie umgemodelt hat (langsam geht mir das rücksichtlose Vorgehen von Goolge echt auf den Sack, die hätten wenigstens die alten Sachen übernehmen können, kann jeder heutzutage, nur Google nicht, rrrh). Daher soweit nur hier zum downloaden... Sorry.
[video]www.olliw.eu/uploads/blgtgy6a_v008_4fpvrcg.flv[/video]
Wie ihr seht, ist der Motor im Originalzustand nicht optimal für den Zweck, das Rasten beim Langsamlaufen ist deutlich. Aber ansonsten scheint mir alles sehr gut zu gehen. Die Leistung habe ich drastisch runterdrosseln müssen, den sonst ist der Motor extrem heiss geworden (die ESC nicht). Da werde ich mich wohl mal ans Motorwickeln machen müssen... LOL.
Der Hauptcontroller fehlt auch noch. BruGri sollte sich aber SEHR leicht umstricken lassen, und dann gibt es ja auch nicht den MultiWii-Brushless-Gimbal Ableger von PatrikE, der sich vermutlich direkt benutzen lässt.
Im Anhang findet ihr die momentane Firmware, Version v0.08, ist natürlich absolut BETA!!!!
Die Firmware taugt, wie gesagt, nicht nur für den Plush6A, sondern für viele andere ESC, auch stärkere/größere (eine Liste potentieller Kandidaten: https://docs.google.com/spreadsheet/ccc?key=0AhR02IDNb7_MdEhfVjk3MkRHVzhKdjU1YzdBQkZZR lE#gid=0). D.h. man könnte sie für die im Moment so aktuellen Gimbalmotoren der GoPro-oder-größer-Klasse testen... würde mich interssieren wie sie sich an einem vernünftigen Gimbalmotor so schlägt.
Wie es bei mir weitergeht ist klar. Motor. Hauptcontroller. Dann möchte ich einen der ESC mit nur-N-Fets testen, um die blöden 3us los zu werden. Und auf die blöde IMU warte ich auch immer noch... aber der erste Schritt ist getan...
Cheers, Olli
Anhang anzeigen blgtgy6a_v008.zip
Zuletzt bearbeitet: