Logo

Autorius: Vitalij Rodnov („rodman“)
Aut. teisės: Vitalij Rodnov
Įdėta: 2007-05-27
View automatic English translation

Robotas savo rankomis - lengvai!

Įžanga

„Noriu pasidaryti robotą“ — tokia mintis aplanko daugelį elektronika besidominčių žmonių. Interneto forumuose daug klausimų šia tema, bet mažai atsakymų. Žodis „robotas“ gali būti labai plačiai traktuojamas, todėl pateiksime konkretesnį apibrėžimą. Šiame straipsnyje „Robotas“ — pramoginė platforma, galinti judėti erdvėje ir reaguoti į aplinką. Taip pat sudarysime apytikslį pradedančiojo robotų konstruktoriaus portretą: tai mokyklinio amžiaus žmogus, neturintis patirties elektronikoje ir programavime. Jis neturi nei pakankamai pinigų, kad sukonstruotų rimtesnį robotą, nei pakankamai kantrybės, kad ilgą laiką ieškotų iškilusių problemų sprendimo.

Primityvaus boto struktūra
1 pav. Primityvaus boto struktūra

Pamėginsime išanalizuoti dabartinę situaciją. Robotų konstravimas nėra populiarus Lietuvoje dėl kelių priežasčių:

  1. Parduotuvėse nėra reikalingų detalių. Jei kas ir yra, tai kainos pakankamai aukštos. Užsienio internetinėse parduotuvėse yra visko, bet detalių kaina su siuntimo ir muito mokesčiais visai nedžiugina. Vieno variklio kaina gali siekti kelis šimtus litų, vieno daviklio kaina taip pat nebūna mažesnė. Žmogus, tik pradedantis domėtis robotais, negali sau leisti tokių išlaidų, nes jis nėra tikras, kad nupirks tinkamą detalę. Nors ir tiksliai žinant, ko reikia, dėl aukštų kainų nedažnai tenka užsakinėti detales iš užsienio.
  2. Nėra pakankamai informacijos lietuvių kalba. Didžioji dalis informacijos, susijusios su robotais, yra anglų ir rusų kalbomis. Įdomių ir vertingų straipsnių yra tiek daug, kad net pačių geriausių neįmanoma išversti i lietuviu kalbą, nes jų sąrašas užimtų ne vieną lapą.
  3. Robotų konstravimą suaugę žmones laiko vaikų žaidimais. Daugelis pradedančiųjų robotų konstruktorių yra labai jauni, be patirties elektronikoje. Dažnai jie neobjektyviai įvertina savo sugebėjimus ir iš karto imasi per sudėtingų projektų, todėl didžioji dalis tokių projektų taip ir lieka neįgyvendinti.
  4. Mano žiniomis, Lietuvoje nėra nei vieno fiziškai egzistuojančio robotų entuziastų klubo, kur žmonės galėtų susitikinėti, dalintis idėjomis, pasiekimais ir tokiu būdu palaikyti vieni kitus. Virtuali robotų konstruktorių susitikimo vieta yra biteplius.lt elektronikos klube.

Manote padėtis beviltiška? Labai klystate. Išeitį jau seniai rado amerikiečiai, kai pradėjo gaminti roboKITus. Tai detalių rinkinys, iš kurio per porą vakarų galima surinkti robotą, pilnai paruoštą, pavyzdžiui, Minisumo varžyboms. Į komplektą įeina programinė įranga, su kuria galima be jokių programavimo žinių išmokyti robotą judėti ringe. Žmogus, nieko bendro neturintis su elektronika ir programavimu, nusiperka roboKITą, ir per savaitę jis jau gali dalyvauti varžybose. Neoriginalu, bet paprasta ir greita. Žmogus be pasiruošimo surenka tokį robotą, sudalyvauja varžybose, gauna gerą dozę teigiamų emocijų. Jis mato, kad gali tai padaryti, įgauna pasitikėjimo savo jėgomis. Didelė tikimybė, kad jis norės patobulinti savo robotą, pradės ieškoti informacijos, mėgins giliau suprasti jo veikimą. RoboKITas suveikė!

„99 litų botas“

Kodėl roboKITai nėra populiarūs pas mus, Lietuvoje? Atsakymas labai paprastas — kaina. „Parallax“ roboKITas kainuoja nuo $150, kiti dar brangesni. Maža to, jų nėra pirkti Lietuvoje. Reikia pripažinti, sunku įkalbėti tėvus išleisti 500 Lt „kažkokioms nesąmonėms“. Jūs vėl manote, kad padėtis beviltiška? Jau supratote, kad vėl suklydote. Aš pamėginsiu pasiūlyti paprastą roboKITą, prieinamą kiekvienam moksleiviui. Jis vadinasi „99 litų botas“ ir buvo kuriamas pagal tris pagrindinius kriterijus:

  1. Visos detalės lengvai įsigyjamos Lietuvoje;
  2. Bendra detalių kaina neviršija 100 Lt;
  3. Prieinamos aiškios schemos ir instrukcijos.

Tai nėra komercinis produktas, todėl jis neturi nei plataus sensorių asortimento, nei daugybės paruoštų programų. Kai kam jis gali pasirodyti pernelyg primityvus, bet jis leis jums neskausmingai ir be didelių finansinių išlaidų prisiliesti prie nuostabaus robotų pasaulio ir susidraugauti su mikrovaldikliais. Tai tikras robotas, kuris pralinksmins jus, jūsų artimuosius ir bendraklasius. Jis turi du variklius ir ratus iš CD diskų. Jo akys — infraraudonųjų spindulių sensoriai, smegenys — paprastas ir greitas mikrovaldiklis.

Šis botas gali:

  • Važiuoti pirmyn ir atgal, suktis i šonus;
  • Sekti jūsų ranką arba bėgti nuo jos;
  • Blaškytis po kambarį, mėgindamas išvengti susidūrimų su kitais objektais;
  • Važinėti po stalą ir stengtis nenukristi nuo jo;
  • Būti valdomas standartiniu IR nuotolinio valdymo pulteliu.

Jis yra daug įdomesnis už kiniškus žaisliukus, nes jo elgesys priklauso tik nuo jūsų fantazijos ir išradingumo. Jūs dar bijote žodžio „mikrovaldiklis“? Nusiraminkite, šiais laikais mikrovaldiklių programavimas nereikalauja nei brangios įrangos, nei ypatingų sugebėjimų, tik trupučio kantrybės. Aš pasistengsiu kuo išsamiau aprašyti kiekvieną „99 lt boto“ gamybos etapą.

Reikalingi sugebėjimai

Mokėti naudotis lituokliu ir multimetru. Bent jau minimalios elektronikos žinios: skirti maitinimo pliusą (+) nuo minuso (-), diodo anodą (+) nuo katodo (-). Jei jūs nežinote, kas yra multimetras ir katodas, geriau susilaikykite nuo „99 litų boto“ gamybos, nes nuostoliai gali žymiai viršyti šimtą litų. Pasigilinkite savo žinias arba susiraskite labiau elektronikoje patyrusį draugą ir grįžkite — robotai laukia!
PRISIMINKITE: „99 litų boto“ ir „penkių laidukų“ programatoriaus schemos yra daug kartų patikrintos ir, jei surinktos be klaidų, garantuotai veikia. Aš neprisiimu jokios atsakomybes už bet kokius materialinius ar kitokius nuostolius, atsiradusius dėl jūsų klaidų ar neapdairumo.

Detalių pirkimas

Pilną detalių sąrašą rasite straipsnio pabaigoje ir failų archyve. Visas „99 lt boto“ gamybai reikalingas detales galima nusipirkti Lietuvoje maždaug už 100 Lt. Naujokams tai gali kainuoti truputį daugiau, nes reikės pirkti kiekvieną varželę, kiekvieną kondensatorių. Elektronikos mėgėjai, turintys daug smulkių detalių namuose, tikrai sutilps i šimtą litų. Elektronikos komponentų parduotuves (pvz. Lemona, Evita) ir parduotuvės RC modeliuotojams (pvz. RCshop.lt, Modelis.lt) yra daugelyje Lietuvos miestų. Jei jūsų mieste jų nėra, internetu užsakytas prekes pristatys į namus už standartinį 10-15 Lt mokestį. Sąskaitos apmokėjimui internetu gali prireikti tėvų pagalbos, bet procedūra labai paprasta. Galima naudoti praktiškai bet kokio banko debetines korteles, i kurias daugeliui žmonių yra pervedami atlyginimai. Arba galima susimokėti pašte ar banke grynais, atspausdinus mokėjimo nurodymą, kurį jūs gausite užsakę prekes.

Maitinimas

Kiekvieno gero roboto pagrindas — tinkamai parinktas maitinimo šaltinis. Ličio-polimero (LiPo) akumuliatoriai yra nepakeičiami konstruojant nedidelius robotus. Jie yra labai lengvi, užima mažai vietos. Būkite atsargūs su LiPo — neleiskite jiems per daug išsikrauti. „99 litų botas“ neturi akumuliatoriaus įtampos stebėjimo funkcijos, todėl reikia nepamiršti reguliariai krauti akumuliatorių ir visada jį atjungti nuo schemos, kai robotas išjungiamas. Tam užtikrinti botas neturi maitinimo jungiklio — jūs būsite priversti atjungti akumuliatoriaus jungtį nuo schemos, jei norėsite išjungti robotą. Priešingu atveju jūs rizikuojate nepataisomai sugadinti akumuliatorių. Tai ne boto kaltė, tai tiesiog visų LiPo akumuliatorių savybė. Ir nesakykite, kad aš jūsų neperspėjau. Tai patirtis, kuri kainavo man realius pinigus, o jūs ją gaunate už dyką.

E-sky pakrovėjo pajungimas Dažniausiai LiPo akumuliatoriai turi balansavimo jungtį ir Power laidus. Power laidai (storesni) jungiami prie „99 litu boto“ schemos įėjimo. Balansavimo jungtis skirta tik krovimui su specialiu įkrovikliu. RC modeliuotojų parduotuvėse galima rasti nebrangių LiPo įkroviklių (pvz. „E-sky“), kurie puikiai tinka „99 litu boto“ akumuliatoriui krauti. „E-sky“ neturi maitinimo šaltinio. Galima nusipirkti stabilizuotą 1A 12V maitinimo šaltinį, bet pigesnis variantas būtų naudoti kompiuterio maitinimo bloko laisvą „molex“ jungtį. Tiesiog pajungiame raudoną „E-sky“ krokodilą prie PC „molex“ jungties geltono laido, o juodą krokodilą — prie „molex“ juodo laido (bet kurio iš dviejų). Tokiam pajungimui puikiai tinka jungtis nuo PC papildomų ventiliatorių. Jūs galite naudoti bet kokio tipo akumuliatorius (NiCd, NiMh). Tai gali būti baterija iš radiobangomis valdomo žaislo ar kt. Svarbu, kad bendra baterijos įtampa būtų >7V, nes kitu atveju įtampos reguliatoriai negalės palaikyti 5V savo išėjimuose.

Sensoriai

„99 Litų botas“ #1 „99 Litų botas“ #2 Infraraudonųjų spindulių sensoriaus veikimas plačiai aprašytas straipsnyje „Padovanokite savo robotui regėjimą!“. „99 litų botas“ naudoja tokiu pat principu veikiantį sensorių, skiriasi tik konstrukcija. Kairėje ir dešinėje pusėje yra TSOP1738 TV imtuvai. Kiekvienas imtuvas turi po du jam priklausančius Infraraudonųjų spindulių siųstuvus (IR diodus). IR diodų spinduliai atsispindi nuo objektų ir patenka į imtuvus. „99 litų botas“ gali atskirti kur yra kliūtis — kairėje, dešinėje, ar centre. Priklausomai nuo sensorių parodymų, „99 litų botas“ gali atlikti iš anksto nustatytus veiksmus — atsitraukti, priartėti, pasisukti. Jei sensorius pakreipsime žemyn, robotas galės matyti stalo kraštą ir atitinkamai elgtis (nenukristi nuo stalo). Sensorių jautrumas reguliuojasi su potenciometrais, atskirai kairei ir dešinei pusei. Mažindami potenciometrų varžą, didiname srovę per IR diodus, kas didina jų spinduliavimo stiprumą. Kuo stipresnis spinduliavimas, tuo ilgesnė bus roboto matymo zona. Sensorių būsenų vizualinei kontrolei yra du šviesos diodai — kairei ir dešinei pusei. Tai labai palengvina sensorių jautrumo derinimą. Atitinkamas šviesos diodas užsidega, kai kairės ar dešinės pusės sensorius mato objektą. Nuosekliai potenciometrams prijungtos varžos IR diodų ir mikrovaldiklio apsaugojimui nuo viršsrovių. Potenciometrų nominalai yra parinkti taip, kad sensorių jautrumo diapazoną galima būtų reguliuoti nuo kelių iki keliasdešimt centimetrų, ko pilnai pakanka „99 litų botui“. Nustačius maksimalų jautrumą nedideliame kambaryje, imtuvai gaudys daugybę parazitinių atspindžių nuo sienų ir baldų. Sensoriai dirbs nestabiliai, todėl toks jų jautrumas nėra labai pageidaujamas. Tokio dydžio robotui idealus jautrumo atstumas turėtų būti 10...20cm ribose. Šiuo atveju robotas objektus matys pakankamai patikimai ir jam netrukdys parazitiniai atspindžiai. Atpažinimo patikimumas priklauso nuo daugelio dalykų, pavyzdžiui nuo tapetų spalvos kambaryje ir kitų iš pirmo žvilgsnio nesusijusių dalykų. Mano kovinis Minisumo botas „BADas“ naudoja tokio tipo sensorius, ir didelių problemų kol kas nebuvo pastebėta.

