
(la videolezione) A differenza dei segnali digitali, che possono assumere solo due stati (HIGH/LOW, 1/0), i segnali analogici possono variare con continuità all'interno di un intervallo di valori. Gli ingressi analogici della scheda Arduino Uno sono progettati per leggere questo tipo di segnali ed hanno le seguenti specifiche tecniche: Numero di ingressi: 6 (da A0 a A5); Risoluzione: 10-bit; Range di tensione in ingresso: 0-5V
Tempo di conversione: circa 100 microsecondi.
Il cuore del sistema di lettura analogica è l'ADC a 10-bit integrato nel microcontrollore ATmega328P. Questo significa che il convertitore può distinguere 2¹⁰ = 1024 valori diversi (da 0 a 1023). Quando viene applicata una tensione tra 0V e 5V a un pin analogico:
0V → valore digitale 0
5V → valore digitale 1023
2.5V → valore digitale 512
L'istruzione seguente definisce una variabile intera (sensorValue) che memorizza i valore analogico letto dall'ingresso A0:
int sensorValue = analogRead(A0);
Nella variabile sarà ovviamente memorizzato un valore compreso tra 0 e 1023.
Nel seguito del post si descrive come costruire un voltmetro con Arduino Uno in grado di misurare tensioni nel range 0-30V. Sappiamo che, quando si utilizza la tensione di riferimento analogica di 5 V, gli ingressi analogici di Arduino possono monitorare una tensione compresa tra 0 e 5 V. La gamma può essere ampliata impiegando due resistori per realizzare un partitore di tensione, che riduce la tensione misurata per adattarla all'intervallo di ingresso analogico della scheda. La misura della tensione effettiva viene poi calcolata utilizzando il codice dello sketch. Nel caso in questione, il partitore di tensione, costituito con due resistori in serie da 15K (R1) e da 3K (R2), é in grado di aumentare la portata dell'ingresso analogico fino a 30V. Ricordiamo che i 6 pin analogici di Arduino si collegano a un convertitore analogico-digitale (ADC) a dieci bit, che fornisce in uscita un numero intero da 0 a 1023. Il numero intero viene letto con la funzione "analogRead()". Se è necessario modificare il limite di tensione, è necessario prendere valori diversi delle resistenze R2 (3k Ohm) e R1 (15k Ohm), calcolando il valore delle resistenze dalla seguente equazione:
Vin max = (R1+R2) x 5V / R2
La stessa equazione permette di verificare che la tensione raggiunta al pin analogico di Arduino sia inferiore o uguale a 5V. Come mostrato nell'immagine qui sotto, l'uscita del partitore è collegata con il pin analogico A1 ed usiamo un alimentatore per testare il sistema e fornire in ingresso una tensione continua da 0V a 30V.
Nello sketch definiamo una variabile float (numero reale a singola precisione) per memorizzare il valore della tensione, che viene calcolato moltiplicando il numero intero letto sull'ingresso A1 per l'intervallo di quantizzazione (0,029296875 = 30V/1024), all'interno del "loop()".
Qui il Qui il Circuito Tinkercad:
- senza iscrizione é possibile simularlo, consultare la lista dei componenti, copiare il codice e scaricare il pdf dello schema;
- con l'iscrizione gratuita è possibile anche copiarlo e modificarlo a proprio piacimento.