/* * Programme de benchmark de piles LR6, AAA, CR2032 ou tout autre piles inférieur à 5v */ /* Valeur de la résistance de charge */ const float charge_resistor = 22; /* Broche de mesure */ const byte analog_pin = A0; /* Macro de conversion valeur numérique -> tension en volts */ //#define ADC_TO_VOLTS(value) ((value / 1023.0) * 3.3) #define ADC_TO_VOLTS(value) ((value / 1023.0) * 5.0) /* setup() */ void setup() { /* Initialise le port série */ Serial.begin(9600); /* Si vous voulez mesurer des piles de moins de 3.3v il est plus précis d'utiliser AREF comme référence * et de mettre un câble entre +3v3 et AREF */ //analogReference(EXTERNAL); } /* loop() */ void loop() { /* Attend la mise en place d'une pile >1 volts = 200*/ while(analogRead(analog_pin) < 1); /* Compteur de temps */ unsigned int time = 0; /* Résultat de analogRead() */ unsigned int analog; /* Mesure la batterie jusqu'a ce quelle atteigne 1 volts*/ while((analog = analogRead(analog_pin)) >= 1) { /* Mesure de la tension de la batterie (en volts) */ float vbat = ADC_TO_VOLTS(analog); /* Calcul du courant traversant la résistance (en mA) */ float ibat = (vbat * 1000) / charge_resistor; // I = U / R /* Calcul de la puissance de la batterie (en mW) */ float pbat = vbat * ibat; // P = U * I /* Affiche les résultats au format CSV */ Serial.print(time); Serial.print(", analog="); Serial.print(analog); Serial.print(", volt="); Serial.print(vbat); Serial.print("V, intensite="); Serial.print(ibat); Serial.print(" mA, puissance="); Serial.print(pbat); Serial.println(" mW"); /* Incrémente le compteur de temps */ ++time; /* Attend une seconde */ delay(1000); } }