Voltmetro con arduino e lettura su partitore di tensione

Considero come precisone la differenza tra valore di una grandezza fisica letta dal sensore e valore calcolato dallo sketch.
Se misuro una temperatura di 20°C e Arduino mi visualizza la temperatura di 23°C non é importante se l' errore é da attribuisi all' errore del sensore, dalla scelta arrata del tipo dis ensore, dal uso errato del sensore (per esempio corrente di misura troppo alta che lo fa riscaldare) o an una tensione di riferimento sbagliata o da un errore di programmazione nello Sketch. Il fatto é che la temperatura viene letta 3@ troppo alta.

Percui nell'errore della misura entra l'errore di conversione del sensore, ma anche errori introdotti dal resto del HW e dallo sketch come per esempio una tensione di riferimento diversa da quella aspettata.

Sono d' accordo che un circuito per una tensione di riferimento di percisione puó eliminare una parte degli errori di misura possibili. (questo quando la tensione data dal sensore non dipende in modo linere dalla tensione di alimentazione).

Ciao Uwe

uwefed:
Considero come precisone la differenza tra valore di una grandezza fisica letta dal sensore e valore calcolato dallo sketch.

Direi che è il caso di fare un distinguo tra la precisione del ADC, che è una caratteristica hardware immutabile, e gli ulteriori errori indotti da fattori esterni al ADC e dal software, sono due cose distinte tra loro.

Buongiorno, riapro questo topic in quanto ho un dubbio:

devo usare la funzione "analogread" per leggere la tensione di una batteria (da moto) di 12 V. Dunque mi costruisco un partitore di tensione partendo da questi dati:

Vin=13.8V ;
Vout=4.6V;

rapporto del partitore 1/3 per cui scelgo R1 da 20K e R2 da 10K.

Il dubbio è il seguente: se per un motivo ics, il regolatore di tensione della moto dovesse guastarsi mandando più di 13,8 V alla batteria, questi si ripercuoterebbero di conseguenza sull'ingresso di Arduino bruciandolo. Esiste un modo per limitare questa ipotetica tensione?

Grazie

un semplice Zener in parallelo alla R2

uno zener da 5.1V/1W dovrebbe andar bene perciò...ma senza la sua Rz?

Grazie

c'e' già la R1

Capisco...a dirla tutta il mio dilemma era proprio sulla Rz, se metterla o no.

Grazie 1000. Procedo.

Buonasera;

ho scritto e caricato senza errori da parte dell'IDE questo codice:

// definisco le variabili 

int analogPin = 0;     
int lettura = 0;          
float voltage;

void setup()

{

  Serial.begin(9600);     

}



void loop()

{

  lettura = analogRead(analogPin);    
  voltage=(13.8/1024)*lettura;
  Serial.println(voltage);             

}

poi a cablaggi effettuati e sketch caricato sul monitor vedo solo la parola voltage stampata di continuo.

Dove sbaglio?

Grazie

Sono stato troppo frettoloso, ho letto meglio il reference ed ho trovato la quadra. Adesso lo sketch (che modifico nel post precedete) stampa il valore, il quale però viene stampato di continuo sullo schermo seriele, perchè?

ciao

droidprova:
... il quale però viene stampato di continuo sullo schermo seriele, perchè?

Perché è quello che gli hai detto di fare

tutto quello che metti all'interno di void loop() viene ripetuto all'infinito.

Però una cosa mi lascia perplesso: se non sbaglio tu leggi con analogRead il pin 0 (che è un pin digitale e NON è da usare) e non il pin A0.

ciao
pippo72

Capisco e già è vero, che stupido che sono....Grazie.

Si io leggo con analogread dal pin A0 che ho dichiarato cosi:

int analogPin = 0

ma funziona anche con:

int analogPin = A0

dal reference:

pin: the number of the analog input pin to read from (0 to 5 on most boards, 0 to 7 on the Mini and Nano, 0 to 15 on the Mega)

Hai ragione.

Questa mi era sfuggita. :confused:

ciao
pippo72

io per sicurezza non prenderei in riferimento 13,8V che magari è il valore medio di carica dell'alternatore/generatore/dinamo della moto, ma un voltaggio maggiore che potrebbe presentarsi in casi particolari ma del tutto possibili dove può superare i 15V (in caso di batteria scarica per esempio), in tal caso, potresti oltre che ottenere una lettura errata (usando l'attuale valore) anche sovraccaricare lo zener. Per queste applicazioni automotive io prenderei in considerazione una tensione di riferimento da 18/20 V in modo da non oltrepassare in nessun modo la tensione che arriverebbe al pin analogico di arduino. Io lavoro con le centraline delle macchine da corsa e ti posso dire che loro per il partitore resistivo prendono in considerazione tensioni fino a 20V con uscita inferiore ai 4V verso il pin ADC. Ovviamente così perderesti un po di precisione ma ne guadagneresti in affidabilità.

PS: in uno schema che ho trovato:

+12V<------
|
R1=50K
|-------------->ADC pin MCU
|
R2=10K
|
GND

quindi se abbiamo 20V, in realtà sul pin ADC vedremo al massimo 3,333V