Ich kann dir bei Bascom nicht wirklich weiter helfen, ich bin in C unterwegs, habe allerdings gerade auch einen BLDC REgler fertig gestellt. Ich nutze auch IR2101. Meine PWM ist 8-bit breit. Ich lade in das PWM-Register den Wert 20, also einen Duty-Cycle von etwa 6-8% zum starten. Mal ein kleiner Tip: Ich bestrome ganz zum Anfang mit diesem niedrigen Duty-Cycle zwei Phasen. Also U und V an PWM, W an Masse, etwa 300ms lang. So zuckt der Motor mal kurz und du hast ihn erstmal in einer festen Position. Dann V einfach wieder unbeschaltet lassen und etwa 20x noch starr kommutieren, mit Timer-Interrupt oder so. Und dann alles laufen lassen. klappt bei mir wunderbar. Natürlich musst du bisschen rumspielen mit ein paar Werten, aber einfach mal als Ausgangspunkt.
Aber ehrlich gesagt ist der Atmega8 nicht wirklich geeignet dafür, der Atmega88 geht da wesentlich besser. Der hat einfach ein paar Timer-Modi mehr, die du für
gut gebrauchen kannst. Das ist auch ganz einfach gelöst. In der Funktion, in der du die Phasen umschaltest setzt du einen Timer auf Zählerstand 0. Kommt der Komparator-Interrupt, liest du den Zählerstand aus, schreibst diesen Wert in ein OCR-Register und stellst den Timer-Modi auf CTC und mit Top-Wert auf das gerade beschriebene OCR-Register. Ich hoffe, das war halbwegs verständlich, ansonsten frag einfach nochmal nach, was du nicht genau verstanden hast.eine 30Grad verzögerte Kommutierung
Dennis
Lesezeichen