Skocz do zawartości

Serwosterownik na ATmega8


tbarczyk

Pomocna odpowiedź

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

Link do komentarza
Share on other sites

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 😉 )

Link do komentarza
Share on other sites

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 🙂

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.