Bonjour @cilodix
Lorsque vous faites une lecture de la sortie du convertisseur analogique vers numérique (ADC) par la fonction analogRead() vous effectuez un échantillonnage de la tension présentée sur la broche choisie, par exemple A0. Cette valeur numérique est entre 0 et 1023 car l’échantillonnage se fait sur 10 bits sur un UNO.
Ensuite on peut choisir quelle est la référence de tension pour l’ADC, c’est à dire avec quelle tension maximale il fait son échantillonnage par la fonction analogReference(). Si on ne dit rien, par défaut ce sera 5 volts sur un UNO.
Donc quand la lecture de l’ADC dit 0 c’est qu’on avait 0 Volt sur la broche et quand la lecture de l’ADC dit 1023 c’est qu’on avait 5 Volt sur la broche et entre les deux c’est une droite.
Une formule qui permet de passer donc de la valeur numérique lue vers la tension est la fonction affine Y = aX+ b passant par ces deux points (0,0) et (1023,5).
Comme on passe par l’origine b=0 et la pente c’est 5.0 / 1023.0 d’où la formule
valeurCapteur * 5.0 / 1023.0;
(Il y a un débat entre les puristes pour savoir s’il vaut mieux diviser par 1024 ou 1023. Mon point de vue c’est que les deux donnent une évaluation possible de la valeur d’origine puisqu’on a échantilloné. Chaque valeur numérique corrrespond en réalité à toute une plage de tension d’origine et on n’a pas une fonction affine mais une fonction en escalier discontinue par morceaux). La division par 1023 est sympathique car elle donne un joli 5V tout rond si vous lisez 1023 donc c’est ce que je préfère, mais faut bien se souvenir que la valeur calculée a une incertitude d’environ 5mV.)
2 |
0 |