Misurare una batteria con Arduino e il partitore di tensione

Ciao a tutti!

Il post tratta di un argomento piuttosto semplice che però può tornare utile in vari progetti,
soprattutto se alimentati a batteria.
Infatti una funzione molto utile è monitorizzare lo stato della batteria per avvisarci in qualche modo del fatto che la batteria sta per terminare.



Come tutti ben saprete ogni ingresso analogico di Arduino può leggere un valore di tensione che va da 0 a 5 Volt, valore che poi viene convertito in digitale in un numero che va da 0 a 1023.
Sarà sufficiente una semplice proporzione con la funzione map per ricavare la tensione della batteria.




Quindi leggere con Arduino il valore di tensione di una batteria da 1.5 Volt è molto semplice in quanto la batteria potrà essere collegata direttamente ad un pin analogico.
Ma come facciamo a monitorare una batteria con una tensione maggiore di 5 Volt?


La risposta è anche qui semplice, è sufficiente realizzare un partitore di tensione.


Da Wikipedia:
"Un partitore di tensione è una tipologia di circuito costituito da due o più componenti passivi collegati in serie ai capi dei quali se viene applicata una tensione, essa si ripartirà sulle stesse componenti in base al loro valore."






Se le 2 resistenze hanno lo stesso valore, la tensione si ripartirà allo stesso modo su entrambe le resistenze, ad esempio:





Verifichiamo quanto detto sopra con questa formula:


Vout = Vin * R2 / (R1 + R2)


nell'esempio:

Vin = 9v
R1 = 10k
R2 = 10k

quindi:

9 * 10'000 / 20'000 = 4.5v  (valore di tensione accettabile dalle porte analog in di Arduino)

.
Da questa formula posso utilizzare anche la seguente formula inversa, necessaria ad esempio se volessi ottenere 4v da una batteria da 12v dovrei calcolare:


R2 = Vout / Vin * (R1 + R1)


Decidendo un valore di R1 + R2 = 20 kohm (valore che permette un passaggio di corrente ne troppo piccolo ne troppo grande) posso calcolare:

R2 = 4 / 12 * (20'000) = 6666.6 Ohm (approssimabile al valore commerciale 6.8 kOhm)

Quindi R1 = 20'000 - 6666.6 = 13333.4 Ohm (approssimabile a 12 kOhm)


Per ricalcolare ora quanta tensione cadrà con le resistenze che ho scelto:


V1 = I * R1

V2 = I * R2


dove:


I = Vin / (R1 + R2)


= 12 / 18'800

= 0.000638 Ampere (0.638 mA)


Quindi V1 = 0.000638 * 12000 = 7,656 V

e V2 = 0.000638 * 6800 = 4.338 V



Individuati i valori di resistenza da utilizzare vediamo finalmente come collegare il nostro circuito ad Arduino:




e questo è lo sketch da caricare:


  1. int PinBatt = A0;  
  2. int ValPinBatt;
  3. float Vpin_perc;
  4. float Vbatt;  
  5. float calc_res;
  6. float R1 = 10000; //modificare questi valori con i valori realmente utilizzati.
  7. float R2 = 10000;
  8. void setup()
  9. {
  10.   Serial.begin(9600);
  11.   pinMode (PinBatt, INPUT);
  12.   calc_res = (R1 + R2) / R2;
  13. }
  14. void loop()
  15. {
  16.   ValPinBatt = analogRead(PinBatt);
  17.   Vpin_perc = map (ValPinBatt, 0, 1023, 0, 500);
  18.   //leggerò 1023 quando ho 5 volt sul pin, quindi scalo 0-1023 in 0-500.
  19.   Vbatt = Vpin_perc * calc_res / 100 ;  
  20.   //ora divido tutto per 100 perchè sopra ho scalato da 0 a 500 anzichè da 0 a 5V
  21.   Serial.print("Tensione batteria:");
  22.   Serial.println(Vbatt);                
  23. }


Modificate i valori di R1 e R2 con quelli realmente utilizzati, poi aprite il Serial monitor per leggere la tensione della batteria.
Ricordate che una tensione maggiore di 5v potrebbe danneggiare il vostro Arduino, se avete dubbi misuratela prima con un voltmetro.

Se qualcosa non è chiaro lasciate pure un commento qui sotto,
Ciao!
Segui Daniele Alberti su Google+!

Nessun commento:

Posta un commento

Lascia un commento qui sotto, ti risponderò il prima possibile!

Related Posts Plugin for WordPress, Blogger...