Proste generatory PWM część 1.

Czym jest PWM + mini projekt oparty o Arduino

Zacznę od problemu. Przy jednym z niedawnych projektów brakowało mi doraźnej kontroli szybkości obracania się silniczka na prąd stały, która jest realizowana właśnie przy pomocy PWM. Nie było generatora funkcyjnego pod ręką i trzeba było coś szybko zmontować.7

Czym jest PWM?

PWM (ang. pulse-width modulation) to sposób modulacji polegający na zmianie szerokości impulsu; mam tu na myśli „wycinek” czasu. Częstotliwość i amplituda podczas takiej modulacji są stałe. Najprościej omówić to na przykładzie. Mamy stałe napięcie 5 V, którym zasilamy LED – świeci, prosta sprawa (: Teraz częstotliwość – u nas będzie to 1 Hz (raz na sekundę). Następnie szerokość naszego impulsu – jednostką będzie tu wypełnienie podawane w procentach. Przyjmijmy 50% wypełnienia. W takim razie podczas okresu trwającego 1 s mamy sygnał trwający 50% tego czasu = 0,5 s, jak pokazuje  poniższy wykres.

Jeśli tak potraktujemy naszą LED, zobaczymy po prostu mruganie. Sygnał PWM działa jednak najczęściej w znacznie wyższych częstotliwościach. Dla naszego oka czy niektórych urządzeń elektrycznych granica zaciera się pomiędzy płynną regulacją (natężenia światła dla oka, napięcia między 0-5 V dla urządzeń) a bardzo szybkim mruganiem. Przy takich 400 Hz 50% wypełnienia PWM będzie wyglądało jak słabiej świecąca LED.

Spróbowałem kilku różnych rozwiązań na szybkie urządzenie generujące PWM. Dziś pierwszy mini projekt z tego co było pod ręką oparty o Arduino Nano. Dorzuciłem tylko enkoder i wyświetlacz LCD. Mam nadzieję, że filmik wyjaśni wszystko najlepiej (:

Tutaj znajdziecie kod.

Zobacz też: Repozytoria i systemy kontroli wersji

Zamieszczam także schemat.

W Arduino analogWrite() od zawsze brzmi dla mnie myląco. Większość płytek, szczególnie tych podstawowych, nie jest wyposażona w DAC i możliwość ustawienia wartości napięcia z przedziału 0-5 V. Pod tą komendą kryje się właśnie ustawienie odpowiedniej wartości PWM.

Przyjąłem w projekcie domyślne wartości częstotliwości; można je jednak zmieniać tak jak opisano tutaj.

Lub tak jak w moim przypadku, korzystając z biblioteki servo.h.

Zobacz też: Szklarnia w internecie rzeczy (IOT) część 5.

Jeśli macie jakieś pomysły na udoskonalenie lub coś jest niejasne, piszcie! Jeżeli projekt się spodobał i skorzystaliście z niego, tym bardziej dajcie znać i pochwalcie się Waszym dziełem (:

W kolejnych częściach omówię pozostałe projekty, a przy okazji szerzej omówię samą modulację.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *