Bogusław Kempny

PWM, modulacja szerokości impulsów

Autor adres



Początek HC-SR04 LCD Kamera fork() sms strfry() GPIO impulsy Klawiatura Brama GPIO PWM ....










Modulacja szerokości impulsów.

Jeśli czytasz tę stronę, pewnie wiesz, co to takiego, więc tylko tak w największym skrócie. Mamy prostokątny sygnał okresowy, czyli włączony/wyłączony, z okresem na przykład 20 ms (50Hz). Jeśli czas trwania stanu "włączony" wyniesie 2 ms, energia przekazywana do odbiornika wyniesie 10% energii, jaką przekazalibyśmy gdyby sygnał był w stanie "włączony" cały czas, czyli 20 ms (no, wtedy nie byłoby sygnału prostokątnego...). Jeśli 10ms, to 50%, 18ms - 80% itp.

Wykorzystać to można do zasilania silników, regulacji jasności oświetlenia LED, regulacji prądu w spawarkach albo do sterowania trochę "mądrzejszych" urządzeń.

Raspberry umie generować sygnał PWM. W sieci pełno mądrych rad i programików na ten temat. Niestety nie udało mi się znaleźć niczego rzetelnego, postanowiłem więc sam trochę na ten temat napisać, skorygować parę krążących mitów.

Sygnał pwm generowany jest w Raspberry przez układ BCM2835 (w starszych modelach inny). Potrafi on generować tylko dwa sygnały pwm (kanały PWM0 i PWM1), mogą one być zmodulowane w różny sposób, ale oba posiadają tę samą częstotliwość zegara.

Kanał PWM0 wyprowadzony jest na GPIO12, 18, 40 i 52, PWM1 na GPIO13, 19, 41, 45 i 53 (numeracja GPIO według Broadcom, alternatywną numerację wiringPi i fizyczne numery pinów najprościej zobaczyć komendą gpio readall). BCM2835 posiada 54 piny GPIO. W Raspberry mamy łączówkę 40 pinową, więc nie wszystkie są na nią wyprowadzone. Możemy skorzystać z GPIO 12 i 18 (PWM0) i GPIO 13 i 19 (PWM1). Możliwe jest więc sterowanie dwoma urządzeniami, a przy pewnych ograniczeniach, o czym później, czterema.

Starsze modele Raspberry miały jednak łączówkę GPIO 26 pinową, wyprowadzony na nią był tylko jeden sygnał PWM, GPIO18. Stąd wiele nieporozumień, można wyczytać że Raspberry ma tylko jeden pin z sygnałem PWM, dwa (pewnie skrót myślowy, bo dwa są kanały PWM), cztery (w nowszych modelach), albo 9, bo w istocie tyle ich jest, choć nie wszystkie są dostępne.

Jeśli ograniczymy rozważania do nowszych Raspberry, z łączówką 40 pinową, mamy: