Witam!
Zawracam się do szanownych kolegów z nietypowym problemem, mianowicie wykonuję aktualnie sterownik bramy dwuskrzydłowej na uC Atmega32
gdzie do sterowania silnikami 24V chciałem wykorzystać PWM(funkcja powolnego startu i domykania bramy).
Przy sprzętowym PWM wszystko jest jak najbardziej ok (silniczki pięknie się starują),
natomiast gdy do generowania przebiegu używam programowego PWMu
realizowanego w oparciu o przerwanie TIMERA2, przebieg na zaciskach silnika ma bardzo dziwny kształt co powoduje nie prawidłową pracę silnika.
PWM programowy
PWM sprzętowy
Poniżej zamieszczam konfigurację timera2 oraz jego przerwanie:
Konfiguracji sprzętowej (testowej) nie zamieszczam gdyż
działa dobrze co widać na generownym przebiegu.
Jeśli chodzi o połączenie elektroniczne to generowane impulsy podaję kolejno na
optotraik (6n137)-->driver (TC4420)-->mosfet (IRF540)
-->2x przekaźnik(obroty lewo-prawo)-->silnik
Nie zakładał bym tego tematu jeśli alternatywnie mógł bym użyć sprzętowej opcji, lecz nie ma takiej możliwości ponieważ, timer0 oraz timer1 wykorzystuje do zliczania impulsów z silnika w celu określenia położenia w jakim znajduje się śruba.
Zawracam się do szanownych kolegów z nietypowym problemem, mianowicie wykonuję aktualnie sterownik bramy dwuskrzydłowej na uC Atmega32
gdzie do sterowania silnikami 24V chciałem wykorzystać PWM(funkcja powolnego startu i domykania bramy).
Przy sprzętowym PWM wszystko jest jak najbardziej ok (silniczki pięknie się starują),
natomiast gdy do generowania przebiegu używam programowego PWMu
realizowanego w oparciu o przerwanie TIMERA2, przebieg na zaciskach silnika ma bardzo dziwny kształt co powoduje nie prawidłową pracę silnika.
PWM programowy
PWM sprzętowy
Poniżej zamieszczam konfigurację timera2 oraz jego przerwanie:
Kod: C / C++
Konfiguracji sprzętowej (testowej) nie zamieszczam gdyż
działa dobrze co widać na generownym przebiegu.
Jeśli chodzi o połączenie elektroniczne to generowane impulsy podaję kolejno na
optotraik (6n137)-->driver (TC4420)-->mosfet (IRF540)
-->2x przekaźnik(obroty lewo-prawo)-->silnik
Nie zakładał bym tego tematu jeśli alternatywnie mógł bym użyć sprzętowej opcji, lecz nie ma takiej możliwości ponieważ, timer0 oraz timer1 wykorzystuje do zliczania impulsów z silnika w celu określenia położenia w jakim znajduje się śruba.