Hallo!
In meinem Willkommens-Thread wurde ja nun schon mehrfach geäußert, das der eine oder andere gern etwas zu meinem BLDC-Regler wissen möchte.
In ferner Zukunft ist mal ein Hexakopter geplant. Begonnen hatte die Idee, als ich die Seite vom Mikrokopter gesehen habe. Und Holger hat irgendwie vieles selbst programmiert. Das hatte mir gefallen. Darum wollte ich auch einen bauen, aber nicht wie die meisten, fertige Baugruppen nur noch zusammenstellen, sondern ich wollte was mir möglich ist auch selber bauen. Motoren, Akkus und Propeller habe ich natürlich gekauft, das ist einfach jeweils schon eine Wissenschaft für sich, als das man sowas auch zuhause selbst bauen könnte. Aber die BLDC-Regler, die eigentliche Steuereinheit für den Hexa und die Fernsteuerung könnte man selbst bauen. Begonnen habe ich mit mit den Motoren-Reglern.
Da ich mich selbst auch noch als Anfänger bezeichne, habe ich natürlich auch eine Reihe Fehlschläge weg. Bei so einem Regler ist auch das Laiterplatten Layout wichtig. Ich habe insgesamt hier 5 verschiedene Layouts liegen, wovon eigentlich nur das letzte wirklich funktioniert. Da ich von den Bauteilen her nicht wirklich Ahnung hatte, habe ich mir natürlich das eine oder andere beim Mikrokopter abgucken wollen. Der Holger hat seine Halbbrücken mit einem P- und einem N-Mosfet realisiert. Diese Mosfets zu besorgen, war nicht ganz ohne, habe sie aber bekommen und bin damit kläglich gescheitert. Ich weis bis heute nicht, wie Holger das mit den P-Mosfets hinbekommt, bei mir haben die erst nach ca. 1ms gesperrt, was natürlich viel zu viel Zeit ist. Also habe ich umgeschwenkt auf den Halbbrückentreiber IR2101. Mit Hilfe von denen kann man auch die High-Side mit einem N-Mosfet beschalten. Jetzt hat dieser Part besser funktioniert, aber ich bin mit meinem Controller nicht klar gekommen. Ich habe am Anfang den Attiny261 genutzt, der genau für solche Motorenanwendungen spezielle Timer-Modi's hat. Sicher funktioniert dieser ganz wunderbar, aber eine Controller-spezifische Besonderheit hatte ich nicht mitbekommen, die Programmier-Pins sind an den Pins, wo auch die Timerausgänge für die Halbbrücken sind. So kann es vorkommen, das während des Programmierens High und Lowside gleichzeitig durchgeschalten werden -> Kurzschluss. Habe ich zu dem Zeitpunkt nicht mitbekommen, warum das so ist, ich habe mich dann einfach für den Atmega88 entschieden.
Nachdem die neue Platine angekommen war und ich alles gelötet hatte, stellte ich fest, das der Motor zwar losdreht, aber irgendwie nur geringe Drehzahlen möglich waren. Etwa ein halbes Jahr habe ich gesucht, wollte eigentlich fast schon aufgeben. Habs dann aber gefunden. Ich nutzte die Kopplung zwischen Analog Komparator in Input Capture Unit von Timer 1. Ich fand die Option einer Rauschunterdrückung eig gut, vier Takte lang muss das gleich Signal anliegen, erst dann kommt es zum Input Capture Interrupt. Aber genau da lag der Fehler. Als ich das ohne Rauschunterdrückung gemacht habe, lief auf einmal alles.
Dann habe ich noch die Strommessung eingebaut, das lief ohne weitere Zwischenfälle ab und funktioniert gut.
Kommunikation läuft über I²C. Ich sende nur einen 8-Bit Wert. Die Werte 1 bis 10 könnte ich für irgendwelche Steuerbefehle verwenden, bis jetzt ist es einfach Start und Stop. Werte zwischen 11 und 245 werden einfach direkt als PWM-Wert weitergereicht. Werte über 245 werden ignoriert. Wenn ich Daten vom Regler hole bekomme ich zwei 8-Bit werte. Der erste mit 32multipliziert ergibt die Drehzahl pro Minute und der zweite ist bis jetzt einfach der ADC Wert meiner Strommessung.
Ich habe einen aktiven Freilauf realisiert. Ansich ganz einfach. Ich verwende den Timer 2 im phasenrichtigen Modus. Er zählt also erst rauf, dann wieder runter. Der OC2A-Pin wird am Anfang gesetzt und bei Compare Match gelöscht. Mit OC2B-Pin ist es genau anders herum. Der Unterschied zwischen OC2A und OC2B ist die Totzeit, die die Mosfets zum sperren brauchen. Dann habe ich einen kleinen Trick angewandt, der hier sehr gut erklärt wird.
Ich habe den Regler nun nicht bastlerfreundlich aufgebaut, so ziemlich alles als SMD ausgeführt. Mir ist es auch nicht wichtig, das hauptsache viele meinen Regler nachbauen. Für mich war es nur wichtig, das ich es hinbekommen habe. Bilder kann ich die Tage nochmal machen, wenn gewünscht, aber meine Handykamera braucht besseres Licht, ist nicht mehr das jüngste, sieht man ja auch an dem grauenvollen Video des Reglers. Ist keine Minute lang, ist eben schwierig, was will man zu so einem Regler zeigen.
Jetzt warte ich auf die Platinen, damit ich den Regler noch weitere 5x aufbauen kann. Als nächstes soll es dann an die Fernsteuerung gehen. Da habe ich auch schon ein paar fertige Module bei Pollin gekauft, RFM12BP. Das wird die nächste Baustelle. Eine alte ganz einfache Fernsteuerung habe ich schon daliegen. Diese will ich ausschlachten, dass ich nur noch das Gehäuse und die Kreuzknüppel verwende.
Über die Steuereinheit auf dem Kopter habe ich mir bis jetzt am wenigsten Gedanken gemacht, obwohl das eigentlich der wichtigste und warsch auch schwierigste Teil des Ganzen ist. Dort bin ich bis jetzt am überlegen, ob ich da einen ATXMega einsetze. Aber das muss im Kopf noch reifen
Wenn Fragen sind, dann immer her damit, ich versuch sie soweit mir möglich zu beantworten.
Dennis
In meinem Willkommens-Thread wurde ja nun schon mehrfach geäußert, das der eine oder andere gern etwas zu meinem BLDC-Regler wissen möchte.
In ferner Zukunft ist mal ein Hexakopter geplant. Begonnen hatte die Idee, als ich die Seite vom Mikrokopter gesehen habe. Und Holger hat irgendwie vieles selbst programmiert. Das hatte mir gefallen. Darum wollte ich auch einen bauen, aber nicht wie die meisten, fertige Baugruppen nur noch zusammenstellen, sondern ich wollte was mir möglich ist auch selber bauen. Motoren, Akkus und Propeller habe ich natürlich gekauft, das ist einfach jeweils schon eine Wissenschaft für sich, als das man sowas auch zuhause selbst bauen könnte. Aber die BLDC-Regler, die eigentliche Steuereinheit für den Hexa und die Fernsteuerung könnte man selbst bauen. Begonnen habe ich mit mit den Motoren-Reglern.
Da ich mich selbst auch noch als Anfänger bezeichne, habe ich natürlich auch eine Reihe Fehlschläge weg. Bei so einem Regler ist auch das Laiterplatten Layout wichtig. Ich habe insgesamt hier 5 verschiedene Layouts liegen, wovon eigentlich nur das letzte wirklich funktioniert. Da ich von den Bauteilen her nicht wirklich Ahnung hatte, habe ich mir natürlich das eine oder andere beim Mikrokopter abgucken wollen. Der Holger hat seine Halbbrücken mit einem P- und einem N-Mosfet realisiert. Diese Mosfets zu besorgen, war nicht ganz ohne, habe sie aber bekommen und bin damit kläglich gescheitert. Ich weis bis heute nicht, wie Holger das mit den P-Mosfets hinbekommt, bei mir haben die erst nach ca. 1ms gesperrt, was natürlich viel zu viel Zeit ist. Also habe ich umgeschwenkt auf den Halbbrückentreiber IR2101. Mit Hilfe von denen kann man auch die High-Side mit einem N-Mosfet beschalten. Jetzt hat dieser Part besser funktioniert, aber ich bin mit meinem Controller nicht klar gekommen. Ich habe am Anfang den Attiny261 genutzt, der genau für solche Motorenanwendungen spezielle Timer-Modi's hat. Sicher funktioniert dieser ganz wunderbar, aber eine Controller-spezifische Besonderheit hatte ich nicht mitbekommen, die Programmier-Pins sind an den Pins, wo auch die Timerausgänge für die Halbbrücken sind. So kann es vorkommen, das während des Programmierens High und Lowside gleichzeitig durchgeschalten werden -> Kurzschluss. Habe ich zu dem Zeitpunkt nicht mitbekommen, warum das so ist, ich habe mich dann einfach für den Atmega88 entschieden.
Nachdem die neue Platine angekommen war und ich alles gelötet hatte, stellte ich fest, das der Motor zwar losdreht, aber irgendwie nur geringe Drehzahlen möglich waren. Etwa ein halbes Jahr habe ich gesucht, wollte eigentlich fast schon aufgeben. Habs dann aber gefunden. Ich nutzte die Kopplung zwischen Analog Komparator in Input Capture Unit von Timer 1. Ich fand die Option einer Rauschunterdrückung eig gut, vier Takte lang muss das gleich Signal anliegen, erst dann kommt es zum Input Capture Interrupt. Aber genau da lag der Fehler. Als ich das ohne Rauschunterdrückung gemacht habe, lief auf einmal alles.
Dann habe ich noch die Strommessung eingebaut, das lief ohne weitere Zwischenfälle ab und funktioniert gut.
Kommunikation läuft über I²C. Ich sende nur einen 8-Bit Wert. Die Werte 1 bis 10 könnte ich für irgendwelche Steuerbefehle verwenden, bis jetzt ist es einfach Start und Stop. Werte zwischen 11 und 245 werden einfach direkt als PWM-Wert weitergereicht. Werte über 245 werden ignoriert. Wenn ich Daten vom Regler hole bekomme ich zwei 8-Bit werte. Der erste mit 32multipliziert ergibt die Drehzahl pro Minute und der zweite ist bis jetzt einfach der ADC Wert meiner Strommessung.
Ich habe einen aktiven Freilauf realisiert. Ansich ganz einfach. Ich verwende den Timer 2 im phasenrichtigen Modus. Er zählt also erst rauf, dann wieder runter. Der OC2A-Pin wird am Anfang gesetzt und bei Compare Match gelöscht. Mit OC2B-Pin ist es genau anders herum. Der Unterschied zwischen OC2A und OC2B ist die Totzeit, die die Mosfets zum sperren brauchen. Dann habe ich einen kleinen Trick angewandt, der hier sehr gut erklärt wird.
Ich habe den Regler nun nicht bastlerfreundlich aufgebaut, so ziemlich alles als SMD ausgeführt. Mir ist es auch nicht wichtig, das hauptsache viele meinen Regler nachbauen. Für mich war es nur wichtig, das ich es hinbekommen habe. Bilder kann ich die Tage nochmal machen, wenn gewünscht, aber meine Handykamera braucht besseres Licht, ist nicht mehr das jüngste, sieht man ja auch an dem grauenvollen Video des Reglers. Ist keine Minute lang, ist eben schwierig, was will man zu so einem Regler zeigen.
Jetzt warte ich auf die Platinen, damit ich den Regler noch weitere 5x aufbauen kann. Als nächstes soll es dann an die Fernsteuerung gehen. Da habe ich auch schon ein paar fertige Module bei Pollin gekauft, RFM12BP. Das wird die nächste Baustelle. Eine alte ganz einfache Fernsteuerung habe ich schon daliegen. Diese will ich ausschlachten, dass ich nur noch das Gehäuse und die Kreuzknüppel verwende.
Über die Steuereinheit auf dem Kopter habe ich mir bis jetzt am wenigsten Gedanken gemacht, obwohl das eigentlich der wichtigste und warsch auch schwierigste Teil des Ganzen ist. Dort bin ich bis jetzt am überlegen, ob ich da einen ATXMega einsetze. Aber das muss im Kopf noch reifen
Wenn Fragen sind, dann immer her damit, ich versuch sie soweit mir möglich zu beantworten.
Dennis