Skocz do zawartości

Pomocna odpowiedź

Napisano

Witam wszystkich,

Jestem początkującym użytkownikiem forum i mam moje pierwsze pytanie. Wybieram właśnie temat pracy inżynierskiej, której jednym z elementów będzie budowa i oprogramowanie serwosterownika do 6 serw opartego na ATmedze8. Pomysł jest taki:

  • - sterowanie do zrealizowania będzie pochodziło od modułu zewnętrzego (Raspberry PI). Poprzez UART będzie wysyłana odpowiednia ramka z danymi (numer serwa, prędkość oraz położenie)
  • - serwosterownik na podstawie komunikatu będzie sterował podłączonymi do niego serwami ustalając zadane położenie i idąc do tego położenia z zadaną prędkością
  • - serwosterownik ma być swego rodzaju kopią dostępnych na rynku (np. http://botland.com.pl/sterowniki-serw/67-sterownik-serw-usb-6-kanalowy.html)

Moje pytanie jest następujące: czy budowa i oprogramowanie takiego sterownika będzie czynnością pracochłonną i kłopotliwą? Czy sterowanie prędkością będzie trudne do wykonania programowego na ATmedze (zależy mi na niewielkiej prędkości - sterownik ma być wykorzystany później w manipulatorze). Proszę o opinie osoby, które wcześniej wykonywały takie rzeczy.

Pozdrawiam,
Tomek

Jak to ma być sterownik zwykłych serw modelarskich to jest to dosyć banalny temat dla doświadczonego elektronika / programisty. Do tego znajdziesz w sieci gotowe projekty tego typu.

Co innego jak nigdy nie zrobiłeś ani żadnej płytki, ani rozsądnego programu na mikrokontrolery... wtedy pracy będzie sporo (albo podłączysz się pod zasoby akademika 😉 )

Na moim sterowniku serw (12 szt.) mam 2 uC ATmega88. Jeden komunikuje się z PC za pomocą bluetooth (w zasadzie to UART). PC oblicza zadanie odwrotne kinematyki (niestety uC nie dawał rady) i komponuje odpowiednią ramkę danych do wysłania. I uC dekomponuje ramkę danych (oraz kilka innych rzeczy) i wysyła po SPI gotowe dane (nr nogi i położenie orczyków dla 3 serw) do II uC. II uC wykorzystuje przerwania (nie korzystam ze sprzętowego PWM), aby wygenerować odpowiednie impulsy dla poszczególnych serw.

Pierwsze przerwanie generuje impuls co 20 ms, wszystkie wyjścia dla serw ustawiane są w logiczne 1, a następnie drugie przerwanie jest wywoływane co 0,01 ms i sprawdzane jest czy odpowiednie serwa mają już odpowiednio długi impuls sterujący (od 1 ms do 2 ms), jeśli tak to ustawia wyjścia na logiczne 0. Ergo, wszystkie serwa są wysterowane jednocześnie. Ot, cała filozofia 🙂

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...