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
bedenke auch die Phasenverschiebung bedingt durch deine Filterschaltung (sofern mit Kondensatoren realisiert).
Ich verwende die BEMF-Schaltung wie im Brushless-Controller für Modellbaumotoren Artikel. Gruß Steffen
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.
Wie kann ich z.B. den Zeitpunkt für ein 15° Timing errechnen? Welche Werte brauche ich dafür? Gruß Steffen
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.
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
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
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.
wenn du die Sternschaltung benutzt hast du je Interrupt den Komutationszeitpunkt und schaltest einfach aud die nächste Fase. Wobei einfach relativ ist :)
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.