Fórum témák
» Több friss téma |
Cikkek » WILL-I - Robot, AVR mikrovezérlővel WILL-I - Robot, AVR mikrovezérlővel
Szerző: Fizikus, idő: Dec 1, 2009, Olvasva: 61068, Oldal olvasási idő: kb. 5 perc
Vezérlő elektronika megépítése (elektronika) Ahhoz, hogy programozni tudjuk a mikrovezérlőt, és robotot vezéreljünk vele, szükségünk lesz egy AVR mikrokontrollerre, amely rendelkezik a működéséhez nélkülözhetetlen alap kapcsolatokkal (bekötésekkel) mint például tápfeszültség, oszcillátor, megfelelő Reset jel, és egy ISP csatlakozó a mikrovezérlő programjának beégetéséhez. A vezérlőpanel egy ilyen alapáramkör, ami tartalmazza a mikrokontroller futásához/programozásához szükséges elemeket és a mikrokontroller I/O lábaihoz tartozó csatlakozókat is, amelyek könnyen hozzáköthetők bármilyen külső kapcsoláshoz. Úgy is vehetjük mint egy alap építőelemet. Ha már egyszer építettünk egy vezérlőpanelt és alaposan leteszteltük, hogy jól működik-e, akkor ez egy biztos alap, amire bátran lehet építkezni. Csatlakoztathatunk hozzá további specifikus paneleket (pl. motorvezerlő panel, érzékelőpanelek, stb.). Ezáltal nagymértékben csökkentjük az esetleges hibaforrások számát, és könnyebb lesz a hibakeresés is. Az alábbiakban láthatjuk az ATmega8 lábkiosztását. A legtöbb lábnak többféle funkciója is van, de csak néhányat fogok használni a robot építése során. Kezdésnek ezen funkciók megismerése is épp elég lesz (akit érdekel a többi, az megtalálhatja az Atmega8 adatlapját tanulmányozva).
A könnyebb érthetőség, és az egyes portokhoz tartozó lábak egyszerűbb azonosításának kedvéért a lábakat különböző színekkel ábrázoltam. A zöld szín jelöli a földet, a piros a stabilizált 5V-ot, sárga a PORTC, kék a PORTB, barna a PORTD lábait és lila jelöli a Reset-et. Az AVR működtetéséhez és programozásához az alábbi lábak bekötése szükséges:
Az alábbi ábrának megfelelően állítsuk össze az alapkapcsolásunkat. Figyeljük meg hogy van egy kis félkör alakú kivágás az AVR-ünk egyik oldalán. Ez mutatja nekünk, hogy melyik vége melyik, honnan kezdődik a lábak számozása. A PB6 és PB7 lábak közé kellene kötni a külső kristályt (az ábrán szürkével rajzolt rész), de egyelőre ezt a részt szabadon hagytam a vezérlőpanelen, mert az AVR belső, 1 MHz-es oszcillátorát használjuk és külső kristályra nincs most szükség, de később kellhet egy külső stabil kristályoszcillátor, ha esetleg PC-vel akarunk kommunikálni a soros porton keresztül. Az alapkapcsolást először dugaszolós próbapanelen drótoztam össze, ezt használtam a kezdeti kísérletezés során, később összeraktam egy próbanyákon is, hogy ráférjen az alvázra. Az ábrán lévő vékony vonalak a próbapanelen belül lévő elektromos kapcsolatokat ábrázolják.
Ilyen kis próbapanelen is összerakhatjuk a vezérlőpanelt, ami már ráfér a robotalvázra. A próbanyákon összerakott kapcsolás elöl és hátulnézeti rajza és képe A kapcsolásokhoz egy kis magyarázat: A próbapanelen szerepel bekötve egy LED és egy nyomógomb is, amelyek nem szerepelnek a fenti kapcsoláson, ezek az összeállított próbapanel és a mikrovezerlő teszteléséhez kellettek (LED a mikrokontroller PD0-ás lábára, a nyomógomb pedig a PD4-es lábára lett kötve). Kialakítottam egy USART csatlakozót is a soros kommunikációhoz (A7-10), ezt nem használjuk most, de később még hasznos lehet. Stabilizált 5V Az AVR-nek stabil 5V-os tápfeszültségre van szüksége. Készíthetünk egy kis tápegység áramkört egy LM7805-ös feszültségstabilizátor IC-vel és két puffer kondenzátorral. A kondenzátorok feszültségtűrése legalább a bemenő feszültség kétszerese legyen. Oszcillátor/Kristály Ez a mikrokontroller szíve, ez adja a mikrovezerlő lépeseihez a pontos ütemet, és ez határozza meg a processzor sebességét. Az AVR-ek esetében a legtöbbször igaz az 1 órajelciklus = 1 utasítás. Az ATMega8-at gyári beállításokkal fogom használni, a chipet úgy programozták, hogy a belső oszcillátora 1MHz-es órajelet adjon, ezért külső oszcillátor nincs a kapcsoláson. A RESET láb egy active-low reset, ami azt jelenti hogy akkor reseteli a mikrokontrollert ha a lábon lévő feszültség a digitális 0-val (0V, föld) egyezik meg. Ezért egy 1k Ohm-os ellenálláson keresztül +5V-ra kötjük (felhúzzuk). A nagyfrekvenciás zajok kiszűrése céljából érdemes a VCC lábhoz a lehető legközelebb a GND és VCC közé kötni egy 0,1 µF-os kondenzátort. Az elektrolitikus kondenzátorok bültetése folyamán figyeljünk oda, hogy melyik lábat kell a negatív (föld), és melyik lábat a pozitív (5V) pólusra kötni (nem mindegy!). Ezek a kondenzátorok arra kellenek, hogy kisimítsák a feszültségingadozásokat, stabilizáljak a tápfeszültséget. Egy LED-et is érdemes rárakni a panelünkre, hogy lássuk, mikor van bekapcsolva. Mindig kössünk sorba a LED-el egy ellenállást is! (Ez 220 Ohm és 1k Ohm közötti érték szokott lenni). Az ellenállás azért kell, hogy a LED-en keresztülfolyó áramot korlátozza, ellenállás nélkül könnyen kiégethetjük a LED-ünket. Arra is ügyeljünk, hogy a LED melyik lábát kell a negatív (föld), és melyik lábát a pozitív (5V) pólusra kötni (itt sem mindegy!). Az ábrákon és a képeken nem nagyon látszik, de az AREF és az AVCC lábak össze vannak kötve (a próbapanelen egy jumperrel a I28-I29, a próbanyákon pedig forrasztással a J15-J16 pontok között) ISP csatlakozó Az ATMega8 programozásához szükségünk lesz egy programozóra (égetőre). Az égetővel tudjuk beírni az AVR flash memóriájába a programunkat. Egy USB-s programozó kb. 4000 Ft körül kapható, de nyomtatóportra (LPT) csatlakoztatható STK200 programozó talalható a neten már 800Ft-ért is. A programozás hardveres részéről, a programozó bekötéséről lásd az alábbi cikket: (AVR-Doper, USB-s ISP programozó) Én egy AVRISP MKII programozót használok. A programozónak 6 kivezetése van, amelyek a következők:
A programozáshoz össze kell kötnünk az ATMega8 megfelő lábait az égetőnk csatlakozójának megfelelő kivezetésével. Észrevehetjük, hogy az AVRISP MKII égetőnek egy 6 érintkezős csatlakozója van, ami a próbapanellel nem kompatibilis, mert nem lehet egyszerűen csak rádugni. A próbapanelen ugyanis az AVR programozó lábai egymás mellett, egy sorban vannak. Ezért az alábbi ábrán látható csatlakozót készítettem el (egy szalagkábel 2 végére forrasztottam a megfelelő érintkezőket), amit már rádughatunk az AVRISP MKII csatlakozójára és a próbapanelre (H27-H35). Hasonló csatlakozót építettem amit a vezérlőpanel érintkezőtüskéire lehet ráhúzni (L14-L22).
Az AVRISP MK II égető csatlakozója és a saját készítésű kábel Vegyük észre, hogy a csatlakozón ugyan 9 tüske van, de csak 6 vezeték kapcsolódik az égetőhöz. A kábel tehát nem zavarja a PB1 és a PB2 lábakat.
A közbeiktatott égetővezeték csatlakoztatása a próbapanelen lévő ATMega8-hoz. Kapcsoló és LED csatlakoztatása a mikrokontrollerhez Amikor lenyomunk egy nyomógombot, azt akarjuk hogy a láb állapota digitális magas szintről (+5V) az alacsonyra (0V) váltson. A gombunk ekkor aktív-alacsony , azaz a digitális nullszint jelzi a gomb lenyomását. Azért, hogy egy gomb a digitális magas szintet adja amikor nyitva van, és a digitális alacsony szintet amikor csukva, a kapcsolót rendszerint egy felhúzóellenálláson keresztül csatlakoztatjuk a mikrokontrollerhez. A kapcsoló nyitott állásában a bemenet potenciálját az 1k Ohm-os ellenállás +5V-ra húzza fel (ezert is nevezik felhúzóellenállásnak). Ellenben, ha a kapcsoló zárt állásban van, az áram a legkisebb ellenállás irányába folyik, és a bemenet földelve van.
Az AVR mikrokontrollerek már tartalmaznak beépített belső felhúzóellenállásokat , ezért a bemenetnek definiált I/O lábakra nem szükséges felhúzóellenállásokat kötni. Az ábrának megfelelően csatlakoztatott LED akkor világít, ha a láb alacsony szinten van. Kössünk sorba a LED-el egy áramotkorlátozó ellenállást is! Arra is ügyeljünk, hogy a LED negatív lábat kell a mikrovezerlő kimeneti lábára kötni, a pozitív lábat pedig egy ellenállással kössük +5V-ra. A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |