BLDC Regler Timing

OP #3117930
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
Gast #3118043
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.
Gast #3134749
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.
OP #3136896
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
#3139005
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
Gast #3139428
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren