-
Notifications
You must be signed in to change notification settings - Fork 0
/
testeur_pile_arduino_uno.ino
54 lines (47 loc) · 1.76 KB
/
testeur_pile_arduino_uno.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Mesure de la tension d'une pile à vide et en charge
// La mesure de la tension est faite sur l'entrée analogique A0
// Le contrôle de la mise en charge est faite via la sortie D7
//
// Lors de la lecture d'une valeur analogique, le convertisseur de l'Arduino
// retourne une valeur codée sur 10 bits, la valeur maximale est donc
// de 1023 et elle correspond à la tension de référence (5V)
void setup() {
// Initialisation de la communication série pour afficher les valeurs de la
// tension mesurée sur le moniteur série
Serial.begin(9600);
Serial.println("Initialisation");
// La référence par défaut est utilisée pour la mesure analogique.
// Cette référence a une valeur de 5V sur la carte Arduino Uno
analogReference(DEFAULT);
// La PIN D7 est une sortie tout ou rien qui contrôle l'état du transistor
// (bloqué ou saturé) afin de mesurer la tension de la pile à vide ou
// lorsque elle génère un courant
pinMode(7, OUTPUT);
}
void loop() {
float tensionVide;
float tensionCharge;
// Lecture de la tension à vide de la pile
// Bloque le transistor en positionnant la sortie D7 à LOW
digitalWrite(7, LOW);
delay(500);
tensionVide = analogRead(A0)*5.0/1023;
// Lecture de la tension en charge de la pile
// Sature le transistor en positionnant la sortie D7 à HIGH
digitalWrite(7, HIGH);
delay(500);
tensionCharge = analogRead(A0)*5.0/1023;
Serial.print("Tension à vide = ");
Serial.print(tensionVide);
Serial.println("V");
Serial.print("Tension en charge = ");
Serial.print(tensionCharge);
Serial.println("V");
if (tensionCharge > 1.2) {
Serial.println("Pile bonne");
} else if (tensionCharge > 1.0) {
Serial.println("Pile faible");
} else {
Serial.println("Pile à remplacer");
}
}