Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 27 sie 2026, o 12:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 1 lut 2017, o 23:48 
Offline
Użytkownik

Dołączył(a): 31 mar 2014
Posty: 43
Pomógł: 0

Witam, mam pytanie odnośnie sterowania serwo tower pro sg90 mini. W datasheet jest informacja o tym, że steruje się sygnałem o wypelnieniu 1-2ms, którego okres wynosi 20ms (50 Hz ). Po napisaniu ponizszego kodu okazuje się ( lub pomylilem sie w obliczeniach ), ze wypelnienie ktorym steruje się serwo wynosi od 1 do 5 ms.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ze względu na budowe projektu nie moge uzyc timera 16 bitowego, wiec sygnal PWM generowany jest programowo poprzez timer 8 bitowy. Powyzszy kod przedstawia inicjalizację timera.Tryb CTC, układ taktowany z częstotliwością 8 Mhz, preskaler ustawiony na 8 , wartość rejestru OCR0 równa 50. 8 MHz / 8 / (49+1) daje częstotliwość generowania przerwań 20 kHz. Aby osiagnac wymagany okres 50 Hz, napisalem programowy dzielnik czestotliwosci.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


zmienna inter inkrementuje sie z kazdym wywolaniem przerwania az do wartosci 400. 20 kHz / 400 = 50 Hz. Wyjscia PB1 oraz PB2 ustawianesą przy wartosci zmiennej inter rownej 0 , a zerowane w zaleznosci od tego co wpisze do zmiennej time i time2 ( co tworzy wypelnienie sygnalu ). Zatem jesli wszystko policzylem poprawnie to powinienem sterowac serwomechanizmem w zakresie wartosci zmiennej time i time 2 od 10 do 20. Tymczasem wartość 30 oznacza ustawienie sie serwomechanizmu na srodku, 10 maksymalnie w lewo, 50 maksymalnie w prawo.
Prosiłbym o weryfikację kodu
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2017, o 10:34 
Offline
Użytkownik

Dołączył(a): 08 mar 2015
Posty: 60
Pomógł: 5

Po pierwsze jaki to mikrokontroler? Po drugie zmienna inter jest 16 bitowa? Jeśli tak to może być tak, że kod w przerwaniu jest tak długo wykonywany, że przerwanie nie jest wykonywane z częstotliwością 20k Hz. Druga kwestia to dlaczego 2,10,20? Przecież współczynnik wypełnienia masz od 1 ms do 2 ms przy okresie 20 ms, czyli od 5% do 10%, czyli dla zmiennej inter która maksymalnie osiąga wartość 400, będzie od 20 do 40.

_________________
Http://anonimg3.comxa.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2017, o 12:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1041
Lokalizacja: Trójmiasto
Pomógł: 190

Ostatnio bawiłem się tymi serwami (2 egzemplarze z dwóch różnych źródeł) i też patrzyłem na datascheet który krąży po necie. Niestety ten dokument mija się z prawdą. Zakres impulsów to serwo ma tak jak większość od 0,6ms do 2,4ms (a nie tak jak w nocie 1ms do 2ms) Co do częstotliwości to nie jest to rygorystyczna wartość. Ja testowałem na atmedze 32A z timerem0 8bitowym ustawionym w tryb fast PWM którego częstotliwość była w granicy 30Hz (f procka 8MHz, wzór na f_PWM = fprocka/(256 * preskaler). U mnie preskaler był na 1024) i oba serwa działały bez problemu.

ostr napisał(a):
Zatem jesli wszystko policzylem poprawnie to powinienem sterowac serwomechanizmem w zakresie wartosci zmiennej time i time 2 od 10 do 20. Tymczasem wartość 30 oznacza ustawienie sie serwomechanizmu na srodku, 10 maksymalnie w lewo, 50 maksymalnie w prawo.
Prosiłbym o weryfikację kodu
I działa Ci to właściwie. Przerwanie wywołuje się co 0,05ms (1/20KHz=0,00005s) czyli tak jak pisałem max wychylenie w jedną to ok 0,6ms a u Ciebie to 0,05ms*10 daje 0,5ms; max wychylenie w drugą stronę to ok 2,4ms a u Ciebie 0,05*50 daje 2,5ms czyli wszystko w jak najlepszym porządku, nieco tylko rozciągnąłeś zakres co z uwagi na delikatny potencjometr wewnątrz serwa lepiej zawęzić.



Ostatnio edytowano 2 lut 2017, o 12:39 przez xentis, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2017, o 12:38 
Offline
Użytkownik

Dołączył(a): 31 mar 2014
Posty: 43
Pomógł: 0

racja, nie wiem czemu wbiłlem sobie do głowy te wartości, dziękuję bardzo



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO