69 lines
1.8 KiB
C++
Executable File
69 lines
1.8 KiB
C++
Executable File
/*
|
|
* 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);
|
|
}
|
|
}
|