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.
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.
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.
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
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-180073https://www.pollin.de/p/hall-effekt-sensor-micronas-hal501s-c-180069
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.
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
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.
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.
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
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".
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...
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.