Surinkinėjame schemą

„99 litų boto“ schema nėra sudėtinga. Mes rinksime ją ant maketinės plokštės, reikalingus ryšius jungsime plonais laidukais. Toks būdas nėra geriausias, bet vienintelis galimas naujokams. Elektronikos mėgėjai failų archyve ras spausdintinės plokštės šabloną ir galės pasigaminti plokštę savo mėgstamu būdu — lygintuvu ar UV (vienintelis laidukas spausdintinėje plokštėje sujungia mikrovaldiklio Reset pin1 ir ISP jungties pirmą kojelę). Aš smulkiai aprašysiu schemos surinkimo žingsnius, kad palengvinti gyvenimą naujokams.

  1. Visų pirma, išdėstome pagrindinius komponentus — mikrovaldiklį, TSOP imtuvus, IR diodus ir jungtis servo varikliams bei maitinimui;
  2. Kiek galima arčiau TSOP imtuvų kojelių sumontuojame maitinimo filtrus — R7, R8, C7, C8; „99 Litų botas“ #1
  3. Sumontuojame pirmą 5V reguliatorių (7805L) su triukšmų slopinimo kondensatoriais C4, C5 ir apsauginiu diodu D1. Prie reguliatoriaus išėjimo prijungiame TSOP imtuvų bei mikrovaldiklio maitinimą;
  4. Sumontuojame antrą 5V reguliatorių ir apsauginį diodą D2. Prie reguliatoriaus išėjimo pajungiame servo variklių maitinimą. Atskiras reguliatorius varikliams reikalingas tam, kad sumažinti triukšmų lygį mikrovaldiklio maitinimo grandinėje. Jeigu jūs turite maitinimo jungtį su apsauga nuo atvirkštinio pajungimo, diodai D1 ir D2 nėra būtini. Tokiu atveju maitinimo pliusą (+) nuo akumuliatoriaus junkite tiesiai prie 5V reguliatorių įėjimų;
  5. Sumontuojame valdiklio Reset grandinę — R3 ir C1, prilituojame 10 Mhz kvarcinį rezonatorių bei C2, C3 kondensatorius;
  6. Pajungiame ISP programavimo jungtį prie valdiklio. Pastaba — ISP jungties laidų išdėstymas neatitinka standarto. Elektronikos mėgėjai per 5 minutes galės pakoreguoti ISP jungtį x.LAY faile pagal savo turimo programatoriaus laidų išdėstymą. Naujokams tai neaktualu — juk teks gaminti ir programatorių, ir schemą; „99 Litų botas“ #1
  7. Sumontuojame imtuvų būsenų vizualinės indikacijos šviesos diodus Right_Detect, Left_Detect ir pajungiame juos per R4 ir R5 prie atitinkamų mikrovaldiklio kojelių;
  8. Prijungiame TSOP imtuvų išėjimus prie mikrovaldiklio atitinkamų kojelių;
  9. Prijungiame valdymo laidus nuo servo variklių jungčių prie mikrovaldiklio atitinkamų kojelių;
  10. Dabar prie mikrovaldiklio per potenciometrus P1 ir P2 bei varžas R1 ir R2 pajungiame infraraudonųjų spindulių diodus IR_Right1, IR_Right2, IR_Left1, IR_Left2;
  11. Su multimetru keletą kartų patikriname visus ryšius;
  12. Be klaidų sulituota schema yra paruošta valdiklio programavimui ir po programavimo pasileidžia iš karto.

Patarimai:

  • Su plona adatėle nuvalome kanifolijos pėdsakus tarp visų gretimų litavimo taškų. Tai padės įsitikinti, kad schemoje nėra nepageidaujamų trumpų jungimų;
  • Mikrovaldiklio patariu nelituoti tiesiai į plokštę, o naudoti daugkartinį lizdą. Reikalui esant, valdiklį galima bus lengvai išimti;
  • Pirmą įjungimą patariu daryti su išimtu mikrovaldikliu ir be servo variklių. Pajungus maitinimą, su multimetru pamatuojame valdiklio maitinimo įtampą tuščiame lizde (turi būti 5V), taip pat servo variklių maitinimo įtampą (turi būti 5V). Taip jūs nesudeginsite mikrovaldiklio ir servo variklių, jei schemoje liko klaidų ar trumpų jungimų;
  • TSOP imtuvams gamintojas rekomenduoja naudoti paprastus maitinimo filtrus — R7, R8, C7, C8. Jie nėra būtini, bet pradėti geriau su jais. Kai schema pasileis, galima bus pamėginti tuos filtrus pašalinti, bet aš to nepatarčiau daryti, nes gali nukentėti TSOP imtuvų darbo stabilumas;
  • Ant IR diodų patariu užmauti juodo termovamzdelio gabaliukus, o jų galinę dalį uždažyti su juodu markeriu. TSOP imtuvų galinę dalį ir šonus apklijuoti su stora juoda izoliacija. Vėliau galėsite pamėginti nuimti termovamzdelius ir izoliaciją — greičiausiai imtuvai bus pastoviai suveikę, nes jie gaudys IR spinduliavimą tiesiai iš IR diodų, o ne atspindžius nuo kliūties;
  • Patariu palikti šiek tiek ilgesines TSOP imtuvų ir IR diodų kojeles, kad nuo plokštes jie pakiltų per 2...4mm. Tai leis mums pakreipti juos žemyn, kai norėsime paeksperimentuoti su stalo krašto atpažinimu.

Sveikinu, šiame etape jūs jau turite be klaidų surinktą „99 litų boto“ schemą ir esate pasiruošę mikrovaldiklio programavimui.

Mikrovaldiklis

Programatorius „Penki laidukai“ Programatoriaus viduriai Įdomu kodėl „99 litų boto“ smegenims buvo parinktas būtent ATtiny2313? Turbūt todėl, kad pas mane yra jų perteklius. Juokauju. AVR šeimos mikrovaldikliai yra labai populiarūs visame pasaulyje. Jie teoriškai atlaiko iki 10000 perprogramavimo ciklų ir juos galima programuoti neišimant iš plokštės, todėl jūs galite nebijoti eksperimentuoti. ATtiny2313 — puikus šios šeimos atstovas — mažas, pigus ir galingas. Aš neminėsiu visų jo galimybių, tai galima sužinoti iš dokumentacijos. Čia jums labai pravers anglų kalbos žinios. Mikrovaldiklis pagal programą valdys servo variklius priklausomai nuo sensorių būsenų. Tam reikia parašyti programą ir užprogramuoti valdiklį. Jūs jau panikuojate? Nusiraminkite, pirmam „99 litų boto“ paleidimui nereikės rašyti programos. Tai jau padaryta. Keletas paruoštų programų (BascomAVR kodą ir sukompiliuotus HEX failus) jūs rasite failų archyve. Savo programos rašymui (ar jau paruoštos programos modifikavimui) gali būti naudojamos įvairios darbo aplinkos. „99 litų boto“ programavimui mes naudosime BascomAVR darbo aplinką. Tai labai patogi, intuityviai suprantama aplinka. Nemokama BascomAVR versija leidžia kompiliuoti iki 4 kB kodo. ATtiny2313 turi 2 kB atminties, todėl nemokamos versijos pilnai pakanka. Programos rašomos Basic kalba. Beisikas — labai protingas pasirinkimas naujokams. Jis leidžia susikoncentruoti ties užduotimi ir per daug nesijaudinti dėl sintaksės.

Programos įkėlimui į mikrovaldiklio atmintį jums prireiks programatoriaus. Tam gali būti naudojamas bet koks turimas programatorius. Jei neturite jokio — per 10 minučių galite jį pasidaryti. Pats paprasčiausias programatorius — „penki laidukai“. Toks programatorius puikiai tinka naujokams. Jis jungiasi prie kompiuterio LPT jungties. Elektronikos mėgėjams galiu parekomenduoti „AVR-Doper“ programatorių. Jis jungiasi į USB ir gali būti naudojamas kompiuteriuose, kuriuose nėra LPT jungties. Bet jame naudojama Atmega8 vis tiek reikės programuoti su „penkiais laidukais“ ar su kitokiu jau turimu programatoriumi.

Mikrovaldiklio programavimas Bascom aplinkoje:

  1. Paleidžiame BascomAVR;
  2. Bascom 1 Bascom 2 Per Meniu -> Options -> Programmer, pasirenkame Sample Electronics Programmer, pažymime Autoverify langelį ir spaudžiame OK;
  3. Per Meniu -> Open file, užkrauname reikiamą BAS failą. Pirmą kartą programuojant mikrovaldiklį, pasirinkite FIRST-TEST.BAS;
  4. Pajungiame programatoriaus laidą prie roboto ISP jungties ir patikriname, ar schemai paduotas maitinimas. Servo variklius geriau atjungti;
  5. Spaudžiame ikonėlę Compile current file ir po to Run programmer -> Program;
  6. Atsidarys programavimo langas ir mikrovaldiklis bus identifikuotas;
  7. Programavimo lange spaudžiame AutoProgram chip — programa bus įrašyta į mikrovaldiklio atmintį;
  8. Neuždarome lango, spaudžiame Lock and Fuse Bits — bus išvestas valdiklio fusebitų sąrašas;
  9. Nustatome FusebitC = Divide clock by 8 disabled;
  10. Nustatome FusebitA987 = 1111 external XTAL;
  11. Įsitikinkite, kad fusebitų reikšmės nustatytos teisingai ir jokie kiti fusebitai nebuvo pakeisti. Jei nesate tikras, tiesiog uždarykite programavimo langą ir pradėkite iš naujo. SVARBU: vienas Write FS paspaudimas su neteisingai nustatytais fusebitais gali kainuoti mikrovaldiklį. Jį išimti ir pakeisti nauju bus lengva, juk jūs naudojate lovelį.. Susikaupkite ir nepridarykite sau nuostolių;
  12. Spaudžiame Write FS — naujos fusebitų reikšmės bus įrašytos į mikrovaldiklį;
  13. Spaudžiame Refresh ir patikriname, ar tikrai pakeitimai buvo sėkmingai išsaugoti;
  14. Viskas, mikrovaldiklio programavimas ir fusebitų nustatymas atlikti teisingai.

Patarimai programuojant mikrovaldiklį:

  1. Neskubėkite, nes, dėl neapdairaus mygtukų spaudinėjimo, gali tekti pirkti kitą mikrovaldiklį
  2. Parsisiųskite naujausią „BascomAVR“ demonstracinę versiją iš mcselec.com;
  3. Servo variklių dar nejunkite, schema veiks ir be jų;
  4. Prisiminkite: be klaidų surinktoje schemoje programatorius iš karto teisingai identifikuos valdiklį, paspaudus mygtuką Program;
  5. Svarbu: kartuoju, nekeiskite fusebitų, jei tiksliai nežinote, ką jie reiškia. Priešingu atveju galite užblokuoti mikrovaldiklį ir nesugebėsite jo atgaivinti be patyrusio žmogaus pagalbos. „99 litų boto“ valdikliui reikia pakeisti tik du fusebitus — FusebitC ir FusebitA987 (žr. paveiksliuką);
  6. Vieną kartą atlikus fusebitų nustatymą, daugiau to daryti nereikės. Norint įkelti kitą programą į mikrovaldiklio atmintį, „BascomAVR“ darbo aplinkoje reikia atlikti žingsnius nuo 3 iki 7 (žr. Mikrovaldiklio programavimas), pasirenkant reikalingą BAS failą.

Galimos problemos ir jų sprendimai:

  1. Programatorius nemato valdiklio. Gauname pranešimą Could not identify chip xxxxxx:
    • SVARBU — dar kartą įsitikinkite, kad „99 litų boto“ schemoje nėra klaidų;
    • Patikrinkite, ar teisingai surinktas programatorius „penki laidukai“, ar jungtis nėra apsukta;
    • Patikrinkite, ar „99 litų boto“ schema gauna maitinimą;
    • Patikrinkite, ar teisingai nurodytas programatoriaus tipas ir LPT porto adresas „BascomAVR“ nustatymuose (žr. paveiksliukus);
    • pasitikrinkite kompiuterio BIOS nustatymus. Pamėginkite pakeisti LPT port mode. Pas mane veikia su Mode=SPP, bet gal padės EPP ar ECP;
    • My Computer -> Properties -> Hardware -> Device Manager pasitikrinkite, ar LPT portas matomas ir neišjungtas;
    • Jei niekas nepadeda, pamėginkite programatorių prijungti prie kito kompiuterio, arba su kita operacine sistema;
    • Jokių duomenų apie „BascomAVR“ suderinamumą su „Windows Vista“ aš neturiu. Pasitikrinkite savo „BascomAVR“ versijos palaikomų operacinių sistemų sąrašą.
  2. Programavimo pabaigoje matome pranešimą Difference at address: xxxxxx:
    • Pamėginkite dar keletą kartų paspausti Program chip;
    • Tokia klaida dažniausiai atsiranda dėl per ilgo programatoriaus kabelio (jis turi būti <50cm ir gerai ekranuotas). Patrumpinkite kabelį, naudokite ekranuotą kabelį;
    • Dar viena galima priežastis — per greitas kompiuteris. Einame į BascomAVR -> Options -> Programmer ir parenkame Port delay >0, pvz. 10. Paeksperimentuokite, tai turėtų padėti. Neišsigąskite, jei programavimas vyks pastebimai ilgiau — taip turi būti.
  3. Schema neveikia po programavimo:
    • Patikrinkite, ar schema gauna maitinimą, ar akumuliatorius pilnai įkrautas;
    • Padavus maitinimą, penkis kartus 1s intervalu turi sumirksėti dešiniojo sensoriaus šviesos diodas. Tai rodo, kad valdiklis užprogramuotas teisingai;
    • Jei šviesos diodas visai nemirksi, bet valdiklis užprogramuotas — patikrinkite, ar diodas prijungtas prie teisingos valdiklio kojelės ir ar neapverstas antraip (katodas sumaišytas su anodu);
    • Jei šviesos diodas mirksi žymiai ilgesniais negu 1s intervalais, tai rodo, kad jus neteisingai užprogramavote Fuse Bits. Pasitikrinkite nustatymus (žr. paveiksliuką);
    • Laikant ranka ~5..20 cm atstumu nuo sensorių, imtuvų būsenų vizualinės indikacijos šviesos diodai užsidega — sensoriai „mato“ kliūtį. Atitraukus ranką, diodai užgesta — kliūties nėra. Atpažinimo atstumo reguliavimas yra atliekamas reguliuojant potenciometrus P1 ir P2. Paeksperimentuokite su jais, kad suprastumėte veikimą;
    • Per skaitmeninį fotoaparatą ar mobilaus telefono fotokamerą pažiūrėkite į IR diodus. Jei schema gauna maitinimą, jūs matysite nelabai ryškų mirksėjimą. Geriausiai tai matoma prieblandoje. Jei IR diodai visai nemirksi, patikrinkite, ar jie nėra apversti antraip (sumaišyti katodai su anodais), ar prijungti prie teisingų valdiklio kojelių. Pasukite derinimo potenciometrus į vieną kraštinę padėtį, paskui į kitą. Vienoje iš padėčių spinduliavimas bus ryškesnis ir geriau matomas.

Po šių etapų jūs jau turite veikiančią „99 litų boto“ schemą su valdiklyje įrašyta FIRST-TEST valdymo programa.

Varikliai ir ratai

„99 litų botas“ naudoja pačią paprasčiausią diferencinę pavarą. Tai reiškia, kad kiekvienas iš dviejų varomųjų ratų turi atskirą variklį. Kad robotas pajudėtų, kiekvienas variklis turi gauti valdymo signalą iš mikrovaldiklio. Servo varikliai buvo parinkti dėl jų paprasto valdymo ir platus asortimento RC modeliavimo parduotuvėse. Už 24 Lt gauname variklį su reduktoriumi ir valdymo schemą (viskas viename kompaktiškame korpuse). Atskira išorinė variklių valdymo mikroschema tampa nebereikalinga, servo variklio valdymo laidas gali būti jungiamas tiesiai prie mikrovaldiklio kojelės. Tai yra didelis privalumas, nes atskiras variklių kontroleris (pvz. L293D) gali naujokui atnešti daug galvos skausmo.

Servo varikliai nelabai tinka robotams dėl lėtų apsukų ir sąlyginai didelio triukšmo lygio, bet gauti gerą nuolatinės srovės mikrovariklį su reduktoriumi yra praktiškai neįmanoma, todėl geriau lėčiau, negu nieko. Aš nesigilinsiu į teoriją, tik trumpai paminėsiu atskirus aspektus. Servo varikliai yra valdomi impulsais. Impulso plotis nusako servo varikliui, i kuria puse ir kokiu kampu pasisukti. Reikiamo dažnio valdymo impulsus generuoja roboto mikrovaldiklis. Programoje keičiant vienintelio registro reikšmę, mes keičiame generuojamų impulsų plotį (duty cycle) ir tokiu būdu nurodome kiekvienam varikliui sukimosi kryptį priklausomai nuo norimo veiksmo konkrečioje situacijoje. Kadangi standartiniai servo varikliai gali suktis tik 180 laipsnių kampu, juos reikia perdaryti. Perdarymo procedūra yra labai nesudėtinga. Ji gali truputi skirtis skirtingiems servo modeliams, bet perdarymo tikslas — nutraukti mechaninį ryšį tarp potenciometro ašies ir pagrindinio dantračio, taip pat panaikinti mechaninį posūkio kampo ribotuvą. Faktiškai, panaikinus grįžtamąjį ryšį, servo variklis tampa paprastu nuolatinės srovės varikliu. Galite parsisiųsti perdarymo proceso vaizdo įrašą.

„TowerPro SG5010“ servo variklių perdarymas:

  1. Servo variklių perdarymas 1 Servo variklių perdarymas 2 Atsukti korpuso varžtus ir atsargiai nuimti dangtelį. Tam reikės šiek tiek jėgos, tik pasistenkite neišbarstyti dantračių;
  2. Iš didžiausio dantračio išimti mažytę plastmasinę detalę, kuri sujungia potenciometro ašį su dantračiu;
  3. Su pjūklu padaryti įpjovą potenciometro ašelėje;
  4. Plonu grąžtu (2mm) kiaurai pragręžti pagrindinį dantratį, kad vėliau galima būtų su plonu atsuktuvėliu sukinėti potenciometrą neardant korpuso;
  5. Su kanceliariniu peiliu nupjauti plastmasinį posūkio kampo ribotuvą nuo pagrindinio dantračio;
  6. Viską surinkti ir užsukti korpuso varžtus.

Visa tai užima nuo dešimties minučių iki valandos. Po perdarymo servo varikliai yra paruošti jungimui prie mikrovaldiklio. Servo laidas yra trijų gyslų. Spalvos nusako jų paskirtį ir gali skirtis priklausomai nuo gamintojo. „TowerPro SG5010“ markiruotė: rudas — maitinimo minusas (-), raudonas — maitinimo pliusas (+), oranžinis — valdymas (tiesiai prie mikrovaldiklio kojelės). Servo variklių specifikacijose nurodoma 4-7V darbinė įtampa. Gali kilti mintis maitinti servo variklius tiesiai nuo akumuliatoriaus, kad „paturbinti“ robotą, bet būkite atsargūs — nemėginkite paduoti servo varikliams pilnos akumuliatoriaus įtampos. Tikimybė sudeginti variklius yra beveik 100%.

Ratai iš miniCD „99 litų boto“ ratams puikiai tinka miniCD diskai. Kiekvieno „TowerPro SG5010“ servo variklio komplekte yra keli skirtingų formų montažiniai flanšai. Vienas iš jų, apvalus, idealiai įsistato į CD disko griovelį (tiesa, ne į kiekvieno, iš mano turimų penkių miniCD tiko tik į tris). Tokiu būdu gaunasi praktiškai idealus rato centravimas. Patariu flanšo pirminiam fiksavimui naudoti dvipusę lipnią juostą. Kai centravimas atliktas, belieka tvirtai užfiksuoti mūsų konstrukciją su karštais klijais.

Improvizuotoms padangoms galima naudoti seną pelės kilimėlį. Pjaunant jį įstrižai, gaunamų juostelių ilgio kaip tik užtenka apgaubti miniCD diską. Prapjaukite juostelę išilgai per vidurį iki puses gylio. Užmaukite ją ant CD briaunos ir užfiksuokite su klijų lašiuku ties sudūrimu. Jei rezultatas jūsų netenkina, galite pamėginti priklijuoti antrą diską prie flanšo išorines puses. Gausis platus „dvigubas“ ratas, ant kurio bus lengviau pritvirtinti padangą. Jei pelės kilimėlis netinka — pasitelkite vaizduotę, gal būt rasite geresnę medžiagą ratų padangoms. RC modelių parduotuvėse yra nebrangių, lengvų, įvairių dydžių ratų lėktuvėliams. Jie puikiai tiks „99 litų botui“.

Sveikinu, sėkmingai atlikote servo variklių perdarymo procedūrą. Dabar varikliai su ratais yra paruošti jungimui į „99 litų boto“ schemą.

Darome platformą

„99 litų boto“ bazei surandame plastiko ar panašios medžiagos plokštę. Tai platforma, prie kurios mes tvirtinsime servo variklius ir schemą. Jos matmenys gali būti maždaug 100x100mm. Plotis turi būti pakankamas, kad tilptų du servo varikliai ir schema. Servo variklių pirminiam tvirtinimui naudosime dvipusę lipnią juostą. Kai varikliai bus gerai išlyginti ir sureguliuoti, galima bus su keliais lašiukais karštų klijų užfiksuoti jų padėtį. Karšti klijai yra nepakeičiama priemonė konstruojant robotus. Su jais galima greitai ir tvirtai sujungti įvairias detales. Jei dar neturite karštų klijų pistoleto, patariu nusipirkti — jis kainuoja nuo 10 iki 25 litų ir tikrai jums pravers ateityje.

Roboto stabilumui reikalingas trečias atramos taškas (du atramos taškai — ratai). Jo parinkimas priklauso nuo jūsų fantazijos ir išradingumo. Tai gali būti tiesiog tinkamo ilgio atrama su stalo teniso kamuoliuku ant galo. Kamuoliukas gali būti standžiai pritvirtintas prie atramos. „99 litų botas“ geriausiai jausis ant stalo paviršiaus, laminuotų grindų ar nelabai minkšto kilimo, todėl kamuoliukas pakankamai gerai slys tokiu paviršiumi. Aš panaudojau priekinę žaislines mašinėles dalį.

Prie platformos (sensoriais į priekį) pritvirtiname plokštę. Nenaudokite karštų klijų, nes plokštė turi būti nesunkiai nuimama. Geriausiai pradžiai naudoti lipnią juostą. Vėliau galėsite sugalvoti gražiai atrodančius tvirtinimus.

Atidžiai (atsižvelgiant i poliarumą) prie plokštės prijunkite servo variklius. Prijungus maitinimą, servo varikliai pradės suktis. Nekreipkite dėmesio į jų sukimosi kryptį. Dabar reikia atlikti servo variklių centrinių taškų nustatymą. Galite parsisiųsti šio proceso vaizdo įrašą.

