Projekto tikslai
Šiuo metu projekto autoriai Andrius Jasiulionis ir Linas Žitkevičius (automatikai) stažuojasi „OTS Odense tekniske skole“, Odense (Danija). Pagrindinis jų tikslas yra atlikti kokį nors projektą bei parašyti diplominį darbą.
Projekto temą sugalvojome patys: „Roboto valdymas per internetą“. Įrangą galėjome pasirinktį taip pat patys. Nusprendėme pasinaudoti jau padarytu robotu „Cyber 310“. Stovėjo jis jau 10 metų niekieno neliestas, tai nusprendėme jį atgaivinti.
„CYBER 310“ robotas
„Cyber 310“ yra valdomas šešių žingsninių variklių, bei turi integruotą supaprastintą variklių valdymą, jo valdymui užtenka 8 bitų magistralės (6 variklių bitai, 1 impulsų generatoriaus bitas, 1 krypties bitas). Šis robotas buvo skirtas mokymosi tikslams bei buvo valdomas per lygiagrečiąją sąsają kompiuteriu, specifine programavimo kalba. Mes nusprendėme vietoje PK panaudoti mikrokontrolerį PIC16F874.
Roboto valdymui per internetą mes pasirinkome WEB-NET modulį, šis modulis veikia kaip WEB serveris: per jį galima valdyti integruoto PIC16F876 portus arba keistis informacija per RS-232 sąsają tiesiai iš internetinio puslapio.
Projekto etapai
Pirmieji žingsniai
Pirmieji žingsniai buvo pakankamai sunkūs, nes internete yra labai mažai informacijos apie „Cyber 310“ robotą. Reikėjo suprasti kaip valdyti robotą, pasidarėme paprastą valdymo pultą:
Valdymo signalas yra TTL +5V, impulsu generatorių pasidarėme panaudoję laikmatį 555:
Kadangi mes darbinio dažnio nežinojome, teko prilituoti krūvą kondensatorių, kad galėtume praplėsti dažnio amplitudę. Generatoriaus dažnį galime paskaičiuoti taip:
Greičiausiai varikliai dirbo apie 200 Hz dažniu, didesniu dažniu varikliai prašokdavo žingsnius, prie didesnio dažnio kartais išvis nebedirbdavo. Geriausiai tiktų apie 90 % maksimalaus dažnio, kad varikliai dirbtų be klaidų.
Variklių valdymas
Roboto valdymas yra pakankamai lengvas, o kiekvienas variklis atsimena savo kryptį.
Žingsniai, kurie turi būti atlikti norint pasukti variklį prieš laikrodžio rodyklę:
- Pasirenkamas variklis(-iai) (+5 V į pasirinkto(-ų) variklio(-ių) bitą(-us).
- Nustatoma jo ar jų sukimosi kryptis pagal laikrodžio rodyklę, tai padaroma kai į STROBE bitą paduodamas +5 V impulsas.
- Kiek norima pasukti žingsnių pasirinktą variklį – tiek paduodama TTL impulsų į PRF bitą (jei buvo įjungti keli varikliai, jie suksis kartu).
Čia susidūrėme su problema, nes norint pasukti variklį pagal laikrodžio rodyklę, reikia pakeisti jo krypties vektorių, o kai tai daroma, pasikeičia visų variklių kryptis į „pagal laikrodžio rodyklę“, kad ir kokia kryptis buvo atsiminta.
- Išjungiami visi variklių bitai.
- Paduodamas impulsas į STROBE bitą.
- Įjungiamas variklio ar variklių bitas ar bitai.
- Paduodama n kiekis impulsų į PRF bitą (n= variklio žingsniai).
Problemą išsprendėme taip:
- Atliekami visi punktai, skirti keisti kryptį pagal laikrodžio rodyklę, bus pakeista visų variklių kryptis pagal laikrodžio rodyklę.
- Varikliai, kurie turi suktis prieš laikrodžio rodyklę, jų kryptis pakeičiama pagal punktus, skirtus „prieš laikrodžio rodyklę“.
Taip bus išspręsta problema, visi varikliai suksis ten, kur priklauso.
Gaminame robotui „smegenis“
Atėjo laikas pasigaminti roboto smegenis. Šiam tikslui panaudojome šias detales:
- Smegenys – PIC16F874 mikrovaldiklis.
- RS232 komunikacija – MAX202.
- LCD ekranas – GDM1602A (2x16).
- Valdiklio programavimui pasirinkome programatorių PIC-PG2C.
Suprojektavome tokią schemą:
Schemą surinkome ant projektų lentos. Dabar reikėjo pasidaryti keletą paprastų programėlių mikrovaldikliui, kad galima būtų išbandyti sistemą ir jos dalis.
„PICboard“
„PICboard“ modulis skirtas sujungti WEB-RJS modulį su „Cyber 310“ manipuliatoriumi. Gauti duomenys yra apdorojami ir paverčiami į 8 bitų sąsajos protokolą, skirtą „Cyber 310“ manipuliatoriaus variklių valdymui.
- Integruotas ISCP mikrovaldiklio programatorius;
- Vidinis DC +5 V įtampos stabilizatorius;
- Universalus TTL -> RS-232 keitiklis, sujungtas su PIC mikrovaldikliu;
- Mikrovaldiklio perkrovimo mygtukas;
- 10MHz išorinis generatorius;
- Nuolatinės srovės išorinio maitinimo šaltinio, nuo +5 iki +30 V, pajungimo galimybė.
Paprastos testo programos
Programas rašome BASIC programavimo kalba. Naudojame „PIC simulator IDE“ programą. Naudojantis „Basic“ kompiliatorių, buvo sugeneruoti *.HEX failai. Naudojant programą IC-PROG *.HEX failai yra keliami programatoriumi į mikrokontrolerį.
1. RS232 komunikacija:
test_rs232.zip (test_rs232.asm | test_rs232.bas | test_rs232.hex)
Ši programa siunčia per portc.6 bitą duomenis tiksliau frazę „testas“ į kompiuterį per RS232 sąsają.
Paleidus „Hyperterminal“ programą kompiuteryje:
Start-> All programs-> Accessories-> Communications-> Hyperterminal
galima stebėti kaip mikrokontroleris atsiunčia duomenis i terminalą. Kaip suderinti „Hyperterminal“ žiūrėkite hyperterminal.zip archyve.
Jei programa veikia, tai schemoje LED3 turi mirksėti kas 1 sekundę, LED3 mirksės, kai duomenys bus siunčiami iš valdiklio, LED2 mirksės, kai duomenys bus siunčiami į valdiklį.
2. LCD ekrano testas:
lcd_test.zip (lcd_test.asm | lcd_test.bas | lcd_test.hex)
Paleidus šią programą LCD ekrane turi būti užrašyta „CYBER310 robotas“.
3. Bazės variklio testas:
motor_test.zip (lcd_test.asm | lcd_test.bas | lcd_test.hex)
Ši programa pasuka bazės variklį 730 žingsnių prieš laikrodžio rodyklę ir kai pasiekia 730 pradeda suktis atgal iki pradinės padėties.
Variklių valdymo sprendimai
Pagrindiniai tikslai:
- Žinoti kurioje padėtyje yra variklis.
- Nustatyti sukimosi kryptį.
- Klaidų nustatymas.
Sprendimai:
- Mikrovaldiklis skaičiuos galūnių žingsnius.
- Visos galūnės turi savo lankstumo pradžios ir galo sukimosi taškus (maksimalus žingsnių kiekis nuo 0 iki: bazė = 2840 taškų, petys= 2520 taškų, alkūnė = 1040.
- Vartotojas įveda koordinatę (tašką), kuriame galūnė turi sustoti.
- Mikrovaldiklis apskaičiuoja galūnių kryptis.
- Mikrovaldiklis apskaičiuoja žingsnių kiekį, kurį reikia pasukti variklį (-ius).
- Mikrovaldiklis sukdamas manipuliatoriaus galūnes, kiekvieno žingsnio metu didins, ar mažins „Padėties vektoriaus konstantą“ vienetu (priklauso nuo krypties).
- Mikrovaldiklis gavęs koordinatę palygina ją su padėties vektoriaus konstanta. Jeigu duotoji koordinatė yra didesnė negu leistina (maksimalus, minimalus variklio posūkis), tuomet mikrovaldiklis fiksuotų klaidą, ir nesuktų variklio.
Krypties nustatymas:
- Jei variklio padėties vektorius yra didesnis nei įvesta koordinatė, reikia pasukti variklį pagal laikrodžio rodyklę.
- Jei variklio padėties vektorius yra mažesnis nei įvesta koordinatė, reikia pasukti variklį prieš laikrodžio rodyklę.
Klaidų nustatymas sukant variklį pagal laikrodžio rodyklę:
- „Žingsnių kiekis“ = „Padėties vektorius“- „įvesta koordinatė“.
- Jei „Padėties vektorius“ yra mažesnis nei „Žingsnių kiekis“, tada rodyti klaidą, nes „galūnė“ negali suktis daugiau, nei leidžia konstrukcija.
Klaidų nustatymas sukant variklį pagal laikrodžio rodyklę:
- „Žingsnių kiekis“ = „Padėties vektorius“ - „įvesta koordinatė“.
- „Leistinas žingsnių kiekis“ = „MAX Koordinatė“ - „Padėties vektorius“.
- Jei „Leistinas žingsnių kiekis“ yra mažesnis nei „Žingsnių kiekis“, tada rodyti klaidą, nes „galūnė“ negali suktis daugiau, nei leidžia konstrukcija.
Programos modelis
- Programos modelis.
- Programos bylos (BASIC kalba).
Duomenų sąsajos modelis
Internetinių puslapių, skirtų WEB-RJS kūrimas
Visi internetiniai puslapiai buvo sukurti „Microsoft Office FrontPage 2003“ programiniu paketu lietuvių ir anglų kalbomis. Tinklalapio sandaros medis yra pateiktas paveiksle.
Internetiniai puslapiai, skirti roboto valdymui
Valdymo pasirinkimas
Roboto valdymui yra skirti trys mygtukai: „Automatinis“, „Rankinis“ ir „Nustatymai“. Paspaudus „Automatinis“ mygtuką, per RS-232 sąsaja išsiunčiami duomenys, ir mikrovaldiklis vykdo automatinio valdymo paprogramę. Paspaudus „Rankinis“ mygtuką, mikrovaldiklis vykdo rankinio valdymo paprogramę. Paspaudus „Nustatymai“ mygtuką, mikrovaldiklis vykdo pozicionavimo paprogramę ir pastato roboto galūnes į starto poziciją. Puslapio vaizdas...
Automatinis valdymas
Pasirinkus „Automatinį“ valdymą, užkraunamas puslapis su įvedimo laukeliu, kuriame reikia įvesti detalių kiekį, kurį turi pernešti robotas iš pozicijos A į poziciją B. Puslapio vaizdas...
Rankinis valdymas
Vartotojas rankiniu būdu gali pasukti robotą į norimą padėtį, įvesdamas visų sustojimų koordinates. Įvedus visas koordinates ir nuspaudus mygtuką „siųsti“, mikrovaldiklis pradeda vykdyti rankinio valdymo paprogramę. Puslapio vaizdas...