Numalfix / Motor Controller

Numalfix ist die Motorsteuerung für den Gen2 Roboter.

Numalfix ist eine Platine zum Ansteuern von BLDC Motoren. Speziell ist Numalfix designt, um die ECX Flat 32L Motoren von Maxon anzusteuern, kann aber für beliebige Motoren verwendet werden, solange diese eine Form des Positionsfeedbacks haben.

Grundprinzip

Grundprinzip

BLDC-Motor

Ein Brush-Less Direct Current (BLDC) Motor ist ein Elektrischer Motor, welcher synchron betrieben wird. Das bedeutet, dass die Geschwindigkeit des Motors der Frequenz des angelegten Stromes folgt.

Aufbau:

Ein BLDC Motor besteht aus zwei Teilen: dem Stator und dem Rotor. Der Stator bezeichnet dabei den sich nicht drehenden Teil des Motors. Dieser beherbergt die Spulen, welche zur Ansteuerung benutzt werden. Der Rotor bezeichnet den sich drehenden Teil des Motors und beherbergt Permanentmagneten, welche von den Spulen angezogen und abgestoßen werden.

Das obige Bild zeigt ein Simples Model eines BLDC Motors. Zu sehen ist der Rotor, welcher aus zwei Magneten besteht1 und der Stator, welcher die Spulen U, V und W beinhaltet. Ein Motor kann auch mehr Spulen und Magneten haben. Die Anzahl der Spulen ist dabei allerdings immer ein vielfaches von 3 und die Anzahl der Magneten ein vielfaches von 2. Zu beachten ist, dass die Spulen in der Mitte Sternförmig verbunden sind. Alternativ können die Spulen auch in einer Delta Konfiguration verbunden werden. Elektrisch macht das keinen Unterschied. Eine Rotation des Motors wird durch einen durch die Spulen fließenden Strom erzeugt.
Der gezeigte Rotor hat einen Südpol und einen Nordpol. Zusammen werden diese als ein Polpaar bezeichnet. Hat ein Motor mehr pole, wird das über die Anzahl der Polpaare spezifiziert. Ein Motor mit sechs Polpaaren hat also sechs Südpole und sechs Nordpole im Rotor.

1Technisch gesehen könnte es auch ein Ringmagnet sein. Wichtig ist jedoch nur das Magnetfeld in Richtung der Spulen. In der Realität werden daher meist zwei oder mehr Magneten benutzt, um die Feldstärke in Richtung der Spulen zu maximieren und außerhalb des Motors zu minimieren.

Mechanischer vs Elektrischer Winkel

Der mechanische Winkel beschreibt den Winkel, welchen der Rotor relativ zum Stator hat. Der elektrische Winkel hingegen, beschreibt wie die Magnetfelder des Rotors relativ zu den Spulen stehen. Bei dem oben gezeigten Bild ist der elektrische Winkel gleich dem mechanischen Winkel, da es in einer mechanischen Umdrehung keine Wiederholung der Magnetfelder gibt. Generell gilt, dass die Anzahl der Polpaare gleich der Anzahl der elektrischen Umdrehungen pro mechanischer Umdrehung ist. Ein Motor mit sechs Polpaaren braucht also auch sechs elektrische Umdrehungen, um eine mechanische Umdrehung zu absolvieren.

Grundprinzip

Encoder

Encoder, auch Incremental Encoder oder Quadrature Encoder, sind relative Positionssensoren. Es muss ein absoluter Sensor verwendet werden, um die Initiale Position des Encoders zu bestimmen. Bei Motoren können dafür in den Motor integrierte Hall-Sensoren verwendet werden.

Der Encoder gibt erzeugt zwei Signale (A und B), die zur Bestimmung der Drehrichtung und position verwendet werden können. Manche Encoder haben ein zusätzliches Index signal, welches an einer bestimmten, absoluten Position des Sensors ausgelöst wird.

Die Signale A und B sehen wie folgt aus:

Die Signale A und B geben also versetzte Pulse. Die Drehrichtung kann dabei durch die Reihenfolge der Pulse ermittelt werden. Kommt der A-Puls vor dem B-Puls, dreht der Encoder in Positive Richtung. Kommt der B-Puls jedoch vor dem A-Puls, dreht der Encoder in entgegensetzte Richtung.

