Hallo,
ich hab mir einen Brushlessmotor Controller auf einem Steckboard mit 3x IR2101(Mosfethalbbrückentreiber), 6x F3205Z(Mosfets) und einem Atmega8A aufgebaut. Kommutierung erfolgt über eine BEMF-Schaltung.
Genauso aufgebaut wie auf dieser Seite: http://www.mikrocontroller.net/artic...BEMF-Schaltung
Meine Software ist in Bascom geschrieben und funktioniert. Ich weiß nur nicht ob das Glück ist oder ein Denkfehler meinerseits.
Situation bei meinem Aufbau:
-lege Spannung an
-Motor fiept hörbar (obwohl die PWM-Frequenz bei ca 30khz liegt)
-wenn der Motor angestoßen wird dreht er hoch und kann auch belastet werden
Mich hat dieses fiepen verwundert. Das rührt daher das im Stillstand der Komparator ständig auslöst, ununterbrochen. Es werden also alle 6 Zustände durchgeschalten.
In dem Artikel über Brushlesscontroller steht "So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. Bis der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist."
Bei mir scheint allerdings eine BEMF vorhanden zu sein.
Gut, mal ganz einfach etwas ausprobiert--> Kommutierungszustand 1 eingeschalten. Das heißt Phase A liegt mit dem PWM-Signal an Vcc, Phase B hängt in der Luft und Phase C ist auf GND. Nun hab ich mir bei einem Komparatorinterrupt etwas via UART ausgeben lassen. Wenn ich die in der Luft hängende Phase messe löst ständig der interrupt aus, unabhängig ob der Motor gedreht wird oder nicht. Wenn ich allerdings Phase A messe, funktioniert es. Der Interrupt löst erst aus wenn der Motor mit Hand gedreht wird.
Doch das ist doch falsch?!
Wenn ich nun alles umschreibe und via Admux auf die anderen Phasen (also nicht auf die in der Luft hängenden) umschalte, funktioniert es fast garnicht. Nur mit sehr niedriger PWM bekomm ich ihn von Hand gestartet.
Hoffe das ist irgendwie verständlich geworden.
Mir fehlt auch noch im Programm eine 30Grad verzögerte Kommutierung. Doch bevor ich das in Angriff nehme will ich mir sicher sein keinen Fehler gemacht zu haben.
D35troy3r
Lesezeichen