Opis wykonania


Do wykonania R2D2 potrzebowalismy materialow, ktore bylyby zarowno wytrzymale jak i mozliwie jak najlzejsze, aby silniki, ktorych moc jest stosunkowo niska, mogly swobodnie poruszac ramieniem. Material do produkcji znalezlismy w starych, nieuzywanych rejestratorach, ktore za czasow swojej swietnosci uzywane byly w cieplownictwie do pomiaru temperatury.

Rejestratory dostarczyly nam wielu czesci m.in. materialy na szkielet, krancowki i co najwazniejsze, a co najtrudniej zdobyc zebatki.

Naped do ramienia (silniki krokowe) kupilismy w sklepie elektronicznym. Byly to trzy uzywane silniki ze starych drukarek iglowych oraz jeden (Mitsumi) ze skanera. Silnik ze skanera jest mniejszy gabarytowo, i mniej wazy wiec zastosowalismy go do poruszania chwytakiem, gdyz chwytak jest najbardziej wysunieta czescia od srodka ciezkosci i staralismy sie umiescic tam jak najmniejszy ciezar, aby ramie nie opadalo pod wlasnym ciezarem.

Reszte silnikow zastosowalismy do:
-poruszania ramieniem wokol wlasnej, pionowej osi,
-poruszania druga czescia ramienia,
-poruszania czesci ramienia z chwytakiem.

Opis silnika krokowego


Jak wiadomo zaden uklad elektroniczny nie bedzie dzialal bez zasilania. Do tego celu uzylismy zasilacza komputerowego 230W ATX.
W projekcie wykorzystujemy sygnal POWER_ON do wlaczenia zasilania z programu, gdyz przy wlaczeniu komputera na porcie LPT sa przypadkowe wartosci i zasilanie wlaczane jest dopiero wtedy gdy na LPT sa juz odpowiednio ustawione wartosci poczatkowe.
Zasilacz jest podlaczony do plytki drukowanej za pomoca zlacza typu Molex (takie jak do dysku twardego), na ktorym to dwa srodkowe kable to masa a dwa zewnetrzne to napiecie +5V i +12V.


Opis zasilacza


Majac silniki, zasilacz i material na wykonanie szkieletu, trzeba bylo jeszcze pozyskac sterownik do sterowania czterema silnikami. W tym celu zostala wykonana plytka, ktorej zdjecie przedstawione jest ponizej. Przed wykonaniem plytki pojawil sie problem taki, iz z portu LPT do sterowania mozna uzyc jedynie 8 pinow, a kazdy silnik potrzebuje 4, wiec moglismy sterowac tylko dwoma silnikami. Po dluzszym zastanowieniu sie nad problemem, znalezlismy rozwiazanie. Mianowicie w pracy pelnokrokowej pin 2 jest zaprzeczeniem pinu 1 oraz pin 4 jest zaprzeczeniem pinu 3, tak wiec mozna sterowac silnikiem za pomoca dwoch a nie czterech pinow.

Schemat elektryczny sterownika


Schemat plytki drukowanej z rozmieszczeniem elementów


Plytka z obwodem drukowanym zostala wykonana w programie Turbo CAD 2D. Nie jest to program dedykowany do projektowania obwodow elektronicznych ale przy stworzeniu odpowiednich bibliotek elementow elektronicznych staje się on bardzo przydatnym narzedziem wspomagajacym projektowanie. Przygotowany schemat polaczen nalezalo teraz przeniesc na plytke. Trzeba powiedziec, ze wykorzystalismy dosc zaawansowana technologie zwiazana z naswietlaniem plytki promieniami ultrafioletowymi. Zanim to jednak nastapilo musielismy plytke pokryc swiatloczula emulsja POSITIV 20. POSITIV 20 jest czuly na promieniowanie fali o dlugosci od 360 do 410nm. Przy napylaniu warstwy swiatlo czulej nalezalo zachowac szczegolna ostroznosc: plytka musiala zostac oczyszczona i odtluszczona, napylanie emulsji nalezalo wykonac w pomieszczeniu wentylowanym o czystym powietrzu (ponieważ nawet najmniejsze drobinki kurzu, ktore przy napylaniu przyleglyby do plytki wplywalyby niekorzystnie na koncowy efekt �mikro-podtrawienia), w miare ciemnym pomieszczeniu. Nalezalo takze uwazac aby warstwa emulsji nie była zbyt gruba. Normalnie emulsja powinna schnac 24 godz. (w temp. pokojowej) mozna jednak ten proces znacznie przyspieszyc uzywajac zrodla cieplego powietrza w postaci suszarki (procedura skraca sie do 1 godz.).

