![]() Elektroonika poole pealt algasid ettevalmistused kohe projekti alguses. Välja tuli mõelda, milliseid elektroonika komponentide me vajame. Samuti tuli arvestada ka nende saadavust, kuna paljusid osasid ei ole võimalik tellida ja mõndadel on liiga pikk tärneaeg. Samuti tuli leida parima hinnaga tärnija. Esimese nädala alguses saigi Tevalost tellitud olulised sõlmpunktid nagu Atmeli mikrokontroller AT90S8535, samm-mootori draiverid L293D ja optoandurid ELITR8307. Ülejäänud vajaminevad osad olid olemas voi olid saadaval kohapeal Tartu elektroonika poodidest. Eletroonika projekteerimine jätkus skeemi koostamisega. Selleks sai kasutatud CadSoft’i programmi EAGLE Layout Editor 4.3. Viimase eelisteks on tasuta saadavus mitte kommertsiaalseteks kasutuseks, suur andmebaas olemas-olevatest komponentidest, sisse integreeritud tööriist trükkplaadi projekteerimiseks. Kõik muudatused komponentide ja nende ühendustes skeemil kajastusid kohe trükkplaadi koostamise aknas. Skeemi ja trükkplaadi ettevalmistamisel sai sisse projekteeritud järgmised võimalused ja koostoime mikrokontrolleriga:
Täiendavate võimalustena sai skeemis juba ette planeeritud:
Järgnevalt toome ära komponentide ja kasutatavate protokollide lühikirjelduse. Seejärel kirjeldame, kuidas erinevad sõlmed tootavad ja on omavaheliste ühendatud. Atmeli mikrokontroller AT90S8535RISC arhitektuuril põhinev 8 MHz taktsagedusel töötav no 40-jalgne 8 bittine mikrokontroller. Seda saab täielikult programmeeriga näiteks C-kompilaatorite, macro-assemblerite, programm debug/simulaatorite abil. Omadused:
ITR8307 on 3,4 mm lai andur, mis sisaldab infrapuna dioodi ja NPN silikoon fototransistorit. Lainepikkus on 840nm. ![]() Draiver L293D Nelja kanaline sisseehitatud dioodidega draiver. Ülekuumenemis kaitsmega, korgmürale imuunne ja sisendpinge kuni 1.5 V. Sobib kasutamiseks näiteks samm-mootorite ja voolu ümberlülitavate transistorite jaoks. Alustaks siis koige olulisemast liikumapanevast jõust – samm-mootorid. Nende juhtimiseks kasutasime kahte draiverit L293D, kummagi mootori jaoks üks. Mootori draiveri juhtimiseks oli vaja nelja juhtsignaali ja ühte kontrollsignaali EN (enable). Signaali EN = 0 abil sai lülitada mootorit valja – mootori veovoll muutus vabalt pööratavaks. Signaal EN = 1 põhjustas aga selle, et alati oli mootori mahiste otspunktid ühendatud toiteallika mingi polaarsusega. Kui mahiste mõlemas otsas oli sama polaarsus, siis toimis see labi eneseinduktsiooni motoorjou mootoril pidurdavana. Ja kui olid erinevad pinged siis see põhjustas mahises voolu ja magnetvälja, mille tõttu mootori veovoll pöördus vastavalt ja jäi fikseeritud asendisse seisma. Andes draiverile sobival kujul tsükliliselt juhtsignaale saame samm-mootori tööle pidevalt. Katsetuste käigus selgus, et kontroll-signaali EN võib statsionaarselt seade korgeks, ühendades selle toiteallika “+” pingega. Selle abil lihtsustus skeemi projekteerimine ja samuti juhtsignaalide tsükkel. Juhtsignaalide andmises draiverile kasutasime mikrokontrolleri porti C. Selleks tuli port C konfigureerida väljundiks. Pordi neli madalamat viiku PC0..PC3 juhtisid ühte mootorit ja viigud PC4..PC7 juhtisid teist mootorit. Juhtsignaalid sai draiveriga ühendatud sobivalt nii, et mõlema mootori jaoks moodustus pideva pöördumise jaoks tsükkel:
Teine tähtis osa roboti liikumise juures oli joone jälgimine. Siin kasutatud optoandurite ELITR8307 ühendamiseks oli vaja nii signaali infrapuna dioodi toole lülitamiseks, kui ka analoog-digitaal muundit (ADC) anduri väljundsignaali mõõtmiseks. Meie poolt kasutatud kontrolleril oli uks ADC muundi, millega sai multiplekseri abil mõõta järgemööda signaale kõikidelt pordi A viikudelt. Kuna kasutasime ainult nelja andurit, siis said need koik ühendatud porti A. IR dioodi ühendamisel sai lähtutud sellest, et mikrokontroller suudab sisendina taluda suuremaid voole (kuni 20mA), kui valjundina. Seetõttu sai anood ühendatud toite “+” pingega ja omakorda veel jadamisi 220W takistiga. Tulemuseks oli maksimaalne vool 15mA, mis jäi lubatud piiresse. Samuti oli oluline see, et igat dioodi sai eraldi juhtida. See sai selgeks katsetuste käigus, kui sai sisse lülitatud kõik neli dioodi korraga, mis tarbisid kokku voolu 60mA. Selle tulemusena langes toiteallika pinge alla kriitilise piiri (3.4 – 3.5V) ning osad komponendid lakkasid töötamast. Anduri enda moodustas fototransistor, mille takistus sõltub suuresti talle peale langevast valgusest, ülatudes 10kW valges kuni 200kW pimedas. Ühendades transistori viigud läbi 47kW takisti toiteallikaga, moodustus pingejagaja, mille muutuvat pinget oli võimalik ADC’ga mõõta. Puuteanduritena kasutasime traadist valmistatud lüliteid. Kerest välja ülatuv traat oli ühendatud maaga. Mikrokontrolleri poole pealt ühendasime andurid valiste katkestustega pordis D. See oli kasulik selleks, et vajadusel oleks saanud kasutada puuteanduritelt signaali saamiseks programmis katkestusi. Tegelikkuses seda siiski vaja ei läinud. Takistite R11 ja R12 abil hoitsime pinge viikudel PD2 ja PD3 kõrgel ning puute korral lühistasid anduri traadid selle maaga. Järgmine tähtis osa on toiteallikas. Selleks kasutasime 6 AA tüüpi patareid, mis olid ühendatud kaheks sektsiooniks. Kumbki andis pinge 4.5V. Ühe sektsiooni abil toideti samm-mootoreid ja teisega juhtelektroonikat. Toiteploki ühendamiseks trükkplaadiga on pistik SV4, millest omakorda edasi läheb toitelüliti S1. Kontrolleri programmeerimiseks sai pistiku SV3 abil ühendada valise programmaatoriga. Programmeerimine toimus ule SPI protokolli ning selleks kasutati viike PB5, PB6 ja PB7. Viik PB4 sai maaga ühendatud selleks, et kasutada SPI protokollil põhinevat andmevahetust arvutiga ka kontrolleri töötamise ajal. Ennekoige programmi silumiseks ja valimust silmas pidades sai skeemi lisatud ka neli valgusdioodi, mida sai kontrolleriga juhtida. Valgusdioodide D1 kuni D4 uhendus on samasugune, kui nagu me kasutasime optoandurite IR dioodide juures. Täiendava võimalusena lisasime skeemi oma robotile telekapuldi abil juhtimise. Puldist lähtuva infrapunases spektris moduleeritud signaali vastuvõtmiseks kasutasime moodulit TFMS 5380, mille väljundis on juba filtreeritud ja demoduleeritud korrektne digitaalne signaal. Kontrolleris kasutasime selle signaali mõõtmiseks analoog-komparaatori sisendit. Viimase sai tööle panna katkestuse reziimis, kus igakord genereeriti programmis katkestus, kui pinge polaarsus viigul PB2 muutus viigu PB3 suhtes. Vanast Nokia GSM telefonist parit pieso valjuhaaldiga heli genereerimiseks kasutasime transistori T1, mille baas oli uhendatud kontrolleri viiguga PD7. Selle viigu sai kontrolleris programmeerida toole impulsi laiusmodulatsiooni (PWM) reziimis. Transistor ise toimis lülitina. Väljuhääldiga roobiti ühendatud kondensaatori madalpaasfiltrina, mille abil teisendati digitaalne nelinurk signaal siinuseliseks helisignaaliks. Veel oli meie kasutada vanast Benefoni NMT mobiiltelefonist parit LCD moodul, mida sai juhtida I2C protokolli abil. Selleks sai kontrolleril kasutada viike PD1 ja PD2. LCD moodul ise ühendati pistiku SV9 abil. I2C protokolli ja Sony pultides kasutatava protokolli kirjelduse leiab dokumendi lõpust lisade alt.
|
![]() |
![]() |