|
BL-CTRL V1.1
Info für den vorbestückten Motorregler gibt es hier: BL-Ctrl_V1_1
Brushless Ctrl (Allgemein)
Die Antriebe des MikroKopter sind Bürstenlose Gleichstrommotoren; sog. Brushless-Motoren. Sie sind von der Technik mit Synchron- oder Schrittmotoren zu vergleichen.
Eine ausführliche Anleitung zur Inbetriebnahme findet man unter BL-Ctrl Anleitung...
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. Außerdem sollte er über eine I2C-Bus Schnittstelle verfügen.
So haben wir einfach einen eigenen preisgünstigen Selbstbau Brushless Regler entwickelt
Die unbestückte Leiterkarte bzw. SMD-vorbestückte Platine ist in unserem Shop erhältlich.
Zur Programmierung wird ein ISP-Adapter benötigt - z.B. SerCon.
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 Gleichstromseite
- 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 einen Controllerportpin schalten zu können.
Die 10A-MOSFETs aus dem Shop benötigen selbst im geschlossenen Raum (27°C) nach einigen Minuten Volllast keine besondere Kühlung, eine vollflächige und saubere Verlötung vorausgesetzt:
links der NMOS, rechts der PMOS
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 (Shunt)
Auf der Leiterkarte befindet sich eine Masseleiterbahn (Shunt), 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.
Lösung wenn der Shunt zerstört wurde
Falls der Shunt durch Überbelastung etc. zerstört wurde (Lack abgehoben/Kupferbahn zerplatzt), können anstelle dessen ein Stück Kupferdraht eingesetzt werden. Der Widerstandswert zwischen C13 und C14 (im Bild oben rot) liegt bei gemessenen 0,010 Ohm. Zwischen C13 und der Massefläche der Transistoren (zusätzlich blasses rot) beträgt er ca. 0,015 Ohm.
Wichtig ist, dass der Shunt vollständig ersetzt wird! Mit
kann man die Länge des Drahtes berechnen, der als Ersatz dienen kann. Für Kupfer ergibt sich durch Umstellen (für 0,010 Ohm) ein konstanter Faktor, der mit dem quadrierten Drahtdurchmesser bzw. -radius (in mm) multipliziert wird. Als Ergebnis erhält man die Drahtlänge in mm:
bzw.
Beispiel: Kupferdraht mit 0,5mm Durchmesser und einer Drahtlänge von ca. 110mm ergibt den passenden Widerstandswert. Ebenfalls möglich ist Kupferlackdraht mit 0,3mm Duchmesser und 40mm Länge.
Der frühere Vorschlag mit 2x 0,22 Ohm Widerständen in Parallelschaltung kann zu Messfehlern mit der neuesten Brushless-Firmware führen, da der Widerstandswert zu hoch ist.
Wer es ganz genau wissen möchte, testet die Strombegrenzung. Dazu schaltet man ein Multimeter (Strombereich) in Reihe mit der + Leitung des Reglers. Die propellerlose Glocke sollte man mit einem Lappen oder Handschuh bremsen, damit Leistung aufgenommen wird. Nun gibt man Gas und bremst gleichzeitig den Motor ab. Dabei beobachtet man das Instrument. Bei ca. 10 A müsste die Begrenzung einsetzen, 11...12 A wären nicht schlimm. Erfolgt die Begrenzung schon früher, zum Beispiel bei 6...8 A, muss der Widerstand verringert werden.
WICHTIG: Wenn ein Shunt mit weniger Widerstand eingelötet wird (zu kurzer Draht oder zu grosser Querschnitt), setzt die Begrenzung zu spät ein. Das kann zur Zerstörung der Reglers oder des Motors führen.
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.
Motordaten simulieren
Mit diesem kleinen Programm kann man die Motordaten simulieren.
Ab Softwareversion 0.35 geht SimTxData.exe nicht mehr. Ab dieser Softwareversion direkt das Koptertool verwenden. Siehe auch in der FAQ
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):
Falls der Regler bereits mit einer 2x5pol Stiftleiste ausgerüstet wurde, muss lediglich der Jumper vom SerCon abgezogen werden. Danach kann direkt mit dem Tool 'SimTxData.EXE' der Regler getestet werden.
Alternativ kann auch ein einfacher Transistor-Inverter verwendet werden:
Es werden dann lediglich 1 NPN-Transistor (z.B. BC337 o.ä.) und zwei 10k-Widerstände benötigt:
Schub über Strom-Kennlinie
siehe unter ROXXY2824-34
LED Signale
Nach dem die Regler fertig gelötet sind und nach der Überprüfung, dass tatsächlich 5V zwischen z.B. "J8" und "gnd" anliegen leuchten die LEDs nicht. Erst nachdem sie das erste Mal programmiert worden sind wird auch den LEDs leben eingehaucht.
Beide LEDs leuchten nicht: Es liegt keine Spannung an den Reglern an. ...
Rot und grün leuchten: Empfänger nicht angeschlossen. Ist der Sender ausgeschaltet?
Grün leuchtet: Die Regler sind betriebsbereit.
Grün zeigt Impulsfolgen (Pumpen): Regler erhält Sollwert, aber kein Motor angeschlossen.
Während des Programmiervorgangs sind beide LEDs am jeweiligen Regler erloschen. Erst wenn der Programmiervorgang abgeschlossen ist initialisiert sich der Regler wieder. Beim programmieren eines Reglers leuchten dabei die Unbeteiligten mit beiden LEDs.
Ab der BL-Ctrl V0.35 ist ein Selbsttest implementiert.
Verschiedene Fehler werden beim Start überprüft. Falls ein Fehler vorliegt, blinkt die Rote LED nach dem Start.
- 1 mal: Phase A
- 2 mal: Phase B
- 3 mal: Phase C
Wenn die rote LED nicht blinkt, ist alles okay
Ausserdem Piepen die Motorwicklungen nach dem Einschalten beim Selbsttest.
Die Propeller drehen dabei evtl, allerdings ohne Kraft (Finger bleiben dran)
Nach dem Start kommt eine Tonfolge, bei der der Regler seine Endstufe testet.
Im Falle eines Fehlers, werden Buchstaben ausgegeben, die einen Hinweis auf den Fehlerhaften MosFet geben.
Um das zu sehen muss allerdings der Regler über ein Sercon angeschlossen werden. Die Fehlercodes sind:
1: Kurzschluss Phase A ( gegen B ) -> Regler nicht bereit
2: Kurzschluss Phase B ( gegen A ) -> Regler nicht bereit
3: Kurzschluss Phase C ( gegen B ) -> Regler nicht bereit
- 4: Mosfet NA- schaltet nicht immer ab
- 5: Mosfet NB- schaltet nicht immer ab
- 6: Mosfet NC- schaltet nicht immer ab
7: Kurzschluss Phase C ( gegen A ) -> Regler nicht bereit
- A: NA+ schaltet nicht ein
- B: NB+ schaltet nicht ein
- C: NC+ schaltet nicht ein
- a: NA- schaltet nicht ein
- b: NB- schaltet nicht ein
- c: NC- schaltet nicht ein
(Nähere Infos zu den einzelnen Fehlern finden sich auf der SeiteBL-Ctrl_Fehlerbeseitigung)
Empfohlene Motoren
Folgende Motoren wurden bisher erfolgreich eingesetzt:
- Die Reihenfolge hat keine Aussagekraft!
ROXXY2815: Für kleine (< 50cm Achsabstand) und leichte Mikrokopter geeignet. Das Abfluggewicht sollte nicht wesentlich über 500 Gramm liegen. Propeller: 8"x4 (z.B. x-Ufo Größe)
ROXXY2824-34: Für mittlere (~ 50cm Achsabstand) Mikrokopter geeignet. Das Abfluggewicht sollte nicht wesentlich über 800 Gramm liegen. Propeller: 10"x4,5 (z.B. EPP1045)
ROXXY2827-34: Für mittlere (~ 50cm Achsabstand) Mikrokopter geeignet. Das Abfluggewicht sollte nicht wesentlich über 1000 Gramm liegen. Propeller: 10"x4,5 (z.B. EPP1045)
- weiterhin wurden auch Motoren der Marken "AXI", "HACKER" und "HYPERION" erfolgreich eingesetzt. Einfach mal im Forum suchen.
Dateien
Alle Dateien, Dokumente und Programme findet man hier: Downloads
Alternativen zu den Stiftleisten beim Flashen
Viele stoeren sich am anlöten der Stiftleisten zum Flashen der Controller. Diese werden selten benötigt, sehen eingeschrumpft nicht toll aus und sind schwer. Eine Möglichkeit ist die in der SerCon Anleitung gezeigten Lösung mit aufgesägten Stecker von alten Diskettenlaufwerken o.ä.:
- Eine weitere Möglichkeit bietet sich wenn man die Kontakte der Stiftleiste nicht aufloetet sondern einfach ein wenig zusammenquetscht und auf die Platine schiebt.
- Damit ist es auch Möglichkeit die Regler zu flashen, kostet weniger als der oben genannte Stecker (afair) und man hat so eine Leiste meist in der Grabbelkiste schon liegen. Es birgt auch leider die Gefahr das mal eine Leitung kein Kontakt hat... ggf nachmessen.
- Abhilfe für die Kontaktlosigkeit schafft eine "leichte" Verzinnung der Pins - natürlich ohne die Stiftleiste mit einzulöten. Durch das weiche Lötzinn lässt sich die Stiftleiste zwar schwerer aufsetzen, jedoch ist der Kontakt besser.
Eine weitere Möglichkeit: Die drei Leitungen (Rx,Tx,Gnd) vorübergehend an die Regler anlöten, die Regler können dabei eingebaut bleiben. Der Sercon wird dann extern mit 5V gespeist (ansonsten muss man vier Leitungen am Regler anlöten). Vorher den Schrumpfschlauch der Regler an den Lötpunkten entfernen.
ACHTUNG: Dies ist nur was für fortgeschrittene Anwender!
Sonstiges
Da es sich bei der BL-CTRL ja doch um ein vollwertiges Microcontroller Board handelt lassen sich mit gegebenfalls etwas geänderter Bestückung auch diverse andere Dinge damit erledigen.
Weiterführende Links
Page in