Witam serdecznie.
Borykam się z problemem sterowania serwem (TGe9).Atmega8, język C.
Pracuję na WinAVR. W makefile jak i podczas kompilacji oprogramowanie mówi, że FCPU wynosi 1MGhz, czyli ICR1 jest wyliczone prawidłowo. Problem polega na tym iż serwo bardzo skokowo idzie do zadanej pozycji. Powolutku małymi szarpnięciami. Na początku myślałem, że mam złą długość sygnału, ale na forum znalazłem wątek z którego wynika, że użytkownikowi właśnie na atmedze 8 taki kod programu chodzi bez problemu. Co najdziwniejsze kiedy ręcznie wychyle je w lewo i daje zasilanie na procesor , idzie ono szybciej do zadanej pozycji niz kiedy wychyle je w prawo. Mimo wszystko obie drogi są wolne i skokowe. Kiedy np zmienie wartość OCR1A na 1000, przyjmuje on inną pozycję, czyli jakby trochę działa prawidłowo, ale niestety trochę nie
Serwo zasilam z baterii 9v puszczonej przez stabilizator 7505, masa wspólna dla mikrokontrolera i serwomechanizmu.
Będę bardzo wdzięczny za ewentualnie uwagi/propozycje rozwiązania problemu.
Borykam się z problemem sterowania serwem (TGe9).Atmega8, język C.
Pracuję na WinAVR. W makefile jak i podczas kompilacji oprogramowanie mówi, że FCPU wynosi 1MGhz, czyli ICR1 jest wyliczone prawidłowo. Problem polega na tym iż serwo bardzo skokowo idzie do zadanej pozycji. Powolutku małymi szarpnięciami. Na początku myślałem, że mam złą długość sygnału, ale na forum znalazłem wątek z którego wynika, że użytkownikowi właśnie na atmedze 8 taki kod programu chodzi bez problemu. Co najdziwniejsze kiedy ręcznie wychyle je w lewo i daje zasilanie na procesor , idzie ono szybciej do zadanej pozycji niz kiedy wychyle je w prawo. Mimo wszystko obie drogi są wolne i skokowe. Kiedy np zmienie wartość OCR1A na 1000, przyjmuje on inną pozycję, czyli jakby trochę działa prawidłowo, ale niestety trochę nie
Serwo zasilam z baterii 9v puszczonej przez stabilizator 7505, masa wspólna dla mikrokontrolera i serwomechanizmu.
Będę bardzo wdzięczny za ewentualnie uwagi/propozycje rozwiązania problemu.
Kod: C / C++
