Dziś chciałbym przedstawić bardzo prosty sterownik 12 serwomechanizmów modelarskich oparty na mikrokontrolerze AtMega8 (AtMega8a).
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:
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.
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:
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:
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.
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.
Bedziesz robił hexapoda czy co?
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 🙂
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.
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.
Cześć,
Dzięki za info. Tak z innej beczki. Jesteś klerykiem/księdzem? Bo na avatarze widzę gustowną koloratkę?
Nie jestem żadnym klerykiem ani księdzem 🙂 Wręcz przeciwnie: http://www.mlodedrwale.pl/2008/06/04/apostazja/ A ten avatar ma już kilka lat i powstał dla żartu, dobrze że przypomniałeś – już zmieniłem.
Ps. Dziką świnią też nie jestem 😉
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ż?
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.
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 😉
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?
czy jest jakiś program na androida do obsługi tego cuda?