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ę.
Jeśli artykuł w jakiś sposób Tobie pomógł , możesz wpierać blog, aby nowych materiałów przybywało więcej. Zapraszam TUTAJ.
This is a great blog.
hello this post so interesting