Mesurer une tension sur une entrée analogique - Testeur de pile
Objectif
On utilise une des entrées analogiques de la carte Arduino pour mesurer une tension et réaliser un testeur de pile.
Le montage et le programme doit permettre d'allumer une LED verte si la tension est correcte et une LED rouge dans le cas contraire.
Attention : Limite de la tension en entrée
Il ne faut pas appliquer une tension supérieure à 5 volts sur une entrée analogique (ou numérique) de la carte Arduino.
Il y a risque de détérioration.
Fondamental : Les entrées analogiques de l'Arduino
La commande permettant de lire la valeur d'une entrée analogique est analogRead(A0); où A0 est l'entrée analogique lue.
Le convertisseur analogique/numérique de l'Arduino fonctionnant sur 10 bits, la commande renvoie une valeur comprise entre 0 et 1023 en fonction de la valeur de la tension appliquée à l'entrée A0 comprise entre 0 V et 5 V.
Méthode : Schéma du montage avec une pile ronde de 1,5 V
La sortie numérique 2 sert à alimenter la DEL rouge.
La sortie numérique 3 sert à alimenter la DEL verte.
L'entrée analogique A0 sera reliée à la borne positive de la pile à tester.
La borne négative de la pile sera reliée à une masse (GND) de la carte Arduino.
Méthode : Le programme correspondant
On retrouve dans ce programme les instructions permettant d'alimenter ou non une DEL via une sortie numérique.
Deux nouvelles instructions apparaissent :
lecture d'une tension sur l'entrée analogique A0 : analogRead(A0) ;
l'utilisation des conditions et tests pour allumer l'une ou l'autre des deux DEL.
Rappel du fonctionnement d'une entrée analogique :
Le microcontrôleur convertit la tension appliquée à l'entrée analogique en un niveau compris entre 0 et 1023 (0 pour 0 volt et 1023 pour 5 volts). La fonction analogRead(A0) renvoie la valeur de ce niveau.
Pour connaître la valeur de la tension appliquée à l'entrée A0, on utilise la relation \(U=\dfrac{5}{1023} \times \text{analogRead(A0)}\).
// Définition des variables
int ledRouge = 2 ; // Numéro de la borne alimentant la DEL Rouge
int ledVerte = 3 ; // Numéro de la borne alimentant la DEL Verte
int niveau ; // Variable recueillant le niveau lu sur l'entrée A0
float uPile ; // Tension à vide de la pile
float uSeuil ; // Limite pile usée / pile en bon état
void setup() {
// put your setup code here, to run once:
uSeuil = 1.30 ; // On fixe la valeur de la tension de seuil
// Définition des bornes en sortie (OUTPUT)
pinMode(ledRouge, OUTPUT);
pinMode(ledVerte, OUTPUT);
// On éteint tout
digitalWrite(ledRouge, 0) ;
digitalWrite(ledVerte, 0) ;
}
void loop() {
// put your main code here, to run repeatedly:
niveau = analogRead(A0) ; // Lecture du signal sur l'entrée A0
uPile = niveau * 5. / 1023. ; // Calcul de la tension lue aux bornes de la pile
if (uPile >= uSeuil) { // Comparaison avec la tension définie comme seuil
digitalWrite(ledVerte, 1) ; // On allume la DEL verte
digitalWrite(ledRouge, 0) ; // On éteint la DEL rouge
}
else {
digitalWrite(ledVerte, 0) ; // On éteint la DEL verte
digitalWrite(ledRouge, 1) ; // On allume la DEL rouge
}
}
Complément : Changement de pile
Modifier le programme pour lui permettre de tester des piles plates de 4,5 V.