La référence analogique AREF | Arduino Shop et Tutoriels
Objectifs
-
- La résolution des convertisseurs ADC.
- Les références internes de comparaison dans Arduino.
- La référence externe AREF.
Matériel requis.
Espagne | Espagne | Mexique | |
---|---|---|---|
Kit de démarrage UNO | Kit de démarrage UNO | ||
Kit de démarrage MEGA | |||
Kit de démarrage MEGA | Kit de démarrage MEGA | Kit de démarrage MEGA | MEGA Starter Kit |
La conversion analogique-numérique
Dans une session précédente, nous avons déjà dit que l’Arduino possède 6 convertisseurs analogiques-numériques (ADC) qui sont les broches A0 à A5, et nous avons dit qu’ils sont capables de convertir des valeurs de tension jusqu’à un maximum de 5V, qui est la tension de référence sur l’Arduino.
Nous avons également dit qu’une des caractéristiques essentielles du convertisseur est son nombre de bits, qui définit la finesse avec laquelle nous pouvons quantifier cette conversion en numérique. Dans le cas de l’Arduino, il y a 10 bits qu’il manipule dans les portes analogiques, ce qui signifie que sa résolution est de 210 =1 024 valeurs possibles.
Plus cette résolution est élevée, meilleure est la capacité à approcher la valeur réelle dont on cherche la conversion.
- Il est important de comprendre que la conversion en numérique d’un signal analogique est toujours une approximation, et même dans le cas peu probable où la valeur analogique est exactement ce que le convertisseur nous dit, nous aurons toujours une incertitude.
- Sur un convertisseur Arduino avec une résolution de 10 bits, chaque pas de mesure est de 5V/1024 = 0,0048828125 V, un peu moins de 5mV, ce qui signifie qu’il ne peut pas discriminer des valeurs de tension dont la différence est inférieure à cela.
Sans entrer dans trop de détails, il convient de dire que ce que fait un convertisseur ADC, c’est de comparer successivement le signal que l’on veut quantifier en entrée, avec une tension de référence par rapport à laquelle il effectue des comparaisons.
En d’autres termes, un ADC ne fournit pas des valeurs absolues, mais fournit une comparaison quantifiée par rapport à une valeur de référence. Ainsi, dans la session du capteur de température TMP36, nous avons calculé la tension d’entrée sur l’une des broches analogiques comme la lecture multipliée par un rapport entre la valeur maximale de l’entrée 5V et le maximum mesuré par le convertisseur 1024.
Comme les signaux que nous manipulons normalement sur l’Arduino sont autour de 5V, la comparaison avec 5V est la chose raisonnable à faire, parce que l’industrie a également toute une gamme de capteurs dont la valeur maximale retourne 5V.
Mais de plus en plus, l’industrie produit de l’électronique 3,3V, l’Arduino DUE lui-même en est un exemple, et si nous utilisons nos ADC pour numériser des signaux 3,3V de pointe, nous perdons en précision et en résolution, car nous gaspillons une partie des comparaisons possibles, en fait un tiers.
En pratique, 3,3V étant la tension d’entrée maximale par rapport à 5V, cela signifie que nous n’aurons jamais de lectures supérieures à 1 024 * 3,3 /5 = 675 et que nous aurons toujours des pas d’entrée de 5mV.
Mais si le convertisseur est un comparateur de tension, si nous pouvions changer la valeur de tension à laquelle nous comparons en 3,3V, les pas seraient de 3,3V/1024 = 0,00322265625 ou 3,2 mV. C’est-à-dire que nous avons amélioré la résolution de notre convertisseur et sans dépenser un centime.
Donc, dans une situation idéale, la tension de comparaison par rapport à laquelle nous effectuons la conversion de l’analogique au numérique, doit être la valeur maximale possible du signal d’entrée. Parce que c’est à ce moment-là que nous aurons la meilleure résolution possible avec ce convertisseur.
Les gars d’Arduino, ils étaient conscients de ce problème et c’est pourquoi ils ont inclus une broche externe, que nous n’avions pas utilisée jusqu’à présent, qui permet de connecter une tension de référence externe, à laquelle le signal que nous lisons sur nos portes A0 à A5 sera comparé.
Cette broche est étiquetée AREF (référence analogique) et se trouve deux broches au-dessus de la broche numérique 13:
Utilisation de la référence analogique externe
La question de la référence analogique à laquelle nous comparons les échantillons dans les portes A0-A6 est si importante que l’Arduino fournit plusieurs tensions internes de comparaison que nous pouvons activer pour changer la référence.
Pour activer une référence interne de 1,1V sur un Arduino UNO, utilisez l’instruction
analogReference(INTERNAL);
Si vous utilisez plutôt un MEGA, vous pouvez exclusivement utiliser :
analogReference(INTERNAL1V1);
analogReference(INTERNAL2V56);
Ce qui activera des références de 1,1V et 2,56V respectivement.
Si vous utilisez la touche DEFAULT, vous revenez à la référence standard de 5V sur pratiquement tous les modèles d’Arduino.
analogReference(DEFAULT);
- Méfiez-vous de la référence DEFAULT, car sur le DUE elle signifie 3,3V car c’est sa tension de référence. Assurez-vous-en avant de l’utiliser joyeusement.
Lorsque nous connectons une tension de référence à la broche AREF, nous devons dire à l’Arduino que nous voulons l’utiliser. Et nous le faisons avec l’instruction
analogReference(EXTERNAL);
Utiliser votre tête lorsque vous modifiez la référence analogique, car si vous ne faites pas attention, vous allez manger l’Arduino pour le dîner. Il est relativement facile de faire des erreurs avec certaines actions qui semblent innocentes :
- Assurez-vous que si vous utilisez une référence externe, les GND de l’Arduino et de la référence sont les mêmes en les reliant ensemble. Ne pas le faire a un très mauvais pronostic au premier changement.
- N’utilisez en aucun cas moins de 0v sur la broche AREF (OU un signal qui varie et peut avoir des transitoires négatifs) car le résultat est imprévisible.
- Si vous connectez une tension de référence externe, n’appelez pas analogRead() avant d’exécuter l’instruction analogReference(EXTERNAL), car vous allez court-circuiter le signal de comparaison interne à la tension externe à AREF, et éventuellement en profiter pour acheter ce nouvel Arduino que vous avez tant envie d’acheter.
- Ne connectez pas à AREF moins de 1V ou plus de 5V, vous ne pouvez pas juste mettre 12 et espérer qu’il vous donne une valeur.
Circuit de test
Nous allons mettre en place un circuit de test avec un afficheur I2C comme nous l’avons vu dans la session… et un potentiomètre. Mais cette fois, nous allons connecter aux extrémités du potentiomètre GND et 3,3V pour que dans la broche centrale que nous lirons avec A1, elle ne puisse jamais dépasser 3,3V en simulant un capteur avec cette valeur maximale.
En tournant le potentiomètre, nous allons lire une chute de tension entre 0V et 3,3V. et la lecture de la broche A1, donnera des valeurs comprises entre 0 et 670, puisque nous sommes dans le cas que nous avons défini un peu plus haut.
Le programme va simplement lire la broche analogique A1 et envoyer sa valeur à un afficheur I2C de 16 caractères par deux lignes comme nous l’avons vu dans la session….
Voici une mini-vidéo avec les lectures du potentiomètre
Si nous connectons maintenant la tension interne de 3,3V de l’Arduino à la broche AREF, nous aurons un circuit comme celui-ci :
Voyons maintenant le programme :
Voici une vidéo avec la différence :
Résumé de la session
Dans ce cours d’arduino, nous avons appris ce qui suit :
-
- Nous avons insisté sur la question de la conversion analogique-numérique et nous avons vu qu’il s’agit essentiellement d’une comparaison par rapport à une valeur de référence.
- Nous avons vu que nous pouvons utiliser une valeur de tension interne ou externe, autre que l’habituel 5V.
- Nous connaissons maintenant les instructions précises pour activer cette référence externe et les précautions à prendre lors de son utilisation.
.