mlodedrwale - arcyciekawy i przewspaniały blog o wszystkim

DIY Wszystkie

Dziś chciałbym przedstawić bardzo prosty sterownik 12 serwomechanizmów modelarskich oparty na mikrokontrolerze AtMega8 (AtMega8a).

Sterownik serwomechanizmow bluetooth

 

Głównym założeniem projektu była jego maksymalna prostota: jak najmniej części i prosta do wykonania płytka drukowana. Sterownik odbiera sygnały podawane na jego port USART, parametry portu to:  9600 baud, jeden bit stopu oraz brak bitu parzystości.

Schemat jest bardzo prosty, składa się dosłownie z paru elementów:

Schemat sterownika serwomechanizmów

 

Płytka drukowana ma wymiary 30x55mm i jest raczej prosta do wykonania samodzielnie, chociaż zawiera jedną ścieżkę przechodzącą między nogami procesora. Płytkę zaprojektowałem tak, by wejście sygnałów sterujących oraz linie zasilające były pinowo zgodne z tanim modułem bluetooth jaki posiadam.

plytka drukowana

 

Mimo że płytka jest prosta do wykonania, to postanowiłem zlecić jej wykonanie firmie która zajmuje się tym profesjonalnie (chciałem sprawdzić jakość wykonania zanim złożę większe zamówienie 😀 ). Płytka wyszła całkiem fajnie:

Płytka PCB sterownika serwomechanizmów

 

Niestety nie ustrzegłem się błędów, jak widać jedna linia goldpinów ma za małe otwory – użyłem biblioteki eagla ze zmniejszonymi otworami, której do tej pory używałem przy robieniu płytek termotransferem (łatwiej wycentrować wiertło przy małym otworze wytrawionym w miedzi). Na szczęście bez problemu dało się rozwiercić te otwory wiertłem 0,9mm, tak że prawie nie ma śladu, że wcześniej było coś nie tak! Dzięki soldermasce lutowanie poszło bez najmniejszych problemów:

Polutowana Płytka Sterownika

Sterowanie serwomechanizmem odbywa się w standardowy sposób: co ok 20 ms wysyłany jest do każdego serwa impuls o długości od 0,5 do 2,5 ms – 0,5ms odpowiada skrajnemu lewemu położeniu serwa, 1,5 ms środkowemu a 2,5 ms prawemu. Aby sterować serwem musimy za pomocą portu RS232 (z innego mikrokontrolera, przejściówki USB-RS232, lub jak u mnie przez Bluetooth) przesłać do urządzenia trzybajtową ramkę:

  • pierwszy bajt to zawsze 170
  • drugi bajt to kod ascii wielkiej litery od A do L odpowiadającej serwu które chcemy przestawić
  • trzeci bajt – pozycja – dla każdego serwa możliwych jest 256  pozycji 0d 0,5 ms do 2,5 ms, z krokiem co 8µs

Na płytce nie ma wyprowadzonego złącza do programowania – przed wlutowaniem atmegi wgrałem do niej bootloader dzięki czemu udało się jeszcze bardziej uprościć płytkę. Mikrokontroler korzysta z wewnętrznego oscylatora 8mhz, fusebity ustawiłem następująco: Lfuse: 0x A4, Hfuse 0xDC.

Polutowany sterownik serwomechanizmów

 

Jedyny przycisk na płytce to reset: pomocny przy programowaniu za pomocą bootloadera i w czasie testowania nowszych wersji oprogramowania, które lubi się podczas testów zawiesić!

W załączniku udostępniam pełen kod źródłowy sterownika, skompilowany plik hex oraz schemat i płytkę w Eagle.

 

Ściągnij projekt!
Download project!



Liczba komentarzy: 11

  1. rysiek pisze:

    Bedziesz robił hexapoda czy co?

    • mlodedrwale pisze:

      Hej, hexapoda raczej nie będę robił, potrzebowałem sterownika do kilku serw, ale żeby przy następnej okazji nie musieć projektować nowego dla większej ilości postanowiłem od razu zrobić porządny :)

  2. Rysiek pisze:

    Zaczynam dopiero w Eaglu robić, bo do tej pory rysowałem flamastrem + wytrawianie. Twoje są takie milusie :)
    Nigdy nie zamawiałem płytek PCB w firmie. Jak to wygląda w praktyce?
    Nie przeganiają amatorów? Można wysłać im kilka różnych płytek do zrobienia jako całość, a potem pociąć samemu czy wszystkie muszą być takie same? Chcę zredukować koszty przygotowania.

    • mlodedrwale pisze:

      Cześć!
      Ja zamówiłem w firmie Merkar i nie było żadnych problemów. Wszystko przebiegło przyjemnie i miło. Co do kilku płytek przy jednym zamówieniu, to niestety nie wiem, wg. informacji z elektrody da się tak zamówić, ale warto by się jeszcze upewnić! (jeśli byś się dowiadywał, to daj znać co odpowiedzieli).

      AAA, oni przyjmują płytkę w eaglu, więc odpada eksportowanie do gerberów, postscriptów itp.

  3. Rysiek pisze:

    Cześć,
    Dzięki za info. Tak z innej beczki. Jesteś klerykiem/księdzem? Bo na avatarze widzę gustowną koloratkę?

  4. ninnu pisze:

    Witam. W jaki sposób wysyłasz komendy do sterownika? Chodzi mi o to czy masz też napisany program pod telefon/komputer którym będziesz to sterował? Jak wygląda kwestia sterowania przez rs232 (jakim programem w miarę graficznym) :)

    Projekt świetny. Zazdroszczę :)
    Co do samych płytek, ile wyszło za sztukę(przy jakiej ilości). Może masz 2-3 sztuki na sprzedaż?

    • mlodedrwale pisze:

      Testowo wysyłałem programem który miał suwaki, niestety program nie nadaje się do publikacji, przynajmniej na razie.
      Te moduły z założenia mają być częścią większej całości i dlatego nie mam programu sterującego do nich.

    • ninnu pisze:

      A czy są jakieś programy do obsługi tego? Najlepiej na telefon jeśli chodzi o bluetooth, no albo na początek przez rs-232 😉

  5. szalonyszymek pisze:

    Chce powielić projekt, i mam problem z transmisją danych do atmegi32 (z tego co mi wiadomo rejestry te same więc nic się nie powinno „gryźć”). Używam programu Terminal v1.91b by Br@y. Po wysłaniu danych serwa nie reagują. W polu wpisuje przykładowo 170F200 po czym klikam ->Send. Transmisja z komputera działa bo napisałem sobie program który wyświetla na lcd całą ramkę. Z tego co mi się wydaje to ten terminal całość wysyła jako ASCII, może tu leży problem? Może jednak udostępnisz twój program żebym mógł sprawdzić czy z niego ruszy?

  6. lyzwa02 pisze:

    czy jest jakiś program na androida do obsługi tego cuda?

Dodaj komentarz