Mesurer une tension (CAN)
Principe
La mesure d’une tension par un microcontrôleur est réalisée en interne par un Convertisseur Analogique-Numérique (CNA).
Ce type de conversion est importante en sciences physique. Par exemple, elle permet d’obtenir la mesure d’une grandeur physique provenant d’un capteur sous la forme d’une tension électrique.

Entrées analogiques de l’Arduino Uno R3
Le microcontrôleur de l’Arduino UNO intègre 6 entrées analogiques disponibles sur les broches A0 à A5. En réalité, ces entrées analogiques sont multiplexées sur un seul CNA.
La tension analogique d’entrée doit-être comprise entre \(0\rm~V\) et \(V_{REF}\) (tension de référence égale à \(5\rm~V\) par défaut).
Le conversion analogique numérique renvoie un nombre \(N\) sous la forme d’un entier naturel sur 10 bits tel que :
La résolution analogique (quantum) est donc :
Avertissement
La tension appliquée sur les entrées analogiques doivent être strictement comprise entre \(0\rm~V\) et \(5\rm~V\) sous peine de détruire le microcontrôleur.
Le temps de conversion, de l’ordre de \(100\rm~\mu s\), ne peut être négligé dans certaines applications.
Montage

Montage potentiométrique sur l’entrée analogique A0
Un potentiomètre (pont diviseur de tension) est branché entre la broche d’alimentation 5V
et la broche de masse GND
. Il délivre donc une tension réglable en \(0\rm~V\) et \(5\rm~V\) sur la broche A0
.
Programme Arduino
Le programme ci-dessous réalise une lecture de l’entrée A0
puis affiche la valeur la tension correspondante (en volt) dans le moniteur série.
/*
* Lecture d'une tension sur l'entrée analogique A0
* Affichage sur le port série.
* David THERINCOURT - 2025
*/
int N; // Entier lu sur A0 entre 0 et 1023 (10 bit)
float Vcc = 5; // Tension d'alimentation (tension de référence)
float tension; // La tension calculée à partir de N
void setup() {
Serial.begin(9600); // Paramétrage port série
}
void loop() {
N = analogRead(A0); // Lecture valeur sur A0
tension = N*Vcc/1023.0; // Calcul de la tension en volts
Serial.println("------"); // Debut affichage
Serial.print("N = "); // ...
Serial.println(N); // ...
Serial.print("Tension = "); // ...
Serial.println(tension); // ...
delay(1000); // temporisation de 1 s
}

Résultats dans le moniteur série
Quelques explications :
La fonction
analogRead(A0)
retourne un entierN
sur 10 bits compris entre0
(pour \(0\rm~V\)) et1023
(pour \(5\rm~V\)).L’expression
N*Vcc/1023.0
donne la valeur de la tension en volt.L’écriture
1023.0
, sous la forme d’un flottant, est importante afin d’éviter une division entière !
Note
Pour une meilleure précision, il serait judicieux de mesurer au voltmètre la valeur réelle de tension de référence sur les broches 5V
, IOREF
ou AREF
. Puis de reporter cette valeur dans le programme.
Applications
Interface avec un capteur analogique.
Un potentiomètre est un capteur de position.