Skocz do zawartości

Sterowanie 5 serwami mikrokontrolerem AVR


Pomocna odpowiedź

Napisano

Witam

Jestem w trakcie budowy ramienia o 4 stopniach swobody i mam problem ze sterowaniem, a mianowicie ze znalezieniem odpowiedniego schematu sterowania pięcioma serwami.

Jeżeli ktoś mógłby mi pomóc bym był bardzo wdzięczny.

tu nie chodzi o schemat a o program.

schemat jest prosty bo potrzebujesz tylko 5 złącz goldpin 1x3.

Odnośnie programu to musisz powiedzieć w czym piszesz i jak dobrze Ci to idzie. Czy wiesz co to przerwanie? timer? itp

Szczerze mówiąc jestem dość zielony w temacie. Puki co jestem w trakcie tej łatwiejszej części, czyli konstrukcja mechaniczna. Teraz chciałem się skupić na skleceniu układu i na zasadzie prób i błędów pomału zacząć pisać program.

Znalazłem taki układ tylko na Atmedze 8 bitowej i zastanawiam się czy mógłbym go użyć?

http://www.fotoload.pl/index.php?id=5ae7467688c96dbc1bcc31364a275750140

__________

Komentarz dodany przez: Sabre

Takie podłączenie serw wymusza na Tobie napisanie programowanego pwm'u. Da się to bez przeszkód zrobić na Atmedze 8 ( i na każdym innym mikrokontrolerze z przynajmniej dwoma timerami).

Jeżeli chcesz sobie nieco uprościć zadanie znajdź mikrokontroler który będzie wyposażony w co najmniej 5 wyjść PWM ( w AVR zazwyczaj oznaczone jako OCxy). Wiem, że na pewno takie możliwości ma atmega 128 ale z pewnością to nie jedyny wybór.

Jeżeli byłbyś zainteresowany mam gdzieś napisany PWM programowy dla czterech kanałów na atmegę 32. Jest akurat przystosowany do sterowania serwami. I łatwo da się go poszerzyć o kolejne kanały.

Jeżeli chodzi o sterowanie serwami to należy generować sygnał PWM o długości trwania 0-2ms i okresie 20ms.

W takim przypadku jeden timer dba o odmierzanie okresu (20ms) a drugi zajmuje sie generowaniem odpowiednich wypełnień (od 0 - 2ms). Możliwe, że jest inny sposób, ale ja korzystam z tego, i się sprawdza.

A nie uważasz, że realizacja tego zadania na jednym timerze była by bardziej efektywna? Tym bardziej, że istnieją różne sposoby implementacji. Można na przykład 20ms podzielić na 8 części po 2.5ms i w przerwaniu zmieniać wyjścia odpowiednich portów. Innym sposobem mniej dokładnym ale za to umożliwiającym obsługę jeszcze większej ilości serw niezależnie jest stworzenie zmiennych inkrementowanych w przewraniu przepełnienia timera występującym np co 25us i obsługiwanych w głównej pętli programu.

Nie ma powodów dla których miałbym się z Tobą nie zgodzić. Różnych implementacji jest wiele. Ja kiedyś stworzyłem taką i do niej sięgam. Pewnie jakby się okazało, że brakuje mi jednego timera zastanawiałbym się nad zmianą koncepcji.

Natomiast decyzję którego z algorytmów użyje hriszna zostawmy samemu zainteresowanemu.

Jeżeli chcesz sobie nieco uprościć zadanie znajdź mikrokontroler który będzie wyposażony w co najmniej 5 wyjść PWM ( w AVR zazwyczaj oznaczone jako OCxy). Wiem, że na pewno takie możliwości ma atmega 128 ale z pewnością to nie jedyny wybór.

ATmega164 - polecam. Kiedyś kosztowały na TME 13zł netto i się skusiłem, teraz niestety podchodzą już pod 20.

Ja kiedyś napisałem taki programik w Bascomie na 5 serw, dyrektywie config servos , attiny2313

https://www.forbot.pl/forum/topics50/algorytm-do-obslugi-serw-config-servos-vt5788.htm#48066

Od razu mówię ,że nie wiem czy to zadziała w praktyce bo od początku roku szkolnego nie pracowałem nad swoim robotem (poczeka do ferii 🙂 )

[ Dodano: 15-11-2011, 23:03 ]

A w tym temacie :

https://www.forbot.pl/forum/topics49/konfiguracja-fusebitow-i-podlaczenie-do-isp-vt5786.htm

zamieściłem całkiem "ręcznie" napisany program bez poleceń config servos bezpośrednio używająć timerów . Niestety też nie wiem czy w praktyce to zadziała ,ale nic nie szkodzi spróbować.

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