UWAGA:

Przekroczenie temperatury suszenia 70oC moze spowodowac uszkodzenie plytki.

Do tak przygotowanej plytki przykladamy wydrukowany na foli schemat. Teraz przystepujemy do naswietlania plytki lampa kwarcowa emitujaca promieniowanie ultrafioletowe. Czas naswietlania jest bardzo wazny i zalezy zarowno od mocy lampy kwarcowej jak i odleglosci od plytki. Miejsca nie zakryte przez schemat zostaja naswietlone. Schemat, a raczej jego lustrzane odbicie zostalo wydrukowane na powierzchni foli przylegajacej do plytki aby zniwelowac kat zalamania padajacego swiatla (zniwelowac podtrawienia).
Nastepnie plytke nalezy wywolac w roztworze skladajacym sie z 7 gram sody kaustycznej (NaOH) rozpuszczonej w jednym litrze zimnej wody. Naswietlona czesc warstwy swiatloczulej zostaje usunieta przez wywolywacz. Rysunek sciezki pokryty nadal emulsja odroznia sie kolorem od odslonietej miedzi. Nie mozna pozostawic plytki w wywolywaczu przez zbyt dlugi okres, poniewaz grozi to zniszczeniem nie naswietlonych czesci warstwy swiatloczulej. W przypadku przeswietlenia emulsji, rysunek sciezek przewodzacych mozna zobaczyc tylko przez chwile, nastepnie zostaje rowniez usuniety przez wywolywacz.
Nastepnie plytke nalezalo wytrawic, uzylismy do tego celu chlorku zelaza. Tak otrzymana plytke nalezalo oczyscic z resztek emulsji, powiercic, wlutowac niezbedne elementy. Na koniec obwod drukowany (sciezki) pokrylismy lakierem zabezpieczajacym PLASTIK70 w celu zabezpieczenia przed wilgocia, kurzem i korozja.

Sterownik silnikow krokowych jest sterowany z portu LPT za pomoca odpowiedniej sekwencji bitów. Zasilanie naszego sterownika jest zrealizowane programowo, podanie �1� na pin C0 zlacza LPT powoduje uruchomienie zasilacza.
W celu odseparowania galwanicznego komputera od sterownika uzylismy optoizolacji. Jak juz wczesniej wspomnialem do sterowania silnikami potrzebna jest odpowiednia sekwencja bitow. Kazdy silnik jest sterowany dwoma bitami z komputera. Podawane sa one na wejscie optoizolacji, na wyjsciu powielane sa stany bitow. Nastepnie na ukladzie scalonym z bramkami FAST NAND sygnal zostaje zanegowany. Sygnal jest negowany poniewaz wynika to ze sposobu sterowania jaki przyjelismy (praca pelnokrokowa) jak rowniez z budowy silnika unipolarnego.
Docelowo potrzebne nam sa 4 bity do sterowania jednym silnikiem i bramki FAST NAND nam to zapewniaja. Nastepnie sygnal trafia na uklad Darlington (ULN2803A) z ktorego bezposrednio sa sterowane cewki silnika. W danej chwili czasu wykorzystywane jest 50% uzwojenia silnika, wynika to ze sposobu sterowania.
Oprocz sygnalow wysylanych z komputera sa rowniez zczytywane sygnaly z wylacznikow krancowych. W stanie normalnej pracy S3-S6 jest w stanie wysokim, w chwili zadzialania krancowki na odpowiednim wejsciu wystepuje stan niski do czasu zwolnienia krancowki.

Aby wykonac caly projekt nalezalo powycinac odpowiednie elementy, aby zlozyc z nich szkielet. Do tego celu uzylismy pilki do metalu i szlifierki elektrycznej, ale zanim zaczelismy wycinac cokolwiek trzeba bylo wymyslic jak bedzie wygladal caly robot. Po wycieciu czesci nalezalo rozplanowac ulozenie zembatek i silnikow. Zembatki sa niezbednym elementem, gdyz pozwalaja na umieszczenie wiekszego ciezaru na silniku (silnik moze wiecej podniesc).

Najtrudniejsza czescia do wykonania byl chwytak. Sile silnika przenieslismy na "slimak" w tym przypadku srube, jest to dobre rozwiazanie, gdyz nawet po wylaczeniu zasilania chwytak nie zmienia swojego polozenia. Chwytak podnosi przedmioty o srednicy 20-25mm. Silnik na tej czesci ramienia, jak juz wczesniej bylo wspomniane, jest mniejszy i lzejszy dzieki czemu ramie podnosi sie bez problemu.

Po zakonczeniu calosc przytwierdzilismy do plyty drewnianej aby wszystkie elementy pozostawaly w jednym, scisle okreslonym miejscu. W tylnej czesci plyty jest przytwierdzony zasilacz, nastepnie plytka drukowana i najbardziej wysunietym elementem jest R2D2.

Powyzszy rysunek przedstawia zakres ruchow ramienia.
Pierwsza czesc obraca sie wokol pionowej osi o kat 180oco powoduje ze cale ramie jest obracane. Czesc ta pozycjonuje w plaszczyznie poziomej. Kolejna czesc obraca sie tylko o 90o, ale to wystarcza do tego by zblizyc chwytak do podloza, oraz czesc ta zwieksza zasieg chwytaka. Nastepuje pozycjonowanie w plaszczyznie pionowej. Kolejna czesc ustawia chwytak w odpowiedniej pozycji, obraca sie o kat 135o, co pozwala na dogodne zlozenie ramienia oraz na pobranie przedmiotu z podloza. Ostatni silnik zajmuje sie otwieraniem i zaciskaniem chwytaka.

Na powyzszym zdjeciu pokazane jest umiejscowienie wszystkich krancowek.
Dzieki zastosowaniu krancowek ramie nie doprowadza do "samo zniszczenia" czyli nie bedzie sie poruszalo w momencie gdy ten ruch moglby uszkodzic ramie. Rowniez chwytak nie bedzie sie zaciskal w nieskonczonosc.


Opis programu

1.Uruchamianie systemu

Przed podlaczeniem zasilacza do sieci elektrycznej nalezy uruchomic program obslugujacy ramie. Jest to spowodowane losowymi wartosciami, jakie pojawiaja sie po starcie komputera na porcie LPT. Losowosc ta moze spowodowac przypadkowe wlaczenie zasilacza i niekontrolowana prace ramienia. Po wlaczeniu programu ustawia on wartosci na porcie LPT w odpowiedni sposób i gdy jest to konieczne (wszystkie krancowki ramienia nie sa zwarte) wyswietla komunikat o nieprawidlowym ulorzeniu ramienia, zalecajac reset.

Nastepnie otwiera sie glowne okno programu i mozna juz przystapic do pracy.

2.Wlaczanie zasilania

Po wlaczeniu programu mozna bezpiecznie wlaczyc zasilanie ramienia wybierajac w menu glownym opcje Zasilanie/wlacz. Nastepuje uruchomienie zasilacza i ramie jest gotowe do pracy.

3.Sterowanie

W menu glownym znajduje sie zakladka Sterowanie.

Mamy do wyboru trzy opcje:
- sterowanie reczne
- programowanie ramienia (zostanie omowione w punkcie 6)
- resetowanie ustawienia ramienia

3.1.Sterowanie Reczne uaktywnia nam PanelSterowania w glownym oknie programu. Dostepne sa tam przyciski umozliwiajace poruszanie ramieniem. Sterowanie odbywa sie poprzez naciskanie przyciskow �+� lub �-� dla kazdego ramienia. Znaczenie poszczegolnych przyciskow przedstawiono na rysunku.

Ta opcja umozliwia rowniez sterowanie za pomoca klawiatury. Jest ono analogiczne do sterowania za pomoca przyciskow na PaneluSterowania.

3.2.Reset umozliwia ustawienie ramienia w pozycji wyjsciowej. Jest to mozliwe dzieki zastosowanym krancowek. Program obraca w odpowiednia strone kolejnymi silnikami az ramie zewrze krancowke odpowiadajaca danemu silnikowi i wylancza go. Nalezy wykonac reset gdy przy starcie programu pojawi sie zadanie jego wykonania.

4.Wizualizacja

W glownym oknie programu znajduje sie ramka ilustrujaca przewidywana pozycje ramienia w ukladzie kartezjanskim. Wmiare dokonywania zmian w ustawieniu ramienia obraz w tym polu jest aktualizowany.

5.Status

Pole Status informuje jakie jest aktualne polozenie ramienia w milimetrach w kukladzie kartezjanskim (Polozenie), oraz na którym kroku znajduje się każdy z silnikow (Ilosc Krokow: kolejno silnik pierwszy, drugi, trzeci i czwarty; zapisano rowniez ile krokow moze wykonac kazdy z nich). Na rysunku przedstawiono stan Statusu gdy ramie jest w pozycji wyjsciowej.

6.Programowanie ramienia

Wybranie opcji Programowanie z menu Sterowanie uaktywnia nam panel programowania w glownym oknie programu.

Ramie programuje sie sekwencyjnie, poprzez dodawanie do listy kolejnych etapow ruchu. Wazna informacje przy tworzeniu sekwencji stanowi pole Satus (punkt 5). Aby stworzyc pojedyncza sekwencje ustawiamy dla kazdego silnika kierunek ruchu oraz ilosc krokow jakie ma wykonac. Pole kierunek moze miec trzy wartosci -1,1 i 0 (patrz tabela ponizej). Wartosc 0 nie powoduje poruszenia silnika w rzadna strone, a gdy wpiszemy ponadto wartosc w pole ilosc krokow uzyskamy opuznienie, gdyz program będzie dzialal tak jakby wykonywal ruch o zadana ilosc krokow.

KierunekSilnik 1Silnik 2Silnik 3Silnik 4
-1w prawow dolw dolzaciskanie
1w lewodo gorydo goryotwieranie

Gdy uzupelnimy juz odpowiednie pola dla naszej sekwencji ruchu dodajemy ja do listy klikajac przycisk Dodaj. Mozemy dodawac kolejne sekwencje do listy tworzac bardziej zlozony ruch. Klikajac na Podglad listy mozemy zobaczyc liste dodanych sekwencji.

Przycisk Usun umozliwia usuniecie sekwencji znajdujacej sie aktualnie na koncu listy. Przycisk Powtorz dodaje do listy ciag sekwencji ruchu, ktore byly ostatnio wykonane (sekwence te sa przechowywane w pliku log.log). Mozna rowniez powielic cala zawartosc listy klikajac przycisk Powiel, nalezy przy tym wybrac ile razy aktualna zawartosc listy będzie do niej dopisana.
Gdy juz skompletujemy cala liste sekwencji ruchu jaka nas interesuje, uruchamiamy ja wciskajac przycisk Wykonuj. Spowoduje to wykonywanie ruchow oraz usuniecie zawartosci listy oraz przepisanie zawartosci listy do pliku log.log. Zawartosc listy sekwencji mozna zapisac i odczytac z pliku urzywajac przyciskow Zapisz i Wczytaj.

UWAGA: Przy programowaniu ramienia nalezy uwazac, aby podawana sekwencja ruchow nie spowodowala nieprawidlowego ustawienia ramienia, co mogloby go uszkodzic.

7.Opcje

Wybierajac z menu glownego Opcje/adresyportow można ustawic adresy portow dla rejestrow zlacza LPT. Zmian w ustawieniach mozna dokonywa tylko przy wylaczonym zasilaniu. Adresy portow nalezy podac w systemie decymalnym.