Über die Anzahl der Pulse lässt sich die Position des Encoders relativ zum Startpunkt bestimmen. Dabei können entweder die Pulse, oder die Signaländerungen, auch Counts genannt, gezählt werden. Das zählen der Counts erhöht dabei die Auflösung, da es pro Puls vier Counts gibt. Die Pulse oder Counts können mit Hilfe der Pulse Per Revolution (PPR) beziehungsweise Counts Per Revolution (CPR) in einen Winkel umgewandelt werden. Mindestens einer der werte PPR und CPR ist im Datenblatt des Encoders angegeben und kann in den jeweils anderen Wert umgewandelt werden.
Der Eingebaute Encoder der Maxon ECX Flat 32L Motoren hat beispielsweise eine PPR von 2048. Das bedeutet also, dass die Signale A und B jeweils 2048 Pulse pro Umdrehung des Motors generieren. Für die Umwandlung in CPR müssen die PPR mit Vier multipliziert werden. In unserem Beispiel sind das also 2048 * 4 = 8192 CPR. Wenn die Counts benutzt werden ergibt sich also eine Auflösung von 360° / 8192 CPR = 0.044° / Count.

Um Fehlerkennungen zu vermeiden, können die Signale A und B auch Differenziell übertragen werden.

Grundprinzip

Hall-Sensor

Manche BLDC Motoren kommen mit eingebauten Hall-Sensoren. Diese messen das Magnetfeld der Magneten im Rotor des Motors. Dadurch bilden sie einen absoluten Positionssensor mit relativ geringer Auflösung.

Es werden drei Signale (U, V und W) verwendet:

Durch die Kombination der Signale U, V und W lässt sich also bestimmen, in welchem 60° Sektor sich der Rotor befindet. Zu beachten ist, dass es sich hier nicht um den Mechanischen, sondern den Elektrischen Winkel handelt. Mit Hilfe der Zustandswechsel kann der Winkel genauer bestimmt werden, als es durch die reine Kombination der Signale der Fall wäre. Damit kann beispielsweise ein Encoder initialisiert werden.

Eval 0.1

Das erste Test Board

Inbetriebnahme

Sinvolle Telemetrie

telemetry rotor-current 127
telemetry quadrature-direct-voltage 127
telemetry electrical-velocity 127
telemetry electrical-angle 127

Für die Inbetriebnahme folgende schritte durchlaufen:

Test ohne Spannung

Test mit 4,5V Stromversorgung

Dieser Test kann ohne Motor durchgeführt werden. Falls Fehler auftreten sind diese einfacher zu fixen, wenn der Motor noch nicht angelötet ist.

Mögliche Fehler

Kurzschluss an einem Strommessverstärker: die strommessung dieser Phase ist bei ±8.25 A

Nicht richtig festgelöteter filterverstärker: die Strommessung dieser Phase ist bei ±3.2 A

Anbau an Getriebe

Zuerst müssen die Kabel der Motoren auf die richtige Länge geschnitten werden.
Kabellängen.pdf

Anschließend müssen die Kabel abisoliert werden. Der Abisolierte teil sollte bei allen Kabeln etwa 3mm lang sein.
Die Kabel werden nun am Ende verzinnt. Die Isolierung bei den Dicken Kabeln ist sehr Hitzeempfindlich und schrumpft daher etwas zurück, wodurch der abisolierte Bereich länger wird.

Auf der Unterseite von Numalfix wird ein Wärmeleitpad (3mm Dicke) über den MOSFETs angebracht. Dieses sollte nicht in den Motor ragen.
Nun wird Numalfix mit M2x6 Schrauben an dem Getriebe befestigt.
Beim Wärmeleitpad muss das PCB etwas ans getriebe gedrückt werden, da das zu dicke Wärmeleitpad etwas komprimiert werden muss.

M2 Schrauben sind sehr Filigran und können möglicherweise schnell kaputt gehen. Nutze also nur wenig Kraft beim Anziehen und verwende Loctite um die Schrauben zu sichern.

Die Kabel werden wie in den Bildern verlötet. Bei den Sensoren sollten die unteren Pads zuerst verlötet werden, da diese sonst von den darüber liegenden Kabeln verdeckt werden. Die Farbe, die an an Pad muss, steht auf der Platine und ist die Selbe reihenfolge wie am Motor.
Für die Kabell vom Hall-Sensor und Encoder ist eine kleine Lötspitze zu empfehlen, während für die Dickeren Spulenkabel eine große Lötspitze empfehlenswert ist.

Die Führung der Kabel ist sehr relevant, um ein Schleifen der Kabel am Motor zu verhindern.

IMG_20260519_165937.webp

IMG_20260519_170019.webpIMG_20260519_170000.webp

Test mit 22V

Für diesen Test ist ein Motor erforderlich. Alle Schritte werden automatisiert von der Firmware durchlaufen

Mögliche Fehler

Eine Halbbrücke nicht richtig gelötet: Stromtest nicht erfolgreich

Stromverstärker oder Filterverstärker nicht richtig gelötet: Stromtest nicht erfolgreich

Winkeltest schlägt fehle: vermutlich rad blockiert