ESC Flashen für Brushless Gimbal Motoren

Status
Nicht offen für weitere Antworten.

OlliW

Erfahrener Benutzer
#1
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
 
Zuletzt bearbeitet:
Erhaltene "Gefällt mir": Marv93

nico_99

Erfahrener Benutzer
#2
Hi Olli,

nicht schlecht.
Übrigens, kannst Du auch Gedanken lesen... ? ;)
 

edge

Erfahrener Benutzer
#3
hey Olli,
das ist ja echt nicht schlecht!
habe ein paar fragen:
warum sind 252 schritte besser als 256?
und ich glaube eine 12bit auflösung des sinus macht bei einer PWM Auflösung von 252 keinen sinn.
daher haben wir beim brugi auch 8bit genommen.
also du hast da echt was tolles gemacht und mir kommt gerade die idee das einfach als erweiterung für die 3. achse zu nehmen.
mit dem standard board kommen wir ja nicht weiter, da wir alle HW PWMs schon am laufen haben.
wenn man jetzt einfach einen günstigen BL Esc mit deiner firmware flasht hat man auf einfachste weise das problem gelöst.
LG

Alex
 

edge

Erfahrener Benutzer
#4
hey Olli,
das ist ja echt nicht schlecht!
habe ein paar fragen:
warum sind 252 schritte besser als 256?
und ich glaube eine 12bit auflösung des sinus macht bei einer PWM Auflösung von 252 keinen sinn.
daher haben wir beim brugi auch 8bit genommen.
also du hast da echt was tolles gemacht und mir kommt gerade die idee das einfach als erweiterung für die 3. achse zu nehmen.
mit dem standard board kommen wir ja nicht weiter, da wir alle HW PWMs schon am laufen haben.
wenn man jetzt einfach einen günstigen BL Esc mit deiner firmware flasht hat man auf einfachste weise das problem gelöst.
LG

Alex
edit: habe es gerade mal mit einem 20A n/p kanaler versucht, leider wird es nur heiß und der motor vibriert. habe mal in simonks liste geguckt und es gibt wohl unterschiede zwischen tgy6a.hex und tgy.hex. sind aber beides n/p kanaler.
vll könntest du ja nochmal schauen, ob du da was machen könntest.

Lg Alex
 

OlliW

Erfahrener Benutzer
#5
warum sind 252 schritte besser als 256?
ist durch 6 teilbar
=> +0, +84, +168 entsprechen genau 0°,120°,240°
=> die Sinustabelle ist perfekt symmetrisch und kann auf 1/4 verkürzt werden (ich habe nur 1/2 implementiert, für das 1/4 war ich noch zu faul)
=> zukünftige advanced Modulationstechniken gehen da die Sektorgrenzen exakt bekannt sind einfacher zu implementieren
ich glaube eine 12bit auflösung des sinus macht bei einer PWM Auflösung von 252 keinen sinn.
ist natürlich wie immer auch zum Teil persönlicher Geschmack, ich arbeite immer auch ein bischen an Effizienz, und Floatingpoint hat IMHO auf nem Atmega nicht immer was zu suchen, geht fast immer mit 16 bit, mit seltenen Ausflügen in 32bit. Am Ende kommen natürlich nur 8bit raus, aber die Sinusamplitude soll ja auch einstellbar sein (Leistung), mit den 12 bit hat man ausreichend Genauigkeit nach der Multiplikation, ich hätte auch genausogut 16bit nehmen könne, hätte sich nichts gegeben, war aber zu faul. Ich verbrauche den selben (oder sogar weniger) Ram wie BruGri, brauche aber nirgends einen Sinus auszuführen. Der Sinus wird im BruGri natürlich selten ausgeführt, aber ich könnte jetzt z.B. online die Amplitude anpassen. Im Moment ist der Atmega noch ziemlich leer, d.h., da geht noch was :)
habe es gerade mal mit einem 20A n/p kanaler versucht, leider wird es nur heiß und der motor vibriert.
erstmal SUPER dass du das probierst!!!
Ansonsten, Tja, jetzt geht das wie immer mit dem in vielen Umgebungen funktionsfähig bekommen los... ist ja eigentlich fast immer die meiste Arbeit LOL. Ich habe mir jetzt mal die tgy6a.inc und tgy.inc angesehen, und konnte keine relevanten Unterschiede sehen. Hmmm... Ich habe die Amplitude auf einen sehr kleinen Wert, 35 (100%=240), aber nachdem der heiss wird scheint ja genug Saft zu fliessen... hmmm... am Anfang hatte ich auch riesige Probleme mit Hitze, weil ich die 3us völlig falsch eingeschätzt hatte... hmmm... kannst du ein Oszi ohne Motor anschliessen und ein Bild eines Ausgangs machen, einmal frei, einmal mit z.B. einen 100 Ohm gegen Masse und einmal mit dem 100Ohm gegen 5V?
Aber eigentlich bin ich eher ratlos...

@nico_99: manche Gedanken liegen einfacher in der Luft :D
 

Lonestar78

Erfahrener Benutzer
#6
Zu Ollis Ausführungen:

252 ist die Länge des Sinus arrays. Das sit einen Tick besser als 256, weil 252 sauber durch 3 Teilbar ist und so eine ideale Phasenverschiebung erreichbar ist. 255 würde auch gehen. Ich hatte mich für 256 etnschieden, weil ich damit ohne weiteren Code einen sauberen Überlauf bei durchlaufen des Codes bekomme.

