ESP32 ADC-Leggere i valori analogici con Arduino IDE

Questo articolo mostra come leggere gli ingressi analogici con l’ESP32 utilizzando Arduino IDE. La lettura analogica è utile per leggere valori da resistori variabili come potenziometri o sensori analogici.

ESP32 ADC Leggere valori analogici con Arduino IDE

Leggere gli ingressi analogici con l’ESP32 è facile come usare la funzione analogRead(GPIO), che accetta come argomento il GPIO che si desidera leggere.

Abbiamo anche altri tutorial su come utilizzare i pin analogici con ESP consiglio:

  • ESP8266 ADC – Leggere i Valori Analogici con Arduino IDE, MicroPython e Lua
  • ESP32 Analogico Letture con MicroPython

Guarda il Video

È possibile guardare il video tutorial o continuare la lettura di questa pagina per le istruzioni scritte.

Ingressi analogici (ADC)

La lettura di un valore analogico con ESP32 consente di misurare livelli di tensione variabili tra 0 V e 3,3 V.

La tensione misurata viene quindi assegnata a un valore compreso tra 0 e 4095, in cui 0 V corrisponde a 0 e 3,3 V corrisponde a 4095. Qualsiasi tensione tra 0 V e 3.3 V sarà dato il valore corrispondente in mezzo.

ESP32 ADC analogico Leggere ingressi Range Valore

ADC è non lineare

Idealmente, ci si aspetterebbe un comportamento lineare quando si utilizzano i pin ADC ESP32. Tuttavia, ciò non accade. Quello che otterrai è un comportamento come mostrato nella seguente tabella:

Questo comportamento significa che il tuo ESP32 non è in grado di distinguere 3.3 V da 3.2 V. Si otterrà lo stesso valore per entrambe le tensioni: 4095.

Lo stesso accade per valori di tensione molto bassi: per 0 V e 0.1 V si otterrà lo stesso valore: 0. È necessario tenere questo in mente quando si utilizzano i pin ADC ESP32.

C’è una discussione su GitHub su questo argomento.

Funzione analogRead ()

Leggere un ingresso analogico con l’ESP32 utilizzando l’IDE Arduino è semplice come usare la funzione analogRead (). Accetta come argomento, il GPIO che vuoi leggere:

analogRead(GPIO);

L’ESP32 supporta misurazioni in 18 canali diversi. Solo 15 sono disponibili nella scheda DEVKIT V1 DOIT (versione con 30 GPIO).

Afferra la piedinatura della scheda ESP32 e individua i pin ADC. Questi sono evidenziati con un bordo rosso nella figura seguente.

ESP32 ADC GPIOs Pins

Ulteriori informazioni su ESP32 GPIO: ESP32 Piedinatura di riferimento.

Questi pin di ingresso analogici hanno una risoluzione a 12 bit. Ciò significa che quando si legge un ingresso analogico, la sua gamma può variare da 0 a 4095.

Nota: i pin ADC2 non possono essere utilizzati quando si utilizza il Wi-Fi. Quindi, se stai usando il Wi-Fi e hai problemi a ottenere il valore da un GPIO ADC2, potresti considerare l’utilizzo di un GPIO ADC1, che dovrebbe risolvere il tuo problema.

Altre funzioni utili

Ci sono altre funzioni più avanzate da utilizzare con i pin ADC che possono essere utili in altri progetti.

  • analogReadResolution (resolution): impostare i bit di esempio e la risoluzione. Può essere un valore compreso tra 9 (0 – 511) e 12 bit (0-4095). L’impostazione predefinita è la risoluzione a 12 bit.
  • analogSetWidth( width): imposta i bit di esempio e la risoluzione. Può essere un valore compreso tra 9 (0 – 511) e 12 bit (0-4095). L’impostazione predefinita è la risoluzione a 12 bit.
  • analogSetCycles (cicli): impostare il numero di cicli per campione. Il valore predefinito è 8. Intervallo: da 1 a 255.
  • analogSetSamples(samples): imposta il numero di campioni nell’intervallo. Il valore predefinito è 1 campione. Ha un effetto di aumentare la sensibilità.
  • analogSetClockDiv (attenuazione): impostare il divisore per l’orologio ADC. Il valore predefinito è 1. Intervallo: da 1 a 255.
  • analogSetAttenuation (attenuazione): imposta l’attenuazione di ingresso per tutti i pin ADC. Il valore predefinito è ADC_11db. Valori accettati:
    • ADC_0db: non imposta alcuna attenuazione. ADC può misurare fino a circa 800 mV (ingresso 1V = lettura ADC di 1088).
    • ADC_2_5db: La tensione di ingresso di ADC sarà attenuato, estendendo la gamma di misura fino a ca. 1100 mV. (Ingresso 1V = lettura ADC di 3722).
    • ADC_6db: La tensione di ingresso di ADC sarà attenuato, estendendo la gamma di misura fino a ca. 1350 mV. (1 V ingresso = ADC lettura di 3033).
    • ADC_11db: La tensione di ingresso di ADC sarà attenuato, estendendo la gamma di misura fino a ca. 2600 mV. (1 V ingresso = ADC lettura di 1575).
  • analogSetPinAttenuation (pin, attenuazione): imposta l’attenuazione di ingresso per il pin specificato. Il valore predefinito è ADC_11db. I valori di attenuazione sono gli stessi della funzione precedente.
  • adcAttachPin(pin): collega un pin ad ADC (cancella anche qualsiasi altra modalità analogica che potrebbe essere attiva). Restituisce il risultato VERO o FALSO.
  • adcStart(pin), adcBusy(pin) e resultadcEnd(pin): avvia una conversione ADC sul bus del pin collegato. Controlla se la conversione sul bus ADC del pin è attualmente in esecuzione (restituisce VERO o FALSO). Ottieni il risultato della conversione: restituisce un numero intero a 16 bit.

C’è un ottimo video che spiega queste funzioni che puoi guardare qui.

Leggi i valori analogici da un potenziometro con ESP32

Per vedere come tutto si lega, faremo un semplice esempio per leggere un valore analogico da un potenziometro.

Per questo esempio, sono necessarie le seguenti parti:

  • ESP32 DOIT DEVKIT V1 Board (leggi le migliori schede di sviluppo ESP32)
  • Potenziometro
  • Breadboard
  • Ponticelli

È possibile utilizzare i collegamenti precedenti o andare direttamente a MakerAdvisor.com/tools per trovare tutte le parti per i vostri progetti al miglior prezzo!

Schematico

Filo di un potenziometro per il vostro ESP32. Il potenziometro perno centrale deve essere collegato a GPIO 34. È possibile utilizzare il seguente diagramma schematico come riferimento.

Leggere il valore dal Potenziometro ESP32 IDE di Arduino

Codice

ti programma il ESP32 utilizzo di IDE di Arduino, quindi assicuratevi di avere il ESP32 add-on installati prima di procedere:

  • Istruzioni Windows – ESP32 Scheda Arduino IDE
  • Mac e Linux istruzioni – ESP32 Scheda Arduino IDE

Aprire il tuo IDE di Arduino e copiare il codice riportato di seguito.

// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) const int potPin = 34;// variable for storing the potentiometer valueint potValue = 0;void setup() { Serial.begin(115200); delay(1000);}void loop() { // Reading potentiometer value potValue = analogRead(potPin); Serial.println(potValue); delay(500);}

Visualizza codice raw

Questo codice legge semplicemente i valori dal potenziometro e li stampa nel Monitor Seriale.

Nel codice, si inizia definendo il GPIO a cui è collegato il potenziometro. In questo esempio, GPIO 34.

const int potPin = 34;

In setup(), inizializzare una comunicazione seriale a una velocità di trasmissione di 115200.

Serial.begin(115200);

Nel loop(), utilizzare la funzione analogRead()per leggere l’ingresso analogico dal potPin.

potValue = analogRead(potPin);

Infine, stampare i valori letti dal potenziometro nel monitor seriale.

Serial.println(potValue);

Carica il codice fornito al tuo ESP32. Assicurati di avere la scheda giusta e la porta COM selezionata nel menu Strumenti.

Test dell’esempio

Dopo aver caricato il codice e aver premuto il pulsante di reset ESP32, aprire il monitor seriale a una velocità di trasmissione di 115200. Ruotare il potenziometro e vedere i valori che cambiano.

Leggi potenziometro ESP32 analogRead

Il valore massimo che otterrai è 4095 e il valore minimo è 0.

Leggi potenziometro ESP32 analogRead seriale monitor Arduino IDE dimostrazione

Wrapping Up

In questo articolo hai imparato a leggere gli ingressi analogici utilizzando l’ESP32 con l’IDE Arduino. In sintesi:

  • La scheda ESP32 DEVKIT V1 DOIT (versione con 30 pin) ha 15 pin ADC che è possibile utilizzare per leggere gli ingressi analogici.
  • Questi pin hanno una risoluzione di 12 bit, il che significa che è possibile ottenere valori da 0 a 4095.
  • Per leggere un valore nell’IDE Arduino, è sufficiente utilizzare la funzione analogRead ().
  • I pin ADC ESP32 non hanno un comportamento lineare. Probabilmente non sarai in grado di distinguere tra 0 e 0,1 V o tra 3,2 e 3,3 V. Devi tenerlo a mente quando usi i pin ADC.

Speriamo che questa breve guida sia utile. Se vuoi saperne di più su ESP32, iscriviti al nostro corso: Impara ESP32 con Arduino IDE.

Altre guide ESP32 che potrebbero piacerti anche:

  • ESP32 Display OLED con Arduino IDE
  • ESP32 con DHT Temperatura e sensore di umidità utilizzando Arduino IDE
  • ESP32 Web Server con DHT letture
  • 20 + ESP32 Progetti e tutorial

Grazie per la lettura.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Previous post Come Ian McKellen quasi non ha giocato Gandalf
Next post Capital Orthopaedic Specialists – Lanham