Picaxe III – příklady zapojení

logo procesory Dalším dílem série o programovaní PICAXE bych rád navázal na dosavadní články. Tato část předpokládá zvládnutí základů zapojení, včetně navázání komunikace s mikročipem viz kapitola II. Obvody které uvidíte níže nejsou nijak složité. Jsou to poměrně oblíbené schémata mezi amatérskou veřejností, člověk se na nich naučí programovat mikročip, zároveň je to zábava za pár korun. Uvedené příklady prosím berte jako příklady zapojení. Není to žádné dogma programování, jde tu spíš o ukázku funkce. Také doporučuju si s programy trochu pohrát, zkusit měnit hodnoty, popřípadě si kód doplnit. Ve spodní části článku jsou uvedené vysvětlivky, které se můžou hodit. Pokud tedy máte programátor a zvládnete rozblikat ledku, vrhneme se rovnou na věc.

21.3.2013 00:00 | Martin Juráš | přečteno 17190×

Posuvný bod

Jedno ze zábavných digitálních zapojení pro amatéry je posuvný bod. Je to zapojení několika led-diod k mikročipu a naprogramování nějaké výstupní sekvence blikání diod. Zpravidla se použije nějaká jednoduchá programová smyčka, která se většinou opakuje pořád dokola. Je jedno, jestli se budete držet přesně zdrojového kódu, můžete si vymyslet klidně vlastní sekvenci, meze se nekladou. Mějte prosím na paměti, že mikrochip má omezený celkový výstupní proud* tzn že v momentě, kdy rozsvítíte všechny led-diody může dojít k poškození chipu. Je jedno, jestli se jedná o proud, který teče ven z chipu a nebo dovnitř. Pro chip picaxe-18X platí údaje viz. vysvětlivky.

Zdrojový kód

main:

for b1 = 0 to 5

high b1
pause 250
low b1

next b1

for b1 = 5 to 1 STEP -1 ;smycka pro sekvenci ledek
;posuv zpet od 5ti k nule

high b1
pause 250
low b1

next b1

goto main

Tělo programu začíná návěstím main: . Na posledním řádku je příkaz nepodmíněného skoku goto na návěstí main a tím se bude program opakovat pořád dokola. Celý efekt programu tvoří dvě obyčjné smyčky for - next, které budou posouvat světelný bod z jednoho konce na druhý a pak zase zpět. Příkazy high a low jsou určené pro výstupní piny O0 až O7 (output 0-7 viz obr.). Jako argument zde máme proměnnou b1, která určuje dobu svitu pro diodu, konkrétně 250 milisekund*.

Změna jasu diody

Docela pěkné zapojení získáme, když napíšeme program pro změnu jasu led-diody. Využíváme tady tzv. PWM* modulaci. Na výstupním pinu se nám při nějaké frekvenci střídá logická 1 a logická 0 při určitém poměru. Čím je poměr log 1 větší k log 0, tím je jas diody jasnější. Jelikož je dioda přepínaná při velké frekvenci, lidské oko nic nepozná. Změnu této střídy budeme subjektivně vnímat jako změnu jasu. Všiměte si, že je led-dioda zapojená přes bipolární tranzistor. Dioda potřebuje pro svoji funkci poměrně vysoký proud, který nemůže výstupní pin dodat. Kdyby jsme připojili led-diodu k chipu napřímo, mohli by jsme ho poškodit.

Zdrojový kód

main:

for b1 = 0 to 50

pwmout 3,50,b1
pause 20

next b1

goto main

Program začíná návěstím main a na posledním řádku se zacyklí. Smyčku for – next znáte z předešlého příkladu, stejně tak příkaz pause, kdy se procesor zacyklí na 20 milisekund. Příkaz pwmout slouží pro výstupní pin, na kterém vznikne PWM signál. První parametr příkazu nám slouží pro udání pinu (v našem případě pin 3), druhý parametr slouží pro nastavení délky periody modulace (v rozmezí 0-255). Na třetím místě je proměnná b1, jedná se o plnění pwm modulace, která udává, jak dlouhý bude stav výtupu v nulové úrovni (od 0 – 1023). Tady doporučuju si s programem pohrát a zaexperimentovat s hodnotama. Pokud máte vysokosvítivou ledku, vznikne celkem pěkný efekt. Podobné prográmky se používají např. v reklamních tabulích apod.

