Les expériences de John Errington avec un Arduino
On novembre 28, 2021 by adminMesure précise de la tension avec la carte Arduino.
La gamme de microcontrôleurs Arduino fournit des entrées analogiques qui peuvent être utilisées pour mesurer la tension. Nous pouvons utiliser cela pour construire un voltmètre.
La fonction analogRead() lit la tension et la convertit en un nombre compris entre 0 et 1023.
Le tutoriel Arduino (1) http://arduino.cc/en/Tutorial/ReadAnalogVoltage comporte cet exemple :
C’est FAUX ! Pour un meilleur résultat, utilisez (sensorValue + 0,5) * 5,0 / 1024,0 – voir l’explication ici
Cela nous amène à croire qu’une lecture de 0 correspond à une entrée de 0,000V ; et 1023 correspond à une tension d’entrée de 5,000 volts. Ceci n’est pas tout à fait vrai. Regardons la fiche technique et voyons ce qu’elle nous dit.
La puce ATMEGA utilisée sur l’Arduino possède des entrées analogiques qui peuvent être utilisées pour mesurer précisément la tension
Le microcontrôleur Arduino est pourvu d’un convertisseur analogique-numérique (CAN) de type approximation successive qui a la spécification suivante. Les références indiquées entre parenthèses ainsi (2 : 26.1) renvoient aux sections de la fiche technique de l’AtMega 2560.
(2 : 26.1) : ATMega328 et 32U4 ont des valeurs similaires.
Ces spécifications nous indiquent que l’Arduino est capable de mesurer des tensions avec une précision
de ± 2 LSB – donc l’erreur maximale est de 2 bits (4 décimales) sur 10 bits (1024 décimales)
Donc la précision la plus défavorable du convertisseur est de 4 / 1024 ou 1 partie sur 256 soit 0,25%.
Mais la limite de la précision de mesure dépend de la référence de tension utilisée.
L’Arduino a ses propres références de tension – mais elles ne sont pas très précises
La puce – selon le type – est fournie avec QUELQUES unes des tensions de référence suivantes (6)
DEFAULT : la référence analogique par défaut de 5 volts (sur les cartes Arduino 5V) ou 3.3 volts (sur les cartes Arduino 3,3V)
INTERNE : une référence intégrée, égale à 1,1 volt sur l’ATmega168 ou l’ATmega328 et à 2,56 volts sur les cartes à puce ATmega8 et 32U4.
Elle est produite en interne par l’amplification de la référence 1,1V. 2,56V est juste une valeur « typique ».
EXTERNE : la tension appliquée à la broche AREF (0 à 5V seulement). (Le MicroPro 32U4, le NodeMCU et l’ESP32 n’ont pas de broche pour une référence externe – voir ci-dessous pour plus d’informations.)
La précision de la référence par rapport à laquelle la tension est mesurée – en utilisant l’une des références ci-dessus – n’est au mieux que de 5,25 – 5,0/5,0 * 100 = 5% – bien pire que les 0,25% que fournit l’ADC. Il est clair que si nous souhaitons mesurer des tensions avec la précision fournie par l’Arduino, les références intégrées ne sont pas assez bonnes. Le diagramme ci-dessous montre ces erreurs par rapport à une référence de 4,096V décrite ci-dessous.
Laisser un commentaire