die 12 bit Auflösung beziehen sich auf jeden einzelnen wert im Sinus array, und das ist besser!
Wenn ich beim Brugi die Power-Begrenzung nutze, verringert sich die Auflösung pro Wert.
Je mehr Maximalauflösung man hat, desto mehr bleibt bei Powerbegrenzung übrig.

Grüße
Christian

Olli: weiter so!
 

edge

Erfahrener Benutzer
#8
ah okay, ich habe das mit der Auflösung dann falsch verstanden. ich dachte es geht darum, wieviele werte ich für meinen sinus über eine periode habe. okay natürlich, dann ist 12bit viel besser ;)
nochmal zu meinem ESC. bin nicht so der profi mit den ganzen fuse settings, aber muss ich vielleicht noch was am takt drehen?

LG Alex
 

edge

Erfahrener Benutzer
#9
so ich habe mal die beschreibungen von simonk gefunden, vll kannst du damit was anfenagen:

Turnigy Plush 6A boards *
;* Similar to normal "type 2" boards except with all sense lines on ADC *
;* pins (2, 4, 5) and possibly a different FET orderding. It seems the *
;* stock firmware actually commutates in C, B, A order, so we flip B *
;* and C everywhere here to spin in the same direction. This makes the *
;* pin configuration match tgy.inc except for the C (actually "B") *
;* phase sense on PC2 / ADC2 instead of PD7 / AIN1. *
;* Based on 6a ppm-r08 from Bernhard Konze: *
;* http://home.versanet.de/~b-konze/blc_6a/blc_6a.htm
 

nico_99

Erfahrener Benutzer
#11
Jungs,

die Idee mit günstigem ESC ist natürlich super aber können wir nicht einfach von m328p auf den 32u4 umsteigen und alle 3-Achsen bedienen? Ich meine ich weiß nicht genau, wie weit der m328 bereits ausgelastet ist also steinige mich jetzt bitte nicht. Die Frage ist auch, ob der 32u4 das noch packen würde den Rest zu bedienen.
Der hat ja nicht nur USB on Board, er hat auch 14 Hardware PWM... :cool:
 

edge

Erfahrener Benutzer
#12
habe gerade in die schalpläne geschaut, es scheint da unterschiede zu den unteren fets zu geben.

aber zu 100.00% richtig, respekt

@Alex: vielleicht liegt es doch nur an der Lesitung... ich habe mir gerade den C10 umgewickelt, und dann hat er auchnur gezappelt, dachte schon falsch gewickelt... aber ne, Amplituide von 35 auf 100 und schon gings => im Anhang ne zip mit der Amplitude als index _035, -100, -160, -240.

Anhang anzeigen 52109
 

OlliW

Erfahrener Benutzer
#13
so, beim ganzen rumspielen hatte ich mal bei einem der C10 einen Draht abgebrochen LOL, und zufällig hatte ich genau einen CuL-Draht mit 0.15mm da, also, habe ich mir gedacht, jetzt probierste es doch einfach mal schnell, das Umwickeln... war das erstemal, aber es ging echt VIEL leichter als gedacht... das Problem ist nur das zählen, bzw. sich nicht zu verzählen... aber dazu habe ich mir ein Kind geschnappt... hihi

C10 vorher: 14.5 Windungen 0.26mm Draht (Aussendurchmesser! mit Schieblehre gemssen)
C10 nachher: 40 Windungen 0.15mm Draht (laut Rolle)

Effekt: ich brauche mehr Spannung als zuvor damit er sich dreht. Aber er wird immer noch heiss, und ob er sich jetzt wirklich besser beim coggen ist wage ich nicht zu behaupten...

tja, 40 reicht wohl nicht LOL... 400? ohweja
 

OlliW

Erfahrener Benutzer
#14
@nico_99:
ja, das ist auch ein Weg, und für Viele vermutlich der Bessere
also, ich will sicher nicht behaupten dass das ESC umflashen der goldene Weg ist
(aber ich werde ihn jetzt halt einfach mal versuchen :))
 

nico_99

Erfahrener Benutzer
#15
Ja klar, mach weiter. ;-)
150-180 Windungen damit er nicht kocht dürfte vllt zum testen reichen...
 

edge

Erfahrener Benutzer
#18
sicher das der so viele HW pwms hat?
habe glaube schonmal ins datenblatt geschaut

Jungs,

die Idee mit günstigem ESC ist natürlich super aber können wir nicht einfach von m328p auf den 32u4 umsteigen und alle 3-Achsen bedienen? Ich meine ich weiß nicht genau, wie weit der m328 bereits ausgelastet ist also steinige mich jetzt bitte nicht. Die Frage ist auch, ob der 32u4 das noch packen würde den Rest zu bedienen.
Der hat ja nicht nur USB on Board, er hat auch 14 Hardware PWM... :cool:
 

edge

Erfahrener Benutzer
#19
so, habe gerade mal die andere version getestet, es wird zwar nicht heiß, aber es tut sich sonst auch nicchts, außer dass der motor geräusche macht.
 

edge

Erfahrener Benutzer
#20
so es dreht sich, aber nur 20 sekunden, dann ist mir ein fet abgefackelt :p
also die ursprüngliche version geht, aber die hitze entwicklungs ist echt heftig.

LG Alex
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten