Forum: Mikrocontroller und Digitale Elektronik BLDC Kommutieren


von Jim (Gast)


Angehängte Dateien:

Lesenswert?

Hallo alle Zusammen,

Ich beschäftige mich in den letzten Wochen mit dem Betrieb von BLDC 
Motoren und deren Regler.
Das Funktionsprinzip habe ich (denke ich zumindest) soweit verstanden.
Ich habe angefangen nach folgender Anleitung die Software zu schreiben : 
http://www.mikrocontroller.net/articles/Brushless-Controller_f%FCr_Modellbaumotoren

Leider läuft mein Motor nur sehr unruhig und ist dabei extrem laut.

Kurze Erklärung zu meiner Hard&Software :

Hardware :
- LR7843 Mosfets mit IR2101S Mosfet Treiber
- 2212 Motor mit 900kv und ca. 200Watt
- BMF Messschaltung nach : 
http://www.mikrocontroller.net/articles/Datei:BLDC_BEMF_schaltung.png

Software :
- 4Khz PWM im Fast Betrieb
- Case für Kommutierung
- Vergleich der Analogen Messwerte vom BMF Feedback für Case "state" 
Ermittlung

Was mir soweit klar ist :
- Der Motor muss von Hand angedreht werden , da noch kein Anlauf 
vorhanden ist
- Analog Comparator verwenden für Positionsmessung

Den Comparator habe ich noch nie verwendet , deswegen habe ich es 
erstmal ohne gelöst , was eigentlich auch bei geringer Drehzahl 
ausreichend funktionieren sollte .... denke ich ^^

Ich wäre sehr Dankbar wenn evtl. mal einer darüber schauen könnte ob ich 
einen generellen Fehler habe.
Bislang kann ich mir nicht erklären warum der Motor sehr Schlecht bis 
garnicht dreht.

Vielen Dank! Und einen Schönen Start in die neue Woche :)

Grüße,
Jim

von Jim (Gast)


Lesenswert?

Habe gerade noch verschiedene DAC und ADC Sample Rate Frequenzen 
getestet , aber auch das bringt keine Änderung.

von Floh (Gast)


Lesenswert?

So wie ich dein Programm deute schaltest du in den jeweils nächsten 
Zustand, sobald die Spannung der unbestromten Phase über den virtuellen 
Sternpunkt steigt.
Das ist zu früh, da dieser Zeitpunkt eigentlich die Mitte der aktuellen 
Phasenbestromung darstellt. Da solltest du noch eine drehzahlabhängige 
Zeit warten, bevor du die Kommutierung weiterschaltest.

von loa (Gast)


Lesenswert?

> 4Khz PWM im Fast Betrieb

kommt mir etwas arg niedrig vor. Also das der Motor kreischt wie sau 
wundert mich gar nicht. ;-)

Tu die PWM mal ordentlich erhöhen. Idealerweise über 16Khz, damit man 
zumindest nichts mehr hört. Zudem kann man die höhere Frequenz besser 
rausfiltern.

von Jim (Gast)


Lesenswert?

Habe die PWM Frequenz zunächst so klein gewählt , weil mir nicht klar 
wahr wie stark sich die Schaltverluste der Mosfets äußern wenn sie höher 
ist.
Abgesehen von den 4khz Tönen , ist der Motor trotzdem sehr laut...

Generell kann die PWM Frequenz aber nicht der Grund des Fehlers sein , 
oder ?
werde morgen mal auf 32khz Phase PWM umstellen ... mal schauen :)

Danke !

von Jim (Gast)


Lesenswert?

@Floh : kann man diese Zeit Fix bestimmen ? oder ist sie von anderen 
Faktoren wie Motorlast o.ä. abhängig ?
Kannst du mir evtl. sagen wie ich am besten diese Zeit 
bestimmen/berechnen soll ?

Danke !

von Floh (Gast)


Lesenswert?

Schau dir mal die Applikation Note AVR444 an:
www.atmel.com/Images/doc8012.pdf

von Ah (Gast)


Lesenswert?

Wie sieht denn der Motorstrom aus ? Kannst Du den mal in allen 3 Phasen 
messen ?

von Jim (Gast)


Lesenswert?

@ah: messe ich morgen mal nach
@floh: danke ! schau ich mir gleich mal an

Generell bin ich mir auch noch nicht 100% sicher ob ich die ADC Werte 
richtig vergleiche.

Was ich noch vergessen hatte zu sagen:
Wenn ich state einfach mit jedem Durchgang stur hochzähle , also ohne 
kommutierung , läuft der Motor relativ gut.

von Jim (Gast)


Lesenswert?

Zu der Delay Zeit nach der Kommutierung :
Laut dem APP Note von Atmel verstehe ich es so , das die Wartezeit die 
gleich zeit ist , wie zwischen der letzten Kommutierung und das kreuzen 
der back emf der floating phase.
Kann mir das einer so bestätigen ?

Generell würde es sich dann anbieten , noch einen Timer dafür zu 
verwenden .... denke ich.

von Jim (Gast)


Lesenswert?

keiner ?

Ich stelle mir das ganze so dann vor :

- Timer mit Output Compare Interrupt für die nächste Kommutierung
- Ablaus :
...Kommutieren -> Timer Reseten -> BMF Zero Cross Detection -> Aktuelle 
Timer Zeit mal 2 als Output Compare Interrupt Wert -> Interrupt -> 
Kommutieren ...

Wäre toll wenn einer von euch kurz seine meinung dazu sagt , ob das so 
funktionieren könnte :)

Danke !

von abc (Gast)


Lesenswert?


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.