PINS PWM w ESP32
Płyta ESP32 ma 16 niezależnych kanałów, które mogą generować sygnały PWM o różnych okresach i szerokości. Prawie wszystkie piny GPIO, które mogą działać jako wyjście, mogą być użyte do generowania sygnału PWM. Piny GPIO 34,35,36,39 nie mogą być stosowane jako piny PWM, ponieważ są to piny tylko wejściowe.
Jednak w wariancie 36 PINS tablicy ESP32 sześć zintegrowanych pinów SPI nie zaleca się również stosowania jako generatory sygnałów PWM.
Jak używać pinów ESP32 PWM
PWM jest techniką sterowania wyjściem za pomocą zmiennego cyfrowego sygnału impulsu. PWM pomaga kontrolować prędkość silnika lub jasność LED. Głównym elementem generowania sygnałów PWM jest wewnętrzny moduł timera. Timer jest kontrolowany przez wewnętrzne źródło zegara mikrokontrolera.
W miarę rozpoczęcia czasu jego wartość jest porównywana z dwoma komparatorami, a po osiągnięciu określonych Cykl pracy Wartość sygnału przy pinie PWM jest wyzwalana, co zmienia stany pinowe na niskie. Następnie sygnał timera liczy się, aż osiągnie Okres Wartość zarejestruj się. Teraz ponownie komparator wygeneruje nowy spust i piny PWM przesunąć się z niskiego na wysokie.
Aby wygenerować sygnał PWM przy pinach GPIO, należy zdefiniować następujące cztery cechy:
Oto kilka punktów, o których należy pamiętać, konfigurując sygnał ESP32 PWM:
Kontrolowanie jasności LED za pomocą sygnału PWM w ESP32
Teraz będziemy kontrolować jasność LED za pomocą sygnału PWM. Połącz diodę LED z pinem ESP32 GPIO 18.
Poniżej tabela pokazuje konfigurację pinów dla LED z ESP32.
ESP32 PIN GPIO | PROWADZONY |
---|---|
GPIO 18 | +Ive |
GND | -Ive |
Kod kontroli jasności pojedynczej LED
Aby zaprogramować tablicę ESP32 z Micropython Open Thonny Ide i prześlij poniższy kod. Pamiętaj, aby flashować płytę ESP32 z oprogramowaniem układowym Micropython, jeśli używasz po raz pierwszy.
Z PIN importu maszyny, PWM
Od czasu importuj sen
Częstotliwość = 5000
LED1 = PWM (pin (18), częstotliwość)
Choć prawda:
dla obowiązku_cycle w zakresie (0, 1024):
LED1.Duty (Duty_cycle)
spać (0.005)
Kod rozpoczął się od importowania wymaganych klas.
Z PIN importu maszyny, PWM
PROWADZONY Obiekt jest inicjowany dla sygnału PWM.
LED = PWM (pin (18), częstotliwość)
Obiekt PWM potrzebuje dwóch argumentów: jeden to częstotliwość, a drugi jest cykl robany.
Częstotliwość: Wartość częstotliwości wynosi od 0 do 78125. Tutaj użyliśmy częstotliwości 5 kHz do kontrolowania jasności LED.
Cykl pracy: Jego wartość waha się od 0 I 1023. Tutaj 1023 jest równe maksymalnej wartości, która definiuje 100% cykl pracy i pełna jasność diody LED i podobnie po przeciwnej stronie, 0 koresponduje z 0% Cykl pracy oznacza, że dioda LED będzie całkowicie przyciemniona.
Korzystanie z funkcji cyklu pracy obowiązek() przekazujemy cykl pracy jako argument tej funkcji.
prowadzony.Duty (Duty_cycle)
W środku chwila pętla a Do Pętla jest inicjowana, która zwiększa cykl pracy za każdym razem, gdy działa o 1 z przedziałem równym 5 ms.
dla obowiązku_cycle w zakresie (0, 1024):
prowadzony.Duty (Duty_cycle)
spać (0.005)
zakres() Funkcję można napisać jako:
Zakres (start, stop, krok)
Tutaj początek Określa wartość początkową cyklu pracy, która jest równa 0. zatrzymywać się wyjaśniając wartość, którą chcemy zatrzymać cykl pracy. Tutaj użyliśmy wartości 1024, ponieważ maksymalna wartość, w której może przyjść, wynosi 1023 i zwiększamy 1 w tej wartości po każdej pętli.
Ostatni krok opisuje współczynnik przyrostu i domyślnie wynosi 1.
Wyjście
Na sprzęcie możemy zobaczyć jasność diody LED w pełni, oznacza to, że sygnał cyklu pracy wynosi 1024.
Teraz widzimy, że dioda LED jest całkowicie przyciemniona, co oznacza, że wartość cyklu pracy wynosi 0.
Kontrolowanie wielu pinów za pomocą tego samego sygnału PWM
Możemy kontrolować wiele pinów za pomocą tego samego sygnału PWM, który jest generowany z jednego kanału PWM. Teraz zmodyfikujemy pojedynczy przykład LED, aby kontrolować wiele diod LED jasności.
Podłącz trzy diody LED w szpilkach GPIO 23, 18 i 15.
Poniżej tabeli daje nam układ pinów dla trzech diod LED.
ESP32 PIN GPIO | PROWADZONY |
---|---|
GPIO 23 | +prowadziłem 1 |
GPIO 18 | +Ive prowadził 2 |
GPIO 15 | +prowadziłem 3 |
GND | LED Common GND |
Kod dla wielu diod LED Kontrola jasności
otwarty Thonny Ide i napisz kod w oknie edytora. Następnie podłącz płytę ESP32 i prześlij ją.
Z PIN importu maszyny, PWM
Od czasu importuj sen
Częstotliwość = 5000
LED1 = PWM (pin (18), częstotliwość)
LED2 = PWM (pin (23), częstotliwość)
LED3 = PWM (pin (15), częstotliwość)
Choć prawda:
dla obowiązku_cycle w zakresie (0, 1024):
LED1.Duty (Duty_cycle)
LED2.Duty (Duty_cycle)
LED3.Duty (Duty_cycle)
spać (0.005)
Kod jest podobny do poprzedniego przykładu. Właśnie dodaliśmy dwie nowe diody LED na PIN GPIO 23 I 15.
Stosuje się ten sam cykl pracy i wartość częstotliwości.
Wyjście
W sekcji wyjściowej widzimy, że wszystkie trzy diody LED są w pełnej jasności, co oznacza, że wszystkie z nich otrzymują cykl pracy, mając wartość 1024.
Teraz wszystkie trzy diody LED są oznaczone, co oznacza, że wszystkie z nich mają ten sam cykl pracy pochodzący z tego samego kanału PWM o wartości cyklu pracy 0.
Z powodzeniem kontrolowaliśmy jasność LED za pomocą sygnału PWM.
Wniosek
W tym przewodniku omówiliśmy piny ESP32 PWM i sposób ich użycia do sterowania urządzeniami. Omówiliśmy również kod do kontrolowania pojedynczych i wielu diod LED za pomocą kanału PWM. Korzystając z tego przewodnika Każdy rodzaj sprzętu można kontrolować za pomocą sygnału PWM.