Elektronika.lt

Elektronika.lt - elektronikos, informacinių ir
ryšių technologijų portalas

Adresas: http://www.elektronika.lt
El. paštas: info@elektronika.lt
 Atspausdinta iš: http://www.elektronika.lt/schemos/mikrovaldikliai/28441/kalbantis-robotas/spausdinti/

Kalbantis robotas

Publikuota: 2011-03-26 18:00
Tematika: Mikrovaldikliai
Tipas: Sudėtinga
Autorius: el. paštas Arnoldas Černiakovas

Norėčiau pasidalinti su Jumis kalbančio roboto schema ir išeities kodu. Roboto širdis – ATMEGA32 procesorius. Tai jau gana senas procesorius, tačiau jis man patinka, nes turi DIP korpusą, tad su plokšte mėgėjui problemų nėra.


Norėčiau pasidalinti su Jumis kalbančio roboto schema ir išeities kodu. Roboto širdis – ATMEGA32 procesorius. Tai jau gana senas procesorius, tačiau jis man patinka, nes turi DIP korpusą, tad su plokšte mėgėjui problemų nėra.

Schemoj yra „Proteus“ modeliai.

Tai jau praktiškai išbaigta ir realiai veikianti schema, tik lieka kiekvienam parašyti roboto elgesio modelį. Mano modeliai lieka man... Pvz., kliūčių apėjimas ir „klaidžiojimas“ – tai bus paprasta; pabėgimas (na, kad jis nuo Jūsų bėgtų) – sudėtingiau; „neuroninis“ ar „genetinis“ algoritmai elgesiui priduoda visiškai naujas savybes. Pats nežinai, kaip jis pasielgs konkrečiu momentu, o tai jau sudėtingiau, bet labai įdomu...

Kalbantis robotas

Pirmi 4 ADC įėjimai – tai infraraudonųjų spindulių daviklių, 5 ADC – apkrovos, 6 ADC – baterijos įtampa. Klaviatūra aprašyta jau ankstesniam straipsnyje. Skystųjų kristalu ekranas yra standartinis „Hitachi 1x16“. 4 mechaniniai davikliai („buferis“) ir 2 žingsniniai varikliai. Ir įdomiausia – dalis „foneminis“ žmogaus balso sintezatorius. Na, veikia nelabai gerai, bet tai tik 1,5 KB dydžio ir PWM, tad nereikia norėt. O jei „pažaisite“ su užlaikymais ar laikmačiais pačioj C++ programoj, gausit labai gerų rezultatų.

Infraraudonųjų spindulių davikliai: Priekis: kairė-dešinė, galas: kairė-dešinė, kadangi jau pradėjo trukti valdiklio išvadų. Šviesos diodų išėjimai multipleksuojami kartu su 1-uoju žingsniniu varikliu, o jei reikia sustojus „apžvelgti“ aplinka, tai L293 stabdomas PC6-PC7, o PD0-PD3 paduodami „1“ ir PB3 – infraraudonųjų spindulių daviklio (IR) leidimas. Tai leidžia sustabdžius, ar veikiant varikliams, „matyti“ kliūtis. Kadangi 7400 išvadai invertuoti, tai daviklio išrinkimas yra esant loginiam „0“. Nepamenu, kokius naudojau IR diodus ir fototranzistorius. Tai galingi nuotolinio valdymo IR diodai.

Kalbantis robotasKalbantis robotas

Tam, kad būtų didesnis jautrumas, galima sujungti 2 IR diodus, tik varžas reikia sumažint.

SVARBU: Diodų ir fototranzistorių bangos ilgo diapazonas turi sutapti.

Na, o priėmimo dalis atrodo taip:

Kalbantis robotas

D1 diodai – tai fotodiodai (ėmiau iš senos pelės su rutuliu), kurie kompensuoja aplinkos apšvietimą. Jie turi būti apversti į apačia, bet, kad „nematytų“ pagrindinių šviesos diodų. Tada robotas stabilesnis. Algoritmas toks: procesorius matuoja daviklio įtampą prieš įjungiant IR diodą, po to įjungiamas šviesos diodas. Reikšmių skirtumas kažkiek proporcingas atstumui. Suprantama, kad tiesinių charakteristikų priklausomybės nebus esant skirtingam aplinkos apšvietimui, bet programiškai suveikimo „slenkstis“ derinamas. Gudru būtų parašyti autokalibravimą. AŠ neturėjau tam laiko.

Variklio apkrovas matuoju paprastai. Pas mane L293E. Ji neturi apsaugos diodų išėjime, bet turi srovės matavimo išvadus, o jei naudosime L293D, tai ji turi apsauginius diodus. Bendru atveju, tai matavimo schema būtų maždaug tokia:

Kalbantis robotas

Nereikia jokių operacinių. Slenkstis programinis, ir tokios paprastos schemos užtenka. Mintis tokia: jei IR nesudirbs, sudirbs „buferiai“, o jei ir tie nesudirbs, programiškai nustatom, kurio variklio apkrova ir t. t. Jei L293E, tai reiks apsaugos diodų išėjime ir ant kiekvieno „sense“ irgi dėti po 0,5 omo varžas tai tik, kad elementų skaičius didėja, o principas išlieka. Aišku, korektiškiau butų dar po atskiriamąjį diodą tarp matavimo kanalų pastatyti, po R3 R4, ar prieš juos, bet tai tik germaninį.

Baterijos įtampos matavimo schema:

Kalbantis robotas

Klaviatūros darbas aprašytas ankstesniame straipsnyje.

Garsiakalbis jungiasi prie PC5, aišku ne tiesiai, o po „rakto“. Schemą rasite straipsnyje „Interaktyvus skambutis“.

Programuojamas per USB. Aišku pradinį „bootloader“ reikia įrašyti su paprastu programatorium. Fuses reikšmes ir tvarkykles paieškokit internete pas Igor Češko AVR309, Tiksliai jau nepamenu.

Jei kas neveiks rašykit. „Bootloaderis“ jau senai įrašytas ir pamirštas dalykas... Su displėjum nesipjauna. Čia programavimo režimas yra kai mygtukas (su fiksacija) įspaustas + „Resetas“.

Kalbantis robotas

Tiesa, aš naudojau keistą ekraniuką, kurį išsilupau iš kažkokio seno fakso, tai ten reiks nedaug taisyti programoj, kad standartinis „hd44780“ 1x16 rašytų gerai.

Taip, čia tik roboto griaučiai, bet tai yra visas pagrindas savo robotui padaryti. O elgesį galėsit suprogramuoti kokį norit. Savo algoritmų neduosiu, gal teks dar susirungti varžybose.

Rašykit ar keikit: аrnoldasc@yahoo.com.

‡ 1999–2024 © Elektronika.lt LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!