Author Topic: Nepārtraukti strādājoša iRobota izveide (robotikas (topošajiem) entuziastiem)  (Read 7252 times)

iRobots

  • Administrators
  • Dalībnieks
  • *****
  • Posts: 7
  • Karma: +0/-0
Nupat, palīdzot interesantam sociālajam projektam, nācās pārveidot vairākus iRobot Roomba robotus tā, lai liktu tiem strādāt nepārtraukti, dienām ilgi bez atpūtas. Lai veiktu šādu pārbūvi, iRobot seriālajam portam bija jāpievieno dažas papildus ierīces un jāieprogrammē tās, lai nedaudz izmainītu iRobota ierasto darbības algoritmu. Par cik pārbūve nav sarežģīta un to var mēģināt atkārtot, nolēmu dalīties pieredzē. Pārbūve, programmēšana un testēšana aizņēma nepilnas 2 dienas. Detaļu izmaksas ~2 Lati vienam robotam. Pārbūvējot, protams jāuzņemas zināms risks, jo ja ko izdara nepareizi, ražotāja garantija uz tādas pārbūves kļūdām neattiecas.

Tātad Darba Uzdevums: Projektam bija nepieciešami vairāki iRoboti, kas darbojas vienā telpā un strādā nepārtraukti vairākas dienas, savstarpēji sadarbojoties, un bija nepieciešams arī radīt nelielu neprognozējamības efektu:
1) lai skatītājs nevarētu precīzi paredzēt kurā brīdī kurš robots uzsāks darbu;
2) lai robotu darbība nebūtu tik sistemātiska kā standarta iRobotiem, un lai būtu liela varbūtība, ka īsajā darba sprīdī, konkrētais robots visu telpu nepaspēs iztīrīt, un vēlāk viņa vietā to izdarīs cits robots;
3) lai roboti varētu nedaudz ietekmēt viens otra darbību, piemēram pamodinot otru robotu, kamēr tas veic uzlādi.

Tāpēc šie pārveidotie iRoboti atšķiras no standarta, rūpnieciski izgatavotiem iRobotiem ar sekojošo:
- standarta iRobots telpas tīra ~2 stundas, pēc tam ~2 stundas uzlādējas un gaida nākošo dienu, lai atkal tīrītu savas 2 stundas. Šāda uzvedība ir optimāla tīrot normālas dzīvojamās telpas;
- toties pārveidotais iRobots darbojas 10 minūtes, pēc tam uzlādējas apmēram 25 minūtes (šis laiks ir ieprogrammēts mainīgs). Ja šajā laikā "guļošo" robotu mēģina pamodināt cits robots, tad uzlādes laiks tiek pagarināts vēl par 10 minūtēm;
- standarta iRobots apkārt savai pašuzlādes mājai ievēro nelielu distanci, lai to lieki nekustinātu;
- pārveidotajam iRobotam ir noņemta pašuzlādes mājas aizsardzība, tādējādi pārveidotais iRobots tai droši brauc pāri. Brīdī, kad tiek dota komanda uzlādēties, robots daļēji pielieto savas standarta navigācijas prasmes, lai nosēstos uz pašuzlādes mājas un veiktu akumulatora uzlādi.

Izmantoto galveno detaļu saraksts:
- Mikrokontrolieris ATTINY2313
- Lineārais sprieguma regulators LM7805
- Kvarca rezonators 7,3728MHz
- Barošanas kondensatori 22uF un 0,1uF

Elektroniskā shēma



Lai vairāk interesentu varētu saprast ko katra no šīm detaļām dara, neliels detaļu apraksts dotā projekta kontekstā (varbūt vēl kāds no lasītājiem ieinteresēsies robotu būvē un kļūs par izgudrotāju, robotu inženieri, vai .... )

Mikrokontrolieris ATTINY2313

Šī ir galvenā ierīces sastāvdaļa, kas ir visgudrākā un vienlaikus arī vissarežģītākā. Arī mikrokontrolierim ir seriālais ports, kurš tiek savienots ar
iRobota seriālo portu, tādā veidā abas šīs ierīces spēj sazināties. Kad mikrokontrolieri iegādājas, tad tas ir "dumjš" un neko neprot darīt. Lai
tas spētu vadīt robotu, to vispirms ir nepieciešams ieprogrammēt. Ar datora palīdzību tiek uzrakstīta programma, kas nosaka kā tieši robots
tiks vadīts. Šeit tiek ņemts vērā protokols kādā veidā iRobots uz seriālo portu dod informāciju no robota sensoriem un kā pareizi nodot informāciju uz iRobota izpildmehānismiem. To visu ieprogrammē mikrokontrolierī, un tad tas spēj veikt šo ieprogrammēto uzdevumu.

