Esptop 10 pwm med mikropython ved bruk av Thonny IDE

Esptop 10 pwm med mikropython ved bruk av Thonny IDE
ESP32 er et mikrokontrollerbasert brett som også har PWM-pinner. PWM er en teknikk som bruker ESP32 som kan endre bredden på et digitalt pulssignal, og som et resultat varierer. De fleste av mikrokontrollerne har en intern timerklokke som de bruker for å generere et spesifikt frekvens PWM -signal. I dag i denne artikkelen vil vi diskutere PWM -pinner og hvordan de kan konfigureres i ESP32.

PWM -pinner i ESP32

ESP32 -styret har 16 uavhengige kanaler som kan generere PWM -signaler med forskjellige tidsperioder og bredde. Nesten alle GPIO -pinnene som kan fungere som utgang, kan brukes til å generere et PWM -signal. GPIO -pinner 34,35,36,39 kan ikke brukes som PWM -pinner som de bare er inngående pinner.

Imidlertid anbefales heller ikke i 36 PIN -varianten av ESP32 -brettet.

Hvordan bruke ESP32 PWM -pinner

PWM er en teknikk for å kontrollere utgangen ved hjelp av et variabelt digitalt pulssignal. PWM hjelper med å kontrollere motorhastigheten eller LED -lysstyrken. Hovedkomponent i å generere PWM -signaler er den interne tidtaksmodulen. Timer styres av den interne mikrokontrollerklokke kilden.

Når tiden starter, sammenlignes verdien med to komparatorer, og når den når den definert Duty Cycle Verdi et signal ved PWM PIN utløses som endrer pin -tilstander til lave. Deretter fortsetter timersignalet å telle til det oppnår Periode Registrerverdi. Nå vil komparatoren igjen generere en ny trigger og PWM -pins tilstandsskifte fra lav til høy.

For å generere et PWM -signal ved GPIO -pinner, må følgende fire egenskaper defineres:

  • PWM -frekvens: Frekvens for PWM er motsatt av tidsperioden. Enhver verdi kan settes avhengig av applikasjon.
  • PWM -oppløsning: Oppløsning definerer antall diskrete nivåer av pliktsyklus vi kan kontrollere.
  • Pliktsyklus: Tiden der et PWM -signal er i aktiv tilstand.
  • GPIO PIN: PIN -antall ESP32 der PWM -signalet skal leses. (GPIO 34,35,36,39 kan ikke brukes)

Her er noen punkter som man må huske på mens du konfigurerer ESP32 PWM -signal:

  • Totalt 16 uavhengige PWM -kanaler er i ESP32 som er delt inn i to grupper som hver gruppe har 8 kanaler.
  • 8 PWM -kanaler har høy hastighet mens de andre 8 kanalene er lave.
  • PWM-oppløsning kan settes mellom 1-bit og 16-bits.
  • PWM -frekvens er avhengig av oppløsningen av PWM.
  • Driftssyklus kan automatisk økes eller reduseres uten prosessorinngrep.

Kontrollerende LED -lysstyrke ved bruk av PWM -signal i ESP32

Nå vil vi kontrollere LED -lysstyrke ved hjelp av et PWM -signal. Connect LED med ESP32 GPIO PIN 18.

Under tabellen viser PIN -konfigurasjon for LED med ESP32.

ESP32 GPIO PIN Led
GPIO 18 +Jeg er
GND -Jeg er

Kode for enkelt LED lysstyrke kontroll

Å programmere et ESP32 -brett med Micropython åpen Thonny Ide og last opp nedenfor gitt kode. Husk å blinke ESP32 -brett med micropython firmware hvis du bruker for første gang.

Fra maskinimportnål, PWM
Fra tid importer søvn
frekvens = 5000
LED1 = PWM (PIN (18), frekvens)
Mens sant:
For Duty_cycle in Range (0, 1024):
LED1.Duty (Duty_cycle)
søvn (0.005)

Kode startet med å importere de nødvendige klassene.

Fra maskinimportnål, PWM

De Led objektet initialiseres for PWM -signalet.

LED = PWM (PIN (18), frekvens)

Et PWM -objekt trenger to argumenter: Den ene er frekvens og den andre er pliktsyklus.

Frekvens: Frekvensverdien varierer fra 0 til 78125. Her brukte vi en frekvens på 5 kHz for å kontrollere LED -lysstyrken.

Pliktsyklus: Verdien varierer fra 0 og 1023. Her 1023 er lik maksimal verdi som definerer 100% Duty Cycle og full lysstyrke av LED og på samme måte på motsatt side, 0 tilsvarer 0% Duty Cycle Means LED vil være helt svak.

Bruke pliktsyklusfunksjonen plikt() Vi passerer pliktsyklusen som et argument til denne funksjonen.

Led.Duty (Duty_cycle)

Inne i samtidig som sløyfe a til Loop initialiseres som trinn på pliktsyklusen hver gang den går med 1 med et intervall lik 5 ms.

For Duty_cycle in Range (0, 1024):
Led.Duty (Duty_cycle)
søvn (0.005)

De område() Funksjon kan skrives som:

rekkevidde (start, stopp, trinn)

Her start Angir startverdien til pliktsyklus som er lik 0. Stoppe Forklar verdien vi ønsker å stoppe pliktsyklusen. Her har vi brukt verdien 1024 fordi den maksimale verdien der den kan komme er 1023 og vi øker 1 i denne verdien etter hver loop.

Den siste steg beskriver den økende faktoren og som standard er den 1.

Produksjon
På maskinvare kan vi se lysstyrken til LED på sin fulle, dette betyr at pliktsyklus -signalet er på 1024.

Nå kan vi se at LED er helt svak, noe som betyr at pliktsyklusverdien er 0.

Kontrollere flere pinner med samme PWM -signal

Vi kan kontrollere flere pinner med samme PWM -signal som genereres fra en enkelt PWM -kanal. Nå vil vi endre det enkle LED -eksemplet for å kontrollere flere lysstyrker.

Koble tre lysdioder ved GPIO -pinner 23, 18 og 15.

Under tabellen gir oss pin -layout for tre lysdioder.

ESP32 GPIO PIN Led
GPIO 23 +Jeg har ledet 1
GPIO 18 +Jeg har ledet 2
GPIO 15 +Jeg har ledet 3
GND LED Common GND

Kode for flere lysdioder Lysstyrkekontroll

Åpen Thonny Ide og skriv koden i redigeringsvinduet. Etter det, koble til ESP32 -brettet og last det opp.

Fra maskinimportnål, PWM
Fra tid importer søvn
frekvens = 5000
LED1 = PWM (PIN (18), frekvens)
LED2 = PWM (PIN (23), frekvens)
LED3 = PWM (PIN (15), frekvens)
Mens sant:
For Duty_cycle in Range (0, 1024):
LED1.Duty (Duty_cycle)
LED2.Duty (Duty_cycle)
LED3.Duty (Duty_cycle)
søvn (0.005)

Kode ligner på forrige eksempel. Vi har nettopp lagt til to nye lysdioder på GPIO Pin 23 og 15.

Samme pliktsyklus og frekvensverdi brukes.

Produksjon
I utgangsseksjonen kan vi se at alle tre lysdioder er i full lysstyrke, noe som betyr at alle mottar pliktsyklus med verdi 1024.

Nå er alle tre lysdioder, noe som betyr at alle av dem har den samme pliktsyklusen som kommer fra den samme PWM -kanalen som har pliktsyklusverdi 0.

Vi har kontrollert LED -lysstyrke ved hjelp av PWM -signalet.

Konklusjon

I denne guiden har vi diskutert ESP32 PWM -pinner og hvordan de kan brukes til å kontrollere enheter. Vi diskuterte også koden for å kontrollere enkelt og flere lysdioder ved hjelp av PWM -kanalen. Bruke denne guiden Enhver type maskinvare kan kontrolleres ved hjelp av PWM -signal.