Podwieszany ploter z Raspberry PI

Podwieszany ploter z Raspberry PI
Pobierz PDF Download icon

Wydruk dużych schematów i grafik wektorowych nierzadko stanowi problem. Zazwyczaj stosuje się w tym celu plotery, których koszt zakupu wcale nie jest mały. Ploter można też zbudować samodzielnie, względnie niedużym kosztem, np. w oparciu o Raspberry PI. Co prawda nie będzie on miał precyzji urządzeń profesjonalnych, a tempo pracy będzie raczej powolne, ale po udoskonaleniu może okazać się przydatnym narzędziem. W artykule prezentujemy ploter tego typu, opracowany przez Norberta Heinza z Niemiec.

Autor projektu od lat tworzy maszyny CNC i podobne urządzenia własnej konstrukcji. Jego projekty oparte są na długoletnim doświadczeniu oraz służą do opracowywania kolejnych urządzeń. V plotter jest jedną z nowszych maszyn i wykorzystuje komputer Raspberry PI. Ponadto, całość, choć ma względnie nieduże wymiary, pozwala na rysowanie na teoretycznie dowolnie dużych powierzchniach. Wynika to z faktu, że głowica plotera wisi na dwóch linkach i rysuje po kartkach umieszczonych pionowo, na tablicy ze sklejki lub drewna. Wygląd tego nietypowego urządzenia pokazano na fotografii 1.

Elektryka i mechanika

Od strony elektrycznej, V plotter składa się z jednego Raspberry PI, dwóch silników krokowych oraz sterujących nimi dwóch podwójnych modułów z mostkiem H, a także z dodatkowego, małego serwonapędu, sterowanego bezpośrednio z GPIO komputerka. Sposób wykonania połączeń elektrycznych został przedstawiony na rysunku 2.

Silniki krokowe są przymocowane do kół zębatych, które służą jako przekładnie. Koła przytwierdzone są do tablicy z użyciem łożysk kulkowych. Wewnętrzny pierścień łożyska nie obraca się i sztywno trzyma tablicy. Zewnętrzny jest przyklejony do koła zębatego i obraca się razem z nim. Na zewnętrzny pierścień łożyska jednego koła zębatego przy prawym silniku i odpowiadającego mu łożyska koła przy lewym silniku nawinięte są linki. Drugi koniec linek jest przymocowany do głowicy drukującej. Głowica zawiera pisak oraz lekki serwonapęd, podłączony luźno zwisającym przewodem do GPIO Raspberry PI. Pisak jest zamontowany za pomocą uchwytu, do metalowej, perforowanej blaszki. Blaszka przyczepiona jest w jednym punkcie do akrylowej płytki. Miniaturowy serwonapęd jest zamontowany również na blaszce, ale w taki sposób, by jego ruch powodował wyginanie się metalu i odchylanie pisaka od akrylowej płytki. Otwór w płytce sprawia, że jeśli pisak jest do niej przysunięty, w praktyce dotyka końcówką kartki i może po niej rysować. Wygięcie serwonapędem blaszki odsuwa pisak od kartki, co pozwala na przesuwanie głowicy po papierze bez pozostawiania śladu.

Kluczowe było użycie odpowiednio małego serwonapędu, by nie uczynić głowicy zbyt ciężką. Ważne jest też by sensownie poprowadzić przewody, tak by nie plątały się. Użycie płytki akrylowej pozwala też stabilniej trzymać pisak względem kartki. Dzięki niej pisak nie obraca się w żadnej płaszczyźnie, ani nie buja – tarcie kartki o płytkę szybko tłumi taki ruch.

Sam komputer jest umieszczony w górnej części plotera i przymocowany do tablicy, mniej więcej na wysokości silników krokowych. Moduły mostków umieszczone są pomiędzy Raspberry PI a silnikami. Nawijanie i rozwijanie linek za pomocą silników powoduje ruch głowicy względem kartki. Wykorzystywana jest przy tym grawitacja – Równomierne i równoczesne rozwijanie linek powoduje opuszczanie głowicy pionowo w dół, a ich nawijanie – ruch do góry. Jeśli rozwijana jest tylko jedna linka, głowica opuszcza się po łuku okręgu o promieniu równym aktualnej długości drugiej linki i środki w punkcie drugiej osi. Oczywiście, osie kół na które nawijane są linki muszą znajdować się na skrajach kartki, gdyż ograniczają obszar wydruku od lewej i prawej.

