Table of contents
Digitalna laž Što je to Ciklusi Radni ciklusi Izračun postotka radnog ciklusa Izračun izlaznog napona PWM na Arduino pločama Veze KodDigitalna laž
Pri radu s digitalnim signalima postoje samo dva stanja u kojima taj signal može biti: uključen ili isključen. Na primjer, s digitalnim signalom možemo upaliti LED diodu ili je ugasiti, nema između.
Međutim, što ako želimo da se LED dioda postepeno pojavljuje i gasi ili ako želimo promijeniti brzinu motora? Odgovor je prilično jednostavan: potreban nam je analogni signal. Međutim, prilično je složeno (i skupo) imati digitalno-analogni pretvarač, posebno na mikrokontroleru, pa analogni signal mora biti „lažan”. Tu nam pulsno-širinska modulacija (eng. Pulse-Width Modulation) postaje korisna!
Što je to
Pulsno-širinska modulacija (skraćeno PWM) je tehnika brze promjene stanja digitalnog signala tako da što više nalikuje analognom signalu.
Donja slika prikazuje kako konzistentan i brz puls može dati gotovo beskonačan broj vrijednosti između HIGH i LOW stanja:
Postoji nekoliko pojmova važnih za razumijevanje PWM-a, a to su: ciklusi i radni ciklusi.
Ciklusi
Ciklus definira jedno ponavljanje uključenog i isključenog stanja; impuls se ne može dogoditi više od jednom u nekom ciklusu. Period je vrijeme trajanja jednog ciklusa. Frekvencija ciklusa može se izmjeriti dijeljenjem broja 1 s vrijednošću perioda.
Amplituda definira razliku između maksimalnog napona i minimalnog napona koji PWM signal može generirati.
Radni ciklusi
PWM ima vrlo važan koncept koji joj omogućuje način na koji funkcionira, a naziva se radni ciklus. On predstavlja količinu vremena u kojoj je signal HIGH tijekom određenog perioda (vrijeme „uključeno”). Slično tome, količina vremena u kojoj je signal LOW naziva se vrijeme „isključeno”. Radni ciklus se mjeri u postocima. Kada je digitalni signal uključen pola vremena, a isključen drugu polovicu, rekli bismo da ima radni ciklus od 50%. Periodi uključenja i isključenja bili bi identične duljine, pa bi izgledalo kao idealan pravokutni val. Ako je radni ciklus, recimo, 75%, digitalni signal će biti visok dulje. Ako je 25%, bio bi visok puno kraće. Grafički prikaz ovih situacija možete vidjeti na donjoj ilustraciji.
Još jedna stvar koju treba imati na umu je da promjena frekvencije ciklusa ne mijenja radni ciklus. Recimo da imamo dva radna ciklusa od 50%, jedan na frekvenciji od 10 kHz, a drugi na 1000 kHz. Primijetit ćete da onaj na višoj frekvenciji izgleda manji. Međutim, ako biste pažljivo pogledali oba ciklusa, vidjeli biste da oba imaju podjednako visok i nizak signal. Signali su HIGH polovicu vremena, a LOW drugu polovicu. Dakle, iako radni ciklusi izgledaju drugačije, oni su i dalje jednaki.
Izračun postotka radnog ciklusa
Poznavanje postotka radnog ciklusa je neophodno pri radu s PWM-om, ali kako ga možemo saznati? Da biste ga izračunali, prvo morate znati koliko je dug vaš period. Radi jednostavnijih izračuna, u našem primjeru smo za period koristili 10 ms. Sljedeće što trebate znati je vrijeme „uključeno” ili „isključeno”. U našem primjeru, vrijeme „uključeno” smo postavili na 6 ms, što znači da je vrijeme „isključeno” 4 ms.
Da biste dobili postotak radnog ciklusa, samo trebate podijeliti vrijeme „uključeno” s periodom. U našem slučaju bismo podijelili 6 (vrijeme „uključeno”) s 10 (period) i dobili 0,6 kao rezultat. Sada to samo trebamo pomnožiti sa 100 da bismo dobili rezultat od 60%. Dakle, naš radni ciklus je 60%, što znači da je naš signal HIGH 60% vremena.
Također možete pomnožiti vrijeme „uključeno” sa 100 prije nego što ga podijelite s periodom. To štedi vrijeme pri izračunu i čini sve čitljivijim. Formula u našem slučaju bi tada bila: x = (6 * 100) / 10 = 60%.
Izračun izlaznog napona
Izlazni napon PWM-a ovisi o tome koliko je dugo signal bio postavljen na visoki napon u ciklusu, tj. o njegovom radnom ciklusu. Slika ispod prikazuje signal koji oscilira između 0 V i 5 V. Radni ciklus je 60%, što znači da je signal postavljen na visoki napon 60% vremena. Moramo imati ove dvije vrijednosti za izračun izlaznog napona. Da bismo pronašli njegovu vrijednost, jednostavno pomnožimo maksimalni napon s radnim ciklusom. To bi bilo 5 * 60%, što bi rezultiralo 3 V.
PWM na Arduino pločama
Na većini Arduino ploča moguće je koristiti PWM putem ugrađene funkcije analogWrite. Funkcija uzima pin i vrijednost radnog ciklusa, u rasponu od 0 (0%) do 255 (100%), kao parametre za stvaranje PWM signala.
Napomena: nisu svi pinovi sposobni za PWM signal. Provjerite raspored pinova na ploči prije spajanja. Obično su označeni znakom tilde (~) ili apostrofom (').
Veze
Izradimo mali Arduino projekt kako bismo bolje razumjeli što PWM radi. Spojit ćemo LED diodu na Arduino ploču i postupno mijenjati svjetlinu pomoću PWM tehnike. Za ovaj projekt trebat će vam:
- Arduino ploča (koristimo Soldered NULA Mini)
- Generična LED dioda
- Otpornik od 220 oma
- Eksperimentalna pločica
- Jumper žice
Kod
#define LED_PIN 19 // Pin na koji je spojena LED dioda
void setup()
{
// U setup() funkciji nije potrebno nista
}
void loop()
{
// Od 0% do 100% radnog ciklusa
for (int i = 0; i < 255; i++)
{
analogWrite(LED_PIN, i);
delay(30); // Mali delay od 30 ms
}
// Obrnuto, da se LED ponovno zatamni
for (int i = 255; i > 0; i--)
{
analogWrite(LED_PIN, i);
delay(30); // Mali delay od 30 ms
}
}
Ako sve prođe u redu, trebali biste moći vidjeti kako vaša LED dioda mijenja svjetlinu konstantnom brzinom!
Potpuni kod primjera dostupan je na GitHubu: https://github.com/SolderedElectronics/PWM-LED-Fade-Example