Esptop 10 PWM z mikropythonem za pomocą Thonny Ide

Esptop 10 PWM z mikropythonem za pomocą Thonny Ide
ESP32 to płyta oparta na mikrokontrolerze, która ma również piny PWM. PWM jest techniką przy użyciu, której ESP32 może zmienić szerokość cyfrowego sygnału impulsu, a w wyniku wyjścia napięcie prądu stałego zmienia się w zależności od tego. Większość mikrokontrolerów ma wewnętrzny zegar licznika, którego używają do generowania określonego sygnału PWM. Dzisiaj w tym artykule omówimy piny PWM i sposób, w jaki można je skonfigurować w ESP32.

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:

  • Częstotliwość PWM: Częstotliwość PWM jest przeciwna do okresu. Każda wartość może być ustalona w zależności od aplikacji.
  • Rozdzielczość PWM: Rozdzielczość określa liczbę dyskretnych poziomów cyklu pracy, którą możemy kontrolować.
  • Cykl pracy: Ilość czasu, w którym sygnał PWM jest w stanie aktywnym.
  • PIN GPIO: Liczba pinów ESP32, gdzie ma być odczytany sygnał PWM. (GPIO 34,35,36,39 nie można użyć)

Oto kilka punktów, o których należy pamiętać, konfigurując sygnał ESP32 PWM:

  • W sumie 16 niezależnych kanałów PWM znajduje się w ESP32, które są podzielone na dwie grupy, każda grupa ma 8 kanałów.
  • 8 kanałów PWM ma dużą prędkość, podczas gdy pozostałe 8 kanałów jest niskie.
  • Rozdzielczość PWM może być ustawiona między 1-bitową a 16-bitową.
  • Częstotliwość PWM zależy od rozdzielczości PWM.
  • Cykl pracy może być automatycznie zwiększony lub zmniejszany bez interwencji procesora.

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.