<> . {i} Diese Seite als '''PDF-Dokument'''? Einfach auf das Symbol rechts klicken und etwas warten... siehe auch: FlightCtrlAnleitung <> {{attachment:BL-Ctrl.jpg}} Selbstbauregler für Brushless-Motoren BL_CTRL_V1.0/V1.1 Schaltplan, Bestückung und Inbetriebnahme {i} Zusatz-Info für den BL-Ctrl V1.1/2 gibt es hier: [[BL-Ctrl_V1_1|BL-Ctrl_V1_1]] und [[BL-Ctrl_V1.2|BL-Ctrl_V1.2]] = Anleitung BL-Ctrl = == BL-Ctrl == Die Platine BL_Ctrl ist ein sensorloser Treiber für bürstenlose Gleichstrom-Motoren. Sie wurde speziell für den Einsatz in Quadrokoptern entwickelt, wo schnelle Sollwertänderungen notwendig sind. Sie kann jedoch auch in anderen Applikation problemlos Verwendung finden. === Features === * Abmessungen 20 * 43mm * Bestückt mit sechs 30A [[http://de.wikipedia.org/wiki/Metal_Oxide_Semiconductor_Field_Effect_Transistor|MosFets]] * Dauerbelastung ca. 5A (bei schlechter Kühlung) (mit alternativen !MosFets höhere Leistung möglich) * Controller: ATMEGA8 von Atmel * Strommessung und -begrenzung auf der Gleichstromseite * zwei LEDs (z.B. Okay und Error) * Batteriespannungsmessung mit Unterspannungserkennung * Die Software liegt komplett in C vor (Lizenzvereinbarung beachten!) * 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) {{attachment:BL-Ctrl_11_unbest.jpg}} ''(Bild: BL-Ctrl V1.1)'' === 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 durch seine Drehung eine Gegenspannung (wie ein Generator) erzeugt, die der angelegten Spannung entgegenwirkt. Es stellt sich eine Drehzahl ein, bei der die Differenz von angelegter Spannung und Gegenspannung einen Strom fließen lässt, der dem abgenommenen Drehmoment entspricht. Es sind immer 2 der sechs MOSFETs 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 Analogkomparator verwendet. Der Strom wird über den Spannungsabfall an einer definierten Leiterbahn bestimmt. Das Verfahren ist für eine Überstromabschaltung genau genug. === Allgemeine Sicherheitshinweise === Wir garantieren nicht für fehlerfreies Verhalten des Reglers. Sobald der Regler mit Spannung versorgt ist, kann der am Regler angeschlossene Motor z.B. durch Fehler o.ä. jederzeit unerwartet anlaufen oder sich erhitzen. Trotz sorgfältiger Erstellung und Überprüfung übernehmen wir keinerlei Garantie oder Haftung (direkter oder indirekter Art) für die Fehlerfreiheit der Software, der Hardware oder von Informationen. Sie benutzen den Regler auf eigene Gefahr (dies gilt auch für dazugehörige PC-Programme). Weiterhin übernehmen wir keinerlei Haftung für Folgeschäden an Sachwerten oder Personen, die durch Anwendung des Reglers entstehen. Es liegt in Ihrer Verantwortung, einen vollständigen Systemtest durchzuführen. Die Spannungsversorgung darf nicht verpolt werden. == Inbetriebnahme == <> === Schritt 1: Anschluss und Kontrolle der Betriebsspannung === Um sicher zu gehen, dass man keine ungewollten Lötbrücken beim Bestücken in die Versorgung eingebaut hat, prüft man mit einem Durchgangsprüfer die 5V gegen GND (es gibt Lötpads, die mit "5V" und "GND" beschriftet sind). Man sollte auch gleich die 12V-Versorgung auf Kurzschluss prüfen (direkt zw. den Anschlüssen für die Batteriespannung). Bei diesen Durchgangsmessungen muss ein Widerstand deutlich über 0 Ohm gemessen werden bzw. der Durchgangsprüfer darf nicht 'piepen'. Sollte sich doch ein Kurzschluss eingeschlichen haben, sind häufig Lötbrücken an den 100nF-Kondensatoren die Ursache. Bei Verwendung von Lötpaste gilt: weniger ist mehr. Die Betriebsspannung wird an den Anschlüssen BAT+ und BAT- angelegt. Es wird dringend empfohlen, ein strombegrenztes Netzteil (oder notfalls zu verwenden, bis man weiß, dass alles richtig funktioniert. Ein Steckernetzteil mit Gleichspannungsausgang von ca.9-12V tut hier gute Dienste. Nach Anschluss der Betriebsspannung wird die +5V-Versorgung überprüft. Dazu misst man am Anschluss „+5V“ gegen Masse. Die Spannung sollte zwischen 4,8 und 5,2 V liegen. === Schritt 2: Einspielen des Programms === Dies wird weiter unten genau beschrieben. === Schritt 3: Test der Hardware === Wenn der Controller erfolgreich programmiert werden kann, können die Motorleitungen angelötet werden. Die I²C Leitungen dürfen erst angelötet werden, nachdem das endgültige Programm eingespielt wurde, da diese Leitungen Teil der Programmierschnittstelle sind. Wenn mehrere BL-Regler oder die Flight-Ctrl über den I²C Bus verbunden sind, ist eine Programmierung nicht mehr möglich! In den Controller wird das Testprogramm „''Test_Schub_!BrushLess-Ctrl_V0_xx.hex''“ eingespielt (zu finden im SVN bei den Hexfiles der Hardwareversion 1.0). Wenn er einwandfrei funktioniert, sollte der Motor sauber anlaufen. Folgendes Video zeigt einen Testlauf: . <> Nach dem Einschalten leuchten die LEDs kurz auf. Sollte der Motor nicht richtig anlaufen, kann das unterschiedliche Gründe haben: 1. Die MOSFET-Brücke (oder deren Ansteuerung) arbeitet nicht richtig. Seit Platinenversion 1.2 und Softwareversion 0.34 gibt die rote LED einen Blinkcode aus, je nachdem, welcher MOSFET die Strommessung zu Beginn nicht bestanden hat. Dabei ist: A=A+ (1) B=B+ (2) C=C+ (3) a=A- (4) b=B- (5) c=C- (6) (in Klammern der Blinkcode). 1. Der Kommutierungszeitpunkt wird nicht richtig bestimmt. In dem Fall sollte man das File: „''Test_Manuell_!BrushLess-Ctrl_V0_XX.hex''“ einspielen. Damit wird der Motor ohne Kommutierungszeitpunkt-Bestimmung manuell angesteuert. Läuft der Motor nicht oder unruhig, liegt vermutlich Fehler 1 vor. Wenn der Motor damit richtig anläuft, liegt vermutlich Fehler 2 vor. Die Drehrichtung des Motors wechselt man übrigens, indem zwei beliebige Motorphasen (bzw. deren Anschlusskabel) getauscht werden. Dies wird auch bei Inbetriebname des Mikrokopters notwendig, da alle Regler dasselbe Drehfeld aufbauen und somit bei gleichartigem Anschluss aller vier Motoren alle Propeller auch in dieselbe Richtung drehen würden. Im Zusammenhang mit je zwei Propellern für Recht-/Linkslauf ergibt sich dann folgendes Problem: Zweimal Auftrieb + zweimal Abtrieb = !MikroKopter fliegt nicht, sondern fängt höchstens an stark zu schwingen. In diesem Fall einfach die Drehrichtung beim Ein-/Ausschalten beobachten (Vorne/Hinten: rechtsherum, Links/Rechts: linksherum) und ggf. einfach zwei Anschlusskabel an den betreffenden Motoren vertauschen. === Schritt 4: Anschluss eines Sollwertgebers === Es kann nun z.B. das Programm: „''!BrushLess-Ctrl_16kHz_V0_XX.hex''“ eingespielt werden. Dies Programm nimmt den PPM-Anschluss des Empfängers als Sollwert. Wenn andere Schnittstellen verwendet werden (z.B. Seriell oder I2C-Bus), muss das natürlich auf den jeweiligen Sollwertgeber abgestimmt werden. Es gibt da keinen Standard. == Einspielen der Software in den Regler == Es gibt verschiedene Möglichkeiten/Programme, um die Software in den Regler zu flashen. Am einfachsten geht es per SerCon und MikroKopterTool. Sollte dies allerdings nicht klappen, so kann man alternativ z.B. auch PonyProg nutzen... Der Bootloader muss nur '''einmalig''' per ISP in den AVR programmiert werden. Das MikroKopterTool setzt die Fusebits dabei automatisch korrekt. Danach können die Updates der Firmware seriell einfach durchgeführt werden. ''WICHTIG'': Für das Flashen des Bootloaders ist eine echte serielle Schnittstelle erforderlich. . {i} Auf den SMD-vorbestückten Platinen sind bereits Bootloader und Firmware installiert. Wenn man keinen Bootloader verwenden will oder kann, so lässt sich die Firmware auch direkt per ISP flashen (ist aber nicht empfohlen). Den Bootloader und die BLCtrl Software gibt es hier: http://mikrokopter.de/mikrosvn/BL-Ctrl/ [[FlashenVsUpdaten|Hier gibt es eine komprimierte Kurzübersicht zum Thema Flashen und Updaten]] === Bootloader flashen === * Die BL-Ctrl muss über das 10-polige kombinierte ISP-/seriell-Kabel (ISP1) an den SerCon angeschlossen sein. * Die BL-Ctrl muss mit Spannung versorgt werden. * Es dürfen keine Daten über den I2C-Bus kommen, d.h. entweder ablöten oder während des Programmierens Flight-Ctrl ausschalten/resetten. ==== Mit dem MikroKopter Tool ==== * 'Controller flashen & Terminal' auswählen . {{attachment:MikroKopterTool/bootloader_BL.gif}} * Jumper des SerCon setzen * Dann auf 'FLASH' klicken und das Bootloader-Hexfile auswählen. . … jetzt wird der Bootloader programmiert – das dauert etwas … * nach erfolreichem Programmieren meldet sich der Bootloader mit einer Kennung: . Vx.y:MKBL . ''Vx.y = Version'' . ''MKBL für MikroKopter-!BootLoader'' - {{attachment:MikroKopterTool/bootloader_BL_ready.gif}} {i} Sollte es Probleme mit dem MikroKopter-Tool (avrdude) geben, kann alternativ PonyProg zum Einspielen des Bootloader genutzt werden. ==== Mit AVR-Studio ==== . Beim Programmieren des Bootlaoders über AVR-Studio müssen die Fuses so eingestellt werden: . . {{attachment:BL-CTRL_Fuses_Studio.png}} ==== Mit avrdude unter Linux ==== . {{{ avrdude -p m8 -F -c ponyser -P /dev/ttyS0 -v -U flash:w:BootLoader_MEGA8_8MHZ_VX_X.hex -u -U lfuse:w:0x84:m -U hfuse:w:0xda:m }}} . /!\ X_X durch die version des Bootloaders ersetzen ; ggf /dev/ttyS0 durch eine andere Schnittstelle ersetzen === Firmware einspielen === * Die BL-Ctrl muss wieder über das 10-polige kombinierte ISP-/seriell-Kabel (ISP1) an den SerCon angeschlossen sein. * Jumper des SerCon entfernen. * Die BL-Ctrl muss mit Spannung versorgt werden. * Die I2C-Bus-Verbindung sollte getrennt werden, wenn das Update über ISP eingespielt wird. * für BL-Ctrl V1.0: Jeder Motor-Regler benötigt eine eigene Adresse (unterschiedliche Hex-Files). * für BL-Ctrl V1.1: Jeder Motor-Regler benötigt eine eigene Adresse, die per [[http://www.mikrokopter.com/ucwiki/BL-Ctrl_V1.2?highlight=(lötjumper)#head-579ba14279e6a35091680e0e5d64055cd59a0c7d|Lötjumper]] auf der Platine eingestellt wird (gleiche Hex-Files). * Motoradressierung: 1=Vorn 2=Hinten 3=Rechts 4=Links ==== Mit dem MikroKopter Tool ==== * auf 'Update' klicken und aktuelles Hex-File der BL-Ctrl auswählen. . {{attachment:MikroKopterTool/bootloader_BL_update.gif}} * jetzt wird programmiert - evtl. muss manuell resettet werden (BL-Ctrl einfach aus- und einschalten). * wenn alles geklappt hat, meldet sich der BL-Regler mit seiner aktuellen Version. ==== Mit avrdude unter Linux ==== . {{{ avrdude -p m8 -P /dev/ttyS0 -c butterfly -b 57600 -U flash:w:BrushLess-Ctrl_MEGA8_VX_X_YA.hex }}} . /!\ X_X durch die version des der Firmware ersetzen ; Y durch die je nach Bestückten FET's 6 oder 10 ; ggf /dev/ttyS0 durch eine andere Schnittstelle ersetzen == Stückliste & Bestückung == (!) Tip: Es empfiehlt sich, beide Seiten der unbestückten Platine zunächst einzuscannen oder zu fotografieren. Das macht es später einfacher, ungewollte Lötbrücken und ähnliche Fehler aufzuspüren. <
>Die Bauteile sollten in der Reihenfolge eingebaut werden, wie sie in dieser Liste stehen, weil man es dann mit der Bestückung einfacher hat. ''Kursiv dargestellte Teile befinden sich auf der Unterseite'' ||'''Anz''' ||'''Reichelt-Best.Nr.''' ||'''Hinweis''' ||'''Teil''' ||'''Name''' || ||1 ||ATMEGA8-16TQ ||Markierung beachten, Flussmittel verwenden! ||Controller ||''IC1'' || ||1 ||besser TA78L05(SOT-89) oder µA78L05(TO92) || ||Festspannungsregler ||IC2 (Conrad: 144711 - 62) || ||1 ||SMD-LED 0805 GN ||Richtung beachten || SMD-Leuchtdiode ||LED1 || ||1 ||SMD-LED 0805 RT ||Richtung beachten || SMD-Leuchtdiode ||LED2 || ||3 ||BC817-16SMD || ||Transistor ||''T1, T2, T3'' '''(Version 1.0 und 1.1)''' || ||3 ||PDTC143ET ||Die Basisvorwiderstände R3, R6 und R9 müssen durch einen niederohmigen Widerstand ersetzt werden. Bsp: 100 Ohm ||Transistor ||''T1, T2, T3'' '''(Version 1.2)''' || ||3 ||IRFR1205 ||alternativ auch IPD03N03LB, '''IRLR7843''' ||MOSFET ||NA-, NB-, NC- || ||3 ||IRFR5305 ||alternativ auch '''FDD6637''' ||MOSFET ||''NA+, NB+, NC+'' || ||1 ||4k7 SMD 1/4W || || Widerstand (größer als SMD-0805) ||''R26'' || ||1 ||10R SMD 1/4W || || Widerstand (größer als SMD-0805) ||''R32'' || ||3 ||'''SMD-0805 470''' oder 680R SMD-0805 || ||Widerstand ||''R2, R5, R8'' || ||11 oder 14 ||SMD-0805 4K7 || Je nach Wahl von T1-T3 kriegen R3, R6 und R9 4,7k oder 100 Ohm ||Widerstand ||R1, R4, R7, R11, R12, R13, R18, ''R20, R21, R22, R15'', (''R3, R6, R9'') || ||2 ||SMD-0805 1K || ||Widerstand ||R27, R33 || ||5 ||SMD-0805 18k || ||Widerstand ||R10, R14, R16, R23, R24 || ||3 oder 6 ||SMD-0805 100R || Je nach Wahl von T1-T3 kriegen R3, R6 und R9 4,7k oder 100 Ohm ||Widerstand ||R17, R19, R25, (''R3, R6, R9'') || ||'''15''' ||X7R-G0805 100nF || ||Kondensator ||C1, C2, C4, C5, C6, C7, C8, C10, C13, ''C3, C15, C16, C17, C18, C11'' '''(Version 1.0)''' || ||'''18''' ||X7R-G0805 100nF || ||Kondensator ||C1, C2, C4, C5, C6, C7, C8, C10, C13, ''C3, C15, C16, C17, C18, C11'', C14, ''C19'', ''C20'' '''(Version 1.1 und 1.2)''' || ||'''2''' ||SMD Elko 10/16 ||Markierung beachten ||Elko ||C12, C14 '''(Version 1.0)''' || ||'''1''' ||SMD Elko 10/16 ||Markierung beachten ||Elko ||C12 '''(Version 1.1 und 1.2)''' || ||1 ||RAD330/16 ||Polung beachten und von der Seite anlöten ||Elko ||C9 || '''Sonstiges''' * 1 Stecker EC10 - Programmierstecker * 1 D-SUB ST 25 - Sub-D Stecker für Parallelport-Programmierkabel * 0,5m 10poliges Flachbandkabel * 1m Anschlussleitungen '''Hilfsmittel''' * CR44 Zinnhaltiges SMD-Flussmittel * Entlötlitze AA Entlötlitze 1,5mm * Lötzinn AG 0,507 Lötzinn 0,5mm * Bedrahteter Spannungsregler, falls in SMD nicht verfügbar {{attachment:Spannungsregler.jpg}} <
> == Alternative MosFets zur Leistungssteigerung == Mit besseren !MosFets sind auch dauerhaft 10A und kurzzeitig 20A möglich. Der Änderung erfolgt entsprechend: . IRFR1205 (NA-, NB-, NC-) wird ausgewechselt mit: '''IRLR7843''' oder '''IPD03N03LB''' (Infineon) . IRFR5305 (''NA+, NB+, NC+) ''wird ausgewechselt mit: '''FDD6637''' oder '''SPD50P03L''' (Infineon) . Die beiden Infineon !MosFets haben zur Zeit die besten Werte, bei dem '''SPD50P03L''' müssen allerdings die Beinchen etwas gebogen werden. Nach dem Umbau sollten die Regler mit der 10A - Firmware bespielt werden. Zwar funktionieren die Regler auch mit der 6A-Version, jedoch verschenkt man damit Motorleistung. . Die aktuelleste Software findet man im SVN: [[http://svn.mikrokopter.de/mikrowebsvn/listing.php?repname=BL-Ctrl&path=/tags/#_tags_|Link]] Außer den Infineon !MosFets können bessere Fets im [[https://www.mikrocontroller.com|MK-Shop]] bestellt werden. Diese befinden sich auch auf den vorbestückten Reglerplatinen. <
> == Anschluss == /!\ Das Bild gilt NUR für 1.0 Version <
> {{attachment:anschluss1.gif}} /!\ Das Bild gilt NUR für 1.0 Version <
> {{attachment:anschluss2.gif}} == Schaltplan == [[attachment:BL-Ctrl_Schaltplan.gif|{{attachment:BL-Ctrl_Schaltplan_kl.gif}}]] (Klicken für hohe Auflösung) <
> == WICHTIG == /!\ Die Regler sind vor Feuchtigkeit zu schützen. (Drohende Zerstörung der Endstufe, siehe WasserLandung ) . man kann einen Schrumpfschlauch oder Isolierspray (Plastikspray, "Plastik 70") verwenden, um die Regler zu schützen. (dies gilt eigentlich nur Regler < V1.2) . Vorsicht beim Einsatz vom Plastikspray, da dies eine evtl. Reparatur später schwer bis unmöglich macht ! Um die Regler unempfindlicher gegenüber Feuchtigkeit zu machen, können bei der Reglerversion 1.2 PDTC143ET Transistoren von NXP genutzt werden. Diese liegen dem !MosFet Set im [[https://www.mikrocontroller.com/index.php?main_page=product_info&products_id=201|H&I Shop]] bei. ---- . KategorieAnleitung