fpőksaőfp

A következő címkéjű bejegyzések mutatása: analóg kimenet. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: analóg kimenet. Összes bejegyzés megjelenítése

2015. június 16., kedd

Analóg kimenet (Szervóvezérlés) /Arduino kapcsolások #5/

Analóg kimenet (Szervóvezérlés)

A hobbiszervók vezérléséhez szükséges jel, tekinthető egy speciális PWM jelnek is, ahol a jel impulzusszélessége és periódusideje a szervó adatlapjában megadott értékek köze kell hogy essen (impulzusszélesség: 1-2ms közötti érték, periódusidő: max. 20ms).
/*
* Szervo poziciojanak valtoztatasa potenciometer-rel
*/#include <Servo.h>  // szervokonyvtar


Servo mikroszervo;  // mikroszervo nevu szervo objektum
int potPin = 5;  // potenciometer A5-re kotve
int val;    // valtozo a mert ADC ertek tarolasara 


void setup()
{
mikroszervo.attach(9);  // mikroszervo Pin9-re kotve
}


void loop()
{
val = analogRead(potPin);    // ADC ertek beolvasasa
val = map(val, 0, 1023, 0, 179);  // ADC ertek atalakitasa
mikroszervo.write(val);  // szervopozicio beallitasa
delay(100);      // varakozas
}
A program elején belinkelem az Arduino szervókonyvtárat és létrehozok egy mikroszervo nevű szervóobjektumot. A mikroszervo.attach(9) utasítással hozzárendelem a szervót a 9-es lábhoz.
A kód megméri a potenciométer feszültségét, és egy ezzel arányos pozícionáló jelet ad a szervóra. Az ADC 0-1023 közé eső számot ad végeredményül, a szervópozíció beállításához viszont 0-179 közé eső szögértéket kell megadni paraméterként. A map() utasítással lehet a 0-1023 közé eső ADC eredményt 0-179 közé eső számmá alakítani. 

Analóg kimenet (PWM) /Arduino kapcsolások #4/

Analóg kimenet (PWM)


Technikai értelemben ez nem egy hagyományos analóg kimenet, mert a kimeneten nem egy 0V és 5V közé eső feszültség jelenik meg. A PWM jel (impulzus szélesség moduláció) az analóg kimeneti lábra meghatározott ideig felváltva 0V-ot és 5V-ot kapcsol. A két feszültség idejének az egymáshoz viszonyított arányát változtatva tudjuk a jel kitöltési tényezőjét változtatni, ezáltal változtatni a lábon lévő átlagfeszültség szintjét. 

Az Arduino hat digitális lába képes PWM jelet előállítani (Pin 3, 5, 6, 9, 10 és 11). Az analoWrite(PWM_Pin, szám) parancsnak egy 0-255 közé eső számot adva paraméterül könnyen változtatható a PWM jel kitöltési tényezője.

analogWrite(láb, érték);  - ha egy lábat kimenetnek állítottunk be, és a láb képes PWM-re, akkor ezzel az utasítással adhatunk rá PWM jelet. A függvénynek paraméterként egy 0 - 255 közötti értéket kell megadni a kitöltési tényező beállításához (0=0%=0V, 255=100%=5V)

Az alábbi példa a PWM használatát mutatja be:

/*
* LED fenyerejenek valtoztatasa potenciometer-rel
*/


int potPin = 5;  // potenciometer A5-re kotve
int val;    // valtozo a mert ADC ertek tarolasara  
int ledPin = 9;  // LED Pin9-re kotve


void setup() 

pinMode(ledPin, OUTPUT);  // a LED-hez tartozo lab kimenet 



void loop() 

val = analogRead(potPin);  // ADC ertek beolvasasa 
analogWrite(ledPin,val/4);  // LED-nek PWM jel
delay(100);    // varakozas 
}
A kód megméri a potenciométer feszültségét, és egy azzal arányos kitöltési tényezőjű PWM jelet ad a LED-re. Az ADC 0-1023 közé eső számot ad végeredményül, a PWM-nek az analogWrite() utasításban viszont egy 0-255 közé eső számot kell megadni paraméterként. Ezért az ADC eredményét el kell osztani 4-el, hogy 0-255 közé eső számot kapjunk. A potencimétert tekergetve a LED fényereje változtatható.