Forum: Mikrocontroller und Digitale Elektronik BLDC Block-Kommutierung mit active freewheeling: Schlag bei dutycycle = 0


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hochsitz C. (hochsitzcola)


Lesenswert?

Ich habe ein merkwürdiges Problem. Die Block-Kommutierung mit active 
freewheeling funktioniert soweit. Dazu gibt es ja genügend Bespiele, 
auch hier auf Mikrocontroller.net.
Das Problem ist nun, daß ich beim "Gaswegnehmen" einen heftigen 
mechanischen Schlag im Motor bekomme, wenn das Tastverhältnis der per 
PWM bestromten Phase 0 wird, während der Motor noch nachläuft. Wenn ich 
kein active freewheeling mache, also den Low-Side-FET nicht komplementär 
zum High-Side-FET beschalte, sondern komplett aus lasse, passiert das 
nicht. Auch wenn einen minimalen DutyCycle stehen lasse nicht. Es geht 
um einen STM31F031.
https://github.com/stancecoke/Lishui9FET

irgendwelche Ideen?

Gruß
hochsitzcola

von Kay-Uwe R. (dfias)


Lesenswert?

Wenn ich es richtig interpretiere, testest du gerade die so genannte 
dynamische Bremse (alle drei Phasen auf das gleiche Potential gezogen). 
Die Ruhelage bei Mehrquadrantenbetrieb liegt ggf. bei 50 %, nicht bei 0 
% oder 100 %.

von Hochsitz C. (hochsitzcola)


Lesenswert?

Hm, für Sinusansteuerung mit Center Aligned PWM stimme ich dir zu. Bei 
Block-Kommutierung floated immer eine Phase komplett. Bei Dutycycle = 0 
auf der bestromten Phase liegen zwei Phasen auf GND, das stimmt 
natürlich. Aber daß der Unterschied zu einem minimalen Dutycycle, in 
meinem Fall 1/3000 so krass ist ?!

Vor allem, wie verhindert man diesen Schlag? Die PWM auf der Low-Side 
erst bei einem Duty-Cycle >0 aktivieren? Da habe ich noch nichts zu 
gelesen...

Gruß
hochsitzcola

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Hochsitz C. schrieb:
> Aber daß der Unterschied zu einem minimalen Dutycycle, in
> meinem Fall 1/3000 so krass ist ?!

Division durch Null? obwohl, ist nur ein Register. CompareValue (between 
Min_Data=0 and Max_Data=65535)

von Hochsitz C. (hochsitzcola)


Lesenswert?

Ich habe es jetzt so gemacht, daß die PWM nur bei Dutycycle > 0 
aktiviert wird. Ist ein Workaround der erst mal funktioniert. Hab auch 
festgestellt, daß mein PI-Controller noch nicht so richtig das macht, 
was ich mir wünsche, da muß ich wohl auch noch mal dran.

Gruß
hochsitzcola

: Bearbeitet durch User
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.