Witam, próbuje zrobić sterownik silnika BLDC z wykorzystaniem uC Atmega8. Schemat i program zaczerpnąłem ze strony mikrokontrolery.blogspot. Układ został złożony zgodnie ze schematem:
Jedyną różnice stanowią dolne tranzystory, ja użyłem IRFZ44N oraz zamiast dławika 10uH użyłem rezystor 10ohm. Ponad to zmodyfikowałem trochę program wydłużając czas rozruchu silnika. Problem polega na tym, że silnik startuje zgodnie z założonym algorytmem ale nie przechodzi z fazy startu (praca bez znajomości położenia wirnika) do fazy normalnej pracy (praca ze znajomością położenia wirnika). Warunkiem przejścia do trybu normalnej pracy jest wymagana liczba przerwań z komparatora. Wnioskuję, że skoro sterownik nie przechodzi do tej fazy to komparator nie generuje przerwań. Czy ktoś doświadczony w tym temacie mógłby powiedzieć co jest przyczyną takiego zachowania sterownika? Jakie mogą być inne przyczyny nie prawidłowej pracy sterownika? Wszelkie uwagi będą dla mnie cenne. Poniżej zamieszczam kod programu a filmik prezentujący pracę silnika dodaję w załączniku.
Główna funkcja programu:
Definicje funkcji:

Jedyną różnice stanowią dolne tranzystory, ja użyłem IRFZ44N oraz zamiast dławika 10uH użyłem rezystor 10ohm. Ponad to zmodyfikowałem trochę program wydłużając czas rozruchu silnika. Problem polega na tym, że silnik startuje zgodnie z założonym algorytmem ale nie przechodzi z fazy startu (praca bez znajomości położenia wirnika) do fazy normalnej pracy (praca ze znajomością położenia wirnika). Warunkiem przejścia do trybu normalnej pracy jest wymagana liczba przerwań z komparatora. Wnioskuję, że skoro sterownik nie przechodzi do tej fazy to komparator nie generuje przerwań. Czy ktoś doświadczony w tym temacie mógłby powiedzieć co jest przyczyną takiego zachowania sterownika? Jakie mogą być inne przyczyny nie prawidłowej pracy sterownika? Wszelkie uwagi będą dla mnie cenne. Poniżej zamieszczam kod programu a filmik prezentujący pracę silnika dodaję w załączniku.
Główna funkcja programu:
Code: c
Definicje funkcji:
Code: c