Forum: Mikrocontroller und Digitale Elektronik PWM-Generator für Brushless-Regler


von Hendrik K. (henny)


Lesenswert?

Hallo µC-Community,

mein Kumpel und ich konzipieren grade einen experimentellen 
Quadrocopter, um zu sehen für wie wenig Geld man so ein Ding bauen kann, 
und sind bei der Motorsteuerung auf das Problem gestoßen, dass es 
natürlich nicht möglich ist, dass der Hauptprozessor, der ja schon mit 
Sensordatenauswertung beschäftigt ist, auch noch die 1-2ms-Pulse für die 
vier Brushless-Regler erzeugt. Wäre es schlau, wenn sich für jeden 
Regler ein ATtiny13 oder so die relevanten Daten per OneWire oder I²C 
bzw. TWI vom Hauptprozessor holt und dann die entsprechenden Pulse für 
die Regler erzeugt?

von TestX .. (xaos)


Lesenswert?

ja wäre es

von Martin L. (Gast)


Lesenswert?

Ich denke ja, dass man das durchaus sehr gut noch mit dem Hauptprozessor 
erledigen kann.
Mit einem geschickten Datenstruktur und Timerinterrupt habe ich genau 
das letze Woche mit einem ARM gemacht. Rechenleistung die dafür 
verbraucht wird ist verschwindend.

Die Grundidee ist, die Servos/Regler nach der Zeit der fallenden Flanke 
zu sortieren und den Timer Interrupt so zu programmieren, dass er immer 
dann die ISR aufruft wenn das nächste Ereignis fällig ist. Die ISR 
programmiert den Timer Interrupt dann wieder für das nächste Ereignis.
Macht pro Servo/Regler einen ISR Aufruf alle 20ms. Die ISR selbst ist 
auch nicht lang.

Viele Grüße,
 Martin L.

von Simon K. (simon) Benutzerseite


Lesenswert?

Hendrik Köhler schrieb:
> Hallo µC-Community,
>
> mein Kumpel und ich konzipieren grade einen experimentellen
> Quadrocopter, um zu sehen für wie wenig Geld man so ein Ding bauen kann,
> und sind bei der Motorsteuerung auf das Problem gestoßen, dass es
> natürlich nicht möglich ist, dass der Hauptprozessor, der ja schon mit
> Sensordatenauswertung beschäftigt ist, auch noch die 1-2ms-Pulse für die
> vier Brushless-Regler erzeugt.

Wieso sollte das nicht gehen? Welcher Prozessor, wie habt ihr das 
versucht? Hoffentlich ja nicht mit Verzögerungsschleifen ;)

von Hendrik K. (henny)


Lesenswert?

Versucht haben wir wegen diesem Problem noch nichts. Wir können uns 
nicht entscheiden, ob wir jetzt billige Regler nehmen, die normalerweise 
an RC-Funkempfängern betrieben werden oder so sauteure mit I²C.
Unsere MCU ist ein ATmega128.

von Axel R. (Gast)


Lesenswert?

Hallo Hendrik

Du schriebst:

>so sauteure mit I²C.

Was ist denn an I2C teurer, und warum??

Die Hardware ist doch die gleiche, nur die Software ist eine andere...
Klär uns doch bitte mal auf, wie du das meinst.
Wenn ich nicht schon etwas fertiges da hätte (den "Floh" Regler :-) )
würde ich mir so ein billiges China Set zulegen, wo der Motor gleich 
dabei ist.
Als ich die auf der vorletzten Bastelmess in Leipzig sah, beschloß ich, 
den "Floh" nicht weiter zu vermarkten, soo billlig waren die China 
Regler.

Die Erzeugung der Impulse bekommst Du locker im Hauprprozessor hin. 
schliesslich hast Du 20ms-(nKanäle x 2ms) Zeit zwischen jedem Impuls, 
also im schlimmsten Fall 10ms bei 5 Kanälen und "normaler" RC 
Fernsteuerung. In dieser Zeit sollte sich einiges mit einem 128er 
erledigen lassen, denke ich mal.
Die Sensorik (Beschleunigung, Drehratengeber, GPS) ans SPI, die 
Impulserzeugung läuft im Timer. Der Summenimpuls hängt am ICP.
Ich denke nicht, das es schwerwiegende Problem gibt. Ob man alles in 
Bascom programmieren kann, wie hier oft im Forum üblich, glaube ich 
diesmal allerdings nicht.

Man könnte auch einen Atmega1281 hernehmen und gleich die 3Phasensignale 
für die 4 Motore erzeugen, genug PWM Engines sind dort vorhanden. Spart 
man sich die China-Regler komplett.

Danke
Axelr.

von Simon K. (simon) Benutzerseite


Lesenswert?

Die allerersten Versuche der Quadrokopter mit einem normalen 
Modellbauregler und den 20ms Frame-Raten haben nicht so gut gefruchtet, 
soweit ich weiß. Alle 20ms sind zu grob für eine anständige 
Lageregelung.

Der Mikrokopter verwendet I2C und der Armokopter verwendet UART. Beide 
mit einer Refreshrate von 1 oder 2 kHz (So in der Größenordnung).

Ich benutze bei mir I2C, wobei das auch eigentlich nur, weil ich die 
UARTs am ATxmega schon für andere Zwecke verplant habe ;)

von Hendrik K. (henny)


Lesenswert?

Wow, 1kHz... Dann dürfte der ganze Vorgang nur eine Millisekunde dauern, 
wobei herkömmliche Regler gar nicht in Frage kommen. Gibt es irgendwo 
Baupläne für einfache Regler mit AVR? Man braucht ja im Großen und 
Ganzen nur einen AVR mit 3 Timern und drei FETs oder?

von Axel R. (Gast)


Angehängte Dateien:

Lesenswert?

Hendrik Köhler schrieb:
> Wow, 1kHz... Dann dürfte der ganze Vorgang nur eine Millisekunde dauern,
> wobei herkömmliche Regler gar nicht in Frage kommen. Gibt es irgendwo
> Baupläne für einfache Regler mit AVR? Man braucht ja im Großen und
> Ganzen nur einen AVR mit 3 Timern und drei FETs oder?
Na den Floh eben z.B. ;)

Einen aktuellen Link habe cih jetzt garnicht parat.

Goolge nach "flea"+ "konze", sollte klappen.

generell: BLMC, BLDC usw. sind gute Ansatzpunkte für eine google suche.

edit
http://home.versanet.de/~b-konze/blmc_bko/schematic.htm
/edit

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.