Mesurer une tension
1. Entre 0 et 5V
Article sponsorisé : écrit dans le cadre d'un partenariat avec le magasin de vente en ligne de composants électroniques Selectronic (qui a malheureusement fermé ses portes depuis), en tant que leur ambassadeur. Cet article est donc une adaptation de l'article original que j'avais écrit pour leur blog. Dans ce tutoriel vous trouverez donc des liens vers leurs produits, d'une excellente qualité : ce sont ceux que j'ai utilisé moi aussi, pour réaliser ce tutoriel.
Mesurer une tension ? Pourquoi faire ?
Dans l’univers des microcontrôleurs il y a la possibilité d’utiliser une infinité de capteurs afin de pouvoir interagir avec le monde qui entoure votre création. Selon le type de capteur, l’information qu’il renvoie peut être une tension variable. Dans cet article nous allons donc apprendre à mesurer une tension avec une carte Arduino UNO : d'abord entre 0 et 5V pour comprendre les principes de base, puis n'importe quelle tension d'un courrant continu.Connaissances pré-requises :
- Savoir afficher des informations sur la console série depuis votre Arduino.
- Avoir au minimum quelques bases en programmation, de préférence dans un langage tel que le C ou le C++ (ou avoir réalisé au minimum la "Partie 1 : Les bases de la programmation en C " du tutoriel pointé par le lien, c'est gratuit, il suffit de s'inscrire).
Matériel nécessaire :
- Une carte Arduino UNO (ou un clone compatible avec l'Arduino UNO) ;
- Un câble USB ;
- Une plaque d’essai sans soudure ;
- Des fils/jumpers Mâle-Mâle ;
- Une résistance 10KΩ (marron-noir-noir-rouge ou marron-noir-orange);
- Une résistance 220Ω (rouge-rouge-noir-noir);
- Un ordinateur avec l'environnement Arduino installé dessus.
Optionnellement :
- Un boîtier de protection pour Arduino UNO ;
- Un multimètre ;
- Une pile 9V et une ou deux piles 1.5V, ou une alimentation de laboratoire ;
Commençons par mesurer une tension comprise entre 0 et 5V :
La carte Arduino UNO est capable de mesurer une tension entre 0 et 5V très facilement, il suffit d’utiliser directement une de ses entrées analogiques (A0 à A5). Téléversez le code suivant sur votre Arduino :
#define ENTREE_ANALOGIQUE 1
void setup()
{
// Initialisation de la connexion série avec votre moniteur
Serial.begin(115200) ;
}
void loop()
{
// lecture de la valeur analogique à mesurer
int valeurLue = analogRead(ENTREE_ANALOGIQUE) ;
// conversion de la valeur lue en une tension en centi-Volts
float tensionLue = map(valeurLue, 0, 1023, 0, 500);
// envoi pour affichage sur le moniteur série de la tension mesurée
Serial.print(
Tension :) ;
Serial.print(tensionLue / 100.0) ; // Afficher la valeur en Volts
Serial.println(
Volts) ;
// attente d’une seconde (1000 millisecondes) entre deux mesures & affichages
delay(1000) ;
}
Une fois le code téléversé, il suffit de brancher la console et à l’aide de deux fils/jumpers mâle-mâle, mesurer une tension entre une borne GND (masse/0V) de la carte et la borne A1, en respectant les polarités :
Sur la console, quelque chose du genre s’affichera :
Tension : 1.53 Volts
Tension : 1.53 Volts
Tension : 1.53 Volts
Tension : 1.53 Volts
Bingo ! C’est sympa hein !
En essayant avec deux piles 1.5V en série par exemple, la tension mesurée sera donc d’environ 3V. Veillez à bien respecter les polarités (le « - » toujours sur le GND).
Attention : ne jamais dépasser les 5V à mesurer dans cette configuration, sinon vous risquez de faire griller de façon définitive et irréversible votre carte Arduino UNO !
Comment ça marche ?
La carte Arduino mesure la tension entre la masse et ses entrées analogiques via un convertisseur Analogique – Numérique : dans cet exemple il prend la tension soumise à l’entrée analogique A1, la compare à une tension de référence et calcule une valeur proportionnelle comprise entre 0 et 1023. C’est cette valeur que nous retrouvons dans la variable valeurLue au moment de la lecture :
Pour retrouver la tension correspondante il suffit alors d’appliquer une règle de trois en faisant ainsi, en quelque sorte « le chemin dans l’autre sens » :
Nous cherchons donc à déterminer la valeur de tensionLue. En utilisant cette règle de trois, nous obtenons facilement :
Or, la carte Arduino fonctionne avec une tension d’environ 5V (fournie par l’USB ou le régulateur interne), et par défaut :
Comme :
Alors :
Pour éviter de dérouler la formule d’une règle de trois à chaque fois (même si ce n’est pas très compliqué), c’est exactement ce que fait déjà la fonction :
La valeur 500cV (centi-Volts) est utilisée au lieu de 5V pour avoir une précision de 0.01 Volt au moment de l’affichage. C’est une astuce qui permet d’utiliser quand même la fonction map(), qui ne gère que des valeurs entières. En d’autres mots, si vous mettez 5V au lieu de 500cV, à l’affichage vous n’aurez alors que 0, 1, 2, 3, 4 ou 5 Volts, sans chiffres après la virgule, ce qui est loin d’être précis !
Pour plus de clarté, le graphique suivant tente d’illustrer le principe :
Une question surgit souvent au vu de tout cela : pourquoi l’Arduino ne fournit pas directement une tensionLue en Volts au lieu de devoir se « fatiguer » à faire toutes ces conversions ?
La réponse est relativement simple : c’est parce que la tension de référence n’est pas toujours de 5V. En fait l’Arduino offre la possibilité de choisir la tension de référence qui convient le mieux. C’est une utilisation un peu plus avancée que nous allons entrevoir plus loin dans de ce tutoriel.
Si vous avez tenté de valider votre lecture avec votre multimètre/voltmètre vous avez certainement constaté que la valeur lue ne correspond pas forcément, lequel a raison ?
Le multimètre, à moins d’être d’une piètre qualité, aura certainement plus raison que votre Arduino dans cette configuration. Pourquoi ? Si vous mesurez la tension de référence réelle (entre la borne +5V et GND de votre Arduino UNO) vous constaterez qu’elle n’est pas de 5V pile, mais une valeur comprise entre 4.5V et 5.5V. C’est la faute de votre ordinateur, qui ne fournit pas toujours une tension très stable sur ses ports USB.
Pour rendre la mesure plus fiable il faudrait donc mesurer cette tension à l’aide de votre multimètre et ajuster la référence (dans la fonction map()) pour tenir compte de cette différence. Par exemple, en supposant que votre multimètre affiche 4.68V (entre +5V & GND), alors il faut modifier votre code comme suit :
Une fois le nouveau code téléversé, si vous refaites votre mesure, cette fois cela devrait correspondre mieux avec la lecture sur votre multimètre.
Malheureusement, cette façon de procéder n’est pas très pratique parce qu’au final il est difficile de maîtriser la tension d’alimentation de la carte Arduino UNO et donc cette tension de référence. Dans la suite de ce tutoriel, vous allez apprendre comment faire des mesures plus précises de n'importe quelle tension, sans dépendre de cette tension difficile à maîtriser...
Un petit exercice ?
Allez, c’est tout simple, juste pour vérifier que c’est bien compris….
En supposant que la tension de référence est de 5V :- Pour une valeurLue = 511, à quelle tension cela correspond ?
- Quelle valeurLue obtient-t-on pour une tension mesurée tensionLue de 4V ?
Réponses :
Ne trichez pas, essayez de trouver avant de regarder !- 2.5V. En y regardant bien, c’est la moitié de l’échelle numérique (511 ≈ 1023 / 2), donc la moitié de 5V !
-
Il faut appliquer la règle de trois "dans l’autre sens", pour trouver valeurLue au lieu de tensionLue, donc :
Félicitations : vous savez mesurer tout simplement une tension entre 0 et 5V, n’hésitez pas à faire des tests, avec ou sans capteurs, pour bien comprendre le principe. Dans la suite, vous apprendrez à mesurer une tension supérieure à 5V : restez connectés !
Commenter sur le forum |
|
Tweeter | |