ESP32 - OSCILLOSCOPIO e PWM
(Modulazione a larghezza d'impulso)
(Modulazione a larghezza d'impulso)
Definire una determinata frequenza con l'ESP32 e verifica pratica con l'uso dell'oscilloscopio didattico ETEPON DIY EM001
Con l'oscilloscopio posso verificare se l'uscita di un PIN dell'ESP32 ha attivato il PWM.
FUNZIONAMENTO BASE DEL MINI OSCILLOSCOPIO ETEPON DIY EM001.
Parametri da conoscere, un po' di teoria non guasta:
FREQUENZA: Rappresenta il numero di volte che un segnale periodico si ripete in 1 secondo e si misura in hertz ( Hz ).
PERIODO: Rappresenta il TEMPO[sec] che un segnale periodico impiega per compiere una oscillazione completa.
FORMULA: 1 [s] = F [nr.] * Periodo [sec] Periodo = 1 / F es. F = 50 Hz Periodo = 1/ 50 = 0.02 [s] ==>> 20 [ms] millisecondi
Per facilitare l'interpretazione e la visualizzazione di una oscillazione completa del segnale è conveniente impostare la BASE dei TEMPI (B.d.T.), tramite il selettore SEC/DIV, dividendo per il fattore 10 la durata del Periodo, in quanto sono presenti a video 12 "QUADROTTI" orizzontali.
Pertanto in questo caso imposteremo la Base dei Tempi a 2 ms.
Utilizzando valori da 5 Volt (Arduino) o 3.3 Volt (ESP32) il V/DIV è conveniente impostarlo a 1 Volt, a video sono presenti 8 "QUADROTTI" verticali.
In questo modo avremo che la base del "quadrotto" corrisponde al Tempo di 2 ms mentre l'altezza di un "quadrotto" corrisponde a 1 Volt.
Essendo i VOLT positivi è' conveniente fissare lo Zero in corrispondenza della riga di riferimento superiore del "quadrotto" di fondo del video.
VEDERE LE VARIE OPZIONI DESCRITTIVE sottostanti: 1-2 e 3-4 ,sono molto esaustive
I PULSANTI MULTIFUNZIONE e l'ENCODER ROTANTE ADJ che rende la regolazione dei parametri più rapida e semplice.
V/DIV se pigiato una volta contorna con una cornice rettangolare di colore ciano l'area di definizione dei VOLT da impostare tramite la rotazione di ADJ in senso orario o antiorario.
"Pigiando" ulteriolmente V/DIV il cursore laterale sx si colora di ciano e ruotando l' ADJ in senso orario o antiorario traslo verso l'alto o verso il basso il segnale periodico.
SEC/DIV (Base dei Tempi) se pigiato una volta contorna con una cornice rettangolare di colore ciano l'area di definizione della B.d.T. da impostare tramite la rotazione di ADJ in senso orario o antiorario.
"Pigiando" ulteriolmente V/DIV la barra rettangolare, sul bordo centrale superiore, si colora di ciano e ruotando l' ADJ in senso orario o antiorario traslo verso destra o verso sinistra il segnale periodico, per la centratura dello stesso a video.
Il pulsante OK se pigiato "blocca" il segnale periodico che si manifesta a video, come se effettuasse una foto, in questo frangente posso, attivando i vari cursori con il colore ciano,( passo 2 e 4) posso centrare a video il segnale periodico secondo le necessità.
"Pigiando" ulteriolmente il pulsante OK disattivo l'opzione "blocca" immagine del segnale.
"Pigiando" il pulsante TRIGGER tramite la rotazione dell'ADJ impostare su AUTO.
N.B. Se all'atto dell'accensione è presente la cornice ciano (vedi foto 1) sul primo campo ci troviamo nella condizione del punto 1, ruotando il selettore ADJ cambio i valori dei Volt.
ECCO LE VARIE OPZIONI DESCRITTIVE: 1-2 e 3-4
Il PWM di Arduino:
Per generare la frequenza di 50 Hz è necessaria la libreria <Servo.h>
Su Arduino l'uscita sui PIN DIGITALI è di 5 Volt mentre sui PIN dell'ESP32 è di 3.3 Volt
TEST PWM : Scheda "ESP32- WROOM-DA Module"
int canale =0;
int risoluzione = 8;
int freq =50;
void setup() {
int pin = 14;
ledcSetup(canale,freq,risoluzione);
ledcAttachPin(pin,canale);
}
void loop() {
ledcWrite(canale,128); // Duty Cycle al 50%
delay(15000);
ledcWrite(canale,64); // Duty Cycle al 25%
delay(15000);
ledcWrite(canale,255); // Duty Cycle al 100%
delay(15000);
ledcWrite(canale,191); // Duty Cycle al 75%
delay(15000);
ledcWrite(canale,0); // Duty Cycle al 0%
delay(15000);
}
Test:
Impostando la Scala dei tempi a 2 ms il periodo (Cycl) sarà costituito da 10 " QUADRETTI" 2 x 10 = 20 ms
Impostando la Scala dei tempi a 5 ms il periodo (Cycl) sarà costituito da 4 " QUADRETTI" 5 x 4 = 20 ms
ledcWrite(canale,128); Corrisponde un Duty Cycle del 50%
Continua....