Ovládání servomotoru

Dnešním předposledním zapojením je ovládání servomotoru. Picaxe je chip určený mimo jiné k programování amatérských robotů a proto bude dobré zmínit, jak se dá v tomto případě využít. Servomotor je speciální druh motoru, který se používá například v modelářství (ovládání klapek letadla, řízení modelů aut) Má rozsah pohybu většinou 180 až 210 stupňů a jeho poloha se ovládá pomocí digitálního signálu, který náš chip umí vygenerovat. Podobnými příkazy, které nám výrobci předprogramovali máme ušetřenou práci a ve skutečnosti ani nemusíme vůbec znát logiku ovládání servomotoru.

Zdrojový kód:

main:

servo 0,75
pause 2000
servo 0,150
pause 2000
servo 0,225
pause 2000

goto main

Ke zdrojovému kódu: příkaz servo má dva parametry, první jak jistě tušíte určuje výstupní pin, na kterém je motor motor připojený, druhý parametr je v rozsahu čísel čísel od 75 do 225, který udává jeho polohu v celém rozsahu chodu. v celém rozsahu chodu.

Ovládání servomotoru pomocí potenciometru

Nic nám nebrání ovládat servomotor na základě vyhodnocení nějakých vstupních veličin. Náš chip má poměrně užitečný A/D* převodník, takže ho použijeme pro ovládání servomotoru. Schéma je stejné jako předchozí, navíc je rozšířené o potenciometr. Ten bude připojený na vstupní pin chipu, kdy se na něm bude snímat napětí, to se převede na číselnou hodnotu za pomocí A/D A/D převodníku a ta bude sloužit pro nastavení polohy serva. Celý proces bude ve smyčce, pootočení hřídelky potenciometru tak bude mít přímou odezvu na nastavení polohy servomotoru. Podobně se ovládají napříkad klapky letadel RC modelů, nebo různé auta na dálkové ovládání atd.

Zdrojový kód

main:

readadc 0,b1

b1 = b1 * 10 / 17
b1 = b1 + 75

servo 0,b1

goto main

Prvním parametrem příkazu readadc je vstup, na kterém se budou načítat analogové hodnoty. Druhý parametr slouží k zadání proměnné pro ukládání hodnot. Všiměte si ještě řádků, kde se počítá proměnná b1. Jde tady hlavně o to, abychom se dostali do rozmezí od hodnoty 75 do 225, pro příkaz servo.

Vysvětlivky:

Výstupní proud: musíme mít na paměti, že mikročip není žádná výkonová součástka a slouží jenom k řízení obvodu. Toť jeho funkce. Je to vlastně mozek, který je schopný rozhodovat se nezávisle na okolí. Tato mikroelektronika je schopná dodat výstupní proud v řádech miliamper. Pokud tuto hladinu překročíme, dojde ke zničení obvodu. Pro picaxe 18x (pic 16f88) platí:

Celkový výstupní proud chipu : 200mA
Maximální proud skrze port : 100mA
Maximální proud skrze pin : 25mA

PWM: z anglického pulse-width modulation neboli pulzně šířková modulace je typ binárního signálu, který slouží většinou pro ovládání nějakého zařízení. Jedná se o pravidelné střídání logické 0 a 1 při vysoké frekvenci a mění se zde poměr pulzu vysoké úrovně k nízké.

Milisekunda: milisekunda je tisícina sekundy, v elektrotechnických výpočtech poměrně častá jednotka. Jedná se o 0.001 (10-3s).

A/D převodník: je to převodník z analogových veličin na hodnoty digitální. Takovým příkladem je třeba vstup pro mikrofon na zvukové kartě, kdy se analogový signál z mikrofonu mění na číslicový pro následné zpracování počítačem.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=1971