Forum: Mikrocontroller und Digitale Elektronik Brushless-Außenläufer mit Sensorik ausstatten - Steuerelektronik?


von TomH (Gast)


Lesenswert?

Hallo zusammen,

heute komme ich leider wieder einmal mit einer unausgegorenen Idee und 
hätte ein paar Fragen dazu.

Ich würde gerne einen Brushless-Außenläufer aus dem Modellbaubereich mit 
Sensoren ausstatten, um ihn mit einem geeigneten "Fahrtregler" in einem 
Fahrzeugmodell feinfühlig ab Stillstand steuern zu können. Soweit die 
Grundidee.

Noch lieber würde ich ihn aber nicht nur mit drei Hall-Sensoren für die 
typische Block-Kommutierung ausstatten, sondern mit einer besser 
auflösenden Sensorik in Richtung feldorientierte Steuerung oder Betrieb 
als Servomotor gehen.

Ich habe mir schon einige Gedanken dazu gemacht, will aber den Startpost 
nicht zu lange werden lassen. Im Laufe der Diskussion werden wir 
weitersehen. Jetzt  die ersten Fragen:

1. Ich habe schonmal im Netz kleine Platinchen mit Hallsensoren gesehen, 
die man an solche Außenläufer dranfrickeln kann, aber ich finde die 
jetzt ums Verr... nicht mehr.
Hat jemand einen Tipp?
Der Motor wird allerdings relativ klein sein: 28mm Außendurchmesser, 
falls ich einen finde auch vielleicht 32mm oder sowas. 35mm sind leider 
schon zuviel.

2. Für die feinere Ansteuerung fehlen mir natürlich kilometerweit die 
Kenntnisse, sowas aufzubauen. Ich habe lediglich das grundsätzliche 
Verständnis, wie und warum sowas funktioniert. Ich habe eine Sache im 
Netz gefunden, basierend auf einem STM32: odriverobotics.com
Wäre auch Open Source, um es anzupassen, mir passt das Ding nämlich 
aufgrund seiner Eckdaten nicht: mind. 24V (bei mir 12V), 2 Motoren (ich 
will nur einen), Baugröße des Boards, für mich unnötige Ansteuerung 
eines Bremswiderstands.
Weiß jemand was passenderes?

Viele Grüße
Tom.

von Philipp G. (geiserp01)


Lesenswert?

Das machen die brushless Regler schon heute so, nur werten die das 
Feedback aus.

Was willst du damit erreichen?

von TomH (Gast)


Lesenswert?

WAS machen sie genau so?

Natürlich wird Feedback ausgewertet. Aber erst, wenn der Motor 
rundläuft. Ich will aber ab Stillstand kraftvoll und smooth losfahren.

Zeig mir einen Modellbau-Fahrtregler, der feldorientierte Steuerung 
macht. Da lach ich doch.

Für Fahrzeugmodelle gibt es eben die "sensored" Motoren und Fahrtregler, 
welche die Sensorsignale verarbeiten.
Dabei handelt es sich fast durchweg um Hall-Sensoren, welche die 
Magneten des Rotors abtasten. Nur wenige Motoren haben eine 
extra-Magnetscheibe, um von den Störungen des induzierten Magnetfelds 
wegzukommen - salopp gesagt, ich hoffe, man versteht was ich meine. Aber 
die "Auflösung" ist eben sehr gering. Entweder nur drei Schritte pro 
volle Umdrehung des elektrischen Feldes oder vielleicht etwas mehr, 
falls man aus den Signalen/Schaltpunkten der beiden jeweils nicht direkt 
im Magnetfluß befindlichen Sensoren noch was sinnvolles 
herausextrahieren kann.

Der Fahrtregler kann eigentlich nur ein schwaches, langsames Drehfeld 
(mit Blockkommutierung) erzeugen und mit den Sensoren nachschauen, ob er 
bei der nächsten 120°-Drehung des Feldes auch wirklich angekommen ist. 
Notfalls in einer kurzen Regelschleife die Stärke des Drehfeldes 
erhöhen. Ich habe schon gehört, es soll so "dumm" programmierte Regler 
geben, die bei diesem Verfahren im Fall eines echt blockierten Motors 
oder fehlerhafter Sensoren den Strom so weit erhöhen, daß irgendwas 
abraucht.
Während ein sensorloses Setup nach einer kurzen "blinden" Phase mit 
schwachem langsamen Drehfeld eben sehen muß, ob das Feedback auswertbar 
ist. Sowas habe ich auch: Da hat man dann im Zweifelsfall statt einem 
losfahrendem Modell nur zaghaftes, sich wiederholendes Gezirpe aus dem 
Motor.

