Arduino ADC
Ce tutoriel discutera de l’utilisation de broches analogiques pour lire un signal analogique et le convertir en numérique dans Arduino.
ADC Arduino
L’ADC, également connu sous le nom de convertisseur analogique-numérique, convertit un signal analogique en un signal numérique. Les signaux analogiques sont continus, ce qui signifie qu’ils contiennent un nombre infini de valeurs. Nous ne pouvons pas lire toutes les valeurs, nous lisons donc des valeurs à des intervalles de temps spécifiques à partir du signal continu, ce qui rend le signal numérique.
Le processus de prélèvement d’échantillons à partir du signal analogique est appelé échantillonnage. Le processus de conversion d’un signal analogique en numérique est illustré dans le schéma ci-dessous.
Le premier signal dans le diagramme ci-dessus est un signal continu avec des valeurs infinies, et le second signal est un signal numérique avec une valeur finie. Le convertisseur analogique-numérique prend des valeurs à intervalles réguliers du signal analogique pour en faire un signal numérique.
La conversion analogique-numérique est effectuée car un ordinateur ne peut pas traiter un signal analogique. il ne peut traiter que des signaux numériques en 0s et 1s. Après avoir traité le signal numérique, nous pouvons également reconvertir le signal en analogique à l’aide d’un DAC ou d’un convertisseur numérique-analogique.
Par exemple, joindre les points du deuxième signal dans le diagramme ci-dessus deviendra presque identique au premier signal. Le nombre d’échantillons que nous prenons dans l’ADC est appelé taux d’échantillonnage ou débit binaire de l’ADC.
Certaines cartes Arduino ont des convertisseurs analogique-numérique 10 bits, et certaines ont des convertisseurs analogique-numérique 12 bits. Le débit binaire est également appelé la résolution, et il définit le nombre d’échantillons que l’ADC prendra du signal analogique.
Un convertisseur analogique-numérique 10 bits prendra 1024 échantillons du signal analogique. Par exemple, supposons que le signal d’entrée se compose de niveaux de tension entre 0 et 5 volts.
Dans ce cas, les niveaux de tension seront mappés sur la plage entière de 0 à 1024, ce qui signifie que le convertisseur analogique-numérique prélèvera un échantillon tous les 5/1024 ou 4,9 millivolts.
La vitesse du convertisseur analogique-numérique dépend de la fréquence de fonctionnement de la carte Arduino dans les cartes Arduino basées sur ATmega
; le convertisseur analogique-numérique prendra 100 microsecondes pour convertir un signal analogique en signal numérique, ce qui signifie que le taux d’échantillonnage ou le taux de lecture est de 10 kHz ou 10 000 fois par seconde.
D’autres cartes comme les cartes de la famille Arduino Zero, Due et MKR ont des convertisseurs analogique-numérique 12 bits, ce qui signifie que le signal analogique d’entrée de 0 à 3,3 volts sera mappé sur une plage entière de 0 à 4095.
Par défaut, les convertisseurs analogique-numérique 12 bits seront réglés sur 10 bits, mais nous pouvons modifier le débit binaire ou la résolution du convertisseur analogique-numérique à l’aide de la fonction analogReadResolution()
, en passant le nombre de bits à l’intérieur du fonction pour régler la résolution.
Consultez ce lien pour plus de détails sur la fonction analogReadResolution()
.
Les broches analogiques de chaque carte Arduino sont étiquetées avec A
suivi d’un nombre comme A0
, A1
, etc. Pour lire un signal provenant d’une broche analogique d’Arduino, nous pouvons utiliser la fonction analogRead()
.
La syntaxe de base de la fonction analogRead()
est ci-dessous.
output = analogRead(pin)
La syntaxe ci-dessus renverra le signal analogique de la broche analogique sous forme de signal numérique. Si la broche analogique n’est connectée à aucun signal, la fonction retournera quand même des valeurs flottantes.
Différentes cartes Arduino ont des vitesses différentes pour le convertisseur analogique-numérique, qui peuvent être modifiées, mais cela modifiera également la résolution du convertisseur analogique-numérique. Nous devons donc utiliser les paramètres par défaut du convertisseur analogique-numérique pour une conversion analogique-numérique précise.
Nous avons expliqué ci-dessus que certaines cartes Arduino ont une tension de référence de 0 à 5 volts pour les signaux analogiques d’entrée, et certaines ont de 0 à 3,3 volts. Ce sont les valeurs par défaut, et nous pouvons les changer en utilisant la fonction analogReference()
.
Nous pouvons passer différentes options en fonction des différents types de cartes Arduino.
Par exemple, dans le cas d’Arduino Uno et Mega, nous avons des options comme :
DEFAULT
- réglez la tension de référence sur la plage entière de 0 à 5 volts.INTERNAL
- réglez la tension de référence sur la plage entière de 0 à 1,1 volts.INTERNAL1V1
- réglez la tension de référence sur la plage entière de 0 à 1,1 volts.INTERNAL2V2.56
- réglez la tension de référence sur la plage entière de 0 à 2,56 volts.
Avant de régler la tension de référence, notez qu’on ne peut pas régler une valeur de tension inférieure à 0 volt et supérieure à 5 volts ; la valeur de la tension de référence doit être de 0 à 5 volts.
Supposons que nous connections une résistance à la broche analogique. Dans ce cas, les tensions d’entrée seront réduites car il y a déjà une résistance de valeur 32K
présente à l’intérieur de la broche analogique, et dans ce cas, les deux résistances feront un diviseur de tension, et la tension d’entrée sera réduite en fonction de la valeur de la résistance.
Consultez ce lien pour une liste complète des options que nous pouvons utiliser dans la fonction analogReference()
. Consultez ce lien pour plus de détails sur la fonction analogRead()
.