Das Hauptziel dieser Masterarbeit war:
- Die Entwicklung eines neuronalen Netzes auf einer PRU. Dieses Netz schätzt die Position und Drehzahl des Rotors mit Hilfe von Strom- und Spannungsdaten in einer FOC
- Die Analyse der Leistung des neuronalen Netzes. Dabei wurden die Genauigkeit und die Reaktionszeit mit einem Hardware-Encoder verglichen
FOC
Feldorientierte Motorsteuerung
- Verwandelt 3-Phasen-Strom in ein rotierendes System
- Steuert das Drehmoment und wandelt es zurück in einen 3-Phasen-Ausgang
- Das Ergebnis ist ein sehr hohes Drehmoment und eine hohe Effizienz des Motors
- Wichtig: Eine genaue Position des Rotors ist notwendig!
PRU – Kern
Programmierbare Echtzeit-Einheit
- Ein 32-Bit-RISC-Mikrocontroller mit einer Zykluszeit von 3 Nanosekunden.
- Unterstützt „Single-cycle broadside load and store.“
- Sehr geringe Wartezeit für Unterbrechungen (zwei Zyklen Interrupt-Latenz).
- Hat einen 1024-Bit breiten Datenbus für die Broadside-Schnittstelle
- Ein komplettes Subsystem mit flexiblem DMA (Direktspeicherzugriff)
- Besitzt eine „Single-cycle core extension“ für 32-Bit-MAC-Operationen
Testaufbau und Datenerfassung
- Ein Nanotec DB42S03 (ein 3-Phasen BLDC-Motor mit 4 Polpaaren) wurde verwendet
- Ein BP-AM2BLDCSERVO Booster-Pack diente zur Motorsteuerung
- Ein Inkrementalgeber mit 4000 Teilstrichen wurde zur Messung der Rotorposition genutzt
- Der R5F-Kern des AM243 LP speichert die Werte $V_\alpha, V_\beta, I_\alpha, I_\beta$ im MSRAM
- Insgesamt wurden 32.768 Einträge pro Variable im float32_t Format (4 Bytes) gespeichert

Netzwerk zur Positionsschätzung
- Es wurde ein voll vernetztes „Feed-forward“-Netzwerk mit 32 Eingängen, 24 versteckten Neuronen und 2 Ausgängen trainiert.
- 70 % der Daten wurden für das Training und die restlichen 30 % zum Testen des Modells verwendet.
- ReLU wurde als Aktivierungsfunktion für die versteckten Schichten genutzt.
- Sinus und Kosinus des Rotorwinkels werden in der letzten Schicht vorhergesagt (Aktivierungsfunktion: Tanh).
- Ein vorzeitiger Abbruch (Early Stopping) wurde implementiert, um das Training zu stoppen, wenn sich der MSE-Fehler nicht mehr verbessert.
- Die Gewichte und Bias-Werte des trainierten Modells wurden in das Fixed-Point Q24-Format umgewandelt:
- Bit (MSB): Vorzeichen (Sign)
- 7 Bits: Ganzzahl (Integer).
- Die letzten 24 Bits: Dezimalteil.
Training results
- Das finale Modell erreichte einen mittleren quadratischen Fehler (MSE) von 0,00013, was eine sehr hohe Genauigkeit bedeutet.
- Das gesamte Training dauerte 52 Minuten über 2000 Epochen



Implementierung auf der PRU
- Gewichte und Bias-Werte werden in das Broadside RAM (BS RAM) geladen
- Das Industrial Ethernet Peripheral (IEP) CMP4 wird verwendet, um den Task-Manager alle 62,5 $\mu$s zu starten, um die Motorsteuerung zu synchronisieren, die ebenfalls durch dasselbe IEP ausgelöst wird
- Bei jedem Funktionsaufruf werden die Eingangsdaten in die PRU-Register geladen
- Jeder Eingang wird dann zusammen mit seinen Gewichten in die MAC-Register geladen
- Für ein einzelnes Neuron mit 32 Eingängen benötigt die PRU 435 Zyklen
- Die Tanh-Lookup-Tabelle (LUT) für die letzte Schicht benötigt 25 Zyklen
- Insgesamt benötigt die PRU 11.462 Zyklen (34,4 $\mu$s)
Ergebnisse (Results)
- Vom Leerlauf im „Open Loop“ bis zum „Closed Loop“ beträgt der maximale Fehler 4,51 Grad (elektrisch)
- Der Motor startet im „Open Loop“ bei 500 U/min und schaltet nach 625 Millisekunden in den „Closed Loop“
- Während des Experiments läuft der Motor stabil bei 500 U/min

Einschränkungen (Limitations)
- Die Datenerfassung ist ein zeitaufwendiger Prozess.
- Fehler bei der Winkelschätzung können zu Ungenauigkeiten bei der Drehzahlschätzung führen, da die Drehzahl als Ableitung des Winkels berechnet wird.
- Für unterschiedliche Lasten (Belastungen) wird ein jeweils anderes neuronales Netz benötigt.
Fazit (Conclusion)
- Entwicklung und Training verschiedener neuronaler Netzarchitekturen mit Python (PyTorch), speziell zur Schätzung von Motordrehzahl und Rotorposition.
- Erreichen einer Genauigkeit von über 95 % sowohl im „Open-Loop“ als auch im „Closed-Loop“ für die Schätzung von Winkel und Drehzahl.
- Erfolgreiche Implementierung der trainierten Modelle auf dem 32-Bit RISC-Kern (PRU) mittels Assembly-Sprache.
- Optimierung der Ausführung des neuronalen Netzes durch Nutzung von schnellen Broadside-Speichern und Datenbeschleunigern auf dem PRU-Kern.
- Einstellung von PI- und PID-Reglern für die präzise Steuerung von Motorströmen und Drehzahlen in einem 3-Phasen-BLDC-Motorsystem.