Interessant ist auch, daß "sensored" Motoren ein verstellbares "Timing" 
der Sensoren haben, die Hallsensensoren lassen sich ein bißchen drehen 
und sprechen so je nach bevorzugter Drehrichtung früher oder später an. 
Das ist eine Einstellmöglichkeit, die ich an dieser Stelle überhaupt 
nicht haben will. Sie ist ja wirklich nur nach Trial und Error, Gefühl 
oder Esotherik einstellbar und vermutlich der Historie geschuldet - die 
Bürstenmotoren hatten auch einstellbares Timing der Bürsten/Kohlen.

So und ich möchte im Idealfall:
Mehr Auflösung durch einen richtigen Dreh-Encoder. Vielleicht reichen 
schon zwei Bit mehr. Es soll die wie auch immer geartete Steuerung 
einfach erkennen können, WIE weit der Rotor dem Drehfeld hinterherhängt 
und darauf reagieren. Eben in Richtung feldorientierte Regelung.
Ein richtiger industrieller Servomotor, der auf die Auflösung seines 
Drehgebers genau positionsgesteuert werden kann, muß es aber nicht 
werden.

von TomH (Gast)


Lesenswert?

Hehehe, selten ein Thread mit so wenig Interesse gestartet :-)

Ich probiers nochmal.

Also Frage: Weiß jemand eine gut dokumentierte "Plattform" aus 
Controller und Endstufen, mit der ich mich in die Thematik der 
sensorgesteuerten oder sogar feldorientierten Steuerung von BLDC-Motoren 
einarbeiten kann? Auf youtube gibt es einen Haufen Videos, in denen 
jemand mit einer Lochrasterplatine und einem Arduino Nano einen BLDC 
hablbwegs zum Laufen bringt, aber dokumentiert? Mit Sinus-Ansteuerung?

Leider habe ich in Sachen Microncontroller wenig Erfahrung, wenig Übung 
und wenig Werkzeuge. Ich kann nur einen Arduino ein bißchen was machen 
lassen. Aaaaber ich kann ja vielleicht dazulernen.

Als Zeichen dafür, daß ich ja auch selbst was tue und nichts vorgekaut 
haben möchte:

1. Habe ich mir die Doku zum "Odrive" mal angeschaut. Ich habe gelernt: 
Der dort verwendete ST32F405 hat Timer mit Quadratur-Eingängen, die auch 
prompt für die Encoder verwendet werden. Die Rotorposition steht also 
für die Firmware relativ schnell zugänglich in einem Register. Um solche 
Dinge mache ich mir nämlich Sorgen, sollte ich es mit einem einfacheren 
Controller versuchen (z.B. Arduino), der keine Quadratur-Eingänge hat. 
Der nötige Code zum Entwirren der Quadratur-Signale macht wahrscheinlich 
das Timing zunichte.

2. Habe ich die käuflichen Platinchen, mit denen BLDC-Außenläufer mit 
Hallsensoren gespickt werden können, noch immer nicht (wieder-)gefunden. 
Dafür viele Beispiele, wie die Hallsensoren irgendwie drangefrickelt 
werden, teilweise einfach außen an die Glocke, und dort müssen sie das 
durch den Rückschlußring "durchscheinende" Magnetfeld detektieren.
Mir gefällt das nicht. Ich möchte es gerne definierter. Wo ich genauer 
den Bereich festlegen und verschieben kann, in dem ein Sensor schaltet. 
Und nicht so ein diffuses, von der individuellen Schaltschwelle und 
vielleicht sogar vom Wicklungsstrom verfälschtes Abtasten des 
Magnetfeldes. Z.B. mit Reflex- oder Gabellichtschranken. Hat dazu jemand 
Ideen oder Beispiele?

Viele Grüße
Tom.

von Klaus (Gast)


Lesenswert?

TomH schrieb:
> Entweder nur drei Schritte pro
> volle Umdrehung des elektrischen Feldes oder vielleicht etwas mehr,
> falls man aus den Signalen/Schaltpunkten der beiden jeweils nicht direkt
> im Magnetfluß befindlichen Sensoren noch was sinnvolles
> herausextrahieren kann.

Da solltest du noch mal drüber nachdenken. Drei digitale Sensoren 
ergeben 8 mögliche Zustände. Alle 0, d.h. alle sind nicht in einem 
Magnetfeld oder alle 1, alle sind voll im Magnetfeld kommt bei einer 
vernünftigen Anordnung der Sensoren nicht vor. Bleiben also 6 Zustände 
pro elektrischen Drehung. Anders ausgedrückt bilden die 3 Sensoren einen 
Winkelsensor mit einer Auflösung von 60° bzw +-30° pro elektrischer 
Umdrehung.

Wenn du dir mal die Signale der Hallsensoren beim händischen Drehen 
anschaust, siehst du das beschriebene ganz deutlich. Bei analogen 
Hallsensore, wie man sie gerne bei Motoren aus CD-Laufwerken findet, 
kann man aus dem Verhältniss der 3 Signale eine höhere Auflösung 
errechnen. Das ist ebenfalls leich mit einem Scope nachzuvollziehen. Die 
Signale sehen wie Drehstrom aus.

Bevor du jetzt über die Sensoren bei verfügbaren Motoren lästerst, bau 
erstmal eine Steuerung für diese. Zum Üben reicht ja ein 
ausgeschlachteter Motor aus einem CD Laufwerk. Auch in Laserdruckern 
kann man häufig sogar mehrere Motore finden. Wenn du das optimal 
hinbekommen hast, und dir die Steuerung dann immer noch nicht fein genug 
ist, kannst du immer noch über bessere Sensoren nachdenken. Wer gleich 
mit der Kür anfängt und die Pflicht auslässt, wird am Ende nichts 
erreichen.

MfG Klaus

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


Lesenswert?

Eine guter Anfang ist immer noch Application Note AVR447 von (nun) 
Microchip. Darin wird die Sinus- und Blockansteuerung eines 
sensorbehafteten BLDC beschrieben, komplett mit leicht portierbarer 
Software (ich selber lasse sie auch auf STM32F100 und ATXMega laufen).

Als Hallsensoren sind z.B. die von Videorecordern, in deinem Fall 
vorzugsweise von Video/Hi8 Camcordern geeignet, wenn man sie auf dem 
Schrott findet. Man kann auch die ganze Trommel mit Motor benutzen.
Man kann aber auch mit einer passenden Anordnung einfache Hallsensoren 
wie die von Micronas am Rotor positionieren:
https://www.pollin.de/p/hall-effekt-sensor-micronas-hal510ua-c-1-b-1-00-10-stueck-180073
https://www.pollin.de/p/hall-effekt-sensor-micronas-hal501s-c-180069

von FlorenzW (Gast)


Lesenswert?

War das die Platine?

http://e0designs.com/products/hall-effect-sensor-board/

Dieses Projekt steht bei mir auch noch auf der Liste :-)

von MaWin (Gast)


Lesenswert?

TomH schrieb:
> Weiß jemand was passenderes

Lichtschranken.

Die können einerseits gut die grobe Lage, und andererseits gut 
feinauflösend die Aussenfläche deines Aussenläufers abtasten, du musst 
bloss ein mit Streifen bedrucktes Papier aufkleben, der Strom für die 
beleuchtende LED sollte irrelevant sein.

Die Software ist Kinderkram, da es nicht um Back-EMF geht. Du könntest 
den 3 Halbbrücken eine Sinuskommutierung nach Don Lancasters Magic 
Sinewaves verpassen, denn Blockkommutierung ist für nahe am Stillstand 
nicht so passend.

Sensorlösung:
A) nur 1 Spur, z.B. alle 5 Grad ein Strich, bei 0 Grad einer fehlend 
(Prinzip Kurbelwellensensor vom Auto). Man muss 1 man ptobierrn bevor 
man weiss wie die Fotorlage ist.
B) 3 Spuren, jeweils schwarz und weiss in 1 Drittel und feingestrichelt 
im dritten Drittel, versetzt. Man weiss sofort wierum der Motor für 
Blockkommutierung steht, und hat man 1 pol gedreht, kann man 
Sinuskommutieten.
C) 2 Spuren, die eine mit 17, die andere mit 18 Strichen, aus dem 
relativen Versatz den Rotorwinkel berechnen.
D) Analogerfassung mit Grauwerten.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Wenn du immer auf ODrive referenzierst, warum hast du dir das Projekt 
noch nicht genauer angesehen? Dann hättest du gemerkt das ODrive nur ein 
Fork des VESC ist. Und der kann alles was du willst. Und bei 12V raucht 
der auch nicht ab :).

https://vesc-project.com

von TomH (Gast)


Lesenswert?

Wow, einige fundierte Antworten. Danke. Bin auch nicht beleidigt, wenn 
mich einer an die Pflicht erinnerst.

FlorenzW schrieb:
> War das die Platine?
> http://e0designs.com/products/hall-effect-sensor-board/
Jawoll! An den optischen Eindruck der Website kann ich mich noch 
erinnern, nur gefunden hab ich sie nicht mehr. Danke.

"Lästern" über existierende sensored BLDC: Ich finds halt komisch, wenn 
man die Schaltpunkte mechanisch einstellen muß und entweder mit externer 
Meßtechnik (Stromverbrauch, erreichbare Drehgeschwindigkeit) den Erfolg 
des Einstellens prüfen muß oder an den Erfolg glauben muß: "Ich da was 
gedreht, jetzt geht er viel besser."
Wieviel angenehmer ist da bei Odrive zu lesen: Motor muß frei von 
mechanischer Vorspannung sein (keine Federbelastung oder 
Gewichtsbelastung des Abtriebs), mit leichter Reibung und Massenträgheit 
kommt die Referenzfahrt hingegen klar. Ja, so stellt sich klein 
Tömchen das idealerweise vor.

Natürlich muß ich mich da erst hinarbeiten. Vielleicht schaffe ich es 
sogar nie. Aber jetzt habe ich Lesestoff.

v-escproject.com schaue ich mir natürlich auch an.

von Ralf (Gast)


Lesenswert?

TomH schrieb:
> Natürlich wird Feedback ausgewertet. Aber erst, wenn der Motor
> rundläuft. Ich will aber ab Stillstand kraftvoll und smooth losfahren.

Wenn man das mit einem PKW vergleichen würde : Vollgas geben und ganz 
ganz ganz langsam die Kupplung kommen lassen. Verstehst du das unter 
Kraftvoll?

Ansonsten mach ein Getriebe vor den Motor.

von Klaus (Gast)


Lesenswert?

TomH schrieb:
> "Lästern" über existierende sensored BLDC: Ich finds halt komisch, wenn
> man die Schaltpunkte mechanisch einstellen muß und entweder mit externer
> Meßtechnik (Stromverbrauch, erreichbare Drehgeschwindigkeit) den Erfolg
> des Einstellens prüfen muß oder an den Erfolg glauben muß: "Ich da was
> gedreht, jetzt geht er viel besser."
> Wieviel angenehmer ist da bei Odrive zu lesen: Motor muß frei von
> mechanischer Vorspannung sein (keine Federbelastung oder
> Gewichtsbelastung des Abtriebs), mit leichter Reibung und Massenträgheit
> kommt die Referenzfahrt hingegen klar. Ja, so stellt sich klein
> Tömchen das idealerweise vor.

Ist wie bei einem Bürstenmotor. Da macht man beim Prototypen die 
Bürstenplatte auch drehbar und stellt sie auf maximales Drehmoment ein. 
Das erkennt man an maximaler Drehzahl bei gegebener Last. Die ist wenn 
man nichts anderes hat die Lagerreibung, also die Lehrlaufdrehzahl Wenn 
man den richtigen Winkel hat, baut man alle weiteren genau so. Na gut, 
inzwischen hat man als Motorhersteller so viel Erfahrungen daß man weiß, 
wie man es machen muß und es passt auch beim Prototypen schon.

Und so ist auch beim Brushless, wenn man Motor und das Equivalent zur 
Bürstenplatte, die Sensoren und den Controler, von einem Hersteller 
bezieht, passt das schon. Wenn ich eine eigene Bürstenplatte an einen 
Motor anflicke, muß ich irgendwie den richtigen Winkel feststellen, 
entweder durch probieren oder halt automatisch. Hab ich das einmal 
gemacht und Motor und Sensoren werden reproduzierbar produziert, kann 
ich den Winkel auch fest lassen. So muß sich "klein Tömchen" das 
vorstellen.

MfG Klaus

von TomH (Gast)


Lesenswert?

Zunächst noch einige Worte zum Thema, warum brauche ich einen 
kraftvollen Anlauf ab Drehzahl null? Warum kein Getriebe?

Ich habe momentan zwei konkrete Anwendungsfälle, die ich gerne 
beschreibe, nur wollte ich den Anfangspost nicht ellenlang werden 
lassen.

