Fórum témák
» Több friss téma |
Cikkek » WILL-I V2.0 (Robotika és AVR kezdőknek) WILL-I V2.0 (Robotika és AVR kezdőknek)
Szerző: Fizikus, idő: Feb 5, 2010, Olvasva: 40000, Oldal olvasási idő: kb. 4 perc
RoboMoly (robotlepke)Miután most már tudjuk, hogy hogyan használjuk az ADC-t, és hogyan kössük a fotoellenállást a mikrovezérlőre, nekiállhatunk egy robotlepke (fénykövető robot) építésének, ami mindíg a fényforrás felé akar menni. WILL-I egy aprócska robot, eléggé nehezen lehetett minden alkatrészt belezsúfolni a szűkös hely miatt. Minden programmódosításnál szét kellett szedni, hogy a vezérlőpanelhez hozzá lehessen férni a programozó kábellel, ezért kicsit karcsúsítottam a robotvezérlő és a motorvezérlő paneleken, így ezek a kisebb méretek miatt már jobban el fognak férni WILL-I-ben. Az alábbi képen jól látható a régi és az új panelek közötti méretbeli különbség.
Ha már úgyis az elektronikus panelekről van most szó, gyorsan kitérnék egy apróságra, ami az előző cikkemből kimaradt, de a kezdőknek hasznos lehet ha megemlítem. A fenti ábra a régi vezérlőpanelt mutatja. Látható, hogy minden csatlakozó 3 érintkezős (kivéve persze az UART, ISP, Motorvezérlő stb.. csatlakozókat). Minden egyes I/O lábhoz menő csatlakozó mellé közvetlenül a +5V is és a föld (GND) is oda van vezetve. Ezzel egy univerzális 3 érintkezős csatlakozót alakítottam ki, amelyre minden kapcsolót, LED-et, érzékelőt és szervót könnyen rá tudok csatlakoztatni (csak rá kell dugni és kész). Az ábráról az is látható, hogy minden csatlakozónál az 5V van középen, a GND az AVR-től távolabbi szélen, az I/O lábak pedig az AVR-hez közelebbi szélen. Ez azért van, mert ha pl. az 5V és a GND a csatlakozó két szélén lenne, és véletlenül valaki (velem pl. rendszeresen előfordul) fordítva dugná rá a szervó / érzérelő / LED stb... csatlakozóját a panelre, akkor a fordított polaritás tönkre is teheti a szervót, érzékelőt stb... Mielőtt beszereltem volna az új paneleket, gyorsan összedobtam egy, az előző cikkben már felvázolt egyszerű robotalvázat, amire már kényelmesen fel lehet rakni minden szükséges elemet. A fejlesztés is sokkal gyorsabb és egyszerűbb így, mert a vezérlőpanelek minden érintkezője könnyen hozzáférhető. A különböző érzékelők és a programozókábel is minden nehézség nélkül csatlakoztatható.
Az előző oldalon lévő ábrának megfelelően rákötöttem a fotoellenállást a 0-ás és 1-es ADC lábra (PC0 és PC1 AVR láb), a PD2-es lábra pedig egy nyomógombot. Összekötöttem a motorvezérlő és a robotvezérlő panelek érintkezőit és rákötöttem az elemeket is a panelekre az előző cikkben leírt módon (LINK). Ezzel kész is egy új robot! Már csak a vezérlő programját kell elkészíteni! Ezt a robotot én RoboMoly-nak kereszteltem el, mivel két fotoellenállás az érzékelője és fénykövetésre fogom beprogramozni. (Remélem senki figyelmét sem kerüli el a tápegységek rögzítésénél használt csúcstechnológiás megoldás) A fénykövető algoritmus elég egyszerű, az alábbi folyamatábráról könnyen megérthető:
Bekapcsolás után RoboMoly gombnyomásra vár (PD2 lábra kötött gomb), majd elindul előre. Az ADC-vel beolvassuk először a jobb, majd a bal oldali LDR érzékelővel mért fényerősséget (a fényerősséggel arányos feszültséget). Ha a fényforrás balra van (a bal oldali szenzor által mért fényerősség a nagyobb), és a 2 érzékelő közötti különbség nagyobb az általnuk megadott határértéknél, akkor a robot balra fordul a fényforrás felé. Ha jobbra van a fényforrás (a jobb oldali szenzor által mért fényerősség a nagyobb), és a 2 érzékelő közötti különbség nagyobb az általnuk megadott határértéknél, akkor a robot jobbra fordul. Ha a két detektor jelei közötti különbség kisebb mint a határérték (a fényforrás a robot előtt van), akkor a robot előre megy. A határérték, a késleltetés és R értékének változtatásával lehet a robotot finomhangolni.
Én RoboMolyt úgy állítottam be (kisfiaim legnagyobb örömére), hogy a félig sötét szobában a zseblámpával a padlóra vetített fénykört kövesse. (Ahhoz hogy az alábbi kód működjön, kell az előző cikkben leírt motor.h kód is! (LINK))
A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |