Esptop 10 pwm con microphon usando Thonny IDE

Esptop 10 pwm con microphon usando Thonny IDE
ESP32 è una scheda basata su microcontrollori che ha anche pin PWM. PWM è una tecnica che utilizza la quale ESP32 può cambiare la larghezza di un segnale di impulso digitale e, di conseguenza, la tensione CC in uscita varia a seconda di essa. La maggior parte dei microcontrollori ha un orologio timer interno che utilizzano per generare un segnale PWM di frequenza specifico. Oggi in questo articolo discuteremo dei pin PWM e di come possono essere configurati in ESP32.

Pin PWM in ESP32

La scheda ESP32 ha 16 canali indipendenti in grado di generare segnali PWM con periodi di tempo e larghezza diversi. Quasi tutti i pin GPIO che possono agire come output possono essere utilizzati per generare un segnale PWM. I pin GPIO 34,35,36,39 non possono essere usati come pin PWM in quanto sono input solo i pin.

Tuttavia, nella variante a 36 pin della scheda ESP32, anche i sei pin integrati SPI non sono consigliati di utilizzare come generatori di segnale PWM.

Come utilizzare i pin ESP32 PWM

PWM è una tecnica per controllare l'uscita utilizzando un segnale di impulso digitale variabile. PWM aiuta a controllare la velocità del motore o la luminosità dei LED. Il componente principale nella generazione di segnali PWM è il modulo timer interno. Il timer è controllato dalla sorgente di clock del microcontrollore interno.

All'inizio del tempo, il suo valore viene confrontato con due comparatori e una volta raggiunta il definito Ciclo di lavoro Valutare viene attivato un segnale sul pin PWM che cambia gli stati del pin a basso. Successivamente il segnale del timer continua a contarsi fino a quando non raggiunge il Periodo Valore di registrazione. Ora di nuovo il comparatore genererà un nuovo grilletto e PWM Pins Stato spostamento dal basso a alto.

Per generare un segnale PWM su pin GPIO, devono essere definite le seguenti quattro caratteristiche:

  • Frequenza PWM: La frequenza per PWM è opposta al periodo di tempo. Qualsiasi valore può essere impostato a seconda dell'applicazione.
  • Risoluzione PWM: La risoluzione definisce il numero di livelli discreti del ciclo di lavoro che possiamo controllare.
  • Ciclo di lavoro: Quantità di tempo durante il quale un segnale PWM è in stato attivo.
  • PIN GPIO: Numero pin di ESP32 in cui il segnale PWM deve essere letto. (GPIO 34,35,36,39 non può essere utilizzato)

Ecco alcuni punti che bisogna tenere a mente durante la configurazione del segnale PWM ESP32:

  • Totale di 16 canali PWM indipendenti sono in ESP32 che sono divisi in due gruppi per ogni gruppo con 8 canali.
  • 8 canali PWM sono ad alta velocità mentre gli altri 8 canali sono bassi.
  • La risoluzione PWM può essere impostata tra 1 bit e 16 bit.
  • La frequenza PWM dipende dalla risoluzione di PWM.
  • Il ciclo di lavoro può essere automaticamente aumentato o diminuito senza intervento del processore.

Controllo della luminosità dei LED mediante il segnale PWM in ESP32

Ora controlleremo la luminosità dei LED usando un segnale PWM. Connetti LED con il pin GPIO ESP32.

La tabella seguente mostra la configurazione del pin per LED con ESP32.

ESP32 PIN GPIO GUIDATO
GPIO 18 +io ho
GND -io ho

Codice per il controllo della luminosità a LED singolo

Per programmare una scheda ESP32 con Micropython Open Thonny Ide e caricare il codice indicato di seguito. Ricorda di flash la scheda ESP32 con il firmware Micropython se si utilizza per la prima volta.

Dal pin di importazione macchina, PWM
Dal tempo Import Sleep
Frequenza = 5000
LED1 = PWM (pin (18), frequenza)
mentre è vero:
per duty_cycle nell'intervallo (0, 1024):
LED1.duty (duty_cycle)
dormire (0.005)

Codice avviato importando le classi richieste.

Dal pin di importazione macchina, PWM

IL GUIDATO L'oggetto viene inizializzato per il segnale PWM.

LED = PWM (pin (18), frequenza)

Un oggetto PWM ha bisogno di due argomenti: uno è frequenza e l'altro è il ciclo di lavoro.

Frequenza: Il valore di frequenza varia da 0 a 78125. Qui abbiamo usato una frequenza di 5kHz per controllare la luminosità a LED.

Ciclo di lavoro: Il suo valore varia da 0 E 1023. Qui 1023 è uguale al valore massimo che definisce 100% duty ciclo e piena luminosità del LED e allo stesso modo sul lato opposto, 0 corrisponde a 0% duty ciclo significa che il LED sarà completamente debole.

Utilizzando la funzione del ciclo di lavoro dovere() Passiamo il ciclo di lavoro come argomento a questa funzione.

guidato.duty (duty_cycle)

Dentro il Mentre Loop a per Il ciclo viene inizializzato che incrementa il ciclo di lavoro ogni volta che funziona di 1 con un intervallo pari a 5 ms.

per duty_cycle nell'intervallo (0, 1024):
guidato.duty (duty_cycle)
dormire (0.005)

IL allineare() La funzione può essere scritta come:

intervallo (start, stop, step)

Qui inizio Specifica il valore iniziale del ciclo di lavoro che è uguale a 0. fermare Spiegare il valore che vogliamo fermare il ciclo di lavoro. Qui abbiamo usato il valore 1024 perché il valore massimo in cui può arrivare è 1023 e stiamo aumentando 1 in questo valore dopo ogni loop.

L'ultimo fare un passo descrive il fattore incremento e per impostazione predefinita è 1.

Produzione
Sull'hardware possiamo vedere la luminosità del LED al massimo, questo significa che il segnale del ciclo di lavoro è a 1024.

Ora possiamo vedere che il LED è completamente fioco, il che significa che il valore del ciclo di lavoro è a 0.

Controllo di più pin con lo stesso segnale PWM

Possiamo controllare più pin con lo stesso segnale PWM che viene generato da un singolo canale PWM. Ora modificheremo l'esempio a LED singolo per controllare la luminosità di più LED.

Collega tre LED a GPIO PIN 23, 18 e 15.

La tabella sotto ci fornisce il layout del pin per tre LED.

ESP32 PIN GPIO GUIDATO
GPIO 23 +Ive ha guidato 1
GPIO 18 +Ive ha guidato 2
GPIO 15 +Ive ha guidato 3
GND Led GND comune

Codice per più LED Controllo della luminosità

Aprire Thonny Ide e scrivi il codice nella finestra dell'editor. Successivamente, collega la scheda ESP32 e caricalo.

Dal pin di importazione macchina, PWM
Dal tempo Import Sleep
Frequenza = 5000
LED1 = PWM (pin (18), frequenza)
LED2 = PWM (pin (23), frequenza)
LED3 = PWM (pin (15), frequenza)
mentre è vero:
per duty_cycle nell'intervallo (0, 1024):
LED1.duty (duty_cycle)
LED2.duty (duty_cycle)
LED3.duty (duty_cycle)
dormire (0.005)

Il codice è simile all'esempio precedente. Abbiamo appena aggiunto due nuovi LED su GPIO PIN 23 E 15.

Vengono utilizzati lo stesso ciclo di lavoro e il valore di frequenza.

Produzione
Nella sezione di output possiamo vedere che tutti e tre i LED sono in piena luminosità, il che significa che tutti stanno ricevendo il ciclo di lavoro con valore 1024.

Ora tutti e tre i LED sono intidici, il che significa che tutti hanno lo stesso ciclo di lavoro proveniente dallo stesso canale PWM con valore del ciclo di lavoro 0.

Abbiamo controllato con successo la luminosità dei LED usando il segnale PWM.

Conclusione

In questa guida, abbiamo discusso dei pin PWM ESP32 e come possono essere utilizzati per controllare i dispositivi. Abbiamo anche discusso del codice per il controllo di LED singoli e multipli utilizzando il canale PWM. Utilizzando questa guida qualsiasi tipo di hardware può essere controllato con l'aiuto del segnale PWM.