John Errington’s Experiments with an Arduino
Il Novembre 28, 2021 da adminMisurazione precisa della tensione con la scheda Arduino.
La gamma di microcontrollori Arduino fornisce ingressi analogici che possono essere utilizzati per misurare la tensione. Possiamo usarli per costruire un voltmetro.
La funzione analogRead() legge la tensione e la converte in un numero tra 0 e 1023.
Il tutorial Arduino (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltageha questo esempio:
Questo è SBAGLIATO! Per un risultato migliore usa (sensorValue + 0,5) * 5,0 / 1024,0 – vedi spiegazione qui
Questo ci porta a credere che una lettura di 0 corrisponde a un ingresso di 0,000V; e 1023 corrisponde a una tensione di ingresso di 5,000 volt. Questo non è del tutto vero. Guardiamo la scheda tecnica e vediamo cosa ci dice.
Il chip ATMEGA usato su Arduino ha ingressi analogici che possono essere usati per misurare accuratamente la tensione
Il microcontrollore Arduino è dotato di un convertitore analogico-digitale (ADC) di tipo ad approssimazione successiva che ha le seguenti specifiche. I riferimenti indicati tra parentesi così (2: 26.1) si riferiscono a sezioni della scheda tecnica AtMega 2560.
(2: 26.1): ATMega328 e 32U4 hanno valori simili.
Queste specifiche ci dicono che Arduino è in grado di misurare le tensioni con una precisione
di ± 2 LSB – quindi l’errore massimo è di 2 bit (4 decimali) su 10 bit (1024 decimali)
Quindi la precisione peggiore del convertitore è 4 / 1024 o 1 parte su 256 cioè 0,25%.
Tuttavia il limite della precisione della misurazione dipende dal riferimento di tensione utilizzato.
L’Arduino ha i propri riferimenti di tensione – ma non sono molto precisi
Il chip – a seconda del tipo – è dotato di ALCUNE delle seguenti tensioni di riferimento (6)
DEFAULT: il riferimento analogico predefinito di 5 volt (sulle schede Arduino da 5V) o 3.3 volt (sulle schede Arduino da 3,3V)
INTERNAL: un riferimento incorporato, pari a 1,1 volt su ATmega168 o ATmega328 e 2,56 volt sulle schede ATmega8 e 32U4.
Questo è prodotto internamente amplificando il riferimento di 1,1V. 2.56V è solo un valore “tipico”.
EXTERNAL: la tensione applicata al pin AREF (solo da 0 a 5V). (MicroPro 32U4, NodeMCU e ESP32 non hanno un pin per un riferimento esterno – vedi sotto per maggiori informazioni.)
La precisione del riferimento rispetto al quale viene misurata la tensione – usando uno qualsiasi dei riferimenti di cui sopra – è al massimo solo 5.25 – 5.0/5.0 * 100 = 5% – molto peggio dello 0.25% che fornisce l’ADC. Chiaramente se vogliamo misurare le tensioni con la precisione fornita da Arduino i riferimenti on-chip non sono abbastanza buoni. Il diagramma qui sotto mostra questi errori rispetto ad un riferimento di 4.096V descritto qui sotto.
Lascia un commento