Witam,
Od jakiegoś czasu próbuję się uporać z sterownikiem dla mojego serwa. Sercem układu jest ATmega328. Do sterowania generuję sygnał PWM na jednym z wyjść mojej atmegi, po ustawieniu wszystkich bitów konfiguracyjnych dla PWM sprawdzilem wyjscie przy pomocy analizatora logicznego. Pomiary wykazały, że na wyjściu otrzymuję interesujące mnie szerokości impulsu dla PWM.
W momencie gdy na sztywno przypisuje do wartość do rejestru OCR1A to serwo działa poprawnie, problem pojawia się w momencie gdy chcę serwo obsłużyć przy pomocy przycisku.
Moim przyciskiem jest wyjście z przekaźnika. Konkretniej mówiąc przez na wejście przekaźnika podaję 5V w momencie zwarcia styków na wyjściu pokazuje się 5V które następnie przez rezystor dopływa do portu mojego procesora. W skrórcie program ma wyglądać następująco:
Inicjacja PWM
pętla while
Jeżeli na porcie mamy 5V to wpisz do OCR1A wartość np. 150.
Jeśli na porcie nie ma 5V to wpisz do OCR1A wartość np. 62.
I przy tej konfiguracji dzieje się coś dziwnego. Otóż serwo przy zwarciu 5V do portu obraca się i pozostaje w tej pozycji, natomiast w momencie gdy rozwieramy połączenie serwo wraca do pozycji startowej ale po pewnym czasie, a nie jak sądzę instantowo.
Kolejna rzecz to bardzo delikatne drgania serwa prawie nie widoczne.
Jest jeszcze jedno, czasami serwo lubi się "obudzić" to znaczy ze niby jest w stanie spoczynku po czym budzi się samo z siebie obraca się prawo lewo i znow zasypia...
I tu mam pytanie do was... jaka może być przyczyna zarówno tego budzenia się jak i dziwnego zachowaia się w momencie zwarcia portu do 5V??
