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.

AttentionLimite 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.

FondamentalLes 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éthodeSché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.

Un testeur de piles avec une carte ArduinoInformations[1]

MéthodeLe 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)}\).

1
// Définition des variables
2
int ledRouge = 2 ;  // Numéro de la borne alimentant la DEL Rouge
3
int ledVerte = 3 ;  // Numéro de la borne alimentant la DEL Verte
4
int niveau ;  // Variable recueillant le niveau lu sur l'entrée A0
5
float uPile ; // Tension à vide de la pile
6
float uSeuil ;  // Limite pile usée / pile en bon état
7
8
void setup() {
9
  // put your setup code here, to run once:
10
  uSeuil = 1.30 ; // On fixe la valeur de la tension de seuil
11
  // Définition des bornes en sortie (OUTPUT)
12
  pinMode(ledRouge, OUTPUT);
13
  pinMode(ledVerte, OUTPUT);
14
  // On éteint tout
15
  digitalWrite(ledRouge, 0) ;
16
  digitalWrite(ledVerte, 0) ;
17
}
18
19
void loop() {
20
  // put your main code here, to run repeatedly:
21
  niveau = analogRead(A0) ; // Lecture du signal sur l'entrée A0
22
  uPile = niveau * 5. / 1023. ; // Calcul de la tension lue aux bornes de la pile
23
  if (uPile >= uSeuil) { // Comparaison avec la tension définie comme seuil
24
    digitalWrite(ledVerte, 1) ;  // On allume la DEL verte
25
    digitalWrite(ledRouge, 0) ;  // On éteint la DEL rouge
26
  }
27
  else {
28
    digitalWrite(ledVerte, 0) ;  // On éteint la DEL verte
29
    digitalWrite(ledRouge, 1) ;  // On allume la DEL rouge
30
  }
31
}

ComplémentChangement de pile

Modifier le programme pour lui permettre de tester des piles plates de 4,5 V.

Pile 4,5 V