Manipulator przeznaczony do celów dydaktycznych - Laboratorium ...
Manipulator przeznaczony do celów dydaktycznych - Laboratorium ... Manipulator przeznaczony do celów dydaktycznych - Laboratorium ...
32 Z kolei funkcja tpu_int() inicjalizuje odpowiednie kanały bloku TPU dla funkcji QDEC i QDVEL, które to funkcje służą do pomiaru położenia i prędkości. W pętli głównej umieszczono obsługę menu pozwalającego interakcyjnie wybierać tryb pracy robota. out_text("\n\n\rPRACA DYPLOMOWA\n\n\r"); out_text("Robot dydaktyczny ZS5R\n\r"); /* Intro */ out_text("Autor: Zbigniew Struzik, Wroclaw 2005\n\r"); out_text("h - Pomoc\n\r"); out_text("\n\n\rMenu Glowne:\n\n\r"); out_text("P - Pozycjonowa\n\r"); out_text("M - Tryb sterowania recznego\n\r"); out_text("X - Wylaczenie silnikow\n\r"); out_text("S - przeslanie\n\r"); out_text("H - Pomoc\n\n\r"); Wybierając np. pozycję oznaczoną literką M lub m przechodzimy do menu sterowania ręcznego. out_text("\n\n\rMenu sterowania recznego:\n\n\r"); out_text("1,Q - Wieza\n\r"); out_text("2,W - Ramie\n\r"); out_text("3,E - Przedramie\n\r"); out_text("4,R - Nadgarstek (gora/dol)\n\r"); out_text("5,T - Nadgarstek (obrot)\n\r"); out_text("6,Y - Chwytak\n\r"); out_text("SPACE - Silniki STOP\n\r"); out_text("V - Definicja predkosci\n\r"); out_text("ESC - Powrot do Menu Glownego\n\r"); out_text(">>"); 4.2 Procedura obsługi przerwania cyklicznego Wszystkie pomiary i wyliczenie wielkości sterujące są przechowywane w strukturze state. typedef struct{ . \\ . \\ . \\ }STAN; STAN state; Nastawy i inne parametry regulatorów prędkości i położenia są przechowywane w strukturze nast. typedef struct { .\\ .\\
33 .\\ }NAS; NAS nast; Wszystkie procesy związane ze sterowaniem oraz akwizycją danych pomiarowych, obsługiwane są w funkcji przerwania cyklicznego interrupt void int_PIT(). Funkcja ta jest wywoływana co 2ms. Jest w niej realizowany pomiar położenia i prędkości, przy pomocy funkcji QDEC i QDVEL: state.temposition[0] = TPURAM(QDEC1A,1);/* odczyt licznika pozycji q1*/ state.M[0] &= 0xffff0000; state.M[0] += state.temposition[0]; if((state.lastposition[0]-state.temposition[0]) > 32767) { state.M[0] += 0x10000; } if((state.temposition[0]-state.lastposition[0]) > 32767) { state.M[0] -= 0x10000; } state.lastposition[0] = state.temposition[0]; state.speed[0] = QDVEL2Speed((int)TPURAM(QDVEL1,2)); state.speed[1] = QDVEL2Speed((int)TPURAM(QDVEL2,2)); state.speed[2] = QDVEL2Speed((int)TPURAM(QDVEL3,2)); state.speed[3] = ((TPSEC*(state.M[3]-state.oldposition[2])+2)/4); state.speed[4] = ((TPSEC*(state.M[4]-state.oldposition[0])+2)/4); state.speed[5] = ((TPSEC*(state.M[5]-state.oldposition[1])+2)/4); Pomiar prądu jest realizowany za pomocą przetwornika A/C pracującego na kolejkowej magistrai QSPI. Aktualizacja zmierzonego prądu również jest realizowana w funkcji przerwania cyklicznego PIT. state.MCurrent[0] = ADBip2Int(QREC[1]>>4); state.MCurrent[1] = ADBip2Int(QREC[2]>>4); state.MCurrent[2] = ADBip2Int(QREC[3]>>4); state.MCurrent[3] = ADBip2Int(QREC[4]>>4); state.MCurrent[4] = ADBip2Int(QREC[5]>>4); state.MCurrent[5] = ADBip2Int(QREC[0]>>4); Proces wyliczenia sterowań dla poszczególnych osi jest realizowany za pomocą regulatorów PID położenia i prędkości zaimplementowanych w funkcjach: void ControlPID_pos(NAS *ptr_n, STAN *ptr_s, int i) void ControlPID_speed(NAS *ptr_n, STAN *ptr_s, int i) wywoływanych w obsłudze przerwania PIT. Na rysunku blokowym 4.1 jest przedstawiony sposób realizacji tych regulatorów. Po wyliczeniu sterowań przez funkcje regulatorów, wartości zadanych prądów są wpisywane do TRANSMIT RAM w bloku QSPI:
- Page 1 and 2: Politechnika Wrocławska Wydział E
- Page 3 and 4: 1 Spis treści 1 Wstęp 6 1.1 Cel i
- Page 5 and 6: 3 Spis rysunków 2.1 Struktura kine
- Page 7 and 8: 5 Spis tabel 2.1 Parametry Denavita
- Page 9 and 10: 7 Rozdział 2 Kinematyka manipulato
- Page 11 and 12: 9 W celu wyliczenia kinematyki mani
- Page 13 and 14: 11 Przy podejściu geometrycznym [1
- Page 15 and 16: 13 czyli Podobnie wyznaczamy kat α
- Page 17 and 18: 15 q 1 − q 01 = Z 12π Z 2 DG 1 (
- Page 19 and 20: 17 Rysunek 2.5: Struktura układu r
- Page 21 and 22: Rysunek 3.2: Rysunek złożeniowy m
- Page 23 and 24: 21 Rysunek 3.3: Zdjęcie silnika HL
- Page 25 and 26: 23 3.2 Konstrukcja elektroniczna -
- Page 27 and 28: 25 Rysunek 3.9: Moduł EM332/B. Do
- Page 29 and 30: 27 3.2.3 Opis łączówek sterownik
- Page 31 and 32: 29 oznaczenie opis styk GND masa sy
- Page 33: 31 Rozdział 4 Oprogramowanie stero
- Page 37 and 38: 35 length++; while(length) { length
- Page 39 and 40: 37 przegubu q 0 . Widać, że w poc
- Page 41 and 42: przewidziano złącze pozwalające
- Page 43 and 44: 41 Rozdział 7 Dodatek A 7.1 Parame
- Page 62 and 63: 60 Rozdział 8 Dodatek B 8.1 Wykaz
- Page 64 and 65: 62 liczba wartość obudowa oznacze
- Page 66 and 67: Rysunek 9.2: Schemat ideowy połąc
- Page 68 and 69: 66 Rysunek 9.5: Schemat elektryczny
- Page 70 and 71: Rysunek 9.9: Obwód drukowany wierz
- Page 72 and 73: Rysunek 9.11: Rozmieszczenie elemen
- Page 74 and 75: 72 Rysunek 9.13: Obwód drukowany w
- Page 76 and 77: 74 10.2.2 Struktura kinematyczna dl
- Page 78: 76 • {q i } - przestrzeń konfigu
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 />
.\\