Blikáme LEDkou
první praktické seznámení s jednočipem a elektronikou
Správný robot potřebuje mozek, nějaké senzory a nějaké efektory. Nemusí být ale nijak složitý. Základem může být jednoduchý levný jednočip, senzorem spínač a efektorem třeba LEDka. Takového robota si zvládne postavit každý s trochou času a trpělivosti, ale přitom základní principy, které si při jeho stavbě vysvětlíme, zůstávají stejné i u robotů podstatně složitějších. Naším cílem pro tuto kapitolu je „ošahat” si nějaký jednoduchý hardware a zbavit se „strachu z neznáma”. Odměnou Vám bude blikající LEDka řízená jednočipem.
Na první seznamovací robotický experiment budeme potřebovat zejména jednočip. Z
minula víme, že jednočipem (nebo také mikrokontrolerem) nazýváme relativně malý
integrovaný obvod, který v sobě ukrývá jednoduchý počítač. Jednočip má několik
nožiček (už víme, že se jim správně říká piny), které jsou typicky sloučené
do skupin po osmi, kterým se říká porty. Programem pak můžeme měnit napětí
na jednotlivých výstupních pinech a nebo naopak napětí s různou přesností měřit
(u pinů vstupních). V nejjednodušším případě jsme schopni rozlišit pouze
high od low a tedy logickou 1 od logické 0.
Jak to funguje v praxi si ukážeme na zapojení LEDky, kterou se budeme snažit
rozblikat. LEDka bude připojena na výstupní pin, který budeme střídavě
nastavovat na high a low.
Zde je soupis potřebných součástek:
- 3ks – odpor 330 Ω
- 1ks – odpor 100 Ω
- 1ks – odpor 470 Ω
- Konektor na paralelní port (CAN25V)
- Kabel 5 žil
- piny (koncovky na zpevnění), případně i konektor (1x5)
- jednočip ATmega8-16PI (nebo ATmega8L-8PI či PU), DIL balení (cca. 70Kč)
- nepájivé pole, stačí i to nejmenší, co mají (cca. 250Kč)
- zvonkový drát, asi 1m
- regulátor/stabilizátor 5V, např. 7805
- kondenzátory pro stabilizátor (0.33uF a 0.1uF)
- LEDka (nějaká levná)
- tlačítko
Většina součástek je k dispozici například v GM
Elecronics (snad až na zvonkový drát, pro který budete muset zajít do nějaké
obyčejné elektry). Určitě také pomůže, když budete mít po ruce voltmetr.
Čip ATmega8 je
obvykle k dispozici ve dvou variantách. Varianta ATmega8L má širší rozsah
napájení (funguje už od 2.7V), ale má nižší maximální frekvenci (8MHz proti
16MHz). My ovšem budeme pro taktování čipu používat jeho interní oscilátor,
který mají oba stejný (1,2,4 a 8MHz). Po zakoupení je čip nakonfigurován tak,
že pracuje s interním oscilátorem na 1MHz a potřebuje pouze minimum dalších
součástek pro svoji funkci. Písmeno U v názvu čipu (ATmega8-PU) značí
bezolovnatou (ekologickou) variantu.
Dále určitě chtějte DIL (Dual In-Line) package, protože to je ten jediný, který
jde zasunout do nepájivého kontaktního pole. Občas můžete dostat také DIP
(Dual Inline Package) nebo PDIP (Plastic Dual Inline Package) a ty jsou také v
pořádku (na pohled vypadají stejně). Nepájivé kontaktní pole budeme používat,
protože nám umožní snadné a rychlé experimentování bez nutnosti pájení
součástek či výroby vlastních tištěných spojů.
Krok 1: Stabilizované napájení
Většina jednočipů ke své funkci potřebuje stabilizované napájení 5V. To
nejsnáze zajistíme kombinací regulátoru
7805
a nějakého zdroje, co najdeme doma
(např. 8-12V z autodráhy, či vláčku). Jediným požadavkem je napětí přes 7V.
Na straně 4 v datasheetu je doporučené zapojení (obrázek č.3), které spočívá
v doplnění dvou kondenzátorů (0.33uF na vstupu a 0.1uF na výstupu).
Stabilizátor si umístěte do nepájivého pole včetně obou blokovacích
kondenzátorů a výstupních +5V si připojte na červenou sběrnici uprostřed
pole. Modrá sběrnice by měla být připojena na zem z externího zdroje. Kdykoliv
budete potřebovat někde v obvodu zem nebo +5V, připojte je na tyto sběrnice.
Krok 2: Rozsviťte si LEDku jen tak
Vůbec není na škodu nejprve si zkusit rozsvítit LEDku jen tak bez čipu. Ověříme
si tím funkčnost zdroje i správné zapojení LEDky. Termín „dioda” v názvu
LEDky se nám snaží říci, že v zapojení záleží na její polaritě (delší nožička
by měla být plus). Mimo toho má každá definovaný úbytek napětí i maximální
proud. Pokud chceme připojit LEDku k vyššímu napětí, měli bychom si z těchto
údajů spočítat velikost odporu, který zapojíme s LEDkou do série tak, aby
součet úbytků napětí na LEDce a odporu dával naše napájecí napětí (v našem
případě 5V). Pokud se Vám do toho ještě nechce , stačí zvolit hodnotu odporu
dostatečně vysokou (LEDka bude pouze méně svítit). Pro ty nejlevnější LEDky
se hodnota odporu pohybuje někde okolo 470Ω.
Krok 3: Nainstalujte si vývojové prostředí
Čip budeme programovat v jazyce C na osobním počítači. Pro zkompilování
zdrojového kódu do binární podoby potřebujeme kompilátor. Pro následné nahrání
binárního kódu do čipu zase tzv. „programátor”.
Debian Linux
Uživatelé Debianu mají situaci velmi jednoduchou, protože potřebné balíčky
mají k dispozici jako součást distribuce. Pro instalaci stačí jeden příkaz:
apt-get install gcc-avr avr-libc avrdude
Tímto nainstalujeme kompilátor gcc, knihovnu avr-libc a programátor
avrdude. Pokud si budete chtít hrát i se simulátorem a debuggerem, můžete
nainstalovat ještě simulavr a gdb-avr.
Windows
Uživatelé Windows naleznou potřebné balíčky na stránkách
http://winavr.sourceforge.net/. Instalační balík má kolem 14MB a
nainstaluje kompilátor gcc, knihovnu avr-libc, programátor avrdude a spoustu
dalších věcí.
Po nainstalování vývojového prostředí byste měli být schopni zkompilovat
přiložený program blink.c pomocí tohoto Makefile prostým zavoláním
make. Program make slouží ke
kompilaci zdrojových kódů programů do binární podoby. V souboru Makefile
jsou uloženy příkazy, jak toho dosáhnout. Pro zkompilování našeho programu
je třeba uložit soubory blink.c a Makefile společně do jinak prázdného
adresáře, pustit si „command prompt” (například Start->Run a napsat cmd),
přepnout se do adresáře, kam jste uložili zmiňované soubory (pomocí cd
cela_cesta_k_adresari) a zavolat make.
Krok 4: Postavte si programovací kabel
schéma zapojení |
Krok 5: Nahrajte program do čipu
Čip umístíme do nepájivého pole a připojíme napájení - tj. piny čipu označené
jako GND a Vcc propojíme s napájecí sběrnicí (GND na modrou, Vcc na červenou).
Pak do nepájivého pole umístíme programovací kabel. Piny čipu označené jako
MISO, SCK, MOSI a RESET připojíme ke stejně označeným pinům programovacího
kabelu. Pin na programovacím kabelu označený jako GND připojíme na napájecí
sběrnici (modrá). Tím je propojení dokončeno.
Příkaz make load zkompiluje program a pokusí se ho nahrát do čipu. Pokud
máme vše správně zapojené, je program nahrán do flash paměti procesoru, kde
zůstane, dokud ho zase nepřeprogramujeme. Po naprogramování čipu tedy můžeme
programovací kabel opět odpojit odpojit.
Pokud pracujete pod Windows a programování se nezdaří s chybou jako avrdude:
can't open device "giveio" nebo avrdude: failed to open parallel port
"lpt1", je třeba nainstalovat ovladač giveio, který programu avrdude
umožní přístup k paralelnímu portu. Ovladač nainstalujeme spuštěním
install_giveio.bat, který se nachází v adresáři C:\WinAVR\bin\. Tuto
instalaci stačí provést jen jednou.
Krok 6: Blikáme
Jak fungují výstupní piny
Zapojení proti zemi |
LEDky (a obecně většinu efektorů) lze připojit dvěma způsoby:
Zapojení proti V+ |
Odpor v zapojení je většinou nutný, protože omezuje proud tekoucí obvodem (jeho
hodnotu můžeme vypočítat pomocí
Ohmova zákona a katalogových údajů
použité LEDky). Vyšší proud by mohl poškodit jednak LEDku, ale i vlastní čip.
Proud tekoucí jedním pinem je totiž omezen (např. na 20mA). Mimo omezení proudu
na jeden pin, má řada čipů omezení i na součet proudů na jednom portu (pozor –
typicky to není součet maximálních proudů přes všechny piny), či na součet
všech proudů vůbec. Není tedy možné přímo k čipu připojit náročnější zařízení
jak třeba elektromotor.
Připojení LEDky k čipu
ATmega8 |
Jak asi tak vypadá sestavený obvod, si můžete prohlédnout na obrázku.
Obecné zásady
Při práci s obvodem je třeba dodržovat některé základní zvyklosti, které nám
pomohou předejít určitým nepříjemnostem. S obvodem vždy manipulujeme pouze s
odpojeným napájením a programovacím kabelem. Napájení připojujeme vždy pouze a
jenom na nejkratší možnou dobu, která je nutná k ověření, zda obvod funguje či
nikoli. Programovací kabel zase jen pro přeprogramování čipu. Jinak riskujeme
poškození čipu, napájení nebo i paralelního portu.
Dokumentace, data sheets
Dokumentace k jednočipům je dostupná v angličtině a se jí říká data sheets.
Je většinou velmi podrobná (často přes 100 stránek k jednomu čipu) a obsahuje
mimo jiné i popis funkce a ovládání všech integrovaných modulů v čipu. Data
sheets jsou typicky k dispozici zdarma na internetu na webových stránkách
příslušného výrobce.
Související odkazy
- AVRbeginners.net
- Notes on LEDs
- Electrons :: Articles :: AVR
- Jednočip ATtiny2313 pod Linuxem
- Jednočipy pod Linuxem - I
- Jednočipy pod Linuxem - II
- Elektrotechnika > AVR
- Co je a jak pracuje jednochip
- Nepájivá pole v nabídce GES
Závěr
Po přečtení této kapitoly byste měli být schopni zkompilovat s využitím
Makefile program blink.c, nahrát jej do mikrokontroléru ATmega8
(příkazem make install) a podle schématu připojit LEDku, která by měla
vesele blikat .
Pokud se Vám něco z toho nepodařilo nebo Vám některá část přišla méně
srozumitelná, můžete se nám ozvat pomocí našeho
kontaktního formuláře.