Die Antriebe des MikroKopters sind Bürstenlose Gleichstrommotoren; sog. Brushless-Motoren.
Sie sind von der Technik mit Synchron- oder Schrittmotoren zu vergleichen.
Die Vorteile dieser Motoren sind:
Hohe Leistungsdichte (Leistung zu Gewicht)
Verschleissfrei, weil keine Bürsten oder Getriebe
von verschiedenen Herstellern in unterschiedlichen Leistungsklassen erhältlich
Allerdings benötigt man eine Elektronik (Brushless-Treiber), die das synchrone Drehfeld der Motoren erzeugen und mit denen man die Drehzahl stellen oder regeln kann.
Zwar gibt es auf dem Markt bereits diverse BL-Regler aber leider kann keiner dieser Regler unsere speziellen Anforderungen erfüllen.
Wir benötigen einen Brushless-Regler, der einen neuen Sollwert sehr schnell (<0,5ms) annehmen und einstellen kann. Ausserdem sollte er über eine I2C-Bus Schnittstelle verfügen.
So haben wir einfach einen eigenen preisgünstigen selbstbau Brushless Regler entwickelt
Anleitung zum Nachbau, Schaltplan, Software und Stückliste im Downloadbereich...
Die unbestückte Leiterkarte ist in unserem Shop erhältlich
Wir betreiben diesen Regler z.B. zusammen mit ROBBE ROXXY 2815 oder ROBBE ROXXY 2824-34.
Technische Daten
Abmessungen 20 * 43mm
Bestückt mit sechs 30A MosFets
Dauerbelastung ca. 55W (bei schlechter Kühlung)
Spitzenbelastung ca. 120W (kurzzeitig)
Controller: ATMEGA8 von Atmel
Strommessung und -begrenzung auf der Gleichtromseite
zwei LEDs (z.B. Okay und Error)
Batteriespannungsmessung mit Unterspannungserkennung
Die Software ist komplett in C und mit Quellcode verfügbar
diverse Schnittstellen zur Sollwerteingabe
Ein Empfänger kann von den 5V versorgt werden (max. 50mA)
Als Schnittstellen sind möglich:
Asynchrone Serielle Schnittstelle (zum Ansteuern oder Debuggen)
I2C (zur schnellen Sollwertvorgabe)
PPM-Signal (als Standard-Eingang vom Empfänger)
Funktionsweise
Die Ansteuerung erfolgt dreiphasig in Impulsgruppen mit überlagerter PWM.
Die PWM bestimmt die Höhe der Phasenspannung (genauer: der Arithmetische Mittelwert der Spannung).
Die Phasenspannung am Motor (also die PWM) ist eine Stellgröße für die Drehzahl, weil:
Ein Motor erzeugt durch seine Drehung eine Gegenspannung (wie ein Generator), die der angelegten Spannung entgegenwirkt.
Es stellt sich eine Drehzahl ein, bei der die Differenz von angelegter Spannung und Gegenspannung einen
Strom erzeugt, der dem abgenommen Drehmoment entspricht.
Es sind immer 2 der sechs MOSFETSs in Betrieb, um die Motorwicklungen zu bestromen.
Der Zeitpunkt der Kommutierung (heißt: es muss auf die nächste Phase geschaltet werden), wird durch Spannungsmessung
(genauer: Vergleich) an der nicht-bestromten Phase bestimmt.
Dazu wird der im Atmega8 vorhandene Analogkomperator verwendet.
Der Strom wird über den Spannungsabfall an einer definierten Leiterbahn bestimmt. Das Verfahren ist für eine Überstromabschaltung
genau genug.
Mosfet Endstufen
Die Leistungsstufe besteht aus einem N-Kanal und einem P-Kanal MosFet pro Phase.
Der P-Kanal Mosfet benötigt einen vorgeschalteten Transistor, um das Gatepotential über eoinen Controllerportpin schalten zu können.
Rotorlageerkennung
Dieser Schaltungsteil wirkt unscheinbar, hat es aber in sich.
Hier wird aus den Spannungen der Motorphasen ein virtueller Sternpunkt gebildet (Mittel)
Der Controller vergleicht nun die gefilterten Spannungen der Phasen (NULL_x) mit dem Mittelpunkt und bestimmt anhand dessen den Zeitpunkt für die Kommutierung.
Unter "Kommutierung" versteht man das Umschalten der Leistungsendstufe auf die nächste Phase.
Strommessung
Auf der Leiterkarte befindet sich eine Masseleiterbahn, die absichtlich etwas verlängert wurde.
Anhand des Spannungsfalls über der Leiterbahn bestimmt der Controller den aufgenommenen Strom und drosselt den Regler etwas bei Überstrom.
Es wird nicht plötzlich abgeschaltet, sondern der Strom wird langsam gesenkt. Dadurch fällt der Flieger nicht vom Himmel, wenn ein Regler an die Strombegrenzung kommt.
Controller
Als Controller kommt ein AtMega8 von Atmel zum Einsatz.
Er besitzt ein für unsere Anwendung wichtiges Feature: Ein Analogcomperator mit Multiplexer
Der Atmel ist sehr preisgünstig (<2EUR), einfach zu programmieren, benötigt minimale Peripherie und ist für unsere Drehzahlbereiche schnell genug.
Debuggen
Man kann sich im laufenden Betrieb die wichtigsten Signale über die Serielle Schnittstelle ansehen:
Hier im Beispiel:
Grün (unten Eckig): Solldrehzahl
Blau (unten auf der Grünen): Istdrehzahl
Gelb: PWM
Rot: Strom
Hier habe ich das Verhalten von Soll- und Istdrehzahl verglichen und dabei Strom und PWM betrachtet.
Als Debugger-Software verwenden wir das Downloader und Debugger-Tool für unsere MicroSPS
Ggf. muss man sich in der Quelle der Software die Daten in nur in die DebugOut.Analog[x]-Variablen eintragen.
Schub über Strom-Kennlinie
eines Robbe-Roxxy-2824-34 Motors mit EPP1045-Propeller
Anhand der Kennlinie kann man leich abschätzen, wie viel Strom das Modell bei seinem Gewicht brauchen wird.
z.B. Wenn das Modell 800g wiegt, braucht es ca. 8A, weil vier Motoren sich das Gewicht teilen und jeder dann knapp 2A braucht.
Ein 2Ah Akku reicht für die 800g dann etwa: 2[Ah] * 60min / 8A = 15min
Motordaten simulieren
Mit diesem kleinen Programm kann man die Motordaten simulieren.
Die Daten werden auf der seriellen Schnittstelle im Format gesendet:
0xF5 aa bb cc dd
(aa = Motor 1, bb = Motor 2, usw.)
Üblicherweise mit einer Baudrate von 38400Baud.
Der Anschluss an den Motorregler ist einfach.
Als Schnittstelle eignet sich hervorragend unser serieller Konverter (SerCon) oder ein einfacher Transisror-Inverter:
Es werden dann lediglich 1 NPN-Transistor (z.B. BC337 o.ä.) und zwei 10k-Widerstände benötigt: