21.02.2015 Views

Manipulator przeznaczony do celów dydaktycznych - Laboratorium ...

Manipulator przeznaczony do celów dydaktycznych - Laboratorium ...

Manipulator przeznaczony do celów dydaktycznych - Laboratorium ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Politechnika Wrocławska<br />

Wydział Elektroniki<br />

Kierunek:<br />

Specjalność:<br />

Automatyka i Robotyka (AiR)<br />

Robotyka (ARR)<br />

PRACA DYPLOMOWA<br />

MAGISTERSKA<br />

<strong>Manipulator</strong><br />

<strong>przeznaczony</strong> <strong>do</strong> celów<br />

<strong>dydaktycznych</strong>.<br />

Autor:<br />

Zbigniew Struzik<br />

Prowadzący pracę:<br />

dr inż. Marek Wnuk, I-6<br />

Ocena pracy:<br />

Wrocław 2005


Składam serdeczne podziękowania Panu<br />

dr. Markowi Wnukowi za pomoc,<br />

poświęcony czas oraz zaangażowanie.<br />

Chciałem również podziękować Panu<br />

Ryszar<strong>do</strong>wi Krzywańskiemu za<br />

cenne rady i pomoc w wykonaniu konstrukcji<br />

mechanicznej. Na końcu chciałem<br />

podziękować firmom MICRO-<br />

MOTORS i AUSTRIAMICRO-<br />

SYSTEMS za bezpłatne przekazanie<br />

silników i koderów.


1<br />

Spis treści<br />

1 Wstęp 6<br />

1.1 Cel i zakres pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

2 Kinematyka manipulatora 7<br />

2.1 Reprezentacja Denavita-Hartenberga . . . . . . . . . . . . . . . . . . . . . 7<br />

2.2 Wyprowadzenie kinematyki prostej<br />

manipulatora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2.3 Kinematyka odwrotna manipulatora – podejście geometryczne . . . . . . . 10<br />

2.4 Konfiguracje wyróżnione manipulatora . . . . . . . . . . . . . . . . . . . . 13<br />

2.5 Transformacja napę<strong>do</strong>wa osi robota . . . . . . . . . . . . . . . . . . . . . . 14<br />

2.5.1 Rozwiązanie napędów ogniwa 1,2 i 3 . . . . . . . . . . . . . . . . . 14<br />

2.5.2 Rozwiązanie napędu ogniwa 4 i 5 . . . . . . . . . . . . . . . . . . . 16<br />

3 Konstrukcja robota ZS5R 18<br />

3.1 Konstrukcja mechaniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.1.1 Silniki manipulatora . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

3.2 Konstrukcja elektroniczna – sterownik robota . . . . . . . . . . . . . . . . 23<br />

3.2.1 Bu<strong>do</strong>wa modułu sterowania . . . . . . . . . . . . . . . . . . . . . . 24<br />

3.2.2 Bu<strong>do</strong>wa modułu mocy . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

3.2.3 Opis łączówek sterownika . . . . . . . . . . . . . . . . . . . . . . . 27<br />

4 Oprogramowanie sterownika 31<br />

4.1 Funkcja główna main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

4.2 Procedura obsługi przerwania cyklicznego . . . . . . . . . . . . . . . . . . 32<br />

5 Badania i wyniki eksperymentów 36<br />

6 Podsumowanie 38<br />

7 Dodatek A 41<br />

7.1 Parametry mechaniczne manipulatora . . . . . . . . . . . . . . . . . . . . . 41<br />

7.2 Rysunki techniczne części mechanicznej . . . . . . . . . . . . . . . . . . . . 42<br />

8 Dodatek B 60<br />

8.1 Wykaz elementów części elektronicznej . . . . . . . . . . . . . . . . . . . . 60<br />

9 Dodatek C 63<br />

9.1 Schematy ideowe i rysunki montażowe części elektronicznej . . . . . . . . . 63


10 Przykła<strong>do</strong>wa instrukcja laboratoryjna 73<br />

10.1 Cel ćwiczenia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />

10.2 Podstawy teoretyczne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />

10.2.1 Charakterystyka robota ZS5R. . . . . . . . . . . . . . . . . . . . . . 73<br />

10.2.2 Struktura kinematyczna dla współrzędnych<br />

przegubowych q i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

10.2.3 Transformacja Denavita-Hartenberga dla zmiennych q i . . . . . . . . 75<br />

10.3 Przebieg ćwiczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />

10.3.1 Obsługa stanowiska . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />

10.3.2 Wstępne przygotowanie <strong>do</strong> ćwiczenia. . . . . . . . . . . . . . . . . . 76<br />

10.3.3 Zadania <strong>do</strong> wykonania. . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />

2


3<br />

Spis rysunków<br />

2.1 Struktura kinematyczna manipulator ZS5R. . . . . . . . . . . . . . . . . . 8<br />

2.2 Struktura szkieletowa robota. . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.3 Struktura układu przeniesienia napędu ogniwa 1 i 2. . . . . . . . . . . . . . 14<br />

2.4 Struktura układu przeniesienia napędu ogniwa 3. . . . . . . . . . . . . . . 16<br />

2.5 Struktura układu różnicowego napędzającego osie nadgarstka. . . . . . . . 17<br />

3.1 Zdjęcie manipulator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.2 Rysunek złożeniowy manipulatora z oznaczonymi głównymi częściami. . . . 19<br />

3.3 Zdjęcie silnika HLE149.24.43. . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

3.4 Zdjęcie silnika RHE158.24.100. . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

3.5 Zdjęcie ilustrujące sposób zamontowania magnesu na osi silnika. . . . . . . 22<br />

3.6 Zdjęcie ilustrujące sposób zamontowania kodera AS5040. . . . . . . . . . . 22<br />

3.7 Schemat blokowy układu sterowania manipulatora. . . . . . . . . . . . . . 23<br />

3.8 Płytka sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

3.9 Moduł EM332/B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

3.10 Schemat blokowy regulatora prądu. . . . . . . . . . . . . . . . . . . . . . . 26<br />

3.11 Zasilacz części cyfrowej i analogowej . . . . . . . . . . . . . . . . . . . . . . 26<br />

4.1 Schemat blokowy układu sterowania. . . . . . . . . . . . . . . . . . . . . . 34<br />

5.1 Wykres odpowiedzi regulatora na zadany prąd. . . . . . . . . . . . . . . . 36<br />

5.2 Rozpędzanie osi q 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

5.3 Regulacja prędkości osi q 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

6.1 Wi<strong>do</strong>k skonstruowanego manipulatora. . . . . . . . . . . . . . . . . . . . . 38<br />

7.1 Rysunek techniczny silnika RHE 158.24.100. . . . . . . . . . . . . . . . . . 42<br />

7.2 Rysunek techniczny silnika HLE 149.24.43. . . . . . . . . . . . . . . . . . . 42<br />

9.1 Schemat ideowy jednego z regulatorów prądu modułu mocy. . . . . . . . . 63<br />

9.2 Schemat ideowy połączenia modułu EM332 z układami peryferyjnymi. . . 64<br />

9.3 Schemat ideowy zasilacza. . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

9.4 Schemat ideowy układu sterowania cewką przekaźnika. . . . . . . . . . . . 65<br />

9.5 Schemat elektryczny kodera AS5040. . . . . . . . . . . . . . . . . . . . . . 66<br />

9.6 Obwód drukowany wierzchniej warstwy płytki zasilacza. . . . . . . . . . . . 66<br />

9.7 Obwód drukowany spodniej warstwy płytki zasilacza. . . . . . . . . . . . . 66<br />

9.8 Rozmieszczenie elementów na wierzchniej stronie płytki zasilacza. . . . . . 67<br />

9.9 Obwód drukowany wierzchniej warstwy płytki sterownika. . . . . . . . . . 68<br />

9.10 Obwód drukowany spodniej warstwy płytki sterownika. . . . . . . . . . . . 69<br />

9.11 Rozmieszczenie elementów na wierzchniej stronie płytki sterownika. . . . . 70


4<br />

9.12 Rozmieszczenie elementów na spodniej stronie płytki sterownika. . . . . . . 71<br />

9.13 Obwód drukowany wierzchniej warstwy płytki kodera AS5040. . . . . . . . 72<br />

9.14 Obwód drukowany spodnie warstwy płytki kodera AS5040. . . . . . . . . . 72<br />

9.15 Rozmieszczenie elementów na wierzchniej warstwie płytki kodera AS5040. . 72<br />

9.16 Rozmieszczenie elementów na spodniej warstwie płytki kodera AS5040. . . 72<br />

10.1 Struktura kinematyczna manipulator ZS5R. . . . . . . . . . . . . . . . . . 74


5<br />

Spis tabel<br />

2.1 Parametry Denavita-Hartenberga manipulatora. . . . . . . . . . . . . . . . 8<br />

3.1 Parametry silnika typu RHE158.24.100. . . . . . . . . . . . . . . . . . . . . 20<br />

3.2 Parametry silnika typu HLE149.24.43. . . . . . . . . . . . . . . . . . . . . 21<br />

3.3 Łączówka transmisji szeregowej Z 10 . . . . . . . . . . . . . . . . . . . . . . . 27<br />

3.4 Sygnały łączówki transmisji szeregowej Z 10 . . . . . . . . . . . . . . . . . . 27<br />

3.5 Łączówka Z 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

3.6 Opis sygnałów łączówki Z 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

3.7 Łączówka Z 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

3.8 Opis sygnałów łączówki Z 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

3.9 Opis złącza zasilania modułu mocy Z 7 . . . . . . . . . . . . . . . . . . . . . 30<br />

3.10 Opis złącza zasilania Z 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

3.11 Opis złącza na płytce zasilacz Z 13 . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

3.12 Opis złącz Z 1 ,...Z 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

8.1 Zestawienie elementów elektronicznych na płytce zasilacza. . . . . . . . . . 60<br />

8.2 Zestawienie elementów elektronicznych na płytce kodera AS5040. . . . . . 60<br />

8.3 Zestawienie elementów elektronicznych na płytce sterownika. . . . . . . . . 61<br />

8.4 Zestawienie elementów elektronicznych na płytce sterownika. . . . . . . . . 62


6<br />

Rozdział 1<br />

Wstęp<br />

W laboratorium robotyki Zakładu Podstaw Cybernetyki i Robotyki, znajduje się manipulator<br />

dydaktyczny Romik. Robot ten jest klasy 5R, posiadający pięć stopni swobody. Do<br />

napędu jego poszczególnych osi zastosowano silniki skokowe. Konstrukcja mechaniczna i<br />

układ sterowania robota, pozwala jedynie na wykonywanie na nim podstawowych ćwiczeń<br />

związanych z identyfikacją parametrów geometrycznych manipulatora. Natomiast ze<br />

względu na zastosowane <strong>do</strong> napędu osi silniki, nie pozwala on już na implementację algorytmów<br />

sterowania uwzględniających dynamikę robota. Poza tym, konstrukcja robota<br />

jest <strong>do</strong>ść przestarzała i wyeksploatowana mechanicznie. Z tego względu powstała potrzeba<br />

zbu<strong>do</strong>wania nowego manipulatora dydaktycznego, w którym napęd przegubów byłby zrealizowany<br />

za pomocą silników prądu stałego. Powinien on dawać możliwość wykonywania<br />

<strong>do</strong>tychczasowych ćwiczeń jak i umożliwić w przyszłości implementację algorytmów sterowania<br />

opartych na dynamice robota. Także elektronika nowego robota powinien dawać<br />

możliwość podłączenia zewnętrznego układu sterowania, na przykład karty współpracującej<br />

z pakietem MATLAB.<br />

1.1 Cel i zakres pracy<br />

Podstawowym celem pracy jest stworzenie stanowiska laboratoryjnego, którego głównym<br />

elementem jest manipulator dydaktyczny. Stworzenie stanowiska realizowane jest przez:<br />

• wykonanie od podstaw części mechanicznej manipulatora,<br />

• zaprojektowanie i wykonanie elektroniki robota, pozwalającej współpracować z zewnętrznym<br />

układem sterowania,<br />

• napisanie oprogramowania,<br />

• przeprowadzenie badań,<br />

• opracowanie przykła<strong>do</strong>wej instrukcji laboratoryjnej.<br />

W pracy tej zawarto teoretyczne podstawy <strong>do</strong>tyczące kinematyki prostej i odwrotnej<br />

manipulatora jak i przedstawiono transformację napę<strong>do</strong>wą. Zamieszczono opis konstrukcji<br />

części mechanicznej i elektronicznej robota (<strong>do</strong>kładną <strong>do</strong>kumentację techniczną robota<br />

można znaleźć w <strong>do</strong>datkach A, B i C). Opisano też oprogramowanie służące <strong>do</strong> obsługi<br />

układów wykonawczych. U<strong>do</strong>kumentowano wykresy i wyniki eksperymentów uzyskanych<br />

za pomocą wewnętrznych czujników manipulatora.


7<br />

Rozdział 2<br />

Kinematyka manipulatora<br />

2.1 Reprezentacja Denavita-Hartenberga<br />

Wyznaczenie kinematyki według notacji Denavita-Hartenberga [4] polega na związaniu<br />

z każdym ramieniem (ogniwem) lokalnego układu współrzędnych umieszczonego w odpowiednim<br />

przegubie, a następnie wyznaczeniu ciągu transformacji pomiędzy kolejnymi<br />

układami. W podstawie zaczepiamy nieruchomy układ oznaczony numerem 0. Dalej wybieramy<br />

układy od 1 <strong>do</strong> n tak, że układ i jest na sztywno związany z ogniwem i w taki<br />

sposób, że<br />

• oś Z i jest osią (i + 1)-go złącza, a zwrot tej osi może być przyjęty <strong>do</strong>wolnie;<br />

• oś X i jest wspólną normalną <strong>do</strong> osi złączy i-tego i (i + 1)-go i skierowana jest w<br />

stronę ogniw o wyższych numerach;<br />

• oś Y i jest uzupełnieniem dwóch poprzednich osi <strong>do</strong> prawoskrętnego, kartezjańskiego<br />

układu współrzędnych. Ponieważ jest ona jednoznacznie określona przez położenia<br />

osi Z i oraz X i zatem niektórzy pomijają ją aby zwiększyć czytelność rysunków.<br />

Transformacja A i i−1 pomiędzy układami (i − 1) oraz i jest zdefiniowana jako iloczyn<br />

czterech macierzy elementarnych obrotów i przesunięć.<br />

A i i−1 (q i) = Rot(Z, θ i )Trans(Z, d i )Trans(X, a i )Rot(X, α i ) (2.1)<br />

gdzie:<br />

θ i - kąt obrotu wokół osi Z i−1 ,<br />

d i - translacja wzdłuż bieżącej osi Z,<br />

a i - translacja wzdłuż bieżącej osi X,<br />

α i - kąt obrotu wokół bieżącej osi X,<br />

są parametrami Denavita-Hartenberga. Kinematyka manipulatora wyznacza pozycję i<br />

orientację układu efektora w bazowym układzie współrzędnych, i jest opisana złożeniem<br />

transformacji (2.1) czyli<br />

n∏<br />

K(q) = A i i−1(q i ) =<br />

i=1<br />

[<br />

R<br />

n<br />

0 (q) T n 0(q)<br />

0 1<br />

]<br />

. (2.2)


8<br />

2.2 Wyprowadzenie kinematyki prostej<br />

manipulatora<br />

Rozważany manipulator jest manipulatorem klasy 5R 1 , posiadającym pięć stopni swobody.<br />

<strong>Manipulator</strong> ten składa się z pionowej, obrotowej kolumny o wysokości l 1 , dwuczłonowego<br />

ramienia o długości l 2 i l 3 oraz nadgarstka z efektorem o długości l 4 , ujmującej długość<br />

palców chwytaka. Wszystkie te ogniwa - ramiona są połączone przegubami, których<br />

aktualny stan określa wektor stanu q = (q 1 , q 2 , q 3 , q 4 , q 5 ) T . Strukturę tego manipulatora<br />

wraz z układami współrzędnych pokazano na rysunku 2.1. Układy współrzędnych zostały<br />

Rysunek 2.1: Struktura kinematyczna manipulator ZS5R.<br />

przyporządkowane zgodnie z algorytmem Denavita-Hartenberga. Następnym krokiem jest<br />

wyznaczenie parametrów i zmiennych wiążących te układy. Zestawiono je w tabeli 2.1.<br />

Nr ogniwa θ i d i a i α i<br />

π<br />

1 q 1 l 1 0<br />

2<br />

2 q 2 0 l 2 0<br />

3 q 3 0 l 3 0<br />

4 q 4 − π 0 0 − π 2 2<br />

5 q 5 l 4 0 0<br />

Tabela 2.1: Parametry Denavita-Hartenberga manipulatora.<br />

1 Oznacza to, że manipulator posiada pięć przegubów typu rotacyjnego (R).


9<br />

W celu wyliczenia kinematyki manipulatora wyznaczamy transformacje między kolejnymi<br />

układami współrzędnych zgodnie z (2.1).<br />

A 1 0 (q 1) = Rot(Z, q 1 )Trans(Z, l 1 )Rot(X, π),<br />

2<br />

A 2 1 (q 2) = Rot(Z, q 2 )Trans(X, l 2 ),<br />

A 3 2 (q 3) = Rot(Z, q 3 )Trans(X, l 3 ),<br />

A 4 3 (q 4) = Rot(Z, q 4 )Rot(Z, − π)Rot(X, − π),<br />

2 2<br />

A 4 5(q 5 ) = Rot(Z, q 5 )Trans(Z, l 4 ),<br />

(2.3)<br />

Po wprowadzeniu oznaczeń sinq i = s i , cosq i = c i , kolejne macierze przyjmują postać:<br />

• przejście od układu 0 <strong>do</strong> 1:<br />

• przejście od układu 1 <strong>do</strong> 2:<br />

⎡<br />

A 1 0(q 1 ) = ⎢<br />

⎣<br />

c 1 0 s 1 0<br />

s 1 0 −c 1 0<br />

0 1 0 l 1<br />

0 0 0 1<br />

⎤<br />

⎥<br />

⎦ ,<br />

• przejście od układu 2 <strong>do</strong> 3:<br />

⎡<br />

A 2 1 (q 2) = ⎢<br />

⎣<br />

c 2 −s 2 0 l 2 c 2<br />

s 2 c 2 0 l 2 s 2<br />

0 0 1 0<br />

0 0 0 1<br />

⎤<br />

⎥<br />

⎦ ,<br />

• przejście od układu 3 <strong>do</strong> 4:<br />

⎡<br />

A 3 2 (q 3) = ⎢<br />

⎣<br />

c 3 −s 3 0 l 3 c 3<br />

s 3 c 3 0 l 3 s 3<br />

0 0 1 0<br />

0 0 0 1<br />

⎤<br />

⎥<br />

⎦ ,<br />

• przejście od układu 4 <strong>do</strong> 5:<br />

⎡<br />

A 4 3(q 4 ) = ⎢<br />

⎣<br />

s 4 0 c 4 0<br />

−c 4 0 s 4 0<br />

0 1 0 0<br />

0 0 0 1<br />

⎤<br />

⎥<br />

⎦ ,


10<br />

⎡<br />

A 5 4 (q 5) = ⎢<br />

⎣<br />

c 5 −s 5 0 0<br />

s 5 c 5 0 0<br />

0 0 1 l 4<br />

0 0 0 1<br />

Mając wyliczone transformacje A i i−1 (q i) między sąsiednimi układami współrzędnych definiujemy<br />

kinematykę manipulatora zgodnie z (2.2) jako<br />

⎤<br />

⎥<br />

⎦ .<br />

czyli<br />

K(q) = A 1 0 A2 1 A3 2 A4 3 A5 4 (q): X 0Y 0 Z 0 ↦−→ X 5 Y 5 Z 5<br />

⎡<br />

K(q) = ⎢<br />

⎣<br />

r 11 r 12 r 13 l x<br />

r 21 r 22 r 23 l y<br />

r 31 r 32 r 33 l z<br />

0 0 0 1<br />

⎤<br />

⎥<br />

⎦ , (2.4)<br />

gdzie elementy tej macierzy są następujące:<br />

⎫<br />

r 11 = cosq 1 cosq 5 sin(q 2 + q 3 + q 4 ) − sinq 1 sinq 5 ,<br />

r 12 = −cosq 1 sinq 5 sin(q 2 + q 3 + q 4 ) − sinq 1 cosq 5 ,<br />

r 13 = cosq 1 cos(q 2 + q 3 + q 4 ),<br />

r 21 = sinq 1 cosq 5 sin(q 2 + q 3 + q 4 ) + cosq 1 sinq 5 ,<br />

r 22 = −sinq 1 sinq 5 sin(q 2 + q 3 + q 4 ) + cosq 1 cosq 5 ,<br />

r 23 = sinq 1 cos(q 2 + q 3 + q 4 ),<br />

⎪⎬<br />

r 31 = −cos(q 2 + q 3 + q 4 )cosq 5 ,<br />

r 32 = cos(q 2 + q 3 + q 4 )sinq 5 ,<br />

r 33 = sin(q 2 + q 3 + q 4 ),<br />

l x = l 2 cosq 1 cos 2 + l 3 cosq 1 cos(q 2 + q 3 ) + l 4 cosq 1 cos(q 2 + q 3 + q 4 ),<br />

l y = l 2 sinq 1 cos 2 + l 3 sinq 1 cos(q 2 + q 3 ) + l 4 sinq 1 cos(q 2 + q 3 + q 4 ),<br />

l z = l 1 + l 2 sinq 2 + l 3 sin(q 2 + q 3 ).<br />

⎪⎭<br />

(2.5)<br />

2.3 Kinematyka odwrotna manipulatora – podejście<br />

geometryczne<br />

W poprzednim punkcie została wyznaczona kinematyka prosta manipulatora, która wyznacza<br />

położenie i orientację efektora w zależności od konfiguracji jego przegubów. W<br />

tym punkcie zostanie przedstawione zadanie odwrotne, a mianowicie wyliczenie wartości<br />

kolejnych zmiennych przegubowych przy narzuconym położeniu i orientacji efektora. Zadanie<br />

to jest nazywane odwrotnym zadaniem kinematyki. Rozwiązanie zadania kinematyki<br />

odwrotnej jest niezwykle istotne ze względu na efektywność sterowania manipulatorem<br />

robota. Zadania <strong>do</strong> wykonania przez robota są bowiem w sposób naturalny formułowane<br />

w kategoriach pożądanych położeń i orientacji efektora, wyrażonych w układzie kartezjańskim<br />

związanym z podstawą robota.


11<br />

Przy podejściu geometrycznym [1] [2] <strong>do</strong> rozwiązania zagadnienia kinematycznego konieczne<br />

jest zdekomponowanie przestrzennego zagadnienia geometrycznego na szereg zagadnień<br />

planarnych. Przy tej metodzie zmienne przegubowe mogą być wyznaczone za<br />

pomocą metod stosowanych w płaskiej geometrii. Na rysunku 2.2 przedstawiony jest<br />

szkieletowy model robota wraz z odpowiednio oznaczonymi kątami. Danymi wejściowymi<br />

są położenie i orientacja chwytaka P (P x , P y , P z , η, ϱ), gdzie P x , P y , P z określa położenie<br />

punktu pracy chwytaka względem bazowego układu odniesienia, kąt η określa kąt nutacji<br />

efektora, zaś kąt ϱ jest równy kątowi q 5 , który odpowiedzialny jest za rotację wokół osi<br />

Z 5 .<br />

Rysunek 2.2: Struktura szkieletowa robota.<br />

W celu wyznaczenia kąta q 1 , rzutujemy punkt pracy chwytaka P na płaszczyznę wyzna-


12<br />

czoną przez osie X 0 , Y 0 , stąd widzimy, że<br />

czyli<br />

tan q 1 = P y<br />

P x<br />

, (2.6)<br />

q 1 = Atan2(P y , P x ), (2.7)<br />

gdzie Atan2(·, ·) oznacza dwuargumentową funkcję arcus tangens.<br />

W celu ułatwienia obliczenia kolejnych zmiennych przegubowych wyznaczony został punkt<br />

pomocniczy P c o współrzędnych<br />

⎡ ⎤ ⎡<br />

⎤<br />

P cx P x − k cos q 1<br />

⎢ ⎥ ⎢<br />

⎥<br />

P c = ⎣ P cy ⎦ = ⎣ P y − k sin q 1 ⎦ , gdzie k = l 4 cos η. (2.8)<br />

P cz P z − l 4 sin η<br />

Aby wyznaczyć kąt q 3 wykorzystuje się twierdzenie cosinusów<br />

d 2 = l 2 2 + l 2 3 − 2l 2 l 3 cos (π − q 3 ). (2.9)<br />

Ponieważ zachodzi zależność cos (π − q 3 ) = − cos q 3 , oraz dla <strong>do</strong>wolnej konfiguracji manipulatora<br />

jest spełniony związek d 2 = r 2 +(P cz −l 1 ) 2 , gdzie r 2 = Pcx 2 +P cy 2 , zatem otrzymuje<br />

się dalej<br />

Pcx 2 + P cy 2 + (P cz − l 1 ) 2 = l2 2 + l2 3 + 2l 2l 3 cos q 3 , (2.10)<br />

i stąd<br />

cos q 3 = P 2 cx + P 2 cy + (P cz − l 1 ) 2 − l 2 2 − l2 3<br />

2l 2 l 3<br />

. = D. (2.11)<br />

Istnieją dwa rozwiązania powyższego równania, a mianowicie<br />

oraz<br />

q 3 = arccos P 2 cx + P 2 cy + (P cz − l 1 ) 2 − l 2 2 − l2 3<br />

2l 2 l 3<br />

, stąd 0 q 3 π, (2.12)<br />

q 3 = − arccos P 2 cx + P 2 cy + (P cz − l 1 ) 2 − l 2 2 − l 2 3<br />

2l 2 l 3<br />

, stąd − π q 3 0. (2.13)<br />

Jednakże lepszym sposobem znalezienia kąta q 3 jest zauważenie, że jeśli cos q 3 jest dany<br />

wzorem (2.11), to sin q 3 jest dany odpowiednio wzorem<br />

i stąd można wyznaczyć<br />

sin q 3 = ± √ 1 − D 2 , (2.14)<br />

q 3 = Atan2(± √ 1 − D 2 , D). (2.15)<br />

Zaletą tego drugiego sposobu jest rozróżnienie obu konfiguracji ”łokieć u góry” i ”łokieć<br />

u <strong>do</strong>łu” przez wybór odpowiedniego znaku w równaniu (2.15).<br />

W celu wyliczenia kąta q 2 wyznacza się wyrażenia na kąty pomocnicz δ oraz α zaznaczone<br />

na rysunku 2.2. Dla kąta δ zachodzi<br />

tan δ = P cz − l 1<br />

r<br />

= P cz − l 1<br />

√ , (2.16)<br />

P<br />

2<br />

cx − Pcy<br />

2


13<br />

czyli<br />

Po<strong>do</strong>bnie wyznaczamy kat α<br />

czyli<br />

δ = Atan2(P cz − l 1 , √ Pcx 2 − P cy 2 ). (2.17)<br />

tan α = l 3sinq 3<br />

l 2 + l 3 cosq 3<br />

, (2.18)<br />

α = Atan2(l 3 sinq 3 , l 2 + l 3 cosq 3 ). (2.19)<br />

Z rysunku otrzymuje się prostą zależność między kątami q 2 , δ, α, a mianowicie q 2 = δ − α,<br />

z której wynika,że<br />

q 2 = Atan2(P cz − l 1 , √ P 2 cx − P 2 cy ) − Atan2(l 3sinq 3 , l 2 + l 3 cosq 3 ). (2.20)<br />

Wartość kąta q 2 zależy od kąta q 3 . Ma to znaczenie fizyczne, ponieważ otrzymamy<br />

różne wartości kąta q 2 w zależności od tego, które rozwiązanie wybierzemy dla kąta q 3 .<br />

Z kolei kąt q 4 wyznaczamy z następującego związku η = q 2 + q 3 + q 4 czyli<br />

q 4 = η − q 2 − q 3 . (2.21)<br />

Reasumując dla P (P x , P y , P z , η, ϱ) otrzymujemy następujące zależności:<br />

⎫<br />

q 1 = Atan2(P y , P x ),<br />

q 2 = Atan2(P cz − l 1 , √ Pcx 2 − P cy 2 ) − Atan2(l 3sinq 3 , l 2 + l 3 cosq 3 ),<br />

q 3 = Atan2(± √ ⎪⎬<br />

1 − D 2 , D),<br />

q 4 = η − q 2 − q 3 ,<br />

q 5 = ϱ.<br />

⎪⎭<br />

(2.22)<br />

gdzie<br />

P cx = P x − k cos q 1 , P cy = P y − k sin q 1 , P cz = P z − l 4 sin η, D = P cx+P 2 cy+(P 2 cz−l 1 ) 2 −l2 2−l2 3<br />

2l 2 l 3<br />

,<br />

k = l 4 cos η.<br />

2.4 Konfiguracje wyróżnione manipulatora<br />

W celu mechanicznego sprawdzenia poprawności pozycjonowania manipulatora wyróżniono<br />

konfigurcję zerową manipulatora zwaną również konfiguracją geometryczną q 0 =<br />

(q 01 , q 02 , q 03 , q 04 , q 05 ), dla której zmienne przegubowe przyjmują następujace wartości:<br />

q 01 = 0 [ ◦ ],<br />

q 02 = 0 [ ◦ ],<br />

q 03 = 0 [ ◦ ],<br />

q 04 = 0 [ ◦ ],<br />

q 05 = 0 [ ◦ ].<br />

(2.23)


14<br />

Ogniwa 1,2,3,4,5 są ustawione w pozycji swojego środkowego zakresu pracy.<br />

Drugą wyróżnioną konfiguracją jest konfiguracja synchronizacji. Jej osiągnięcie jest<br />

sygnalizowane przez czujniki zamontowane w poszczególnych przegubach i kanały indeksujące<br />

koderów, odczytywane przez układ sterowania robota. Dla ogniw 1,2,4,5 czujniki<br />

zostały zamontowane tak, aby zachować zgodność z konfiguracją zerową. W przypadku<br />

ogniwa 3 położenie czujnika jest różne od położenia zerowego. Dokładne wartości położeń<br />

napędów ogniw w konfiguracji synchronizacji podano w <strong>do</strong>datku A.<br />

2.5 Transformacja napę<strong>do</strong>wa osi robota<br />

Sterownik robota zarówno mierzy, jak i zadaje pozycje i prędkości poszczególnych osi w<br />

tzw. przestrzeni napę<strong>do</strong>wej, której współrzędne opisują położenia wałów poszczególnych<br />

silników. Istotne jest więc podanie sposobu przeniesienia napędu dla poszczególnych osi<br />

jak i równań wiążących położenia wałów silników M i ze zmiennymi przegubowymi q i .<br />

Do napędu poszczególnych osi robota jak i <strong>do</strong> napędu mechanizmu zamykającego chwytak<br />

zastosowano silniki elektryczne prądu stałego z magnesem trwałym. Pomiar położenia<br />

wałów silników jest realizowany przy pomocy koderów przyrostowych o rozdzielczości D<br />

= 1024 impulsów na jeden obrót.<br />

Wszystkie silniki napę<strong>do</strong>we, są wyposażone w przekładnie wielostopniowe o przełożeniach<br />

G 1 = G 2 = G 3 = G 6 = 94.37 i G 4 = G 5 = 43.3.<br />

2.5.1 Rozwiązanie napędów ogniwa 1,2 i 3<br />

Napęd ogniwa 1 (obrót kolumny) jest przenoszony przez przekładnię wielostopniową o<br />

przełożeniu G 1 a następnie przez przekładnię jednostopniową o przełożeniu Z 1<br />

Z 2<br />

, gdzie Z 1<br />

i Z 2 oznacza ilość zębów dla poszczególnych kół przekładni jednostopniowej. Na rysunku<br />

2.3 jest pokazany sposób przeniesienia napędu dla ogniwa 1 i 2. Równanie opisujące<br />

przeniesienie napędu jest następujące<br />

Rysunek 2.3: Struktura układu przeniesienia napędu ogniwa 1 i 2.


15<br />

q 1 − q 01 =<br />

Z 12π<br />

Z 2 DG 1<br />

(M 1 − M 01 ), (2.24)<br />

gdzie q 0i jest wartością zmiennej przegubowej q i w konfiguracji zerowej, a M 0i jest wartością<br />

zmiennej napę<strong>do</strong>wej M i w konfiguracji zerowej.<br />

Transformacja prosta napędu<br />

c 1 = cos q 1<br />

(2.25)<br />

s 1 = sin q 1 ,<br />

ostatecznie ma postać<br />

a transformacja odwrotna<br />

czyli<br />

c 1 = cos (q 01 +<br />

s 1 = sin (q 01 +<br />

Z 12π<br />

Z 2 DG 1<br />

(M 1 − M 01 )), (2.26)<br />

Z 12π<br />

Z 2 DG 1<br />

(M 1 − M 01 )), (2.27)<br />

q 1 = Atan2(s 1 , c 1 ), (2.28)<br />

M 1 = M 01 + Z 2DG 1<br />

Z 1 2π (Atan2(s 1, c 1 ) − q 01 ). (2.29)<br />

W przypadku ogniwa 2 (główne ramię) sposób przeniesienia napędu jest analogiczny jak<br />

w przypadku ogniwa 1 rysunek 2.3. A mianowicie, dla ogniwa drugiego, równanie napędu<br />

wyraża się wzorem<br />

q 2 − q 02 =<br />

Z 32π<br />

(M 2 − M 02 ), (2.30)<br />

Z 4 DG 2<br />

Transformacja prosta napędu ma postać<br />

a transformacja odwrotna<br />

c 2 = cos (q 02 +<br />

s 2 = sin (q 02 +<br />

Z 32π<br />

Z 4 DG 2<br />

(M 2 − M 02 )), (2.31)<br />

Z 32π<br />

Z 4 DG 2<br />

(M 2 − M 02 )), (2.32)<br />

q 2 = Atan2(s 2 , c 2 ). (2.33)<br />

Z kolei dla ogniwa trzeciego sposób przeniesienia napędu różni się od sposobu w ogniwie 1<br />

i 2 jedynie tym, że czynne koło zębate Z 5 przekładni jednostopniowej nie jest zamocowane<br />

na osi przekładni G 3 a jest napędzane poprzez przekładnie pasową zębatą o przełożeniu<br />

równym jeden, co widać na rysunku 2.4. Równanie napędu ogniwa 3 wyraża się wzorem<br />

q 3 − q 03 =<br />

Transformacja prosta napędu ma postać<br />

a transformacja odwrotna<br />

c 3 = cos (q 03 +<br />

s 3 = sin (q 03 +<br />

Z 52π<br />

Z 6 DG 3<br />

(M 3 − M 03 ), (2.34)<br />

Z 52π<br />

Z 6 DG 3<br />

(M 3 − M 03 )), (2.35)<br />

Z 52π<br />

Z 6 DG 3<br />

(M 3 − M 03 )), (2.36)<br />

q 3 = Atan2(s 3 , c 3 ). (2.37)


16<br />

Rysunek 2.4: Struktura układu przeniesienia napędu ogniwa 3.<br />

2.5.2 Rozwiązanie napędu ogniwa 4 i 5<br />

Ruch w ogniwie 4 (pochylenie nadgarstka) i ogniwie 5 (obrót chwytaka) zapewniają dwa<br />

silniki elektryczne o przełożeniu G 4 = G 5 . Silniki te pracują w układzie różnicowym co<br />

widać na rysunku 2.5. Mechanizm różnicowy jest zbu<strong>do</strong>wany z pięciu stożkowych kół<br />

zębatych, z których dwa koła o ilości zębów Z 7 są osadzone na osiach silników, kolejne<br />

dwa koła o ilości zębów Z 8 wykonują ruch obrotowy w osi kąta q 4 , natomiast ostatnie<br />

koło zębate o liczbie zębów Z 9 obraca się w osi kąta q 5 . Równania przeniesienia napędu<br />

dla ogniwa 4 wyrażają się następująco<br />

q 4 − q 04 =<br />

Transformacja prosta napędu<br />

c 4 = cos (q 04 +<br />

s 4 = sin (q 04 +<br />

a transformacja odwrotna<br />

Z 72π<br />

2Z 8 DG 4<br />

((M 5 − M 05 ) − (M 4 − M 04 )), (2.38)<br />

Z 72π<br />

2Z 8 DG 4<br />

((M 5 − M 05 ) − (M 4 − M 04 ))), (2.39)<br />

Z 72π<br />

2Z 8 DG 4<br />

((M 5 − M 05 ) − (M 4 − M 04 ))), (2.40)<br />

q 2 = Atan2(s 2 , c 2 ). (2.41)<br />

Z kolei dla ogniwa 5 otrzymujemy równania przeniesienia napędu postaci<br />

Transformacja prosta napędu<br />

q 5 − q 05 = −<br />

Z 72π<br />

((M 4 − M 04 ) + (M 5 − M 05 )), (2.42)<br />

2Z 9 DG 5<br />

c 5 = cos (q 05 −<br />

Z 72π<br />

2Z 9 DG 4<br />

((M 5 − M 05 ) − (M 4 − M 04 ))), (2.43)


17<br />

Rysunek 2.5: Struktura układu różnicowego napędzającego osie nadgarstka.<br />

s 5 = sin (q 05 −<br />

a transformacja odwrotna<br />

Z 72π<br />

2Z 9 DG 4<br />

((M 5 − M 05 ) − (M 4 − M 04 ))), (2.44)<br />

q 2 = Atan2(s 2 , c 2 ). (2.45)<br />

Warto zwrócić uwagę, że efektywniejszą obliczeniowo implementację transformacji prostych<br />

i odwrotnych uzyskuje się dzięki nadmiarowej reprezentacji kątów przegubowych q i<br />

jako par (c i , s i ).


18<br />

Rozdział 3<br />

Konstrukcja robota ZS5R<br />

3.1 Konstrukcja mechaniczna<br />

Podstawowymi materiałami, z których została wykonana konstrukcja manipulatora robota<br />

stanowią blacha aluminiowa, kształtowniki aluminiowe (kątowniki, ceowniki) oraz<br />

pręty stalowe. Poszczególne elementy konstrukcyjne zostały wycięte z blachy aluminiowej<br />

o grubości 1-3mm i po odpowiednim wygięciu, poskręcane śrubami M3. Tak zmontowane<br />

elementy stanowią korpusy poszczególnych ramion robota. Konstrukcja chwytaka<br />

wykonano ceowników aluminowych. Na rysunku 3.1 przedstawiono wygląd manipulatora,<br />

z kolei na rysunku 3.2 przedstawiono rysunek złożeniowy, który zawiera główne zespoły<br />

konstrukcji mechanicznej.<br />

Oznaczenia na rysunku 3.2<br />

Rysunek 3.1: Zdjęcie manipulator.


Rysunek 3.2: Rysunek złożeniowy manipulatora z oznaczonymi głównymi częściami.<br />

19


20<br />

1 – podstawa manipulatora,<br />

2 – kolumna obrotowa,<br />

3 – główne ramie manipulatora,<br />

4 – przedramie manipulatora,<br />

5 – chwytak,<br />

6 – piasta w której obraca się oś kolumny manipulatora,<br />

M 1 – silnik napędzający oś kolumny ,<br />

M 2 – silnik napędzający oś głównego ramienia,<br />

M 3 – silnik napędzający oś przedramienia ,<br />

M 45 – dwa silniki napędzjące osie chwytaka ,<br />

M 6 – silnik napędzjący mechanizm zamykania i otwierania kiści chwytaka.<br />

<strong>Manipulator</strong> posiada pięć przegubów obrotowych, gdzie <strong>do</strong> 1-go (obrót kolumny) i 2-go<br />

(ruch głównego ramienia) napęd jest przenoszony przez wielostopniową przekładnię zębatą<br />

a następnie przez jednostopniową przekładnię. Zastosowanie <strong>do</strong>datkowej jednostopniowej<br />

przekładni związane jest z tym, iż zastosowane silniki nie posiadały <strong>do</strong>statecznie dużego<br />

momentu obrotowego <strong>do</strong> porusznia poszczególnych ramion manipulatora. Do układu napę<strong>do</strong>wego<br />

przegubu trzeciego (ruch przedramienia) <strong>do</strong>datkowo zastosowano pasek zębaty,<br />

rysunek 2.4. Zasosowanie paska zębatego spowo<strong>do</strong>wane jest tym, że silnik napę<strong>do</strong>wy osi 3<br />

jest umieszczony na końcu głównego ramienia rysunek 3.2. Umieszczenie tam silnika ma<br />

swoje pozytywne konsekwencje, a mianowicie stanowi on swego rodzaju przeciwwagę, co<br />

ma znaczenie ze względu na moment obrotowy potrzebny <strong>do</strong> ruchu głównego ramienia. Z<br />

kolei dla przegubu 4-go i 5-go napęd jest zrealizowany przez układ różnicowy. Powoduje<br />

to pewne utrudnienia w sterowaniu tymi osiami, równania przeniesienia napędu (2.38),<br />

(2.42) pokazują, że są zależne od siebie, (rysunek 2.5).<br />

Wszystkie parametry i rysunki wykonawcze poszczególnych części manipulatora zamieszczone<br />

są w <strong>do</strong>datku A.<br />

3.1.1 Silniki manipulatora<br />

<strong>Manipulator</strong> posiada sześć silników prądu stałego firmy MICROMOTORS S.R.L [10], z<br />

których cztery są typu RHE158.24.100 i dwa typu HLE149.24.43. Wszystkie te silniki są<br />

konstrukcyjnie sprzężone z przekładniami wielostopniowymi, co widać na rysunkach 3.3 i<br />

3.4. Do napędu kolumny robota, ramienia, przedramienia i wciągarki chwytaka wykorzystano<br />

silniki typu RHE158.24.100, a silniki typu HLE149.24.43 zastosowano <strong>do</strong> napędu<br />

układu różnicowego chwytaka. Dane związane z wymiarami fizycznymi tych silników są<br />

przedstawione na rysunkach umieszczonych w <strong>do</strong>datku A. W poniższych tabelach zestawiono<br />

parametry techniczne silników napę<strong>do</strong>wych.<br />

znamionowe napięcie zasilania 24[V ]<br />

przełożenie przekładni 94.37 : 1<br />

maksymalny ciągły moment obrotowy 60[Ncm]<br />

prędkość obrotowa bez obciązenia 66[obr/min]<br />

prędkość obrotowa z max. momentem obciążenia 45[obr/min]<br />

pobór prądu silnika w stanie jałowym < 70[mA]<br />

pobór prądu silnika przy max. obciążeniu 340[mA]<br />

Tabela 3.1: Parametry silnika typu RHE158.24.100.


21<br />

Rysunek 3.3: Zdjęcie silnika HLE149.24.43.<br />

Rysunek 3.4: Zdjęcie silnika RHE158.24.100.<br />

znamionowe napięcie zasilania 24[V ]<br />

przełożenie przekładni 43.3 : 1<br />

maksymalny ciągły moment obrotowy 15[Ncm]<br />

prędkość obrotowa bez obciązenia 78[obr/min]<br />

prędkość obrotowa z max. momentem obciążenia 55[obr/min]<br />

pobór prądu silnika w stanie jałowym < 50[mA]<br />

pobór prądu silnika przy max. obciążeniu 120[mA]<br />

Tabela 3.2: Parametry silnika typu HLE149.24.43.


22<br />

Silniki te <strong>do</strong>datkowo są fabrycznie wyposażone w kodery halotronowe. Jednak mała rozdzielczość<br />

(trzy impulsy na obrót wału silnika) nie pozwoliła na zastosowanie ich w tej<br />

konstrukcji. Dlatego silniki te zostały wyposażone w kodery przyrostowo-impulsowe typu<br />

AS5040 firmy AUSTRIAMICROSYSTEMS [6]. Możliwość zamontowania tych koderów<br />

wiązała się z koniecznością modyfikacji konstrukcji silników. Przeróbki polegały na skróceniu<br />

wału silnika o 3mm a następnie zamontowaniu na nim magnesu neodymowego [7].<br />

Wykonano również płytki drukowane <strong>do</strong> AS5040(<strong>do</strong>datek C) przystosowane <strong>do</strong> zamocowania<br />

w miejsce fabrycznego kodera. Aby zamknąć nowy koder w obu<strong>do</strong>wie, należało w<br />

pokrywie wykonać podtoczenie o głębokości 1mm. Na rysunkach 3.5 i 3.6 przedstawione<br />

Rysunek 3.5: Zdjęcie ilustrujące sposób zamontowania magnesu na osi silnika.<br />

Rysunek 3.6: Zdjęcie ilustrujące sposób zamontowania kodera AS5040.<br />

są zdjęcia ilustrujące sposób zamontowania koderów AS5040. Parametry tych koderów są<br />

<strong>do</strong>stępne na stronie internetowej producenta [6].


23<br />

3.2 Konstrukcja elektroniczna – sterownik robota<br />

Robot ZS5R posiada manipulator, którego poszczególne ramiona mogą wykonywać sekwencje<br />

ruchów, za które odpowiedzialny jest układ sterowania. Między innymi zapewnia<br />

on pomiar niezbędnych parametrów ruchu, takich jak położenia i prędkości. Ponadto<br />

układ sterowania zapewnia komunikację z komputerem nadrzędnym w celu pobrania parametrów<br />

<strong>do</strong> realizacji zadania, oraz wysyłania <strong>do</strong> komputera nadrzędnego aktualnych<br />

parametrów stanu robota. Na podstawie zadanych i zmierzonych parametrów sterownik<br />

wymusza na silnikach umieszczonych w ramionach takie sterowania, aby przeprowadzić<br />

efektor manipulatora z punktu początkowego <strong>do</strong> punktu <strong>do</strong>celowego. Moc obliczeniowa<br />

jednostki centralnej powinna zapewnić wykonanie wszystkich niezbędnych obliczeń w jak<br />

najkrótszym czasie. Na rysunku 3.7 przedstawiono schemat blokowy sterownika robota.<br />

Szczegółowe schematy elektroniczne, rysunki montażowe płytki (rozmieszczenie elemen-<br />

Rysunek 3.7: Schemat blokowy układu sterowania manipulatora.<br />

tów i ścieżek) oraz wykaz elementów znajdują się w <strong>do</strong>datku B i C.<br />

Sterownik został zmontowany na płytce dwustronnej o wymiarach 94x260mm, co widać<br />

na rysunku 3.8. Na płytce tej znajdują się:<br />

• moduł EM332/B z mikrokontrolerem MC68332, zamocowany na dwóch złączach<br />

48-stykowych każdy,<br />

• przetwornik A/C typu MAX1270 pracujący na magistrali QSPI,


24<br />

Rysunek 3.8: Płytka sterownika .<br />

• dwa przetworniki C/A typu MAX525 pracujących na magistrali QSPI,<br />

• układ transmisji szeregowej RS232C wykorzystujący SCI i translator poziomów napięciowych<br />

- układ MAX232A,<br />

• klucz sterujący cewką przekaźnika,<br />

• układ bramek NAND typu 74HCT132 będący układem wejściowym dla czujników<br />

synchronizacji,<br />

• sześć regulatorów prądu wykorzystujących układ wykonawczy L298N.<br />

Sterownik manipulatora można podzielić na dwa moduły:<br />

• moduł sterowania oparty na module EM332/B firmy ELFIN,<br />

• moduł mocy zawierający układy wykonawcze wraz z regulatorami prądu,<br />

3.2.1 Bu<strong>do</strong>wa modułu sterowania<br />

Głównym elementem modułu sterowania jest moduł EM332/B, na którym znajduje się<br />

jednostka centralna MC68332, rysunek 3.9. Wszystkie schematy elektryczne, rysunek płytki,<br />

rozmieszczenie elementów, zasoby mikrokontrolera MC68332 oraz zasada działania<br />

modułu EM332/B są opisane w raporcie [5].<br />

Schemat ideowy modułu sterowania znajduje się na rysunku 9.2 w <strong>do</strong>datku C.<br />

Za pomocą magistrali QSPI <strong>do</strong> modułu EM332/B podłączone są przetworniki:<br />

• dwa układy MAX525 [9](czterokanałowy, 12-bitowy przewornik cyfrowo-analogowy<br />

unipolarny o zakresie napięcia wyjściowego 0-2.5V, wymaga zewnętrznego napięcia<br />

odniesienia) służą <strong>do</strong> zadawania prądu w układach wykonawczych,<br />

• układ MAX1270 [9](ośmiokanałowy, 12-bitowy przetwornik analogowo-cyfrowy<br />

uni/bipolarny o 10V zakresie pomiaru z wbu<strong>do</strong>wanym źródłem napięcia odniesienia)<br />

służy <strong>do</strong> mierzenia prądu pobieranego przez silniki wykonawcze,


25<br />

Rysunek 3.9: Moduł EM332/B.<br />

Do bloku TPU mikrokontrolera podłączone są kodery przyrostowe AS5040 [6]. Zapewniają<br />

one pomiar położenia i prędkości. Zasotosowane kodery posiadają dwa wyjścia A/B, które<br />

generują dwa przebiegi kwadraturowe przesunięte w fazie o 90 stopni. Rozdzielczość tych<br />

koderów wynosi 256 impulsów/obrót osi silnika. Sygnały kodera są deko<strong>do</strong>wane w bloku<br />

TPU standar<strong>do</strong>wą funkcją QDEC, dzięki której otrzymujemy informacje o położeniu wału<br />

silnika. Ponieważ deko<strong>do</strong>wanie uwzględnia wszystkie zbocza sygnałów wychodzących<br />

z kodera, pomiar położenia osi silnika odbywa się z rozdzielczością 1024 impulsów/obrót<br />

wału silnika. Natomiast prędkości silników mierzone są pośrednio przez pomiar okresu<br />

sygnałów kwadraturowych generowanych przez kodery. Pomiar ten także jest realizowany<br />

w bloku TPU. Funkcja QDVEL <strong>do</strong>konująca pomiaru zlicza ilość impulsów zegara taktującego<br />

blok TPU w trakcie trwania jednego okresu sygnału kwadraturowego. Na podstawie<br />

zliczonej ilości impulsów oprogramowanie sterownika oblicza aktuanle prędkści silników.<br />

3.2.2 Bu<strong>do</strong>wa modułu mocy<br />

Zastosowanie silników prądu stałego <strong>do</strong> napędu osi robota podyktowane było tym, że<br />

silniki prądu stałego z magnesami trwałymi posiadą liniową zależność momentu napę<strong>do</strong>wego<br />

generowanego przez silnik od prądu pobieranego. W rezultacie sterowanie prą<strong>do</strong>we<br />

silników zapewnia kontrolę nad momentem uzyskiwanym na wale silnika. Z tego względu<br />

moduł mocy został zbu<strong>do</strong>wany z sześciu regulatorów prądu, które zawierają układy wykonawcze<br />

L298N [12]. Schemat ideowy jednego z tych regulatorów jest zamieszczony na<br />

rysunku 9.1 w <strong>do</strong>datku C. Na rysunku blokowym 3.10 przedstawiona jest idea działania<br />

układu regulacji prądu. Regulacja ta polega na porównaniu wartości zadanej prądu silnika<br />

z wartością rzeczywistą. Wartość rzeczywista prądu jest mierzona za pośrednictwem rezystorów<br />

pomiarowych R p1 i R p2 jako spadek napięcia na nich. Napięcie z dwóch rezystorów<br />

pomiarowych jest podane na wejście wzmacniacza różnicowego. W układzie wykonawczym<br />

prąd może płynąć tylko przez jeden rezystor w zależności od trybu pracy układu (obroty<br />

w lewo, prawo). Po znaku różnicy potencjału na rezystorach układ rozpoznaje kierunek<br />

płynącego prądu w silniku. Wartość napięcia ze wzmacniacza różnicowego podana jest na<br />

filtr RC, a następnie na układ komparatora, porównujący prąd rzeczywisty z wartością<br />

zadaną prądu. Wartość zadaną prądu ustawia się za pośrednictwem przetwornika C/A.<br />

Filtr RC ma za zadanie uśrednić wartość prądu silnika i podać ją <strong>do</strong> przetwornika A/C,<br />

dzięki któremu możemy diagnostycznie sprawdzać wartość rzeczywistą prądu płynącego


26<br />

Rysunek 3.10: Schemat blokowy regulatora prądu.<br />

przez silnik. Sygnał z układu komparatora jest podawany na układy logiczne, ktorych zadaniem<br />

jest wprowadzenie czasów opóźnień pomiędzy wyłączeniem jednej gałęzi mostka<br />

a włączeniem drugiej gałęzi mostka. Blok układów logicznych zawiera układy 74HC123,<br />

które są odpowiedzialne za czasy opóźnień.<br />

Układ wykonawczy (mostek mocy) jest zasilany z napięcia +36V, natomiast pozostała<br />

część elektroniki jest zasilana napięciem +5V (układy cyfrowe, przetworniki A/C i C/A),<br />

±5V(wzmacniacze operacyjne, komparatory). Schemat ideowy zasilacza jest zamieszczony<br />

w <strong>do</strong>datku C. Na rysunku 3.11 jest przedstawione zdjęcie zasilacza.<br />

Rysunek 3.11: Zasilacz części cyfrowej i analogowej


27<br />

3.2.3 Opis łączówek sterownika<br />

Przyłączenie zewnętrznego terminala (lub komputera wyposażonego w złącze szeregowe)<br />

jest możliwe dzięki złączu Z 10 .<br />

wolny 1 2 TxD<br />

RxD 3 4 wolny<br />

GND 5 6 wolny<br />

wolny 7 8 wolny<br />

wolny 9 10 wolny<br />

Tabela 3.3: Łączówka transmisji szeregowej Z 10 .<br />

oznaczenie opis styk<br />

TxD wyjście danych nadawanych (RS232C) 2<br />

RxD wejście danych odbieranych (RS232C) 3<br />

GND masa sygnałowa 5<br />

Tabela 3.4: Sygnały łączówki transmisji szeregowej Z 10 .<br />

Na złączu Z 8 wyprowadzone są sygnały, które umożliwiają podłączenie zewnętrznego sterownika.<br />

W przypadku gdy wykorzystywany jest wewnętrzny układ sterowania sygnały<br />

od STER I1 <strong>do</strong> STER I6 są odpowiednio połączone z STERI1 <strong>do</strong> STERI6 za pomocą<br />

zworek. W przypadku gdy chcemy podłączyć zewnętrzny sterownik (na karta współpracująca<br />

z pakietem MATLAB ) rozwieramy powyższe sygnały, a <strong>do</strong> styków sygnałowych<br />

oznaczonych STER I1,..., STER I6 podłączamy sygnały zewnętrzne o zakresie napięciowym<br />

0-2.5V.<br />

Wyprowadzenia i opis łączówki Z 11 jest zamieszczony w raporcie [5]. Dwustykowe złącza<br />

Z 1 ,...,Z 6 są wyjściami z poszczególnych stopni mocy i służą <strong>do</strong> przyłączenia silników.


28<br />

GND 1 2 Vcc<br />

TPU10 3 4 TPU11<br />

TPU8 5 6 TPU9<br />

TPU6 7 8 TPU7<br />

TPU4 9 10 TPU5<br />

TPU2 11 12 TPU3<br />

TPU0 13 14 TPU1<br />

POM I1 15 16 POM I2<br />

POM I3 17 18 POM I4<br />

POM I5 19 20 POM I6<br />

STER I1 21 22 STERI1<br />

STER I2 23 24 STERI2<br />

STER I3 25 26 STERI3<br />

STER I4 27 28 STERI4<br />

STER I5 29 30 STERI5<br />

STER I6 31 32 STERI6<br />

wolny 33 34 wolny<br />

Tabela 3.5: Łączówka Z 8 .


29<br />

oznaczenie opis styk<br />

GND masa sygnałowa 1<br />

Vcc +5V 2<br />

TPU10, TPU11 wyjścia kodera A/B na silniku M 6 3, 4<br />

TPU8, TPU9 wyjścia kodera A/B na silniku M 5 5, 6<br />

TPU6, TPU7 wyjścia kodera A/B na silniku M 4 7, 8<br />

TPU4, TPU5 wyjścia kodera A/B na silniku M 3 9, 10<br />

TPU2, TPU3 wyjścia kodera A/B na silniku M 2 11, 12<br />

TPU0, TPU1 wyjścia kodera A/B na silniku M 1 13, 14<br />

POM I1 sygnał pomiaru prądu silnika M 1 (-5V


oznaczenie opis styk<br />

SYNCHR1,...,SYNCHR6 sygnały z czujników synchronizacji q 1 ,..,q 6 4,2,8,6,12,10<br />

INDEX1,...,INDEX6 sygnały z kanałów indeks koderów D 1 ,..,D 6 3,1,7,5,11,9<br />

TPU0, TPU1 wyjścia kodera A/B na silniku M 1 13, 14<br />

TPU2, TPU3 wyjścia kodera A/B na silniku M 2 15, 16<br />

TPU4, TPU5 wyjścia kodera A/B na silniku M 3 17, 18<br />

TPU6, TPU7 wyjścia kodera A/B na silniku M 4 19, 20<br />

TPU8, TPU9 wyjścia kodera A/B na silniku M 5 21, 22<br />

TPU10, TPU11 wyjścia kodera A/B na silniku M 6 23, 24<br />

GND masa sygnałowa 25<br />

Vcc +5V 26<br />

Tabela 3.8: Opis sygnałów łączówki Z 9 .<br />

opis styk<br />

∼24V 1<br />

∼24V 2<br />

Tabela 3.9: Opis złącza zasilania modułu mocy Z 7 .<br />

opis styk<br />

-5V 1<br />

+5V 2<br />

GND 3<br />

+5V 4<br />

Tabela 3.10: Opis złącza zasilania Z 12 .<br />

opis styk<br />

+5V 1<br />

+5V 2<br />

GND 3<br />

-5V 4<br />

Tabela 3.11: Opis złącza na płytce zasilacz Z 13 .<br />

złącze<br />

funkcja<br />

Z 1 wyjście dla silnika M 1<br />

Z 2 wyjście dla silnika M 2<br />

Z 3 wyjście dla silnika M 3<br />

Z 4 wyjście dla silnika M 6<br />

Z 5 wyjście dla silnika M 4<br />

Z 6 wyjście dla silnika M 5<br />

Tabela 3.12: Opis złącz Z 1 ,...Z 6 .<br />

30


31<br />

Rozdział 4<br />

Oprogramowanie sterownika<br />

Sterownik robota jest zbu<strong>do</strong>wany w oparciu o mikrokontroler MC68332. Oprogramowanie<br />

dla tego mikrokontrolera można napisać w języku asembler C oraz C++. W tym przypadku<br />

oprogramowanie zostało napisane w języku C z użyciem makr w asemblerze. Oprogramowanie<br />

sterownika robota ZS5R zostało przygotowane w śro<strong>do</strong>wisku HI-CROSS<br />

firmy HIWARE. Zasadniczymi częściami programu sterownika są funkcja główna main()<br />

oraz procedura obsługi przerwania cyklicznego interrupt void int_PIT().<br />

4.1 Funkcja główna main()<br />

Na początku funkcji main() wywoływane są procedury inicjujące podstawowe bloki mikrokontrolera<br />

SIM, TPU, QSM oraz inicjowana jest początkowa wartość prądu regulatorów.<br />

sim_init(); /* inicjalizacja modulu SIM */<br />

qsm_init(); /* inicjalizacja modulu QSM */<br />

tpu_init(); /* inicjalizacja modulu TPU */<br />

Cur_init();<br />

/* ustawienie prądów zerowych regulatorów*/<br />

Funkcja sim_int() między innymi konfiguruje port E i ustawia wektor i poziom przerwania<br />

cyklicznego PIT<br />

/*Konfiguracja przerwania cyklicznego*/<br />

*((void (**) ())(4*PI_VECT)) = int_PIT; /* ustawienie wektora */<br />

PICR = (PI_LEVEL


32<br />

Z kolei funkcja tpu_int() inicjalizuje odpowiednie kanały bloku TPU dla funkcji QDEC<br />

i QDVEL, które to funkcje służą <strong>do</strong> pomiaru położenia i prędkości.<br />

W pętli głównej umieszczono obsługę menu pozwalającego interakcyjnie wybierać tryb<br />

pracy robota.<br />

out_text("\n\n\rPRACA DYPLOMOWA\n\n\r");<br />

out_text("Robot dydaktyczny ZS5R\n\r"); /* Intro */<br />

out_text("Autor: Zbigniew Struzik, Wroclaw 2005\n\r");<br />

out_text("h - Pomoc\n\r");<br />

out_text("\n\n\rMenu Glowne:\n\n\r");<br />

out_text("P - Pozycjonowa\n\r");<br />

out_text("M - Tryb sterowania recznego\n\r");<br />

out_text("X - Wylaczenie silnikow\n\r");<br />

out_text("S - przeslanie\n\r");<br />

out_text("H - Pomoc\n\n\r");<br />

Wybierając np. pozycję oznaczoną literką M lub m przechodzimy <strong>do</strong> menu sterowania<br />

ręcznego.<br />

out_text("\n\n\rMenu sterowania recznego:\n\n\r");<br />

out_text("1,Q - Wieza\n\r");<br />

out_text("2,W - Ramie\n\r");<br />

out_text("3,E - Przedramie\n\r");<br />

out_text("4,R - Nadgarstek (gora/<strong>do</strong>l)\n\r");<br />

out_text("5,T - Nadgarstek (obrot)\n\r");<br />

out_text("6,Y - Chwytak\n\r");<br />

out_text("SPACE - Silniki STOP\n\r");<br />

out_text("V - Definicja predkosci\n\r");<br />

out_text("ESC - Powrot <strong>do</strong> Menu Glownego\n\r");<br />

out_text(">>");<br />

4.2 Procedura obsługi przerwania cyklicznego<br />

Wszystkie pomiary i wyliczenie wielkości sterujące są przechowywane w strukturze state.<br />

typedef struct{<br />

. \\<br />

. \\<br />

. \\<br />

}STAN;<br />

STAN<br />

state;<br />

Nastawy i inne parametry regulatorów prędkości i położenia są przechowywane w strukturze<br />

nast.<br />

typedef struct<br />

{<br />

.\\<br />

.\\


33<br />

.\\<br />

}NAS;<br />

NAS<br />

nast;<br />

Wszystkie procesy związane ze sterowaniem oraz akwizycją danych pomiarowych, obsługiwane<br />

są w funkcji przerwania cyklicznego interrupt void int_PIT(). Funkcja ta jest<br />

wywoływana co 2ms. Jest w niej realizowany pomiar położenia i prędkości, przy pomocy<br />

funkcji QDEC i QDVEL:<br />

state.temposition[0] = TPURAM(QDEC1A,1);/* odczyt licznika pozycji q1*/<br />

state.M[0] &= 0xffff0000;<br />

state.M[0] += state.temposition[0];<br />

if((state.lastposition[0]-state.temposition[0]) > 32767)<br />

{<br />

state.M[0] += 0x10000;<br />

}<br />

if((state.temposition[0]-state.lastposition[0]) > 32767)<br />

{<br />

state.M[0] -= 0x10000;<br />

}<br />

state.lastposition[0] = state.temposition[0];<br />

state.speed[0] = QDVEL2Speed((int)TPURAM(QDVEL1,2));<br />

state.speed[1] = QDVEL2Speed((int)TPURAM(QDVEL2,2));<br />

state.speed[2] = QDVEL2Speed((int)TPURAM(QDVEL3,2));<br />

state.speed[3] = ((TPSEC*(state.M[3]-state.oldposition[2])+2)/4);<br />

state.speed[4] = ((TPSEC*(state.M[4]-state.oldposition[0])+2)/4);<br />

state.speed[5] = ((TPSEC*(state.M[5]-state.oldposition[1])+2)/4);<br />

Pomiar prądu jest realizowany za pomocą przetwornika A/C pracującego na kolejkowej<br />

magistrai QSPI. Aktualizacja zmierzonego prądu również jest realizowana w funkcji przerwania<br />

cyklicznego PIT.<br />

state.MCurrent[0] = ADBip2Int(QREC[1]>>4);<br />

state.MCurrent[1] = ADBip2Int(QREC[2]>>4);<br />

state.MCurrent[2] = ADBip2Int(QREC[3]>>4);<br />

state.MCurrent[3] = ADBip2Int(QREC[4]>>4);<br />

state.MCurrent[4] = ADBip2Int(QREC[5]>>4);<br />

state.MCurrent[5] = ADBip2Int(QREC[0]>>4);<br />

Proces wyliczenia sterowań dla poszczególnych osi jest realizowany za pomocą regulatorów<br />

PID położenia i prędkości zaimplementowanych w funkcjach:<br />

void ControlPID_pos(NAS *ptr_n, STAN *ptr_s, int i)<br />

void ControlPID_speed(NAS *ptr_n, STAN *ptr_s, int i)<br />

wywoływanych w obsłudze przerwania PIT. Na rysunku blokowym 4.1 jest przedstawiony<br />

sposób realizacji tych regulatorów. Po wyliczeniu sterowań przez funkcje regulatorów,<br />

wartości zadanych prądów są wpisywane <strong>do</strong> TRANSMIT RAM w bloku QSPI:


34<br />

Rysunek 4.1: Schemat blokowy układu sterowania.<br />

QTRAN[6] = (state.SetCurrent[0] & 0x0FFF)|0x3000;<br />

QTRAN[7] = (state.SetCurrent[1] & 0x0FFF)|0x7000;<br />

QTRAN[8] = (state.SetCurrent[2] & 0x0FFF)|0xB000;<br />

QTRAN[9] = (state.SetCurrent[3] & 0x0FFF)|0xF000;<br />

QTRAN[10] = (state.SetCurrent[4] & 0x0FFF)|0x3000;<br />

QTRAN[11] = (state.SetCurrent[5] & 0x0FFF)|0x7000;<br />

Do przeprowadzenia eksperymentów i akwizycji danych pomiarowych w funkcji<br />

interrupt void int_PIT() jest wykonywany zapis wybranych parametrów <strong>do</strong> tablicy.<br />

if (flaga_pomiarow) {<br />

tabpom[l][0]=state.SetCurrent[1];<br />

tabpom[l][1]=state.MCurrent[1];<br />

tabpom[l][2]=state.speed[1];<br />

tabpom[l][3]=nast.W_set[1];<br />

if (++l>=1000)<br />

{<br />

l=0;<br />

flaga_pomiarow=0;<br />

}<br />

}<br />

Następnie tablica z pomiarami jest wysyłana <strong>do</strong> komputera nadrzędnego przez łącze szeregowe<br />

za pomocą funkcji wywoływanej w menu głównym (S), podanej poniżej.<br />

void out_text(char *_text) {<br />

byte length=0;<br />

while(n_bufor);<br />

while(*(length+_text))


35<br />

length++;<br />

while(length)<br />

{<br />

length--;<br />

bufor[n_bufor]=*(length+_text);<br />

n_bufor++;<br />

}<br />

SCCR1=SCCR1|0x0080;<br />

return;<br />

}<br />

Opisane oprogramowanie zachowuje w dużym stopniu zgodność z oprogramowaniem robota<br />

Romik (w zakresie menu). Pozwala również na zbieranie wyników pomiarów parametrów<br />

ruchu osi robota przy prowadzeniu eksperymentów.


36<br />

Rozdział 5<br />

Badania i wyniki eksperymentów<br />

W celu zbadanie konstrukcji sterownika i zaobserwowanie parametrów jakościowych przeprowadzono<br />

odpowiednie eksperymenty. W celu zebrania pomiarów zaimplementowano<br />

program testowy. W programie tym, cyklicznie co 2ms wywoływana jest procedura pozwalająca<br />

zadawać momenty napę<strong>do</strong>we silników oraz zebrać próbki pomiarowe. Zebrane<br />

próbki pomiarowe ze sterownika zostały wysłane <strong>do</strong> komputera nadrzędnego, na którym<br />

zostały zwizualizowane przy pomocy programu gnuplot. Wysłane próbki nie zostały<br />

wyskalowane dla nich odpowiednich jednostkach. Oś odciętych (czasu) na wszystkich wykresach<br />

jest skalowana w cyklach przerwania PIT (2ms). Osie rzędnych wyskalowane są<br />

bezpośrednio w jednostkach pomiarowych z przetworników.<br />

Na rysunku 5.1 przedstawiony jest wykres ilustrujący odpowiedź sprzętowego regulatora<br />

prądu na zadany prąd. Prąd zadany został wygenerowany przez regulator prędkości dla<br />

przegubu q 1 (nastawy regulatora PID kp w=20, kd w=10, ki w=5, lim int=500 lim curr<br />

= 2047 w set=10000).<br />

Na wykresie można zaobserwować opóźnienie odpowiedzi regulatora na zadany prąd.<br />

4500<br />

4000<br />

’pom2.9.txt’ using 1:2<br />

’pom2.9.txt’ using 1:3<br />

3500<br />

3000<br />

2500<br />

2000<br />

1500<br />

1000<br />

500<br />

0<br />

-500<br />

-1000<br />

0 5 10 15 20 25 30<br />

Rysunek 5.1: Wykres odpowiedzi regulatora na zadany prąd.<br />

Wynika to z tego, iż zadany prąd regulatora jest ustawiany przez przetwornik C/A, który<br />

pracuje na magistrali QSPI. Warto zwrócić uwagę na odpowiedź skokową regulatora<br />

prądu typową dla układu inercyjnego.<br />

Na rysunku 5.2 przedstawiono wynik pracy regulatora prędkości podczas rozpędzania


37<br />

przegubu q 0 . Widać, że w początkowym okresie prędkość narasta liniowo pod wpływem<br />

ograniczonego <strong>do</strong> zadanej wartości prądu. Po osiągnięciu zadanej prędkości regulator prędkości<br />

steruje prądem silnika utrzymując prędkość ruchu przegubu (rysunek 5.3).<br />

7000<br />

6000<br />

’pom1.txt’ using 1:2<br />

’pom1.txt’ using 1:3<br />

’pom1.txt’ using 1:4<br />

5000<br />

4000<br />

3000<br />

2000<br />

1000<br />

0<br />

-1000<br />

0 10 20 30 40 50 60<br />

Rysunek 5.2: Rozpędzanie osi q 0 .<br />

8000<br />

7000<br />

’pom1.txt’ using 1:2<br />

’pom1.txt’ using 1:3<br />

’pom1.txt’ using 1:4<br />

6000<br />

5000<br />

4000<br />

3000<br />

2000<br />

1000<br />

0<br />

-1000<br />

0 100 200 300 400 500 600 700 800 900 1000<br />

Rysunek 5.3: Regulacja prędkości osi q 0 .<br />

Jak widać, opracowany sterownik pozwala gromadzić pomiary parametrów ruchu poszczególnych<br />

osi, co jest szczególnie przydatne przy badaniu własności regulatorów, <strong>do</strong>bieraniu<br />

ich nastaw, szukaniu charakterystyk napędów i własności dynamicznych robota.


38<br />

Rozdział 6<br />

Podsumowanie<br />

W wyniku niniejszej pracy powstało stanowisko laboratoryjne, którego główną częścią jest<br />

manipulator dydaktyczny o nazwie ZS5R. Cykl pracy rozpoczęto od <strong>do</strong>boru silników na-<br />

Rysunek 6.1: Wi<strong>do</strong>k skonstruowanego manipulatora.<br />

pę<strong>do</strong>wych, a następnie wykonano konstrukcję mechaniczną manipulatora. Skonstruowany<br />

manipulator jest klasy 5R, (posiadający pięć stopni swobody) oraz jest wyposażony w<br />

chwytak dwupalczasty. Następnie zaprojektowano i wykonano w pełni działający układ<br />

sterowania, który pozwala na sterowanie prądem silników prądu stałego (a więc i momentem<br />

napę<strong>do</strong>wym), przez co istnieje w przyszłości możliwość implementacji algorytmów<br />

sterowania uwzględniających dynamikę robota. W bu<strong>do</strong>wie układu elektronicznego


przewidziano złącze pozwalające na podłączenie zewnętrznego układu sterowania, jak na<br />

przykład karty współpracującej ze śro<strong>do</strong>wiskiem MATLAB/SIMULINK. Wykonano testowe<br />

oprogramowanie pozwalające na zbieranie danych pomiarowych z wewnętrznych<br />

czujników, a następnie wysyłanie ich za pomocą interfejsu szeregowego na terminal w<br />

postaci pliku txt. Zebrane dane pozwoliły na przeprowadzenie eksperymentów.<br />

W pracy zamieszczono również, przykła<strong>do</strong>wą instrukcję laboratoryjną stanowiska oraz<br />

<strong>do</strong>łączono <strong>do</strong>datki, w których znajduje się pełna <strong>do</strong>kumentacja techniczna konstrukcji<br />

mechanicznej i elektronicznej.<br />

Wykonane oprogramowanie <strong>do</strong>łączono na nośniku elektronicznym (CD-ROM).<br />

Opisany robot może być wykorzystany <strong>do</strong> celów <strong>dydaktycznych</strong> w znacznie szerszym zakresie<br />

niż wcześniej wspomniany Romik, ze względu na możliwość sterowania momentem<br />

napę<strong>do</strong>wym i otwartą konstrukcję układu sterowania.<br />

39


40<br />

Bibliografia<br />

[1] E. JEZIERSKI. Robotyka kurs podstawowy. Wydawnictwo Politechniki Łódzkiej,<br />

Łódź, 2002.<br />

[2] M.W. SPONG and M. VIDYASAGAR. Dynamika i sterowanie robotów. Wydawnictwo<br />

Naukowo-Techniczne, Warszawa, 1997.<br />

[3] K. TCHOŃ and W. JACAK. Podstawy robotyki. Wydawnictwo Politechniki Wrocławskiej,<br />

Wrocław, 1992.<br />

[4] K. TCHOŃ, A. MAZUR, I. DULĘBA, R. HOSSA, i R. MUSZYŃSKI. <strong>Manipulator</strong>y<br />

i roboty mobilne: modele, planowanie ruchu, sterowanie. Akademicka Oficyna<br />

Wydawnicza PLJ, Warszawa, 2000.<br />

[5] M. WNUK. Moduł z mikrokontrolerem mc68332. Raport serii SPR 7/2004, Instytut<br />

Cybernetyki Technicznej Politechniki Wrocławskiej, Wrocław, 2004.<br />

[6] http://www.austriamicrosystems.com/<br />

[7] http://www.bomatec.ch/<br />

[8] http://www.freescale.com/<br />

[9] http://www.maxim ic.com/<br />

[10] http://www.micromotorssrl.com/<br />

[11] http://www.motorola.com/<br />

[12] http://www.st.com/stonline/


41<br />

Rozdział 7<br />

Dodatek A<br />

7.1 Parametry mechaniczne manipulatora<br />

Dane techniczne robota ZS5R<br />

Układ kinematyczny 5 stopni swobody<br />

Napęd<br />

6 silników prądu stałego<br />

Pomiar położenia względny, kodery przyrostowo-impulsowe<br />

o rozdzielczości D=1024<br />

Przestrzeń robocza<br />

Oś 1 (obrót kolumny) ±90 ◦<br />

Oś 2 (ramię)<br />

±40 ◦<br />

Oś 3 (przedramię) ±90 ◦<br />

Oś 4 (zgięcie nadgarstka) ±60 ◦<br />

Oś 5 (obrót chwytaka) ±360 ◦<br />

Rodzaj chwytaka Chwytak dwupalcowy, o rozwarciu równoległym<br />

w zakresie 0-60mm.<br />

Stopień rozwarcia i siła uchwytu programowane.<br />

Wymiary mechaniczne<br />

l 1<br />

201mm<br />

l 2<br />

217.5mm<br />

l 3<br />

134mm<br />

l 4<br />

90mm<br />

Parametry przekładni<br />

G 1 = G 2 = G 3 = G 6 94.37:1<br />

G 4 = G 5 43.3:1<br />

Z 1 16 zębów, moduł 1<br />

Z 2 70 zębów, moduł 1<br />

Z 3 15 zębów, moduł 0.8<br />

Z 4 104 zęby moduł 0.8<br />

Z 5 20 zębów, moduł 1<br />

Z 6 68 zębów, moduł 1<br />

Z 7 16 zębów, moduł 1<br />

Z 8 24 zęby moduł 1<br />

Z 9 42 zęby moduł 1


42<br />

7.2 Rysunki techniczne części mechanicznej<br />

Rysunek 7.1: Rysunek techniczny silnika RHE 158.24.100.<br />

Rysunek 7.2: Rysunek techniczny silnika HLE 149.24.43.<br />

Rysunki techniczne silników zostały wzięte ze strony producenta silników [10].


60<br />

Rozdział 8<br />

Dodatek B<br />

8.1 Wykaz elementów części elektronicznej<br />

liczba wartość obu<strong>do</strong>wa oznaczenie na schemacie<br />

Kondensatory<br />

6 100n EU025 C1, C2, C3, C4, C5, C6<br />

3 1000u EUTT5D10 C9, C10, C11<br />

2 2200u EUE5 C7, C8<br />

Diody<br />

1 Prostownik RB1A RB1A<br />

Układy scalone<br />

1 7905 TO2220 IC3<br />

1 L4940V5 TO2220 IC1<br />

1 LM2940CT TO2220 IC2<br />

Transformator<br />

1 TS8/220 – –<br />

Złącza<br />

3 MSTBA4 – Z12, Z13, Z14<br />

inne<br />

2 Radiator SK104 KK1, KK2<br />

Tabela 8.1: Zestawienie elementów elektronicznych na płytce zasilacza.<br />

liczba wartość obu<strong>do</strong>wa oznaczenie na schemacie<br />

Kondensatory<br />

1 100n EUC0805 C1<br />

1 1u EUC0805 C2<br />

Układy scalone<br />

1 AS5040 SSOP16 U1<br />

Tabela 8.2: Zestawienie elementów elektronicznych na płytce kodera AS5040.


61<br />

liczba wartość obu<strong>do</strong>wa oznaczenie na schemacie<br />

Rezystory<br />

12 1R R-EU0411 R2, R105, R106, R107, R108, R109, R110,<br />

R111, R112, R113, R114, R115<br />

24 1k M0805 R27, R28, R32, R34, R40, R42, R43, R47, R55,<br />

R56, R57, R60, R67, R70, R71, R75, R83, R84,<br />

R85, R88, R95, R96, R101, R103<br />

6 3k M0805 R31, R48, R62, R76, R90, R104<br />

6 5k CA6V R117, R118, R119, R120, R121, R122<br />

36 10k M0805 R1, R25, R26, R29, R30, R33, R38, R39, R44,<br />

R45, R46, R53, R54, R58, R59, R61, R63, R64,<br />

R68, R69, R72, R73, R74, R77, R78, R81, R82,<br />

R86, R87, R89, R97, R98, R99, R100, R102,<br />

R123<br />

8 18k M0805 R21, R22, R35, R36, R49, R50, R91, R92<br />

18 100k M1206 R3, R4, R5, R6, R7, R8, R9, R10, R11,<br />

R12, R13, R14, R15, R16, R17, R18, R19, R20<br />

8 130k M0805 R23, R24, R37, R41, R51, R52, R93, R94<br />

4 200k M0805 R23, R24, R37, R41, R51, R52, R93, R94<br />

Kondensatory<br />

24 270p EUC0805 C53, C54, C59, C60, C67, C68, C69, C70, C73,<br />

C74, C75, C76, C83, C84, C89, C90, C93, C94,<br />

C99, C100, C103, C104, C109, C110<br />

73 100n EUC0805 C1, C3, C4, C5, C6, C7, C8, C9, C10,<br />

C11, C12, C13, C14, C15, C16, C17, C18, C19,<br />

C20, C21, C22, C23, C24, C25, C26, C27, C28,<br />

C29, C30, C31, C32, C33, C34, C35, C36, C37,<br />

C38, C39, C40, C41, C42, C43, C44, C45, C46,<br />

C47, C48, C49, C51, C52, C55, C57, C61, C62,<br />

C63, C65, C71, C72, C77, C79, C81, C82, C85,<br />

C87, C91, C92, C95, C97, C101, C102, C105,<br />

C107, C111<br />

12 1u EUC0805 C56, C58, C64, C66, C78, C80, C86, C88, C96,<br />

C98, C106, C108<br />

1 4.7u B45181A C2<br />

1 10000u/50V EUE10-30 C50<br />

Diody<br />

7 BAT42 BAT42 D25, D26, D27, D28, D29, D30, D31<br />

24 BAT49 BAT49 D1, D2, D3, D4, D5, D6, D7, D8, D9,<br />

D10, D11, D12, D13, D14, D15, D16, D17,<br />

D18, D19, D20, D21, D22, D23, D24<br />

1 Prostownik FBU4 B1<br />

Tranzystory<br />

1 BC640-16 TO92 T1<br />

Tabela 8.3: Zestawienie elementów elektronicznych na płytce sterownika.


62<br />

liczba wartość obu<strong>do</strong>wa oznaczenie na schemacie<br />

Układy scalone<br />

6 74HC123D SO-16 IC12, IC13, IC14, IC15, IC16, IC18<br />

3 74HCT00D SOIC-14 IC19, IC20, IC21<br />

3 74HCT08D SO-16 IC22, IC24, IC25<br />

3 74HCT132D SO-14 IC1, IC2, IC3<br />

6 L298N MULTIWATT15 IC4, IC5, IC6, IC8, IC9, IC10<br />

6 LM311D SO-8 IC26, IC27, IC28, IC29, IC30, IC31<br />

7 LM385-Z TO92 UZ1, UZ2, UZ3, UZ4, UZ5, UZ6, UZ7<br />

6 MAX4164 SO-14 IC7, IC11, IC17, IC23, IC32, IC33<br />

1 MAX232A SO-16 U$2<br />

2 MAX525 SSOP US, US1<br />

1 MAX1270 SSOP U$1<br />

1 MOD1 – ELFIN-EM332/A-4X24<br />

Przekaźnik<br />

1 G2R2 G2R2 K1<br />

Złącza<br />

1 – ML10 Z10<br />

1 – ML26 Z9<br />

1 – ML34 Z8<br />

1 – W237-02P Z7<br />

1 – W237-04P Z12<br />

6 – MPT2 Z1, Z2, Z3, Z4, Z5, Z6<br />

Tabela 8.4: Zestawienie elementów elektronicznych na płytce sterownika.


63<br />

Rozdział 9<br />

Dodatek C<br />

9.1 Schematy ideowe i rysunki montażowe części elektronicznej<br />

Rysunek 9.1: Schemat ideowy jednego z regulatorów prądu modułu mocy.


Rysunek 9.2: Schemat ideowy połączenia modułu EM332 z układami peryferyjnymi.<br />

64


65<br />

Rysunek 9.3: Schemat ideowy zasilacza.<br />

Rysunek 9.4: Schemat ideowy układu sterowania cewką przekaźnika.


66<br />

Rysunek 9.5: Schemat elektryczny kodera AS5040.<br />

Rysunek 9.6: Obwód drukowany wierzchniej warstwy płytki zasilacza.<br />

Rysunek 9.7: Obwód drukowany spodniej warstwy płytki zasilacza.


Rysunek 9.8: Rozmieszczenie elementów na wierzchniej stronie płytki zasilacza.<br />

67


Rysunek 9.9: Obwód drukowany wierzchniej warstwy płytki sterownika.<br />

68


Rysunek 9.10: Obwód drukowany spodniej warstwy płytki sterownika.<br />

69


Rysunek 9.11: Rozmieszczenie elementów na wierzchniej stronie płytki sterownika.<br />

70


Rysunek 9.12: Rozmieszczenie elementów na spodniej stronie płytki sterownika.<br />

71


72<br />

Rysunek 9.13: Obwód drukowany wierzchniej warstwy płytki kodera AS5040.<br />

Rysunek 9.14: Obwód drukowany spodnie warstwy płytki kodera AS5040.<br />

Rysunek 9.15: Rozmieszczenie elementów na wierzchniej warstwie płytki kodera AS5040.<br />

Rysunek 9.16: Rozmieszczenie elementów na spodniej warstwie płytki kodera AS5040.


73<br />

Rozdział 10<br />

Przykła<strong>do</strong>wa instrukcja<br />

laboratoryjna<br />

10.1 Cel ćwiczenia.<br />

Celem ćwiczenia jest zapoznanie się ze strukturą kinematyczną robota dydaktycznego<br />

ZS5R oraz identyfikacja jego parametrów geometrycznych.<br />

10.2 Podstawy teoretyczne.<br />

10.2.1 Charakterystyka robota ZS5R.<br />

Robot dydaktyczny ZS5R jest manipulatorem, którego napęd poszczególnych osi jest zrealizowany<br />

za pomocą silników prądu stałego. Sterownik robota składa się z modułu mocy<br />

i modułu sterowania. Moduł mocy jest zbu<strong>do</strong>wany z sześciu regulatorów prądu, natomiast<br />

moduł sterowania oparty jest na module EM332/B firmy ELFIN, który wykorzystuje<br />

mikrokontroler MC68332. Oprogramowanie sterownika komunikuje się z komputerem<br />

nadrzędnym przy pomocy asynchronicznej transmisji szeregowej (19200, 8N1). Pozwala<br />

to na sterowanie ręczne oraz na zadawanie i odczytywanie chwilowych położeń silników<br />

(M i ). Pomiar położenia wału silników jest realizowany za pomocą koderów impulsowoprzyrostowych<br />

(AS5040) o rozdzielczości 1024 imp/obr. Położenia napędów wyrażone są<br />

w postaci liczb całkowitych oznaczających ilość impulsów zliczanych od pewnego stanu<br />

początkowego. Ustalenie stanu początkowego po włączeniu sterownika odbywa się automatycznie<br />

przez <strong>do</strong>prowadzenie poszczególnych osi <strong>do</strong> położeń, w których sygnały czujników<br />

synchronizacji umieszczone w przegubach i sygnaly z kanalów indeks koderów dadzą<br />

wartość 1 (logicznie) (procedura synchronizacji). W tej konfiguracji zwanej konfiguracją<br />

synchronizacji, wszystkie liczniki położenia silników są ustawiane na odpowiednie wartość.<br />

Każde wyłączenie zasilania robota powoduje utratę informacji o pozycji i konieczność<br />

powtórzenia procedury synchronizacji.<br />

Ze względu na bezpośrednie przeniesienie napędu na przeguby 1, 2 i 3 ich czujniki synchronizacji<br />

są osiągane przy ustalonych wartościach kątów {θ si = q si |i = 1, 2, 3}, co odpowiada<br />

ustalonym pozycjom silników M s1 , M s2 , M s3 . Przeniesienie napędu przegubów 4 i 5 jest<br />

także bezpośrednie i odbywa się za pośrednictwem mechanizmu różnicowego. Zmiana kąta<br />

q 4 jest proporcjonalna <strong>do</strong> sumy zmian pozycji silników (M 4 + M 5 ), a zmiana kąta q 5 - <strong>do</strong><br />

ich różnicy (M 5 − M 4 ).


74<br />

10.2.2 Struktura kinematyczna dla współrzędnych<br />

przegubowych q i .<br />

Struktura kinematyczna robota dydaktycznego ZS5R jest przedstawiona na rys. 10.1. Na<br />

Rysunek 10.1: Struktura kinematyczna manipulator ZS5R.<br />

końcu każdego ogniwa robota umieszczony jest lokalny układ współrzędnych związany<br />

z tym ogniwem. Płaszczyzna planarności robota jest wyznaczona przez osie X 0 i Y 0<br />

układu bazowego.<br />

Współrzędnymi wewnętrznymi są:<br />

q 1 – kąt obrotu kolumny [ ◦ ],<br />

q 2 – kąt obrotu głównego ramienia [ ◦ ],<br />

q 3 – kąt obrotu przedramienia [ ◦ ],<br />

q 4 – kąt odchylenia chwytaka względem przedramienia [ ◦ ],<br />

q 5 – kąt obrotu chwytaka wokół własnej osi [ ◦ ],<br />

q 6 – rozstaw szczęk chwytaka [mm].<br />

Jako współrzędne zewnętrzne wybrano następujące zmienne<br />

x, y, z – współrzędne kartezjańskie końca efektora wyrażone<br />

w układzie bazowym X 0 Y 0 Z 0 [mm],


75<br />

η – kąt podejścia chwytaka (kąt pomiędzy nieskręconą<br />

płaszczyzną chwytaka a płszczyzną poziomą) [ ◦ ] ,<br />

ρ – kąt obrotu chwytaka wokół własnej osi [ ◦ ] ,<br />

s – rozstaw szczęk [mm].<br />

10.2.3 Transformacja Denavita-Hartenberga dla zmiennych q i .<br />

Prosty model kinematyki dla robota ZS5R uzyskuje się przy użyciu notacji Denavita-<br />

Hartenberga. Transformacja Denavita-Hartenberga pomiędzy lokalnymi układami współrzędnych<br />

stowarzyszonymi z poszczególnymi ogniwami robota jest następująca<br />

A 1 0 (q 1) = Rot(Z, q 1 )Trans(Z, l 1 )Rot(X, π),<br />

2<br />

A 2 1(q 2 ) = Rot(Z, q 2 )Trans(X, l 2 ),<br />

A 3 2 (q 3) = Rot(Z, q 3 )Trans(X, l 3 ),<br />

A 4 3(q 4 ) = Rot(Z, q 4 )Rot(Z, − π)Rot(X, − π),<br />

2 2<br />

A 4 5 (q 5) = Rot(Z, q 5 )Trans(Z, l 4 ),<br />

(10.1)<br />

gdzie symbolami l i oznaczono następujące parametry geometryczne robota<br />

l 1 – wysokość kolumny [mm],<br />

l 2 – długość ramienia [mm],<br />

l 3 – długość przedramienia [mm],<br />

l 4 – długość chwytaka ujmująca długość palców chwytaka [mm],<br />

10.3 Przebieg ćwiczenia<br />

10.3.1 Obsługa stanowiska<br />

Stanowisko laboratoryjne składa się z robota ZS5R oraz komputera PC połączonego ze<br />

sterownikiem robota za pośrednictwem portu szeregowego. Oprogramowanie stanowi program<br />

ZSident uruchamiany w śro<strong>do</strong>wisku systemu Linux.<br />

Robot powinien być ustawiony przy krwędzi stołu, równolegle <strong>do</strong> przedniej ściany podstawy<br />

robota.<br />

Przed uruchomieniem programu należy włączyć zasilanie robota i poczekać na zakończenie<br />

synchronizacji (zatrzymanie wszystkich silników).<br />

Po uruchomieniu programu ZSident powinna nastąpić powtórna synchronizacja, a na<br />

ekranie pojawi się menu.<br />

Komenda I pozwala zadawać konfigurację we współrzędnych q i (wprowadzenie pustej linii<br />

powoduje pozostawienie <strong>do</strong>tychczasowej wartości). Po zakończeniu wprowadzania następuje<br />

wykonanie ruchu.<br />

Komenda X podaje odczyt położenia robota w trzech układach współrzędnych:<br />

• {M i } - przestrzeń napę<strong>do</strong>wa (pozycje silników wyrażone w impulsach),


76<br />

• {q i } - przestrzeń konfiguracyjna,<br />

• {x, y, z, η, ρ, s} - przestrzeń zadaniowa.<br />

Komenda Q powoduje zakończenie pracy programu ident i wyłączenie zasilania napędów.<br />

10.3.2 Wstępne przygotowanie <strong>do</strong> ćwiczenia.<br />

1. używając transformacji Denavita-Hartenberga przedstawionej w rozdziale 10.2.3 obliczyć<br />

prosty model kinematyki<br />

(q 1 , ..., q 6 ) → (x, y, z, η, ρ, s)<br />

2. zastanowić się jak należy wybrać konfigurację robota dydaktycznego, aby z równań<br />

kinematyki uzyskać jednoznacznie wartości parametrów geometrycznych l 1 , l 2 , l 3 , l 4 .<br />

10.3.3 Zadania <strong>do</strong> wykonania.<br />

Poruszając poszczególnymi przegubami robota ustalić położenie układu bazowego oraz<br />

sprawdzić, jakie zakresy zmienności mają poszczególne współrzędne wenętrzne q i . Aby<br />

zidentyfikować parametry geometryczne l i należy rozpocząć od ustawienia robota w pewnej<br />

konfiguracji poprzez zadanie określonych wartości współrzędnych wewnętrznych q i .<br />

Następnie dla tak zadanej konfiguracji należy odczytać odpowiadające jej współrzędne<br />

zewnętrzne z menu programu. W sprawozdaniu należy umieścić wyliczony prosty model<br />

kinematyki i w oparciu o ten model wyliczyć z układu równań stałe l i .<br />

Instrukcja ta została przygotowana w oparciu o instrukcję ”Identyfikacja parametrów geometrycznych<br />

robota dydaktycznego ROMIK” autorstwa I. Dulęba, A. Mazur, M. Wnuk.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!