Skocz do zawartości

Sterownik serw


deshipu

Pomocna odpowiedź

Kiedy zaczynałem swoją przygodę z robotami, jednym z pierwszych problemów, z którym się zetknąłem było podłączenie serwomechanizmów do mikrokontrolera. Wypróbowałem wówczas różne dostępne rozwiązania (mocno nadwyrężając budżet przeznaczony na to hobby), ale nie znalazłem nic, co w pełni by mnie zadowoliło. Zatem stworzyłem z tego, co miałem pod ręką, własną płytkę do serw i opisałem dokładnie cały proces na swojej stronie: http://sheep.art.pl/Servo%20Board%20for%20Pro%20Mini

Od tamtego czasu trochę się nauczyłem, zrobiłem kilka własnych płytek i użyłem wiele cudzych. Postanowiłem wrócić do tego projektu, ale zrobić z niego dedykowany kontroler do serw, sterowany przez I²C. Jaki to ma sens, skoro istnieje wiele gotowych rozwiązań, takich jak te oferowane przez Pololu i Adafruit? Ano taki, że są one moim zdaniem znacznie przekombinowane i znacznie za drogie. Z drugiej strony generowanie sygnału dla serw bezpośrednio na pinach swojego głównego mikrokontrolera lub komputera może się stać uciążliwe, więc oddelegowanie tego zadania do osobnego komponentu może być wygodne -- szczególnie, gdy dodatkowo łatwo jest do niego te serwa podłączyć i nie zajmuje on za dużo miejsca.

No więc do rzeczy. Arduino Pro Mini za 6zł, płytka drukowana i trochę pinów się znajdą, kod za darmo. Od kopa możemy podłączyć 12 serw, bo tyle obsługuje na raz biblioteka Arduino. Ale można lepiej. Przystosowałem bibliotekę napisaną dla pewnego hexapoda (https://hackaday.io/project/770) i mamy serwowe PWM na wszystkich dostępnych nóżkach -- to jest na osiemnastu, bo dwie potrzebujemy dla I²C. Kod można oglądać na https://bitbucket.org/thesheep/controller/src

Następny krok, to porządniejsza płytka. Chcę zachować dotychczasowe małe wymiary, ale przygotować płytkę porządnie i zamówić u Chińczyków. Na razie mam coś takiego:

Komunikacja z płytką jest bardzo prosta. Mamy 18 rejestrów, każdy odpowiada jednemu serwu. Wysyłamy do nich dwubajtowe szerokości impulsu w mikrosekundach. Możemy też wysłać w jednym komunikacie tych pozycji więcej -- do 16 na raz -- wówczas trafią one do kolejnych serw. Dla przykładu, w Pythonie na Raspberry Pi może to wyglądać tak:

import struct
import smbus

bus = smbus.SMBus(1)
address = 0x09
servo = 4
bus.write_i2c_block_data(address, servo, [ord(c) for c in struct.pack("<H", 1500)])
bus.write_i2c_block_data(address, servo, [ord(c) for c in struct.pack("<HHH", 1500, 1000, 2400)])

No i to tyle. Mam nadzieję, że komuś się przyda.

  • Lubię! 1
Link do komentarza
Share on other sites

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

W międzyczasie płytki dotarły i poskładałem z nich jeden sterownik. Niestety w projekcie płytki zrobiłem nieco za małe otwory na piny, więc trzeba było użyć nieco siły. Ze względu na piętrową budowę całości, musiałem też użyć pinów nieco dłuższych niż standardowe. Efekt końcowy:

Testowanie przy pomocy PyBoard-a:

Kontroler trafił już do opisywanego tu wcześniej hexapoda Henk, zastępując nieco większy rozmiarami kontroler Maestro, który był tam dotychczas.

Link do komentarza
Share on other sites

Różnie, ta była robiona w DirtyPCBs, z tego co pamiętam. Mniejsze płytki w małych ilościach robię w OSHPark, bo wychodzi to taniej, tylko na przesyłkę z USA się czeka dłużej niż z Chin. A ogólnie, to polecam http://pcbshopper.com -- taka wyszukiwarka do firm robiących płytki, wpisuje się parametry swoich płytek i ona znajduje gdzie będzie najtaniej.

[ Dodano: 23-01-2017, 15:28 ]

Swoją drogą, ten projekt troszkę dopracowałem, teraz obsługuje 20 kanałów na tańszej ATmedze8, na dedykowanej płytce:

Do tego się stackuje, więc można obsługiwać do 80 serw na raz (bo dałem tylko dwie zworki do wyboru adresu, jak zmieniać adres w kodzie, to można i więcej).

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

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!

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