Servo variklių centrinių taškų nustatymas:

  1. Įjungiame ir nukreipiame „99 litų botą“ taip, kad abu jo sensoriai „nematytų“ kliūties, t.y. abiejų pusių imtuvų būsenų vizualinės indikacijos šviesos diodai užgęsta. Plonu atsuktuvėliu atsargiai pareguliuojame kiekvieno servo variklio potenciometrą, kad ratai nebesisuktų;
  2. Uždengiame TIK kairės pusės sensorių (kairės pusės šviesos diodas užsidegs). Kairės pusės variklis turi suktis atgal, dešinės pusės variklis — į priekį.
  3. Uždengiame TIK dešinės pusės sensorių (dešinės pusės šviesos diodas užsidegs). Dešinės pusės variklis turi suktis atgal, kairės pusės variklis — į priekį.
  4. Uždengiame abiejų pusių sensorius (kairės ir dešinės puses šviesos diodai užsidegs). Dabar abiejų pusių varikliai turi suktis į priekį.
  5. Pastatykite „99 litų botą“ ant lygaus paviršiaus ir parodykite jam delną. Jis mėgins atakuoti jūsų ranką ir sekti ją, kai patrauksite ranką į kairę ar į dešinę pusę.

Galimos problemos ir jų sprendimai:

  1. Varikliai iš vis nesisuka ir neskleidžia jokių garsų nepriklausomai nuo sensorių būsenų:
    • patikrinkite, ar oranžiniai servo variklių valdymo laidai prijungti prie teisingų mikrovaldiklio kojelių;
    • patikrinkite, ar ties servo variklių raudono ir juodo laidų yra 5V.
  2. Varikliai nesisuka arba sukasi su strigimais, girdisi tarškėjimai:
    • patikrinkite, ar teisingai surinkote servo variklius po perdarymo;
    • patikrinkite ar nesugadinti dantračių dantukai, ar nupjauto fiksatoriaus liekanos neužsikabina už gretimo dantračio, ar tarp dantračių nėra šiukšlių;
  3. Varikliai sukasi gerai, bet ne į reikiamą pusę:
    • pamėginkite apversti servo variklius kol rasite reikiama jų padėtį;
    • pajunkite variklius teisingai: kairės pusės variklį prie „99 litų boto“ plokštės kairiosios jungties, o dešinės pusės variklį — prie dešiniosios pusės jungties.
  4. Variklių 5V reguliatorius įkaista:
    • pritvirtinkite prie jo aušinimo radiatorių. TO-220 korpusui yra didelis radiatorių pasirinkimas, kaina nuo 80 ct. Radiatorių galite pasidaryti ir patys iš aliuminio arba varinio lakšto gabaliuko.

Sveikinu, sėkmingai surinkote ir užprogramavote „99 litų botą“. Pagaliau visi roboto mazgai veikia.

Prasideda veiksmas

„99 litų botas“ atrodo nelabai įspūdingai, bet tai tikras robotas. Jo elgesys priklauso nuo mikrovaldiklyje vykdomos programos. Jūs jau mokate įkelti programą į valdiklio atmintį. Failų archyve rasite keletą labai paprastų jau paruoštų programų su skirtingais elgesio algoritmais. Prisiminkite, tai ne programavimo šedevrai. Tai pagrindas, kurio pagalba galėsite sukurti daug sudėtingesnes programos, įgyvendinti žymiai įdomesnius valdymo algoritmus. Failus su *.hex plėtiniu galite iš karto kelti į valdiklio atmintį, o atitinkamus failus su *.bas plėtiniu galite užkrauti į „BascomAVR“ ir pamatyti nesukompiliuotą programos kodą.

Programų šablonų sąrašas

  1. FIRST_TEST.HEX — roboto sensorių veikimo patikrinimas bei servo variklių centrinių taškų nustatymas.
  2. AGRESYVUS.HEX — atakuojame auką. Nematydamas objekto botas stovi vietoje. Pamatęs objektą robotas važiuoja link jo ir stengiasi nepamesti jį iš akių. Programa labai panaši i FIRS_TEST, tik posūkiai atliekami ne reversuojant ratus, o sustabdant — manevrai gaunasi sklandesni.
  3. BAILYS.HEX — slepiamės nuo priešo. Nematydamas objekto botas stovi vietoje. Pamatęs objektą robotas bėga nuo jo, kol nebus įvarytas į kampą ar priremtas prie sienos. Paeksperimentuokite su įvairaus dydžio, įvairių spalvų objektais. Pastebėkite, kad šviesesnės spalvos objektą robotas pamatys ankščiau, negu tamsesnės. Taip yra dėl to, kad tamsesni objektai sugeria daugiau infraraudonųjų spindulių.
  4. SMALSUS.HEX — kliūčių išvengimas. Botas elgsis kaip mažas šuniukas nepažįstamoje vietoje, mėgins ištyrinėti visus kambario užkampius ir neužstrigti tarp baldų ar kitokių kliūčių. Jam tai ne visada gali pavykti, bet juk jis dar jaunas ir nepatyręs robotas :). Būkite geru mokytoju, ir botas dar ne kartą jus nustebins savo sugebėjimais. Pamėginkite nustatyti skirtingus sensorių jautrumus, paįvairinkite labirinto geometriją, pakeiskite Waitms uždelsimus programoje ir stebėkite roboto reakciją į aplinką. Galite parsisiųsti veiksmo vaizdo įrašą.
  5. ATSARGUS.HEX — stalo krašto atpažinimas. Reikia pakreipti visą plokštę ~45° kampu žemyn į priekį (galima palenkti tik pačius sensorius, bet nuo dažno lankstymo gali nulūžti imtuvų ir siųstuvų kojelės). Sensoriai sureguliuojami taip, kad botas patikimai matytų stalo paviršių. Privažiavęs prie stalo krašto robotas stengsis nenukristi nuo jo. Būkite pasiruošę pagauti robotą, jei jis vis dėlto nukris. Paeksperimentuokite su schemos palenkimo kampais ir sensorių jautrumais, patikimesniam stalo krašto atpažinimui. Pamėginkite uždengti vidurinius IR diodus su juodos izoliacinės juostos gabaliukais — tai turėtų pagerinti stalo krašto atpažinimą. Galite parsisiųsti veiksmo vaizdo įrašą.
  6. ZOMBI.HEX — valdome robotą su nuotolinio valdymo pulteliu. Tinka bet kokios buitinės technikos pultelis, tik svarbu, kad duomenų perdavimui jis naudotų labai paplitusį RC5 protokolą. Nukreipkite pultą į botą ir valdykite jį, spaudžiant skaičių mygtukus pulte. Spaudžiant skaičius „4“ ir „6“, trumpam užsidega TSOP imtuvų būsenų vizualinės indikacijos šviesos diodai. Jei diodai nemirksi ir robotas nereaguoja į mygtukų paspaudimus, tai reiškia, kad jūsų pultelis naudoja kitą protokolą (ne RC5). Paieškokite tinkamo pultelio. Aš neturėjau galimybes įgyvendinti visus įmanomus protokolus, kadangi jų yra pakankamai daug. Galite parsisiųsti veiksmo vaizdo įrašą.

