Skocz do zawartości

Sterowanie 5 serwami mikrokontrolerem AVR


hriszna

Pomocna odpowiedź

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

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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.

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

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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.