Main

Apprendre : Accueil | Exemples | Fondements? | Bidouillage? | Liens?
Exemples > Pour commencer

Lire la valeur de la tension aux bornes d'un potentiomètre et afficher le résultat dans le Terminal Série


Cet exemple vous montre comment lire la tension venant du monde physique présente sur une entrée analogique de la carte Arduino, en utilisant un potentiomètre. Un potentiomètre est un composant mécanique simple qui fait varier la résistance entre ses broches lorsque l'on tourne son axe. En connectant un potentiomètre à une tension et vers une entrée analogique de la carte Arduino; il est possible de mesurer la résistance du potentiomètre en tant que valeur analogique.

Dans cet exemple, vous allez visualiser l'état de votre potentiomètre après avoir établit une communication série entre votre carte Arduino et votre ordinateur.

Matériel requis

  • une plaque d'essai pour montages sans soudures
  • des straps
  • une résistance variable linéaire de 10 KOhms,

Le circuit à réaliser

Image créée avec le logiciel Fritzing. Pour plus de circuits d'exemple, voir la page des projets Fritzing.

Pour réaliser ce circuit : Connecter avec 3 fils les broches du potentiomètre (ou résistance variable) à la carte Arduino :

  • le premier connecte une des broches externe à la masse (0V)
  • le second connecte l'autre broche externe au 5V.
  • le troisième relie la broche centrale du potentiomètre à la broche analogique 0 de la carte Arduino.

Comment çà marche ?

En tournant l'axe du potentiomètre, on modifie la résistance entre la broche médiane et les broches externes du potentiomètre. Ceci a pour effet de modifier la tension sur la broche de sortie du potentiomètre (l'intérieur du potentiomètre réagissant en diviseur de tension) :

  • quand la résistance entre la broche médiane et la broche externe reliée au 5V est nulle (et donc la résistance entre la broche centrale et la broche externe reliée au 0V vaut 10 kiloOhms), la tension de la broche centrale vaut 5V.
  • à l'inverse quand la résistance entre la broche médiane et la broche externe reliée au 0V est nulle (et donc la résistance entre la broche centrale et la broche externe reliée au 5V vaut 10 kiloOhms), la tension de la broche centrale vaut 0V.
  • en dehors de ces deux position extrêmes, la tension sur la broche de sortie prend des valeurs variable entre le 0V et le 5V en fonction de la position de l'axe.

C'est cette tension analogique (= variable) que l'on va lire sur l'entrée analogique de la carte Arduino.

La carte Arduino dispose d'un circuit intégré interne (présent dans le microcontrôleur de la carte), appelé "convertisseur analogique-numérique" qui convertit la tension en volts présente à son entrée en une valeur numérique comprise entre 0 et 1023 (soit une échelle de 10 bits), valeur très précisément proportionnelle à la tension présente à l'entrée :

  • quand l'axe du potentiomètre est tourné "à fond" dans un sens, la tension de la broche centrale vaut 5V et le convertisseur analogique-numérique renvoie la valeur maximale soit 1023.
  • quand l'axe du potentiomètre est tourné "à fond" dans l'autre sens, la tension de la broche centrale vaut 0V et le convertisseur analogique-numérique renvoie la valeur minimale soit 0.
  • quand l'axe du potentiomètre est en position intermédiaure, la tension de la broche centrale varie entre 0 et 5V et le convertisseur analogique-numérique renvoie la valeur proportionnelle à la tension comprise entre 0 et 1023.

Note : la précision de la mesure est de l'ordre de 5V/1023 = 0.0048 soit 5millivolts environ, ce qui est très précis et largement suffisant pour l'utilisation des nombreux capteurs analogiques disponibles et utilisables pour un robot, une station météo, mini-oscilloscope, etc...

Mise en oeuvre du programme

Programmation de la carte Arduino

Préparation du Terminal côté PC dans le logiciel Arduino

  • Côté PC, il faut ouvrir la fenêtre terminal de l'IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».
  • La fenêtre « Terminal » s'ouvre alors :
  • Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :

Résultat obtenu

Lorsque vous ouvrez la fenêtre du Terminal Série du logiciel Arduino (voir ci-dessus), vous verrez s'afficher une série de valeurs comprises entre 0 et 1023, directement corrélées à la position de l'axe du potentiomètre. Lorsque vous tournez l'axe, les valeurs affichées varient instantanément. A noter qu'il s'agit d'une valeur brute que l'on pourra aisément convertir en volt ou autre grandeur voulue par simple calcul.

Schéma théorique du montage

Voici le schéma théorique du montage :

Explications du programme

Au niveau de la fonction setup ()

Dans le programme ci-dessous, la toute première chose que l'on fait est d'initialiser la communication série entre votre ordinateur et la carte Arduino, à 9600 bits de données par seconde à l'aide de l'instruction Serial.begin :

Serial.begin(9600);

Au niveau de la fonction loop()

Ensuite, dans la fonction loop, vous devez créer une variable pour stocker la valeur de la mesure analogique en provenance du potentiomètre (qui pourra prendre une valeur entre 0 et 1023, parfait pour une variable de type int). Dans cette variable, nous mettrons la valeur obtenue à l'aide de l'instruction analogRead qui renverra la valeur de la tension sur la broche analogique 2 symbolisée par A2 :

int sensorValue = analogRead(A0);

Les broches analogiques sont identifiées par le symbole A0, A1...A5.

Enfin, on réalise l'affichage de l'information obtenue dans la fenêtre du Terminal Série en tant que valeur décimal.

Ceci est réalisé à l'aide de la commande Serial.println dans la dernière ligne du code

Serial.println(sensorValue, DEC);

Le code du programme

A copier/coller dans votre logiciel Arduino.


/*

lit la tension analogique sur la broche analogique 0
et affiche le résultat dans le moniteur série.

cet exemple est dans le domaine public
traduction française par X. HINAULT - www.mon-club-elec.fr

 */


void setup() {
  Serial.begin(9600); // initialise la communication série
  // vérifier que le débit utiliser est le même dans le Terminal Série
}

void loop() {
  int sensorValue = analogRead(A0); // lit la valeur analogique sur la broche A0
  // et met le résultat dans la variable

  Serial.println(sensorValue, DEC); // affiche la variable dans le Terminal Serie

}
 

Voir également

La documentation des composants utilisés

La documentation des instructions utilisées :

La documentation des stratégies de programmation utilisées

Les autres exemples suivants :

  • Le programme minimum : Le code minimum nécessaire pour un programme Arduino.
  • Faire clignoter une LED: Allumer puis éteindre successivement une LED. (Broche numérique en mode SORTIE)
  • Lire l'état d'un bouton poussoir : Lire l'état d'un bouton poussoir et afficher le résultat obtenu dans la fenêtre Terminal Série du logiciel Arduino. (Broche numérique en mode ENTREE)
  • Mesure Analogique visualisée sur port Série : Lire la tension aux bornes d'un potentiomètre et afficher la valeur obtenue dans la fenêtre Terminal Série du logiciel Arduino. (Broche en entrée ANALOGIQUE)
  • Variation lumineuse: Montre comment utiliser la "sortie analogique" (impulsion PWM) pour faire varier l'intensité lumineuse d'une LED

Commentaires utilisateurs

  • La conversion analogique-numérique est un sujet passionnant qui permet de vraiment réaliser l'interface entre le monde "numérique" et le monde physique.

Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0. Cette page est la traduction française commentée de la page originale : http://arduino.cc/en/Tutorial/AnalogReadSerial