Wizualizacja Danych Sensorycznych Raport Laboratoryjny Robot Mobilny Politechnika Wrocªawska Wydziaª Elektroniki Na potrzeby zaj Wizualizacja Danych Sensorycznych Autorzy: Mateusz Cholewi«ski Jerzy Lubi«ski
18 czerwca 2009 2
Spis tre±ci 1 Wst p 2 1.1 Zaªo»enia projektowe................................. 2 1.2 Charakterystyka problemu.............................. 2 2 Opis urz dzenia 2 2.1 Zgromadzenie danych o silnikach i platformie.................... 2 2.2 Platforma....................................... 3 2.3 Silniki......................................... 4 2.4 Sterownik....................................... 4 2.5 Wy±wietlacz LCD................................... 6 2.6 Komunikacja z komputerem PC........................... 8 2.7 wiatªa......................................... 8 3 Prace nad projektem i problemy 9 4 Wnioski 10 1
1 Wst p 1.1 Zaªo»enia projektowe Celem projektu jest stworzenie laboratoryjnego robota mobilnego, który mógªby by wykorzystywany jako wiczenie laboratoryjne. Projekt urz dzenia jest oparty o istniej c platform z silnikami i dedykowanymi enkoderami. Logik steruj c oparto o mikrokontroler MC9S12A64 [1], [2].Wykorzystano moduª z tym»e mikrokontrolerem, autorstwa doktorów Marka Wnuka i Marka Kabaªy [4]. Poni»ej przedstawiono kroki milowe projektu. 1. zgromadzenie danych o u»ytych silnikach, enkoderach i platformie jezdnej, 2. projekt pªytki ewaluacyjnej dla MC9S12A64, 3. projekt pªyty gªównej robota, 4. zaprojektowanie algorytmu steruj cego robotem, 5. implementacja algorytmu, 6. zrealizowanie wizualizacji danych sensorycznych. W trakcie pracy okazaªo si»e krok 4 trwaª do samego ko«ca projektu, natomiast inne kroki, wzajemnie si przeplataªy. 1.2 Charakterystyka problemu Gªównym zaªo»eniem byªo zbudowanie robota mobilnego, który mógªby zosta u»yty na zaj ciach laboratoryjnych, aby przybli»y studentom problemy zwi zane ze sterowaniem i konstrukcj takich robotów. Robot miaª równie» informowa u»ytkownika o swoim aktualnym stanie i by sterowany wprost z komputera PC. Podczas realizacji projektu powoli pojawiaªy si nowe problemy, których nie przewidziano na samym pocz tku. 2 Opis urz dzenia 2.1 Zgromadzenie danych o silnikach i platformie Dla potrzeb projektu techniczne cechy platformy mobilnej zostaªy ponownie zmierzone lub zbadane, by wyeliminowa bª dy spowodowane wy»ej wymienionymi niedoci gni ciami podczas poprzedniej próby realizacji projektu. Rezultaty tego dziaªania okazaªy si potrzebne, a przedstawiaj si nast puj co: rednica platformy - 45 cm rednica koªa - 8,3 cm Obwód koªa - 26,1 cm Ilo± impulsów enkodera na peªen obrót koªa - ok. 11780 2
Rysunek 1: Zdj cie platformy 2.2 Platforma Na Rysunku 2.2 przedstawiono zdj cie platformy. Zostaªa ona wykonana z aluminium. Poza pl - tanin kabli (niestety rzecz niezb dna), wida zielony wª cznik, czerwony przycisk wyª czenia awaryjnego i du»y stycznik. Wraz z kablami, elementy te tworz mechanizm uruchomieniowy i system awaryjnego stopu. Stycznik peªni rol klucza, który wª cza lub odcina zasilanie na silniki. Zielony przycisk wª cza silniki po awaryjnym wyª czeniu, czerwony natychmiastowo odcina zasilanie i dopóki nie zostanie odblokowany robot nie ruszy. Na Rysunku 2.2 wida równie» czujniki taktylne, które spi te s w ªa«cuch i podª czone do stycznika. W razie uderzenia (mosi»ne blachy peªni rol zderzaków), czujnik zostaje wci- ±ni ty i automatycznie zostaje odci te zasilanie na silnikach. Docelowo logika ma dziaªa po odci ciu zasilania, jednak»e nie udaªo si wymy±li szybkiego i niezawodnego sposobu informowania mikrokontrolera o zaistniaªej sytuacji. Na czas rozwoju projektu, czujniki taktylne zostaªy odª czone od stycznika. Szczególnie wa»na byªa informacja o ilo±ci impulsów na peªen obrót koªa. Dzi ki niej mo»liwe byªo wyliczenie aktualnej pr dko±ci i przebytej ju» drogi. 3
Rysunek 2: Zdj cie silników platformy 2.3 Silniki W projekcie wykorzystano ju» istniej ce silniki PortEscap (Rysunek 2.3, z którymi stowarzyszone s enkodery kwadraturowe [7]. S one zamontowane na platformie. W trakcie realizacji projektu, okazaªo si,»e jeden z enkoderów jest wadliwy. Silniki sterowane s za pomoc mostków H, opartych o ukªad scalony LMD18200T [6]. Jest to ciekawy ukªad, pozwalaj cy na sterowanie silnikami o napi ciu do 55V i maksymalnym pr dzie 3A. Mostek jest zabezpieczony przed przegrzaniem, przy temperaturze 145 st C wystawia na jedno z wyj± ag, po przekroczeniu 175 st C wyª cza si. Co wa»ne, LMD18200T, wyposa»one jest w wyj±cie, na którym mo»na odczyta aktualny pr d silnika. Takie rozwi zanie przydaje si przy wykrywaniu zdarze«, takich jak np. zbyt du»e obci»enie silników. Aby zapewni dobre chªodzenie, radiator ukªadu jest przykr cony do platformy. Skutkuje to dobrym odprowadzaniem ciepªa, jednak»e z drugiej strony na radiatorze jest masa, która przenosi si na caª platform. Mostek H jest wysterowany z mikrokontrolera za pomoc sygnaªu kierunku i sygnaªu PWM. Przyj to wyzwalanie stanem niskim, wi c wypeªnienie równe 255 oznacza wyª czenie silników. Jest to dobre rozwi zanie, gdy» wi kszo± mikrokontrolerów zaraz po wª czeniu, wystawia logiczne 1 na swoje porty, co skutkowaªoby wystrzeleniem robota. Co prawda HC12 oferuje mo»liwo± ustawienia stanu portu zaraz po wª czeniu, ale jak ju» zostaªo wspomniane jest to dobra maniera. W trakcie trwania projektu zostaªy przeprowadzone testy i okre±lono pr dko± maksymaln, wynosz c 105 cm/s. 2.4 Sterownik Sterownik robota oparto na mikrokontrolerze HCS12A64, umieszczonym na wykorzystywanej pªytce moduªowej. Na rysunku 2.4 przedstawiono aplikacj tej pªytki, zbudowan na pªytce rozwojowej. Problemy zwi zane z projektem nie pozwoliªy na zaprojektowanie pªyty gªównej robota. Na rysunku 2.4 przedstawiony jest schemat dziaªania urz dzenia. 4
Rysunek 3: Schemat robota Poni»ej przedstawiony jest algorytm sterowania zaimplementowany na mikrokontrolerze. Aby uzyska przejrzysto± zapisu, tekst podzielono na punkty. 1. z poziomu programu komputerowego wydajemy odpowiedni dyrektyw dla mikrokontrolera (zadajemy ruch z odpowiednimi parametrami), 2. HC9S12A64 za pomoc sygnaªu PWM wsyterowywuje mostki, które zasilaj w odpowiedni sposób silniki, 3. obroty kóª (a wªa±ciwie waªu silnika; przyjmujemy poª czenie waª silnika - koªo za pozbawione luzów) s rejestrowane przez enkodery, których wyj±cia podª czone s do pinów moduªu (nale»y pami ta,»e tylko jeden enkoder jest w peªni sprawny, jednak»e program jest tak napisany,»e mo»e bra pod uwag oba), 4. do ka»dego enkodera przypisany jest licznik, który zlicza liczb impulsów, 5. co 10 ms generowane jest przerwanie cykliczne o wysokim priorytecie. W obsªudze zdarzenia jest pobierana informacja o ilo±ci impulsów od ostatniego przerwania (przed wyj±ciem informacja ta jest zerowana). W ten sposób otrzymujemy informacj o chwilowej szybko±ci robota. Aby uzyska informacj o przebytej drodze, nale»y sumowa warto±ci impulsów z ka»dego przerwania, 5
Rysunek 4: Pªytka uniwersalna z moduªem HC9S12A64 6. na podstawie warto±ci zadanej i aktualnej pr dko±ci wyliczany jest uchyb sterowania, potrzebny do dziaªania regulatora PID, 7. sumuj c wszystkie uchyby od pocz tku do aktualnej chwili i mno» c przez nastaw Ki otrzymujemy caªk ze wzoru 1; aby otrzyma ró»niczk, nale»y odejmowa aktualn warto± uchybu od poprzedniej. u = Kp e + Kd Z d e + Ki edt dt (1) Nale»y pami ta, aby np. warto± caªki nie przekroczyªa zbyt du»ej warto±ci. Mo»e si tak sta ze wzgl du na fakt bezwªadno±ci silnika i szybkiej pracy regulatora warto± sterowania z tego czªonu naro±nie szybciej, ni» silnik to odpracuje, co b dzie skutkowa du»ymi przeregulowaniami i skokow prac silnika. Tak»e sama warto± sterowania u musi by ograniczona, 8. wyliczone sterowanie podawane jest jako wypeªnienie na mostki, powrót do punktu 2., chyba»e pojawi si nowa dyrektywa z komputera. Algorytm ten przedstawiony jest na rysunku 2.4 2.5 Wy±wietlacz LCD W ramach projektu wykorzystany zostaª dwuwierszowy, alfanumeryczny wy±wietlacz LCD [8]. Gªówn zalet takiego rozwi zania jest bardzo proste wy±wietlanie, jednak»e nale»y zaznaczy,»e nie istniej gotowe funkcje obsªugi tego wy±wietlacza na u»yty mikrokontroler. Z drugiej strony do wystawiania danych na wy±wietlacz nale»y u»y caªy port. 6
Rysunek 5: Diagram ogólny sterownika. 7
Piny wy±wietlacza zostaªy wyprowadzone na port A, a ponadto komendy dla wy±wietlacza (RS) s wysyªane poprzez pin2 portu B a instrukcje odczytu-zapisu (RW) poprzez pin3 portu B. Na cele projektu zostaªy napisane funkcje do obsªugi wy±wietlacza LCD, które znajduj si w gªównym pliku projektu. Wy±wietlanie informacji na LCD zostaªo zaimplementowane w dwóch trybach, przeª czanych za pomoc przycisku, generuj cego przerwanie zewn trzne. W obsªudze przerwania zmienia si warto± zmiennej. W zale»no±ci od aktualnej warto±ci, LCD wy±wietla: w pierwszej linii: zadan drog i przebyt drog, w drugiej linii: zadan pr dko± i aktualn pr dko± w pierwszej linii: warto± wypeªnienia PWM i uchyb regulacji w drugiej linii: zadan pr dko± i aktualn pr dko± 2.6 Komunikacja z komputerem PC W trakcie realizacji pojawiª si problem z odbieraniem i interpretacj ramki danych. Zostaª on ju» rozwi zany, jednak»e pojawiª si inny, powa»niejszy kªopot. Do sterowania robotem zostaªa zaimplementowana obsªuga interfejsu SCI [1]. Uruchomienie samego interfejsu w ±rodowisku Code Warrior przy pomocy Processor Experta jest niezwykle prosta, jednak»e sama obsªuga nie jest ju» taka banalna. Co prawda internet peªen jest opisów obsªugi, jednak»e SCI okazaªo si najsªabszym elementem projektu. Problemy zostan przedstawione pó¹niej. Poni»ej przedstawiono specykacj dziesi cioelementowej ramki: bajt 0 : 'ENQ' bajt 1 : 'ENQ' bajt 2 : kierunek ('f' - prosto, 'b' - wstecz, 'l' - w lewo, 'p' - w prawo) bajt 3 : zadana droga w cm bajt 4 : zadana pr dko± w cm/s bajt 5 : zadany k t w stopniach bajt 6 : zadana pr dko± k towa bajt 7 : suma kontrolna bajt 8 : 'EOT' bajt 9 : 'EOT' 2.7 wiatªa Dla celów wizualizacji, robot zostaª wyposa»ony w szereg ±wiateª, opartych na diodach LED. Mo»na wyszczególni ±wiatªa drogowe, dwa kierunkowskazy i ±wiatªa stopu. W czasie jazdy do przodu ±wiec si tylko ±wiatªa drogowe. Je±li robot skr ca, zapalaj si i gasn kierunkowskazy, odpowiednie do kierunku skr cania. Je±li robot si nie porusza to ±wiec si tylko ±wiatªa stopu. W projekcie zakªadali±my tak»e u»ycie bargrafu, jednak»e jego funkcje przej ªy ±wiatªa. Zaªo»ono»e ka»de ±wiatªo skªada si z trzech diód LED. wiatªa stopu i drogowe skªadaj si z dwóch pªytek po trzy diody, natomiast ka»dy z kierunkowskazów z jednej pªytki. Nale»y zaznaczy,»e taka ilo± diód nie mo»e by prosto sterowana z mikrokontrolera, gdy» wydajno± pr dowa ka»dego pada to ok 20mA, natomiast pad masy ma obci»alno± 500 ma. Dodatkowo nale»aªoby wykorzysta du» ilo± wyj±. Dlatego te» ±wiatªa sterowane s poprzez tranzystor SMD NPN BCX41 [5]. Pozwala to na sterowanie zarówno PWM jak i zwykªym stanem portu 8
Rysunek 6: Schemat elektryczny pªytki ±wiateª. - sygnaª podajemy na baz, która na rysunku 2.7 oznaczona jest sygnaªem SIG. 3 Prace nad projektem i problemy Do sterowania robotem zostaªa zaimplementowana obsªuga interfejsu SCI. Uruchomienie samego interfejsu w ±rodowisku Code Warrior przy pomocy Processor Experta jest niezwykle prosta, jednak»e sama obsªuga nie jest ju» taka banalna. Co prawda internet peªen jest opisów obsªugi, jednak»e SCI okazaªo si najsªabszym elementem projektu. W czasie realizacji projektu, pojawiª si problem z przesyªaniem ramki. Spowodowany byª wadliwym opisem funkcji odbioru informacji z SCI. Nie trzeba chyba wspomina,»e znalezienie bª du i poprawienie zaj ªo du»o czasu. Po poprawieniu funkcji SCI pojawiª si kolejny problem, który przejawiaª si ju» przy implementacji ±wiateª w algorytmie, kiedy to kierunkowskazy byªy sterowane za pomoc sygnaªu PWM. Najlepiej zobrazuje to rysunek?? mikrokontrolera, na którym zaznaczone s piny i stowarzyszone z nimi sygnaªy. 9
Rysunek 7: Diagram ogólny sterownika. Sterowanie sygnaªem PWM kierunkowskazów powodowaªo bª dne dziaªanie caªego sterownika. Przyczyny mog by dwojakie: maªo prawdopodobne wytªumaczenie: timery odpowiedzialne za generowanie sygnaªu PWM mog (cho nie powinny) wpªywa na siebie i zakªóca si wzajemnie. Spowodowane to mo»e by nie tyle bª dnym dziaªaniem samego sprz tu, ale funkcjami generowanymi przez Processor Expert, gdy» ju» niejednokrotnie kod generowany przez PE byª bª dny, bardziej prawdopodobnym wytªumaczeniem jest to,»e inicjalizacj kolejnych beanów wpªywaj antagonistycznie na siebie. Zdecydowano si na wykorzystanie zmiennej inkrementowanej w przerwaniu cyklicznym i przy odpowiedniej warto±ci tej zmiennej, zmian stanu wyj±cia portu stowarzyszonego z dan diod. Pocz tkowo wykorzystywano dostarczon funkcj NegVal, która zmienia stan na pinie, jednak-»e ta funkcja powodowaªa zachowanie podobne jak PWM na kierunkowskazach. Ostatecznie, wykorzystano najprostsz instrukcj P T T P T T 3 = P T T P T T 3 do zmiany stanu. Ostatni faz projektu, która jest jeszcze niezrealizowana, jest zaimplementowanie w istniej - cym sterowniku komunikacji z komputerem. Do peªnej funkcjonalno±ci brakuje tylko sterowania z komputera, gdy» sam robot przeje»d»a ju» zadan drog, z zadan pr dko±ci, z odpowiednimi danymi na wy±wietlaczu i ±wiatªami. Opisywana wcze±niej komunikacja byªa implementowana w osobnym projekcie, aby nie ingerowa w istniej cy ju» i dobry kod samego sterownika. Podczas przenoszenenia kodu pojawiª si problem znany ju» z kierunkowskazów - robot nie dziaªa poprawnie. St d nasun ª si wniosek, i» ramach projektu mógª zosta wyczerpany potencjaª mikrokontrolera. Planowana jest dalsza praca nad transmisj SCI. 10
4 Wnioski Do±wiadczenia z realizacji projektu pokazuj, jak wa»ne szczególnie przy pracy zespoªowej jest klarowne nazywanie i komentowanie zmiennych i funkcji, a tak»e odpowiednia dokumentacja. Brak odpowiedniego wyja±nienia dziaªania poprzedniego programu, a tak»e niejasno± i niekonsekwencja w nazewnictwie zmiennych oraz funkcji (przykªadem jest zastosowanie zarówno polskich jak i angielskich oznacze«kierunku w ramce, wysyªanej na mikrokontroler z komputera PC) spowodowaªy, i» program na mikrokontroler musiaª zosta napisany w 100% od podstaw (z pocz tku poza dopisaniem kodu odpowiedzialnego za wizualizacj danych sensorycznych zakªadano pozostawienie komunikacji z komputerem PC oraz algorytmu obliczania trasy i napisanie od nowa jedynie sterowania silnikami, które poprzednio byªo zaimplementowane na mikrokontrolerze Atmega16). Dobrym rozwi zaniem jest te» opisywanie w komentarzach w programie wszelkich rodzajów ramek i innych kwestii, które zwykle zawiera si w dokumentacji, a które s przydatne podczas edycji kodu. Kolejn spraw jest odpowiedni dobór ilo±ci osób, a tak»e podziaªu zada«podczas realizacji projektu. Poprzednia wersja programu zostaªa zrealizowana przez trzy osoby, podczas gdy obecnie z wi kszym powodzeniem wi ksza ilo± funkcji robota zostaªa zaprogramowana przez zespóª dwuosobowy. Wi ksza ilo± osób powodowaªa jedynie zwi kszenie chaotyczno±ci kodu oraz bª dów w komunikacji pomi dzy poszczególnymi funkcjami programu. Realizacja projektu umo»liwiªa zdobycie do±wiadczenia w edycji, pisaniu a tak»e debugowaniu programów na mikrokontrolery, o wiele szerszego ni» mo»liwe do zdobycia w zakresie laboratoriów. Ze wzgl du na fakt, i» w kodzie programu wci» codziennie dokonywane s zmiany, program zaª czony do sprawozdania nie jest wersj ostateczn, uporz dkowan i opisan dostatecznie dokªadnie i wyczerpuj co. Nale»y wspomnie,»e na podstawie projektu tego» robota, powstaª referat przedstawiony na Konferencji Naukowej Studentów Wst pna koncepcja laboratoryjnego robota mobilnego. Literatura [1] www.freescale.com [2] http://www.datasheetcatalog.com/datasheets_pdf/m/c/9/s/mc9s12a64.shtml [3] http://rab.ict.pwr.wroc.pl/ mw/pdfs/osbdm_tbdml.pdf [4] http://www.konar.ict.pwr.wroc.pl/module.php?op=download&cmd=click&id= [5] www.datasheetcatalog.org/datasheet/inneon/1-bcx41_bss64.pdf [6] www.datasheetcatalog.com/datasheets_pdf/l/m/d/1/lmd18200t.shtml [7] http://www.portescap.com/product-141-e9.html [8] www.sparkfun.com/datasheets/lcd/hd44780.pdf 11