Mūsu gadījumā, mikrokontrolieris ik pēc 1 sekundes sūta robotam komandu un pieprasa dažādus sensoru datus. Uzreiz pēc komandas saņemšanas robots atbild atpakaļ ar pieprasītajiem datiem. Tie ir dažādi lādēšanās parametri, robota akumulatora spriegums un robota riteņu motoru strāva. Pēc riteņu strāvas mikrokontrolieris zina vai robots brauc, vai nē. Pēc lādēšanās parametriem nosaka vai robots atrodas uz pašuzlādes mājas, un vai tam ir pilns akumulators. Lai robots sāktu tīrīt, mikrokontrolieris tam nosūta tīrīšanas komandu. Robots ir ļoti paklausīgs un uzreiz pēc komandas saņemšanas sāk braukt nost no pašuzlādes mājas, lai sāktu tīrīšanu. Šajā brīdī mikrokontrolieris sāk skaitīt laiku. Kad 10 minūtes ir pagājušas, tad mikrokontrolieris nosūta robotam mājas meklēšanas komandu. Pēc tās saņemšanas robots sāk meklēt māju un brauc lādēties. Tiklīdz robots ir māju atradis, mikrokontrolieris atlak sāk skaitīt laiku un liek robotam lādēties noteiktu laiku. Pēc tam tas skatās vai akumulators ir pilns. Ja tas tā ir, tad mikrokontrolieris robotam sūta tīrīšanas komandu, ja nē, tad gaida kamēr robots būs pilnībā uzlādēts.

Lineārais sprieguma regulators LM7805

Galvenais tā uzdevums ir nodrošināt mikrokontroliera barošanu. Šī detaļa ir nepieciešama tāpēc, ka iRobota akumulatora spriegums ir 12V -
17V, bet mikrokontrolierim ir nepieciešama 5V barošana. Diode, kas ir ieslēgta pirms lineārā sprieguma regulatora, aizsargā no nejaušas
barošanas polaritātes sajaukšanas. Šajā gadījumā, ja lietotājs ierīcei barošanu pieslēdz nepareizi, tad tā nesabojāsies.

Kvarca rezonators 7,3728MHz

Šī detaļa nodrošina mikrokontrolieri ar precīzu pulksteni, jeb takts signālu. Lai mikrontrolieris spētu sazināties caur iRobota seriālo portu, tam
ir nepieciešama precīza takts frekvence. Kvarca rezonators nosaka arī pašu takts frekvenci. Nomainot šo rezonatoru uz citu, mikrokontrolieri
var darbināt ātrāk vai lēnāk. Pareizai kvarca rezonatora darbībai ir nepieciešami arī divi kondensatori ar 22pF kapacitāti. Šīs detaļas nosaka pats mikrokontroliera ražotājs.

Barošanas kondensatori 22uF un 0,1uF

Ierīcei tiek izmantoti 2 dažādi kondensatori, kas ir pieslēgti pie 5V barošanas. Lielākais (22uF) kondensators nodrošina stabilu barošanas
spriegumu. Mirkokontrolieris tāpat kā jebkura cita pusvadītāju ierīce, strāvu tērē vienu brīdi vairāk, vienu brīdi mazāk, savukārt kādā citā
laika momentā pavisam daudz. Lai barošanas spriegums būtu stabils un mikrokontrolieris spētu stabili darboties, tad šis 22uF kondensators
uzlādējas līdz 5V brīdī, kad mikrokontrolieris patērē maz strāvu, bet izlādējas, kad tam ir nepieciešams lielāks strāvas impulss. Mazākais
0,1uF kondensators ir paredzēts, lai nofiltrētu augsto frekvenču trokšņus uz 5V barošanas. Tos var radīt gan pats mikrokontrolieris,
gan arī kāda cita ierīce, piemēram, mobilais telefons, kas atrodas ļoti tuvu.

Drīz šeit pievienošu arī programmas aprakstu un fotogrāfijas.

Ja rodas interese pārprogrammēt iRobotus, varat mēģināt atkārtot šo projektu, vari arī kādu no daudziem citiem iRobotu pārprogrammēšanas projektiem. Un galu galā, īpaši interesants pasākums ir iRobot Sumo robotu izveide un piedalīšanās Baltijas valstu skolnieku, studentu un inženieru sacensībās - Baltic Robot Sumo. Lai izdodas!
« Last Edit: Septembris 09, 2011, 19:23:57 by iRobots »