Gimbal Motor mit L6234

OP #3951140
Lesenswert?
• ▲
▼
Hallo,

ich möchte mir einen Gimbal selbst bauen. Dazu möchte ich drei BLDCs vom
Typ GB54-1 von der Firma T-Motors verwenden. Die Ansteuerung soll über
drei, an einen Arduino angeschlossenen, L6234 Treiber erfolgen.

Ich habe es bis jetzt geschafft, ein Programm zu schreiben, das es mir
ermöglicht den Motor in Schritten (von theoretisch 0,0386°) zu drehen.
Die Ansteuerung erfolgt dabei wie sie im Diagramm im Anhang zu sehen
ist.

Zur Erklärung muss man vllt. erwähnen, dass der L6234 jeweils drei EN
pins und drei IN pins hat. Die EN pins schalten die jeweilige Phase ganz
aus, die IN pins wählen zwischen dem oberen und dem unteren DMOS (d.h.
logic level 1, -1). Um die linearen Steigungen aus dem Diagramm zu
erreichen, wird ein PWM Signal auf den entsprechenden EN pin gegeben,
das am Anfang den maximalen Wert hat (255) und dann auf 0 sinkt. Bei 0
wird der zugehörige IN pin umgeschaltet und das PWM Signal steigt wieder
auf 255.

Das Problem dabei ist, dass nur die PWM Werte von 160-255(wenn IN = 0)
bzw. die Werte von 130-255 (wenn IN = 1) den Motor bewegen. Das führt
dazu, dass sich der Motor dreht, anhält, dreht... Ich habe mir darauf
hin eine Tabelle erstellt, die nur diese Werte enthält. Das hat das
Verhalten des Motors wesentlich verbessert. Gerade wenn ich den Motor
sehr langsam drehe, kann man mit dem Auge keine
Geschwindigkeitsunterschiede mehr erkennen. Wenn ich den Motor aber
schneller drehen lasse, treten starke Vibrationen auf.

Ursprünglich habe ich überlegt, eine Art von Feedback zur Kommutation zu
verwenden (z.B. Hallsensoren, back-emf, shaft-encoder), allerdings
scheinen alle Projekte die es in diesen Bereich gibt (AlexMos,
BruGi,...) auf Feedback zu verzichten. De facto scheint nur der DJI
Ronin Feedback zu verwenden (nämlich shaft-encoder).

Leider findet sich im Internet nicht sonderlich viel zur Ansteuerung von
Gimbal Motoren. Die wenigen Artikel die sich mit der Ansteuerung von
BLDCs beschäftigen, erklären die Ansteuerung von schnelldrehenden (RC)
BLDCs bzw. sensorbasierten BLDCs. Gimbal BLDCs unterscheiden sich aber
von diesen, da sie viele dünne Wicklungen haben, anstelle von wenigen
dicken Wicklungen.

Ich hoffe, jemand kann mir erklären, was ich falsch mache (bzw. ob mein
Konzept grundsätzlich funktionieren kann). Außerdem, die Art der
Ansteuerung die ich verwende ist FOC (field oriented controll), oder?

Mit freundlichen Grüßen
Josua

PS: Ich brauche den Gimbal im Rahmen eines Schulprojekts. Meine Aufgabe
wäre es eigentlich nur, die Routinen zur Lageorientierung zu
programmieren (Eulerwinkel usw.), aber einer muss ja die Arbeit
machen... Daraus ergibt sich leider auch, dass ich nicht einfach einen
AlexMos controller als Grundlage verwenden kann.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.