1. Ferngesteuerter Modell-Lkw im Maßstab 1:8.
Dieser hat momentan noch kein Schaltgetriebe. Die feste Untersetzung ist 
in etwa so, daß er bei Vollgas nicht ganz Schrittgeschwindigkeit 
erreicht. Der Motor ist ein sensorgesteuerter 17,5 Turns Innenläufer mit 
zugehörigem Regler*, vor einigen Jahren bei Conrad als "Crawler Combo" 
gekauft. Akku ein 7,2V 8,5Ah NiMH.
Mit dieser Untersetzung kann er auch wunderbar ganz langsam fahren und 
fast zentimeterweise eine Stufe hochkriechen. Aber beim Betrieb mit 
einer Schneefräse (besonders lange langsam fahren - Kälte - Nässe) ist 
es mir jetzt mehrere Male passiert, daß auf einmal extrem hoher Strom 
floß und mir die Anschlußkabel von den Akku-Lötfahnen abgelötet hat! Ok, 
jetzt ist eine 35A-Kfz-Sicherung drin, mal schaun, was dann passiert. 
Über die Ursache kann ich nur mutmaßen. Entweder der "dumme" Regler* 
erhöht einfach stur den PWM-Füllgrad, weil er den Motor nicht 
weiterdrehen kann, oder steuert gar irrtümlich irgendwelche Halbbrücken 
auf Kurzschluß. Bis jetzt ist außer dem "selbsttrennenden" Akkukabel 
nichts zu Schaden gekommen. Aber ich möchte die Situation gerne 
verbessern.

2. Elektrifizierter Tret-Traktor mit ca. 600W Außenläufer.
Dieser hat sogar zwei mechanisch zu schaltende Gänge. Der Außenläufer 
ist aber naturgemäß sensorlos und auch nur mit einem sehr einfachen 
Flug-BL-Regler* angesteuert. Drehrichtungsumkehr macht ein 
Hochlast-Relais, das zwei Motorphasen vertauscht.
Dieses Gefährt hat im oberen Gang sehr deutliche Anfahrschwierigkeiten 
und selbst im unteren Gang gibt es Situationen, wo er nur zirpend 
ruckelt, statt ordentlich loszufahren.
Hier möchte ich die Situation wenigstens versuchsweise verbessern, indem 
ich Hallsensoren am Motor anbringe und einen sensorfähigen Regler* 
verwende. Allerdings nicht um den Preis, daß die 12V 24Ah aus einem 
Bleiakku zusammen mit einem fehlfunktionierenden/überforderten Regler* 
ein Feuerwerk veranstalten.

Das Fernziel wäre in beiden Fällen eine Motorsteuerung, welche 
Lastwinkel und Strom im Blick hat, durch bessere Lastwinkel mehr 
Drehmoment erreicht und übergroße Ströme entweder nicht oder nur 
kurzzeitig zuläßt.

Regler*: Mir ist klar, daß es sich um "Steller" handelt. Ich verwende 
aber im Sinne eines flüssigen Textes trotzdem den im Modellbau üblichen 
deutschen Begriff "Regler".

von TomH (Gast)


Lesenswert?

Sensor-Timing:

Natürlich "muß" man da nichts einstellen. Natürlich habe ich den 
sensorbestückten Innenläufer genau auf der Werkseinstellung gelassen.

Gut möglich, daß die Einstellmöglichkeit auch nur für die 
Modellbau-Renn-Experten und Möchtegerns eingebaut wird, als Esotherik 
und Plazebo. Nach dem Motto, ich kann da dran rumdrehen, dann wirds 
bestimmt noch toller.

Aber im Sinne des Fernziels möchte ich halt auf jeden Fall nicht an 
dieser Stelle herumdrehen müssen, wenn ich mir selbst etwas baue. Von 
Serie oder wiederholgenauer Reproduzierbarkeit kann übrigens nicht die 
Rede sein, es geht mir ja nur um meine beiden Einzelfälle...

von Florian W. (florenzw)


Lesenswert?

Da sieht man recht schön, wie die Sensoren angeordnet sind bei einem 
sensored outrunner:

https://hackaday.com/2018/04/19/completely-scratch-built-electronic-speed-controller/

Mich interessiert die Sache, weil sich, in Verbindung mit einem hoch 
auflösendem Drehencoder, leistungsfähige Servos bauen lassen müssten.
Dann hätte man für FDM-3D-Drucker und günstige Fräsen ein closed-loop 
System zur Verfügung.

: Bearbeitet durch User
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.