esp8266/arduino PWM example

Широтно-імпульсна модуляція (ШІМ — англ. pulse-width modulation, PWM), або модуляція за тривалістю імпульсів (англ. pulse-duration modulation, PDM) — процес керування шириною (тривалістю) високочастотних імпульсів за законом, який задає низькочастотний сигнал.
Перемикання відбувається з великою швидкістю, відповідно до типу навантаження, з таким розрахунком, щоб період модульованого сигналу був істотно меншим, ніж інерційність системи, до якої подається сигнал. Частота перемикання може становити декілька разів на хвилину для повільних процесів (наприклад електропечі); 100 Гц для електролампи розжарювання; від декількох до десятків кГц для електродвигуна або від десятків до сотень кГц для аудіопідсилювача і комп’ютерного блоку живлення.

Code example / Приклад коду

#include
#define ledPin D1 // цифровий вихід яким керуємо [0-1023]

void setup() {
 Serial.begin(9600);
 pinMode(ledPin, OUTPUT);
 Serial.println("Off");
 digitalWrite(ledPin, LOW );
 delay(2000);

 Serial.println("10% Duty Cycle");
 analogWrite(ledPin,102);
 delay(2000);

 Serial.println("20% Duty Cycle");
 analogWrite(ledPin,205);
 delay(2000);

 Serial.println("50% Duty Cycle");
 analogWrite(ledPin,511);
 delay(2000);

 Serial.println("70% Duty Cycle");
 analogWrite(ledPin,714);
 delay(2000);

 Serial.println("100% Duty Cycle");
 analogWrite(ledPin,1023);
 delay(2000);

 Serial.println("0->100% Duty Cycle");
 for (int i=0; i< 1024; i++) { analogWrite(ledPin, i); delay(10); } 
 Serial.println("100->0% Duty Cycle");
 for (int i=1023; i>-1 ; i--) {analogWrite(ledPin, i); delay(10); }

}

void loop() {
 Serial.println("Breathing LED");
 for (int i=200; i< 1000; i++) { analogWrite(ledPin, i); delay(1); } 
 for (int i=1000; i>200 ; i--) { analogWrite(ledPin, i); delay(4); }

}

Як це виглядає на екрані осцилографа:

Freq – частота , майже 1kHz

Dut (параметр коефіцієнту заповнення (англ. duty cycle), під яким розуміється відношення тривалості ввімкненого стану (англ. ‘on’ time) до прийнятого періоду імпульсів.
RMS (root mean square) – середньоквадратична напруга на світлодіоді


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *