Table des matières:

La broche Arduino AREF : 6 étapes
La broche Arduino AREF : 6 étapes

Vidéo: La broche Arduino AREF : 6 étapes

Vidéo: La broche Arduino AREF : 6 étapes
Vidéo: Как управлять приводом с помощью Arduino - Robojax 2024, Juillet
Anonim
La broche Arduino AREF
La broche Arduino AREF

Dans ce didacticiel, nous verrons comment mesurer des tensions plus petites avec une plus grande précision en utilisant les broches d'entrée analogiques de votre Arduino ou de votre carte compatible en conjonction avec la broche AREF. Cependant, nous procéderons d'abord à une révision pour vous mettre au courant. Veuillez lire entièrement cet article avant de travailler avec AREF pour la première fois.

Étape 1: Révision

Révision!
Révision!

Vous vous souviendrez peut-être que vous pouvez utiliser la fonction Arduino analogRead() pour mesurer la tension d'un courant électrique à partir de capteurs et ainsi de suite en utilisant l'une des broches d'entrée analogique. La valeur renvoyée par analogRead() serait comprise entre zéro et 1023, zéro représentant zéro volt et 1023 représentant la tension de fonctionnement de la carte Arduino utilisée.

Et quand nous disons la tension de fonctionnement, il s'agit de la tension disponible pour l'Arduino après les circuits d'alimentation. Par exemple, si vous avez une carte Arduino Uno typique et que vous l'exécutez à partir de la prise USB - bien sûr, il y a 5 V disponible pour la carte à partir de la prise USB de votre ordinateur ou concentrateur - mais la tension est légèrement réduite à mesure que le courant s'enroule autour du circuit au microcontrôleur - ou la source USB n'est tout simplement pas à la hauteur.

Cela peut facilement être démontré en connectant un Arduino Uno à un port USB et en mettant un multimètre pour mesurer la tension sur les broches 5V et GND. Certaines cartes reviendront aussi bas que 4,8 V, d'autres plus haut mais toujours en dessous de 5V. Donc, si vous recherchez la précision, alimentez votre carte à partir d'une alimentation externe via la prise CC ou la broche Vin - telle que 9V CC. Ensuite, après avoir traversé le circuit du régulateur de puissance, vous aurez un joli 5V, par exemple l'image.

Ceci est important car la précision de toutes les valeurs analogRead () sera affectée par l'absence d'un vrai 5 V. Si vous n'avez aucune option, vous pouvez utiliser des calculs dans votre croquis pour compenser la chute de tension. Par exemple, si votre tension est de 4,8 V, la plage analogRead() de 0 à 1023 se rapportera à 0 à 4,8 V et non à 0 à 5 V. Cela peut sembler trivial, cependant si vous utilisez un capteur qui renvoie une valeur sous forme de tension (par exemple, le capteur de température TMP36) - la valeur calculée sera fausse. Donc, par souci de précision, utilisez une alimentation externe.

Étape 2: Pourquoi AnalogRead() renvoie-t-il une valeur comprise entre 0 et 1023 ?

Pourquoi AnalogRead() renvoie-t-il une valeur comprise entre 0 et 1023 ?
Pourquoi AnalogRead() renvoie-t-il une valeur comprise entre 0 et 1023 ?

Cela est dû à la résolution de l'ADC. La résolution (pour cet article) est le degré auquel quelque chose peut être représenté numériquement. Plus la résolution est élevée, plus grande est la précision avec laquelle quelque chose peut être représenté. Nous mesurons la résolution en termes de nombre de bits de résolution.

Par exemple, une résolution de 1 bit n'autoriserait que deux valeurs (deux à la puissance un) – zéro et un. Une résolution de 2 bits autoriserait quatre valeurs (deux à la puissance deux): zéro, un, deux et trois. Si nous essayions de mesurer une plage de cinq volts avec une résolution de deux bits et que la tension mesurée était de quatre volts, notre ADC renverrait une valeur numérique de 3 - car quatre volts tombent entre 3,75 et 5V. Il est plus facile d'imaginer cela avec l'image.

Ainsi, avec notre exemple de CAN avec une résolution de 2 bits, il ne peut représenter que la tension avec quatre valeurs résultantes possibles. Si la tension d'entrée tombe entre 0 et 1,25, l'ADC renvoie le 0 numérique; si la tension tombe entre 1,25 et 2,5, l'ADC renvoie une valeur numérique de 1. Et ainsi de suite. Avec la plage ADC de notre Arduino de 0 à 1023 - nous avons 1024 valeurs possibles - ou 2 à la puissance 10. Ainsi, nos Arduinos ont un ADC avec une résolution de 10 bits.

Étape 3: Alors, qu'est-ce que l'AREF ?

Pour faire court, lorsque votre Arduino effectue une lecture analogique, il compare la tension mesurée sur la broche analogique utilisée à ce que l'on appelle la tension de référence. En utilisation analogique normale, la tension de référence est la tension de fonctionnement de la carte.

Pour les cartes Arduino les plus populaires telles que les cartes Uno, Mega, Duemilanove et Leonardo/Yún, la tension de fonctionnement de 5V. Si vous avez une carte Arduino Due, la tension de fonctionnement est de 3,3V. Si vous avez autre chose, consultez la page du produit Arduino ou demandez à votre fournisseur de cartes.

Donc, si vous avez une tension de référence de 5V, chaque unité renvoyée par analogRead() est évaluée à 0,00488 V. (Ceci est calculé en divisant 1024 en 5V). Et si on veut mesurer des tensions entre 0 et 2, ou 0 et 4,6 ? Comment l'ADC saurait-il quelle est 100 % de notre plage de tension ?

Et c'est là que réside la raison de la broche AREF. AREF signifie Analogique REFérence. Il nous permet d'alimenter l'Arduino en une tension de référence à partir d'une alimentation externe. Par exemple, si nous voulons mesurer des tensions avec une plage maximale de 3,3 V, nous alimenterons un joli 3,3 V lisse dans la broche AREF - peut-être à partir d'un régulateur de tension IC.

Ensuite, chaque étape de l'ADC représenterait environ 3,22 millivolts (divisez 1024 en 3,3). Notez que la tension de référence la plus basse que vous puissiez avoir est de 1,1 V. Il existe deux formes d'AREF - interne et externe, alors examinons-les.

Étape 4: AREF externe

Un AREF externe est l'endroit où vous fournissez une tension de référence externe à la carte Arduino. Cela peut provenir d'une alimentation régulée, ou si vous avez besoin de 3,3 V, vous pouvez l'obtenir à partir de la broche 3,3 V de l'Arduino. Si vous utilisez une alimentation externe, assurez-vous de connecter le GND à la broche GND de l'Arduino. Ou si vous utilisez la source 3,3 V de l'Arduno, exécutez simplement un cavalier de la broche 3,3 V à la broche AREF.

Pour activer l'AREF externe, utilisez ce qui suit dans la configuration void():

analogReference(EXTERNAL); // utilise AREF pour la tension de référence

Cela définit la tension de référence sur tout ce que vous avez connecté à la broche AREF - qui aura bien sûr une tension comprise entre 1,1 V et la tension de fonctionnement de la carte. Remarque très importante - lorsque vous utilisez une référence de tension externe, vous devez définir la référence analogique sur EXTERNE avant d'utiliser analogRead(). Cela vous évitera de court-circuiter la tension de référence interne active et la broche AREF, ce qui peut endommager le microcontrôleur de la carte. Si nécessaire pour votre application, vous pouvez revenir à la tension de fonctionnement de la carte pour AREF (c'est-à-dire revenir à la normale) avec les instructions suivantes

analogReference(DEFAULT);

Maintenant, pour démontrer l'AREF externe au travail. À l'aide d'un AREF de 3,3 V, le schéma suivant mesure la tension de A0 et affiche le pourcentage de l'AREF total et la tension calculée:

#include "LiquidCrystal.h"

LiquidCrystal LCD (8, 9, 4, 5, 6, 7);

entréeanalogique int = 0; // notre broche analogique

int analogiquemontant = 0; // stocke la valeur entrante float pourcentage = 0; // utilisé pour stocker notre valeur de pourcentage float voltage =0; // utilisé pour stocker la valeur de la tension

void setup()

{ lcd.begin (16, 2); analogReference(EXTERNAL); // utilise AREF pour la tension de référence }

boucle vide()

{ lcd.clear(); analogamount=analogRead(analoginput); pourcentage=(montant analogique/1024,00)*100; tension=montant analogique*3.222; // en millivolts lcd.setCursor(0, 0); lcd.print("% de AREF: "); lcd.print(pourcentage, 2); lcd.setCursor(0, 1); lcd.print("A0 (mV): "); lcd.println(tension, 2); retard (250); }

Les résultats du croquis ci-dessus sont montrés dans la vidéo.

Étape 5: AREF interne

Les microcontrôleurs de nos cartes Arduino peuvent également générer une tension de référence interne de 1,1 V et nous pouvons l'utiliser pour le travail AREF. Utilisez simplement la ligne:

analogReference(INTERNE);

Pour les cartes Arduino Mega, utilisez:

analogReference(INTERNAL1V1);

dans void setup() et c'est parti. Si vous avez un Arduino Mega, il existe également une tension de référence de 2,56 V qui est activée avec:

analogReference(INTERNAL2V56);

Enfin, avant de vous installer sur les résultats de votre broche AREF, calibrez toujours les lectures par rapport à un bon multimètre connu.

Conclusion

La fonction AREF vous offre plus de flexibilité dans la mesure des signaux analogiques.

Cet article vous est présenté par pmdway.com - tout pour les fabricants et les passionnés d'électronique, avec une livraison gratuite dans le monde entier.

Conseillé: