Outils pour utilisateurs

Outils du site


dev:arduino:uno:entrees-analogiques

Entrées analogiques

ATmega 328 possède 5 entrées analogiques broches A0 à A4. Le CAN a une résolution de 10 bits, il convertit une tension analogique en une valeur numérique, un nombre entre 0-1023 codé sur un entier (int) en environ 100 us. Comme l'ATmega 328 est cadencé à 16 MHz, on a un échantillonnage max d'environ 10000 échantillons/s. Pour fonctionner le CAN compare la tension d'entrée An avec une tension de référence AREF. On doit toujours avoir:

  • An <= AREF
  • An < Vcc (tension d'alimentation du microcontroleur)

La fonction analogReference() permet de modifier la tension AREF utilisée par le CAN

DEFAULT AREF = 5V. Ici la résolution est de 5/1024 = 4.8mV.
INTERNAL AREF = 1.1V. Dans ce cas la résolution est de 1.1/1024 = 1.0mV
AREF La tension présente sur la broche AREF est utilise comme tension de référence par le CAN.
Si la broche AREF est utilisée, il faut impérativement faire un appel a la fonction analogReference(AREF) avec toute lecture de l'entrée analogique avec analogRead().

L'ATmega 328 n'a pas de CNA mais il est capable de générer des signaux PWM sur certaines broches (3, 5, 6, 9, 10 et 11). Le rapport cyclique (temps à l’état HIGH / temps à l’état LOW) de ces signaux rectangulaires d'une période d'environ 490 Hz peut être modifié via la fonction analogWrite(). Le rapport cyclique est codé sur un byte (0-255).

  • Une valeur faible du rapport cyclique indique que le passé temps à l’état LOW est beaucoup plus important que le temps à l’état HIGH. Le tension moyenne est proche de 0V.
  • Une valeur forte du rapport cyclique indique que le passé temps à l’état LOW est faible devant le temps à l’état HIGH. Le tension moyenne est proche de 5V.
Pour générer le signal PWM sur les broches 3, 5 et 6 analogWrite() utilise la même ressource (timer) du microcontrôleur que les fonction milli() et delay() ce qui peut entraîner des conflits.

Remarque:

Les entrées analogiques peuvent être configurées en sorties numéériques comme les différentes lignes du port parallèle. Cet appel à la fonction pinMode() n'est donc pas faux:

void setup()
{
  pinMode(A0, OUTPUT);
}
dev/arduino/uno/entrees-analogiques.txt · Dernière modification : 2021/02/01 21:51 de 127.0.0.1