Papildomi moduliai

Čia rasite kelių patobulinimų sąrašą „99 litų botui“. Straipsnio rašymo metu kai kurių žemiau pateiktų modulių veikimas nebuvo gerai patikrintas, o kai kurie moduliai iš vis nebuvo padaryti, todėl jie nebuvo įtraukti į standartinę roboto įrangą. Be to, straipsnio apimtis ir taip yra pakankamai didelė. Internete rasite daug įvairių sensorių schemų. Pasirinkite jums tinkamesnę, pasidarykite ir paeksperimentuokite.

  1. Šviesos intensyvumo sensorius. Priklausomai nuo šviesos kiekio, patenkančio i fotoelementą (photocell) arba fototranzistorių, robotas gali slėptis kampuose nuo šviesos arba ieškoti šviesesnių vietų kambaryje. Mano „Mauzeris“, padarytas pagal Garreth Brawnyn „Mousey the JunkBot“ straipsnį, naudoja tokio tipo sensorius. Jis įdomus tuo, kad jo smegenys — analoginė mikroschema, o ne mikrovaldiklis, taigi jo nereikia programuoti. Mauzerio elgesys nėra griežtai apibrėžtas ir priklauso nuo besikeičiančių aplinkos apšvietimo sąlygų. Galite parsisiųsti veiksmo vaizdo įrašą.
  2. Linijos sekimo sensorius. Jis susideda iš kelių šviesos diodų (siųstuvų) ir fototranzistorių (imtuvų). Su tokiu sensorium robotas gali sekti baltą liniją juodame fone arba juodą liniją baltame fone. Paprastesni linijos sensoriai yra derinami rankiniu būdu (potenciometrais), sudėtingesni — reguliuojasi automatiškai (naudoja analoginį-skaitmeninį keitiklį). Patikimam linijos atpažinimui kai kurie sensoriai naudoja fiksuotą logiką, o kai kurie — negriežtą logiką (fuzzy logic). Yra įvairių ir pakankamai sudėtingų valdymo algoritmų, skirtų apdoroti linijos sensorių duomenis ir sekti liniją maksimaliai įmanomu greičiu.
  3. Ultragarsinis sensorius. Siųstuvas skleidžia ultragarsą, o imtuvas priima jo atspindžius nuo objektų. Atstumas iki kliūties yra proporcingas laiko tarpui tarp impulso išsiuntimo ir jo atspindžio priėmimo. Naujesnių automobilių parkavimo sistemose naudojami būtent šio tipo sensoriai. Paprasto ultragarsinio sensoriaus prototipas šiuo metu yra testuojamas mano minisumo robote „BAD“.
  4. Enkoderiai. Robotuose naudojami enkoderiai skaičiuoja ratu apsisukimus ir padeda tiksliau pozicionuoti robotą. Pavyzdžiui, galite liepti savo robotui pavažiuoti metrą į priekį, pasisukti 90° kampu ir pavažiuoti dar pusę metro. Dažniausiai enkoderiai veikia optiniu principu arba naudoja holo efekto daviklius. Geras ir visiems žinomas pavyzdys — kompiuterinė pelė (ne optinė), iš kurios galima pasidaryti paprastus enkoderius.
  5. Plataus panaudojimo sensorius. Labai įdomų projektą rasite čia.
  6. Markovo grandinių algoritmas. Roboto veiksmai kiekvienu konkrečiu momentu priklauso ne tik nuo daviklių parodymų, bet ir nuo ankstesnių įvykių. Toks algoritmas labai pagyvina roboto elgesį, jis tampa labai panašus į gyvą sutvėrimą. Plačiau apie Markovo grandinių algoritmą galima pasiskaityti čia.

Vietoj epilogo

Tikiuosi, kad šis straipsnis jums bus naudingas. Jo esmė keliais žodžiais:

  • Netiesa, kad robotų konstravimas — labai brangiai kainuojantis užsiėmimas;
  • Netiesa, kad mikrovaldiklių programavimas — nežmoniškai sudėtingas ir paslaptingas procesas;
  • Netiesa, kad jums niekada nepavyks to padaryti.

Manau, kad dabar kitaip pažvelgsite i robotų kūrimo procesą ir įsitikinsite, kad elektronika — ne toks jau nuobodus dalykas. Nepulkite į neviltį, jei kažkas nesigaus iš pirmo karto — bet kokiu atveju įgausite patirties ir pažinsite daug įdomių dalykų. Prisiminkite vieno žymaus mokslininko žodžius: „Aš padariau ne dešimt tūkstančių klaidu. Tiesiog aš suradau dešimt tūkstančiu būdu, kurie neveikia“. Būkite optimistais ir pasitikėkite savo jėgomis. Sėkmes Jums ir Jūsų Robotams!

Detalių sąrašas

  1. Servo mechanizmai „TowerPro SG5010“ arba kitokie — 2 vnt., nuo 24 Lt;
  2. Ličio-polimero akumuliatorius Li-Po 820mAh 7.4V arba bet koks kitoks >7V — 1 vnt., nuo 42 Lt;
  3. Mikrovaldiklis Attiny2313 — 1 vnt., nuo 6 Lt;
  4. Kvarcinis rezonatorius 10 MHz — 1 vnt., nuo 1 Lt;
  5. TV imtuvai TSOP1738 — 2 vnt., nuo 4 Lt;
  6. Infraraudonųjų spindulių diodai — 4 vnt., nuo 1 Lt;
  7. Universali maketavimo plokštė 50x100mm — 1 vnt., nuo 3 Lt;
  8. Smulkmenos pagal schemą (varžos, kondensatoriai ir pan.);
  9. Nereikalingi ar sugadinti mini CD diskai — 2 vnt.;
  10. Plastiko ar kt. plokštė 100x100mm roboto bazei — 1 vnt.

© 2004-2024 circuit.lt | Be sutikimo kopijuoti draudžiama