8. Analóg jel előállítása és az arduino - Arduino és programozása

Keresés a weboldalon

Programozási alapismeretek
Tartalomhoz ugrás

Főmenü:

8. Analóg jel előállítása és az arduino

Haladás
Milyen az Arduino analóg jele?
A mikróvezérlők digitális felépítésűek és működésüek. Mint már az "Analóg jel beolvasása" c. fejezetben is olvasható volt, az analóg jel beolvasásához egy speciális átalakító eszközre, un. analóg-digitális átalakító áramkörre (ADC) van szükség. Egy ilyen 10 bites ADC, be van építve az arduinoba. Ez teszi lehetővé az analóg jelek közvetlen beolvasását.
Analóg jel -digitális jelekből történő- előállításához éppen egy fordított funkciójú, un. digitális-analóg átalakító áramkörre (DAC) van szükség. Létezik olyan arduino család (zero, due, nano IoT...stb.), ami tartalmaz DAC-t, de az Arduino Megában ilyen nem található! Létezik viszont a portkezelő utasítások között analógWrite (pin, value), típusú utasítás, ami analóg jel generálására utal. Akkor ez a Megánál nem használható? ...de használható, csak éppen nem valódi analóg jelet állít elő a Mega, hanem "kvázi" analóg jelet! A "kvázi" analóg jel, valójában digitális impulzus, melynek impulzuszélessége változtatható (pulzusszélesség moduláció=PWM)!!!  Mint az ábrán is látható, a szabályozásnál nem az aplitudó változik, hanem az impulzus effektív értéke (a jel által kitöltött terület). A jelenség nem ismeretlen az elektronikában, ott is használatos fázishasítás néven az effektív érték szabályozás, ami alapján működnek fényerő- vagy motor fordulatszám szabályzó áramkörök.
Erre már képes a mikrovezérlő, ráadásul digitális porton keresztül. A Megánál 16 digitális port található (D0-13, D44-46), mely képes PWM vezérlésre. Az impulzusszélesség tartománya (value) 0-255 között lehetséges.  Mivel a Mega tápfeszültsége 5 V, 50%-s impulzusszélesség (127) esetén a jel effektív értéke 2,5 V, 25%-nál(63) 1,25V, 75%-nál 190) 3,75 V.  

Analóg írás utasítása
analógWrite (pin, value); ahol a pin a PWM képes digitális port, a value pedig 0-255 közötti érték, értelemszerűen 0=0%, 255=100%!

A fejlesztőpanelon nem került LED PWM képes portra, így csak a dugdusós panelon lehetne összeállítani egy vezérlést, és csak olyan panelon, mely tartalmaz potmétert. Az egyserűsítés érdekében felhasználhatjuk a Mega panel ellenörző LED-jét, mely a PWM képess 13-s porthoz kapcsolódik.  

Nézzük akkor a példa megoldását.

void setup() {
pinMode(13, OUTPUT); // port 13 kimenet
pinMode (A0, INPUT);// nem kötelező
}
void loop() {
int U= analogRead(A0)/4; /*helyi változó deklarálás és értékadás az A0-ról beolvasott (0-1023) érték negyede, mert a PWM szélesség 0-255 között lehet*/
analogWrite(13, U);// 13-s LED működtetése 0-100% (0-255) között
}

Megjegyzés: ezzel a módszerrel a LED-n kívül, DC motor fordulatszámát is szabályozhatjunk, de nem direktben, csak meghajtón keresztül!!!
Vissza a tartalomhoz | Vissza a főmenühöz