Forum: Analoge Elektronik und Schaltungstechnik BLDC Treiber


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Florian B. (scheintod)


Lesenswert?

Hi Forum,

Folgendes Teil hat der Postbote heute ausgeworfen:

HT2205 Bürstenlosen Motor mit AS5600 Encoder

https://de.aliexpress.com/item/4000979603718.html?spm=a2g0s.9042311.0.0.3b704c4d7nTw37

(12V, 1A Haltestrom)

und nun bräuchte ich Hilfe bei der Auslegung  Ansteuerung  Auswahl vom 
Treiber.

Ziel des Spieles ist es das Teil als "Drehpoti" und den BLDC für Force 
Feedback zu verwenden.
Das ganze ist experimentell d.h. ich habe keine Idee ob und wie das so 
funktioniert wie ich mir das vorstelle. Aber einen Versuche finde ich 
ists wert.

Was ich jetzt brauch ist ein Treiber  Ansteuerung  3-fach H-Brücke (?) 
um das Teil an einen STM32xnnn an einen PWM Ausgang angeschlossen zu 
bekommen.

ESCs kenne ich, sind aber nicht flexibel genug für das was ich vorhabe.

Naiver Weise würde ich sagen 6 Mosfets mit mind 1A. So wie ich mich 
kenne ergibt das aber recht schnell rauchende Häufchen.

Was wäre Sinnvoll?

Besten Dank!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Florian B. schrieb:
> 3-fach H-Brücke (?)

Sagen wir mal 3-fach Halbbrücke. Man kann so eine Halbbrücke mit einem 
der Advanced Timer des STM32 ansteuern und sich es einfach machen, wenn 
man in der Lowside Logiklevel N-Kanal MOSFets benutzt und die Highside 
mit P-Kanalern und kleinem Transistor ansteuert.
Das kann z.B. so aussehen:
https://www.mikrocontroller.net/attachment/284084/RC_H-Bridge.png
Hier ist die eigentliche Schaltung etwas anders, als du sie benötigst, 
aber das Prinzip bleibt.

Die volle Version, die für dich schon fast zu aufwendig ist, ist die 
Verwendung von echten Treiberchips, wie z.B. dem IR2110/2112 o.ä.
Das habe ich bei dem FU gemacht:
https://www.mikrocontroller.net/articles/3-Phasen_Frequenzumrichter_mit_AVR

von MaWin (Gast)


Lesenswert?

Florian B. schrieb:
> und nun bräuchte ich Hilfe bei der Auslegung  Ansteuerung  Auswahl vom
> Treiber.

So informativ ist die Artikelbeschreibung ja nicht.
Da du aber die Rotorposition über den Encoder kennst, sicher einen uC 
zur Verarbeitung und Absteuerung hast, reicht ein L6232 oder ähnlicher 
Festplatten-spindle motor driver, der schon alles enthält, Transistore, 
PWM Regelung etc.

von Name: (Gast)


Lesenswert?

Florian B. schrieb:
> Was ich jetzt brauch ist ein Treiber  Ansteuerung  3-fach H-Brücke (?)
> um das Teil an einen STM32xnnn an einen PWM Ausgang angeschlossen zu
> bekommen.

Gibt da verschiedene Konzepte.
Konzept1:
Die brücke macht die Kommutierung eigenständig, man sagt ihr über 
Bus/PWM/Pins die Richtung und Geschwindigkeit.
Konzept2:
Die Brücke ist nur eine Brücke, und man muss die Ansteuerung selber 
machen, also PWM und alles.

Das zweite Konzept ist sehr aufwändig in Software, ist aber natürlich 
mit mehr Lerneffekt verbundne. Wenns nur ums Ansteuern geht, würde ich 
eine nehmen, die alles selber tut.

Was ich IMMER nehmen würde, ist eine Brücke mit integriertem Stromlimit.

Der Motor scheint keine Hallsensoren zu haben (?), dann wäre die Brücke 
Sensorless. Aber das bitte genau klären, es auch für BLCD mit 
Hallsensoren gibt es Brücken.

ICh würde bei Allegro schaun:
https://www.allegromicro.com/en/products/motor-drivers/bldc-drivers#guide%20

Für 12V 1A ist man da genau richtig.
Datenblatt genau lesen ;-)

von Florian B. (scheintod)


Lesenswert?

Danke erst einmal für die Antworten.

Um noch etwas klarer zu machen wo ich hin will:

Einfach beschrieben ist es ein gerastertes Drehpoti. Nur dass die 
Rasterung und die Anschläge elektronisch bestimmt werden können.

Mercedes hat das Teil schon gebaut und iDrive genannt. Dann angeblich 
aus Kostengründen wieder eingestellt.
Den Effekt fand ich sehr überzeugend und will es seitdem nachbauen und 
an diversen Stellen in eigenem Kram verwenden.

Das heisst auch, dass für das Forcefeedback sich der Motor nicht drehen 
soll, sondern genau im gegenteil dem manuellen Drehen entgegenwirken.
Deswegen vermute (!!) ich, dass ich mit normalen BLDC Treibern nicht 
glücklich werden würde, weil die ja für das Gegenteil entwickelt wurden 
(und ich vermute, dass die sensorless Variante die Drehung schon alleine 
für die Positionsbestimmung braucht.)

Softwaremäßig habe ich in dem Bereich schon gearbeitet (Forcefeedback 
für Automotive). In dem Fall ist's aber Hobby.

Erfahrungsgemäß liegt die Kunst das ganze gut hinzubekommen in einer 
ausgetüfftelten Ansteuerung. In dem Fall vermutlich auf Basis von 
Winkel/Kraft. Geschwindigkeit evtl. als Prediktor.

Gefühlsmäßig wäre ich jetzt am ehesten bei einer integrierten 3-fach 
Halbbrücke mit Strombegrenzung. Kenne das aber erstens nicht als Bauteil

Da meine Expertise eher auf der Software-Seite liegt bin ich umso 
glücklicher je geringer die Bauteilzahl wird und je weniger ich da 
falsch machen kann.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Florian B. schrieb:
> weil die ja für das Gegenteil entwickelt wurden

Das kommt ja nur auf die Ansteuerung an. Wenn du den Motor gegen die 
Bewegung des Sticks drehen lässt, ist das der gewünschte Effekt. Stärke 
und Winkel machst du in Software. Du benötigst aber in jedem Fall die 
Stellgrösse, die der Stick liefert, wenn der Anwender dran rumrührt.

von Florian B. (scheintod)


Lesenswert?

@Matthias: Das ist im Prinzip genau der Plan.

Nur gehe ich davon aus, dass die Treiber um das zu steuern die Position 
brauchen. Die weiss zwar ich über den AS5600 aber die Motortreiber ICs 
nicht.

Oder verstehe ich da etwas falsch?

von Florian B. (scheintod)


Lesenswert?

Die Auswertung der Drehwinkel funktioniert mitlerweile. Bei der 
Motorsteuerung bin ich immer noch auf der Suche.

Mitlerweile bin ich bei einem DRV8313 gelandet. Was haltet ihr von dem?

Schoene Gruesse,

Florian

Link: https://www.ti.com/lit/ds/symlink/drv8313.pdf?ts=1620817013563

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Florian B. schrieb:
> Oder verstehe ich da etwas falsch?

Ich denke schon. Denn den Drehwinkel hast du doch bereits aus der 
Auslenkung des Sticks. Das ist direkt auch die Position deines BLDC 
Motors. Wie ein Gimbal dreht sich der Motor halt nur ein paar dutzend 
Grad, nehme ich mal an. Wenn da Getriebe usw. dazwischen ist, sieht das 
anders aus, aber davon wissen wir hier nichts.
Auch der Gimbal ist störrisch und hält die Position, wenn die mechanisch 
(von aussen) geändert werden soll. Der einzige Unterschied zum Gimbal 
ist bei dir, das die Hartnäckigkeit, mit der der Motor Kontra gibt, 
variabel sein soll.

Ob man da einen Treiberchip oder 6 diskrete MOSFet benutzt, ist 
eigentlich wurscht. Ich sehe in Gimbals meist Einzelendstufen, aber die 
Jungs stehen unter Kostendruck und packen soviel wie möglich in die 
Software und so wenig wie möglich in die Hardware.

Florian B. schrieb:
> Link: https://www.ti.com/lit/ds/symlink/drv8313.pdf?ts=1620817013563

Irgendwie hat TI mal wieder ihre Website versaubeutelt. Da geht nischt.

: Bearbeitet durch User
von Florian B. (scheintod)


Lesenswert?

https://www.ti.com/lit/ds/symlink/drv8313.pdf vielleicht. Bei mir gehen 
beide.

Der hier ist jetzt auch noch in die nähere Wahl gekommen: L6230 - 
https://www.st.com/en/motor-drivers/l6230.html

Auch nicht günstiger aber mit dem schlagenden Vorteil eines 
Eval-Boardes. Und da ich vermutlich genau 2 Stück von den Teilen bauen 
werde (wenns überhaupt klappt) ist das nicht so der Faktor...

@Verstehen: Ja genau. Ich (bzw. meine MCU eben) weiss den Drehwinkel. 
Aber um den Motor selbst ansteuern zu können müsste dann doch auch der 
integrierte Controller-Chip den Winkel kennen?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Florian B. schrieb:
> Aber um den Motor selbst ansteuern zu können müsste dann doch auch der
> integrierte Controller-Chip den Winkel kennen?

Nö, wenn ihn die MCU weiss, dann steuert sie entsprechend den 
Controllerchip. Der muss davon nichts wissen, sondern nur dem Kommando 
der MCU entsprechend die Spulen bestromen. Deswegen geht ja bei den 
Gimbals z.B. alles auch ohne Treiberchip, sondern nur mit den 6 MOSFets.

Es gibt zwar Treiberchips, die selber Sensoren auswerten und nur noch 
mit einfachsten Signalen von der MCU angesteuert werden, aber das ist 
für deine Anwendung eher hinderlich. Du willst ja keinen Motor drehen, 
sondern eher das Gegenteil. Dreh- und Angelpunkt ist in jeden Fall die 
Software der MCU. Die muss es erlauben, den Motor fein zu positionieren 
mit variabler Kraft.
Mein Ansatz wäre eine Tabelle im Flash mit drei um 120° verschobenen 
Sinusspalten. Der Zeiger in diese Tabelle steuert dann, multipliziert 
mit der gewünschten Leistung, den Drehwinkel des Motors. Verschiebe ich 
den Zeiger, folgt der Motor wie ein Hündchen dem Knochen.

von Florian B. (scheintod)


Lesenswert?

@Mathias: "... wie ein Hündchen dem Knochen" sehr schön. Genau das :)

Dann meinen wir auch das selbe. Bei "... für das Gegenteil 
entwickelt..." meinte ich genau die Treiber die selbst die 
Positionsbestimmung versuchen vorzunehmen.

Danke für den Hinweis mit den Tabellen. Aus mange an Chip war ich noch 
bei "irgendwie bestimmen." Tabellen sind vermutlich das einfachste.

Bestellt sind jetzt zwei dev boards mit L6230PD und STSPIN830. Ich 
berichte weiter.

Herzlichen Dank.

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
Noch kein Account? Hier anmelden.