
Cześć!
Ostatnio na łamach Elektrody często pojawiają się konstrukcje domowych frezarek i ploterów. Do niedawna sam pracowałem nad czymś podobnym, a jednak zupełnie innym. Prezentowana konstrukcja to tani ploter o polu roboczym A4 przeznaczony do rysowania prostych wykresów.
Notka dla profesjonalistów
Prezentowana tu maszynka nie ma zbyt wiele wspólnego z CNC. Projekt powstał w celach ćwiczeniowych - jako główny cel postawiłem sobie nauczenie się kilku rzeczy, o których nie miałbym pojęcia gdybym kupił gotowe sterowniki i podłączył je do LinuxCNC. Chciałem sprawdzić, czy za pomocą małego AVRa i najprostszych końcówek mocy da się coś narysować. Z tego względu proszę o potraktowanie tego projektu z przymrużeniem oka - sam widzę jak trudno doszukać się w nim sensu

Od początku...
Jestem uczniem technikum i cały poprzedni rok spędziłem na ręcznym rysowaniu wykresów - irytowało mnie to do tego stopnia, że w głowie zaczął rodzić się pomysł zbudowania prostej maszyny do tego zadania. W tym roku większość wykresów mogę już drukować, ale pomysł całkiem mi się spodobał i postanowiłem kontynuować prace.
Założenia projektowe
- prosta konstrukcja niewymagająca ciężkiego sprzętu
- wykorzystanie małych silników krokowych ze skanerów i innych zalegających w domu "przydasiów"
- zamiast dedykowanych kontrolerów silników krokowych - ULN2803 i L293DD
- sterowanie w oparciu o ATmega16
- własna aplikacja okienkowa po stronie komputera
- sprawdzenie, czy takie dziwadło w ogóle wypali

Część mechaniczna
Za podstawę posłużyła zwykła płyta meblowa. Do tego kilka części wyciętych z pleksi 3mm i prowadnice szufladowe. Silniki wydobyłem ze starych skanerów - wraz z przekładniami i paskami zębatymi. Dodatkowe części zostały wykonane z laminatu bez miedzi ze względu na prostotę obróbki i dobre właściwości mechaniczne.
Podnoszenie pisaka jest zrealizowane przy pomocy elektromagnesu, który razem z zasilaczem (dwa napięcia: 16V i 32V) wyciągnąłem ze starej drukarki.
Kartka leży na folii magnetycznej, a do dociskania jej służą małe magnesy neodymowe.





Sterownik
Do sterowania osiami użyłem ULN2803 i L293DD, elektromagnes zaś jest sterowany przy pomocy MOSFETa IRLML2502. W roli "mózgu" posłużyła ATmega16 z kwarcem 16MHz. Zajmuje się ona przesuwaniem i podnoszeniem pisaka, ale także obsługą krańcówek, komunikacją z komputerem i innymi mniej istotnymi sprawami typu obsługa LCD. Do komunikacji użyłem FT232RL z separacją przez transoptory TCMT1109. Na płytce znajdują się również 3 przyciski do komunikacji użytkownika z komputerem i przycisk resetu "na wszelki wypadek".
Poza oczywistymi funkcjami sterownika (podnoszenie/opuszczanie pisaka, przenoszenie na podaną pozycję, powrót na początek itp.) napisałem jeszcze kilka dodatkowych, np. rysowanie łuku, czy prostego tekstu. Nie zamierzam z nich korzystać, chciałem po prostu poćwiczyć.





Komunikacja z komputerem (mopsioCODE

Jak ćwiczyć, to po całości - postanowiłem napisać sobie własny protokół ^^. Działanie mopsioCODE jest proste - wysyłamy rozkaz i ewentualne argumenty, a potem czekamy na odpowiedź. Działa to podobnie do komend AT, z tym że używamy 1-bajtowego kodu rozkazu i 1-bajtowych argumentów. Ponadto protokół zapewnia informowanie o błędach (zarówno "transmisyjnych", jak i tych podczas wykonywania określonego rozkazu), a po stronie komputera zapewnia takie wygody jak ponowne wysyłanie ramki w przypadku błędu transmisji (kontrola CRC16).
Program sterujący na PC
Jest to mój debiut w Visual C# 2010 Express - taki bardziej rozbudowany hello world - więc wiele rozwiązań na pewno woła o pomstę do nieba. Niemniej ikony z GTK dodają programowi uroku...
Po włączeniu aplikacji można załadować dane dla wykresów, pozmieniać ich parametry i pobawić się osiami. Jest też kilka mniej istotnych opcji, jak ładowanie ustawień z wcześniej zapisanych plików, czy automatyczne obliczanie osi (niby działa, ale i tak często trzeba ręcznie poprawiać).
Kiedy okazało się, że ploter całkiem nieźle sobie radzi, dodałem osobne okno z nieco sensowniejszymi opcjami. Pozwalają one na bezpośrednią komunikację z ploterem (można też wykonywać "skrypty", czy parsować pliki HPGL, dzięki czemu można narysować jakieś kształty wcześniej zaprojektowane np. w Inkscape'ie).




Wykresiarka w akcji
Poniżej kilka fotek gotowego plotera, a także filmik prezentujący jego działanie. Narysowana płytka może nie jest świetnej jakości, ale przy takich odległościach wsiąkanie cienkopisu staje się istotne.



Koszty
1. sterownik: 44 zł
2. prowadnice: 15 zł
3. cięcie pleksi: 17 zł
4. podstawa: 14 zł
5. folia magnetyczna: 8 zł
6. zasilacz, silniki, elektromagnes, krańcówki: 20 zł (demontaż)
Sumarycznie 118 zł. Szukając oszczędności można pominąć wyświetlacz (służył do debugowania) i zastosować zewnętrzny konwerter USB-USART. Dlatego też wersja minimalistyczna to koszt jedynie 94 zł.
Podsumowanie
Ze względu na założenia, projekt był mocno utrudniony. Oto kilka najpoważniejszych problemów które napotkałem:
- dużo ciepła: silnik bipolarny ma dodatkowe rezystory 33Ohm/5W na cewkę, ale mimo sporych radiatorów z profili aluminiowych i tak dość mocno się grzeją. Aby zaoszczędzić na czasie (i ograniczyć ciepło), do dłuższych krzywych wykorzystuję specjalną komendę, która wyłącza protokół i przesyła koordynaty w trybie surowym.
- niedawno okazało się, że silniki wcale nie mają identycznej rozdzielczości.
- oś Y jest nieco elastyczna: wpływa to na obniżenie dokładności z daleka od silnika osi X, niestety nijak nie udało mi się tego poprawić.
- kąt między osiami X i Y nie jest idealnie prosty, mimo kilkukrotnego poprawiania.
- drukowanie siatki milimetrowej: papier milimetrowy ma źle wyskalowaną siatkę, a moja drukarka często przesuwa wydruk na kartce nawet o pół mm, co utrudnia oszukanie nauczyciela

Niedawno zastanawiałem się czy po ukończeniu Wykresiarki nie upgrade'ować jej do prostej wypalarki laserowej (dioda z DVD), ale teraz widzę że raczej nie ma to większego sensu. To co chciałem - osiągnąłem, ale nie ma po co rozwijać tego złomu. Niemniej jednak ploter działa nawet lepiej niż z początku przypuszczałem - spokojnie mogę rysować obrazki z Inkscape'a. Wiem że to nic w porównaniu do normalnych CNC, ale biorąc pod uwagę charakter projektu, i tak uważam go za niezły sukces.
W załączniku znajdują się:
- pliki sterownika (Eagle i kod w C)
- aplikacja na komputer (projekt Visual C# 2010 i plik wykonywalny)
Zdecydowanie odradzam przeglądanie projektu aplikacji, nawet nie chcę myśleć ile niedopuszczalnych technik zastosowałem

Dodatkowo załączam pliki mopsioCODE gotowe do użycia (dla komputera w Pythonie; dla AVR w C) wraz z "instrukcją obsługi" i przykładowym zastosowaniem. Zachęcam do zerknięcia - protokół całkiem nieźle radzi sobie w sytuacjach gdy trzeba na szybko przesłać prockowi kilka prostych rozkazów (a przy tym jest stosunkowo lekki).
Pozdrawiam
mopsiok
Cool? Ranking DIY