Forum: Mikrocontroller und Digitale Elektronik BLDC Regler Timing


von Steffen H. (stef_fen)


Lesenswert?

Hallo Zusammen,

ich bin dabei mir einen BLDC Regler zu bauen. Aber jetzt stelle ich mir 
die Frage: Wie kann man das Timing erzeugen? Es soll wählbar zwischen 
6°, 12°, 18° sein. Momentan habe ich es so, dass die Kommutierung direkt 
nach dem Analog-Komparator Interrupt ausgelöst wird. Theoretisch müsste 
ich doch dazu die Drehzahl wissen, damit ich dann von einer Umdrehung 
auf den Winkel schließen kann?

Vielen Dank. Gruß Steffen

von st (Gast)


Lesenswert?

bedenke auch die Phasenverschiebung bedingt durch deine Filterschaltung 
(sofern mit Kondensatoren realisiert).

von Steffen H. (stef_fen)


Angehängte Dateien:

Lesenswert?

Ich verwende die BEMF-Schaltung wie im Brushless-Controller für 
Modellbaumotoren Artikel.

Gruß Steffen

von Floh (Gast)


Lesenswert?

Steffen Ha schrieb:
> Momentan habe ich es so, dass die Kommutierung direkt
> nach dem Analog-Komparator Interrupt ausgelöst wird.

Dann ist deine Kommutierung aber zu früh. Der Interruppt erfolgt bei 
dieser Erkennungsschaltung, wenn die generierte Spannung am 
nichtbestromten Pin die virtuelle Masse erreicht. Das ist aber 
eigentlich genau der Mittelpunkt der Phase und nicht der Beginn der 
neuen.

Ich kenne es so dass dann ein Timer gestartet wird, der abhängig von der 
bisherigen Drehzahl eine Zeit lang warte und dann die Kommutierung 
auslöst.

von Steffen H. (stef_fen)


Lesenswert?

Wie kann ich z.B. den Zeitpunkt für ein 15° Timing errechnen? Welche 
Werte brauche ich dafür?

Gruß Steffen

von Basti (Gast)


Lesenswert?

Hi, das Timing stellt sich durch die Kommutation von selbst ein da mußt 
du nichts machen. Wichtig ist das die Kommutation stimmt, habe auch ewig 
dafür gebraucht. Welchen Prozessor verwendest du? Wenn du einen Atxmega 
verwendest kann ich dir eventl weiterhelfen.

von Steffen H. (stef_fen)


Lesenswert?

Hi, ich verwende bis her einen Atmega 8 im TQFP Gehäuse. Werde aber auf 
einen größeren umsteigen. Wie meinst du das mit: das Timing stellt sich 
von selbst ein? Ich muss doch dafür sorgen z.B. das nicht bei 0° 
weitergeschaltet wird sondern z.B. bei 15°. Das wollte ich mit einem 
Timer machen.

Ist der unterschied zwischen den XMega und Megas so groß? Programmierst 
du in C?

Gruß Steffen

von Lisa (Gast)


Lesenswert?

Hoi!

Du musst einen Timer starten wenn du eine Phase umgeschaltet hast. Dann 
misst du die Zeit bis zu deinem Interrupt. Diese Zeit musst du dann 
nochmal nach dem Interrupt warten und dann deine Phase weiterschalten.
Steht auch hier -> http://www.atmel.com/Images/doc8012.pdf nochmal 
erklärt auf Seite 11

von Viktor N. (Gast)


Lesenswert?

Ein BLDC dreht ja mit einer Rate : zB 13.24Grad/sekunde. Da muss man 
dann nur noch die Polpaarzahl reinwerfen und der zu erzeugende Sinus ist 
gegeben.

von Basti (Gast)


Lesenswert?

wenn du die Sternschaltung benutzt hast du je Interrupt den 
Komutationszeitpunkt und schaltest einfach aud die nächste Fase. Wobei 
einfach relativ ist :)

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Lisa schrieb:
> Hoi!
>
> Du musst einen Timer starten wenn du eine Phase umgeschaltet hast. Dann
> misst du die Zeit bis zu deinem Interrupt. Diese Zeit musst du dann
> nochmal nach dem Interrupt warten und dann deine Phase weiterschalten.
> Steht auch hier -> http://www.atmel.com/Images/doc8012.pdf nochmal
> erklärt auf Seite 11

Genau so. Dann hast du eine 30 Grad Verschiebung. Wenn du weniger haben 
willst, musst du entsprechend weniger Zeit warten, bis er wirklich 
umschaltet.

Geht recht einfach mit einem Timer, den du an deinen Komparator koppeln 
kannst. Gibt einige AVR's, bei denen du den Capture Interrupt an den 
Komparator koppeln kannst. Diesen Wert lässt du einfach in diesem 
Register stehen, nullst den Timer und schaltest einen Timer Mode an, der 
ICR als Top-Wert hat. Ganz einfach also..

MFG Dennis

von Steffen H. (stef_fen)


Lesenswert?

Vielen Dank für eure Erklärungen. Wie muss ich denn noch die 
Phasenverschiebung von der BEMF Schaltung einrechnen? Den ICP vom Atmega 
verwende ich leider schon zum Einlesen des PPM Signals von meiner 
Modellbau Fernsteuerung.

Danke. Gruß Steffen

von flipsi (Gast)


Lesenswert?

Steffen Ha schrieb:
> Wie muss ich denn noch die
> Phasenverschiebung von der BEMF Schaltung einrechnen? Den ICP vom Atmega
> verwende ich leider schon zum Einlesen des PPM Signals von meiner
> Modellbau Fernsteuerung.

Hi Steffen!
Falls Du die Kondensatoren wegläßt, entfällt die Phasenverschiebung.
Ansonsten: Rs zusammenfassen und Phasengang des resultierenden 
RC-Gliedes betrachten.
Daß Du den ICP nutzt, scheint mir etwas ungünstig, da Du damit den 
Timer1 belegst, der aber ein sehr guter Kandidat (weil 16 Bit) wäre, um 
präzise die Kommutierung zu kontrollieren (OCR1A/B), wie Floh und Lisa 
es vorgeschlagen haben. Vielleicht kannst Du die PPM Auswertung über 
einen der 8 Bit Timer und INT0 oder INT1 machen (ausgelöst auf Flanke, 
jeweils zwischen steigend und fallend umgeschaltet)?
Der dann noch verbleibende 8 Bit Timer eignet sich (falls noch nicht 
geschehen) übrigens prima für eine PWM der Fets!

Viel Erfolg
 flipsi

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.