Matematyka

Obliczenie tego, jak przekłada się pozycja silników na pozycję pisaka wymaga zastosowania wielu obliczeń matematycznych. Po pierwsze, należy obliczyć, jak przekłada się długość rozwiniętych linek na pozycję względem kartki. Sumaryczna długość rozwiniętych linek nie może być mniejsza od odległości pomiędzy osiami kół, na których linki są nawijane. Jeśli długości rozwiniętych linek są sobie równe, głowica jest umieszczona po środku, pomiędzy osiami, a pozycja w pionie zależy od sumarycznej długości rozwiniętych linek.

Budując samodzielnie ploter tego typu trzeba dokładnie określić odległość pomiędzy serwonapędami (a dokładniej, pomiędzy punktami, z których wyprowadzone są linki – warto je precyzyjnie ustalić, np. poprzez użycie dodatkowych, małych, metalowych oczek). Autor stworzył oprogramowanie w taki sposób, że po zamontowaniu plotera ustala się punkt startowy głowicy, będący lewym, górnym rogiem zadrukowywanej kartki. Współrzędne tego punktu, wyrażone w milimetrach, wraz z odległością pomiędzy punktami wyprowadzeń linek, należy podać jako parametry programu. Konieczne jest też sprawdzenie, jak przy zastosowanych kołach zębatych i silnikach krokowych, jeden krok przekłada się na ruch głowicy. W tym celu użytkownik musi najpierw zmierzyć odległość w linii prostej głowicy w pozycji startowej od punktu wyprowadzenia jednego z silników, a następnie wykonać nim 2000 kroków. Gdy głowica osiągnie nową pozycję, następuje kolejny pomiar jej odległości od punktu wyprowadzenia linki tego silnika. Różnica w pomiędzy odległością końcową a początkowo to długość, na jaką wysuwana jest linka po 2000 krokach. Program wymaga podania ile kroków przypada na wysunięcie linki o 1 mm. Można jeszcze zastanowić się nad zależnością szybkości rozwijania linki od jej aktualnego stopnia nawinięcia – w końcu im warstwa linki na łożysku jest grubsza, tym efektywna średnica szpuli większa, a więc każdy obrót koła powoduje szybsze rozwijanie linki. W praktyce jednak, przy zastosowanych łożyskach, których zewnętrzna średnica to 30 mm, 140-centymetrowa linka nie powoduje znaczącego zwiększenia grubości szpuli nawet przy pełnym nawinięciu i można ten problem pominąć.

Umiejąc przeliczać liczbę przebytych kroków jednego i drugiego silnika na długość rozwijanej linki oraz znając aktualną pozycję głowicy, można obliczać liczby kroków potrzebne do przesunięcia głowicy do nowej pozycji. Trzeba jednak pamiętać, że tor ruchu głowicy pomiędzy dwoma punktami znajdującymi się od siebie w tej samej odległości będzie zależał od ich pozycji względem powierzchni zadrukowywanej. Przykładowo, silniki krokowe, poruszając się jednocześnie, przy równo wysuniętych linkach, będą sprawiały że głowica będzie się poruszała pionowo w górę lub w dół. Natomiast jeśli  początkowo linki nie będą w równym stopniu rozwinięte, każdy równocześnie wykonany krok będzie powodował przesunięcie głowicy po ukosie, pod kątem zależnym od aktualnych proporcji długości rozwiniętych linek.

Inaczej mówiąc, ploter powinien otrzymywać dokładnie obliczane pozycje punktów na rysowanych liniach, a nie tylko początek i koniec linii. Dzięki temu, tor poruszania się głowicy będzie dokładnie taki, jak potrzeba, a jednocześnie sam ruch i tak będzie płynny, gdyż szybkość sterowania silnikami krokowymi z użyciem Raspberry PI jest wystarczająco duża.

Zasilanie

Zastosowane silniki krokowe to japońskie modele KP4M2-217 firmy Tandon (fotografia 3). Pobierają prąd zależny od podłączonego napięcia. Przy 12 V przepływa przez nie 340 mA, co przekłada się na ok. 4 W mocy, a przy 5 V prąd spada do 150 mA, a więc pobierana moc spada do ok. 0,75 W. Użyte moduły z mostkami bazują na układach L298N (fotografia 4), a więc scalonych, dwukanałowych sterownikach silników. Ich maksymalny prąd ciągły to 2 A, ale autor twierdzi, że mocno się nagrzewają już przy 1 A.

W efekcie potrzebne jest jedno źródło napięcia do mostków (5…12 V) i jedno 5-voltowe do zasilania Raspberry PI oraz serwonapędu umieszczonego na głowicy. Masa jest wspólna dla wszystkich elementów.

Oprogramowanie

Autor napisał program w języku C i udostępnił jego kod źródłowy. Program korzysta z biblioteki wiringPi, którą można także bezpłatnie pobrać z Internetu i zainstalować. Najlepiej zrobić to z użyciem polecenia git, które w razie potrzeby też trzeba doinstalować. W Raspbianie służą do tego komendy:

sudo apt-get update
sudo apt-get install git-core

Pobranie i instalowanie wiringPi poleceniem git odbywa się następująco:

git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
./build

Pobrany kod źródłowy można skompilować za pomocą komendy gcc:

gcc v-plotter.c –o v-plotter  -I/usr/local/include -L/usr/local/lib -lwiringPi –lm

a później by go uruchomić, wystarczy wpisać:

./v-plotter

Fragmenty kodu źródłowego wraz z komentarzami pokazano na listingu 1.

Program pozwala na wczytywanie plików SVG, przy czym rysuje jedynie kontury, a nie wypełnienia. Ponadto, wszystkie obiekty muszą być przekonwertowane na wielokąty.

Podsumowanie i ocena projektu

Przygotowany projekt pokazuje, pokazuje jak łatwo jest wykonać przydatne urządzenie elektromechaniczne z użyciem niedrogiego komputera jednopłytkowego. Fakt wykorzystania komputera z systemem operacyjnym, zamiast modułu typu Arduino, które autor wykorzystuje w wielu innych swoich projektach, zdecydowanie ułatwia wykonywanie wydruków w oparciu o pliki graficzne. Co więcej, użycie Raspberry Pi z bezprzewodowym interfejsem sieciowym sprawia, że ploter pracuje bezprzewodowo – przekazywanie plików do druku może odbywać się przez sieć Wi-Fi, za pomocą SSH.

Warto też zwrócić uwagę na staranność wykonania projektu. Autor, dzięki dużemu doświadczeniu wiedział, co będzie istotne w tego typu konstrukcji. Zastosował łożyska, przekładnie, a linki utrzymujące głowicę wyprowadził z użyciem dodatkowych, miniaturowych przelotek. W programie uwzględniono także fakt rozciągania się linek. Zjawisko to ma różne nasilenie, w zależności od rodzaju użytych linek oraz od pozycji głowicy. Im jest ona wyżej, tym naprężenie linek silniejsze. Niestety, głowicę plotera wykonano „jako tako” – jej wygląd prezentuje fotografia 5. Być może autor chciał jak najszybciej zobaczyć efekt swojej pracy, bo tak naprawdę najważniejszym elementem plotera jest układ napędowy i jego oprogramowanie – głowica jedynie trzyma pisak.

Co ciekawe, rzadkością jest też użycie języka C, który w projektach dla Raspberry PI pojawia się rzadko. Autor jednak wykorzystał swoje doświadczenie w tym języku, wynikające z wykonania wielu projektów na Arduino. Sam projekt może też stanowić podstawę do realizacji innych urządzeń, w których pozycja jakiegoś elementu jest zależna od ustawienia silników krokowych.

Marcin Karbowniczek, EP

Dodatkowe informacje:
Opis całego projektu można znaleźć pod adresem http://goo.gl/BmiFyT, kod źródłowy programu dostępny jest na stronie http://goo.gl/GAQgyJ, a dodatkowo autor opublikował film na YouTube, gdzie przedstawia działanie i budowę plotera – można go obejrzeć pod adresem: https://goo.gl/iRHqom.

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2016
DO POBRANIA
Pobierz PDF Download icon
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik wrzesień 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio październik 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje wrzesień 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich wrzesień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów