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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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