Skocz do zawartości

Kontroler serw na PIC


Pomocna odpowiedź

Poniższy artykuł adresowany jest do pasjonatów robotyki, nie mających wcześniej przygód z mikrokontrolerami PIC. Powstał w oparciu o moje doświadczenia i książkę „Build your own humanoid robots”, autor Karl Williams. W artykule przedstawię, jak łatwo zbudować kontroler serw modelarskich pracujący na uC PIC16F627 (dla systemu Windows).

Dlaczego wybrałem PIC’a i dlaczego nie kupiłem gotowego sterownika? Po pierwsze chciałem zacząć programować układy PIC. Po drugie chciałem stosować dość duże serwa, a ścieżki w gotowych sterownikach mogłyby tego nie wytrzymać.

Płytka testowa

Zaprojektowana w programie Eagle. Punktem centralnym jest PIC16F627, z którego wychodzi 8 sygnałów sterujących do serw, linie RxD i TxD do układu MAX232, trzy diody testowe; dodatkowo na płytce złącze kątowe DB9 (RS-232), dwa gniazda zasilające, kwarc 4 MHz wraz z kondensatorami oraz dioda sygnalizujące podłączenie zasilania. Czemu w układzie nie ma stabilizatora napięcia i czemu masy dwóch gniazd zasilających nie są połączone? Do zasilania układu używam zasilacza komputerowego ATX, które daje stabilne napięcia 5.15 V. Nawet pod obciążeniem napięcie spada nieznacznie. Wspólna masa jest wewnątrz zasilacza. Oddzielne zasilanie dla serw i elektroniki ze względu na różną szerokość ścieżek i oddzielenie obu tych obwodów.

Płytkę robiłem w firmie Satland Prototype. Ścieżek nie prowadzę ręcznie, ze względu na brak czasu. Wciskam guzik i Eaglowy Autorouter robi swoje.

Po pewnym czasie płytkę odebrałem, zakupiłem potrzebne elementy, wlutowałem i mogłem przejść do następnego etapu.

Zasilanie

Temat zasilaczy ATX był już nie raz wałkowany. Chciałbym tylko przestrzec przed oszczędnością przy wyborze ATX’a. Planowałem używać serw o większym zapotrzebowaniu na prąd, np. Tower Pro 9805. Otrzymałem od kolegi zasilacz ATX firmy L&C 400 Wat. Napisali, że na linii 5V wytrzyma 30 amper. Guzik prawda, już przy machaniu jednym serwem z obciążeniem zasilacz się wyłączał. Wyjąłem ze starego komputera zasilacz jakieś nieznanej marki i wyłączał się przy dwóch serwach. Zorganizowałem trzeci zasilacz, który niestety nie chciał się uruchomić.

Krótko mówiąc wkurzyłem się i postanowiłem zakupić lepszy sprzęt. Jestem przekonany, że warto mądrze zainwestować. Wybór troszkę przypadkowo padł na Chieftec CFT-560A-12C, moc 560 Wat. Wyczytałem, że to już całkiem niezły sprzęt. Użytkownik KAR-COM z allegro.pl sprzedaje nowe po 125 zł bez kabli. Komplet wtyczek do ATX’a w sklepie elektronicznym to koszt paru złotych.

Patrząc na testy nieźle trzyma napięcie, nie potrzeba stosować żadnych stabilizatorów, a do wyboru mamy 3.3, 5.0, 12.0, -5.0 i -12.0 V. By zasilacz działał wystarczy zewrzeć pin /PS_ON (zielony przewód) do masy – dla złącza ATX12V 24 pin jest to pin nr 16, dla ATX12V 20 pin jest to pin nr 14. Dokładny rozkład przewodów znajdziecie w poniższych linkach:

Rozkład przewodów, link 1

Rozkład przewodów, link 2

test i dokładne parametry Chieftec CFT-560A-12C opisane są na stronie benchmark.pl

Programator

Po dłuższej analizie zdecydowałem się na zakup gotowego programatora. Wybrałem PicProg firmy Telwis. Daje możliwość programowania PIC’ów w różnych obudowach oraz dodatkowo posiada złącze ICSP. Link do strony producenta.

Obsługa programatora jest bardzo prosta i omówiona w manualu – znajduje się na płytce CD dołączonej do programatora. Do obsługi programatora zdecydowałem się na darmowy program IC-Prog.

Środowisko

Tutaj zdecydowanie poleciłbym darmowe MPLAB IDE, do pobrania ze strony producenta. Bardzo intuicyjne, jeśli ktoś wcześniej tworzył np. w AVR Studio nie będzie miał żadnych problemów z obsługą programu.

Język i kompilacja

Tutaj chciałbym zaznaczyć, iż nie lubię programować i traktuję to jako zło konieczne (niestety bardzo potrzebne!). Szperając w Internecie za jakimś mało skomplikowanym językiem, natknąłem się na PicBasic Pro. Ponieważ kiedyś programowałem moduły Basic Stamp 2 w jakimś prostym języku, miałem wrażenie że i tu będzie podobnie. Podczas instalacji kompilatora PicBasic Pro Compiler można wybrać opcję, by doinstalował coś do MPLAB IDE, po czym możemy pisać w MPLAB i kompilować za pomocą PicBasic Pro. W wyniku tego otrzymujemy m.in. plik z rozszerzeniem *.hex. Przyda się nam przy zgrywaniu programu na PIC’a.

Program

Pisząc program bazowałem na materiałach z książki o której wspomniałem na początku. Nie zamieszczam swojego kodu (przerobiłem ten z książki), gdyż mam obawy, iż mogłoby to naruszyć czyjeś prawa autorskie. Odsyłam jednak do strony, na której znajdują się materiały dodatkowe do książki. Znajdziecie tam Chapter 5 w którym znajduje się proponowany przez nich program. Dodatkowo warto zajrzeć do manuala PicBasicu. Na podstawie tego bez trudu zmodyfikujecie program do swoich potrzeb. Należy zmienić ustawienia wejść/wyjść uC, wyjść uC na serwa oraz część dotyczącą wyboru poruszanego serwa.

MAX232

W początkowej fazie projektu zakładałem komunikację za pomocą portu szeregowego i układu MAX232. Okazało się, że pisząc w PicBasic Pro taki układ nie jest wymagany i ostatecznie go wylutowałem. Zgodnie z dokumentacją pin nr 3 złącza DB9 należy podłączyć przez rezystor 22k z dowolną nóżką uC, natomiast pin nr 2 złącza DB9 przez rezystor 1k również z dowolną nóżką uC. Informacje w manualu.

Zaprogramowanie PIC’a

Zakładam, że płytka jest już gotowa (bez układu MAX232 i z opisanymi rezystorami), dysponujemy programatorem i skompilowaliśmy program w MPLAB. Wkładamy PIC’a 16F627 do programatora, ładujemy odpowiedni plik z rozszerzeniem *.hex, dokonujemy identyfikacji, czyścimy pamięć i programujemy układ. Przekładamy PIC’a do płytki testowej i podłączamy jedno serwo do testu. Łączymy płytkę z komputerem za pomocą kabla RS232 i podłączamy zasilanie.

Ostatni krok

Wspominałem już o stronie z dodatkowymi materiałami do książki. Znajdziemy tam jeszcze jeden bardzo przydatny program. W dziale Chapter 6 odnajdujemy plik ssc-installation.zip, co pozwoli nam na zainstalowanie programu do kontroli 8 serw z poziomu komputera za pomocą łącza szeregowego. Po instalacji wystarczy uruchomić program i wybrać odpowiedni port COM. (ewentualnie ustawić te same parametry transmisji danych w programie i w ustawieniach łącza szeregowego w Menadżerze urządzeń dla Windows). Wszystko powinno działać!

Słowem zakończenia

Płytkę testową o której pisałem można wytrawić samemu, przez co koszt układu do kontroli serw jest naprawdę niewielki. Wystarczy trochę pracy i chęci. Serwa modelarskie w szczególności typu Mystery, Tower Pro itp. są w miarę niezawodne i tanie, a co najważniejsze w połączeniu z układem sterowania dają ogromne możliwości na konstruowanie ciekawych robotów.

Link to post
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.

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.