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.