Vous êtes sur la page 1sur 22

architecture et programmation des

systèmes embarqués

Chapitre 3

ADC
Dr. ATTIA Brahim, brahim.attia@yahoo.fr
Maître assistant: Electronique & microélectronique 1
Convertisseurs analogique/numérique(ADC)

 Le monde réel étant continu, c’est-`a-dire analogique, tandis que les microcontrôleurs
fonctionnent en numérique, il faut bien avoir une interface entre les deux : le convertisseur
analogique/numérique.

 à intervalles de temps réguliers, la tension analogique est mesurée puis arrondie afin de
pouvoir être convertie en numérique.

 La conversion est d’autant plus fidèle que le nombre de bits du codage est élevé et est
inversement proportionnelle à la plage de tension analogique en entrée.

 Les microcontrôleurs AVR possèdent des convertisseurs embarqués donc il n’est pas
nécessaire d’en concevoir ou d’en acheter. Par exemple, l’ATmega128 possède un ADC
fonctionnant sur 10 bits.

 L’ADC peut convertir jusqu’à 8 signaux analogiques par intermittence.

 Le temps maximum de conversion est de 260μs mais peut être diminué en réduisant la
résolution (nombre de bits du codage).

2
Convertisseurs analogique/numérique(ADC)
 L’échelle de tension en entrée est par défaut [0, Vcc] mais peut être passée à [0, Vref ] où Vref
Vcc est une tension appliquée à la patte Aref.

 A noter que les ADCs peuvent être configurés pour ne faire qu’une conversion ou pour
convertir en continu la tension analogique, la conversion étant alors régulièrement mise à jour
selon la durée de conversion.

3
Les entrées analogiques (ADC)
 Un convertisseur analogique-numérique (CAN, parfois convertisseur A/N, ou en anglais ADC
pour Analog to Digital Converter ou plus simplement A/D) est un montage électronique dont
la fonction est de traduire une grandeur analogique en une valeur numérique (codée sur
plusieurs bits).
 L’Arduino UNO possède 6 entrées analogiques, numérotées
de A0 à A5, reliées à un convertisseur analogique/numérique
qui renvoie un code numérique sur 10 bits, soit une valeur
comprise entre 0 et 1023.

 La pleine échelle est de 5V, c'est à dire que la valeur


numérique 0 correspond à 0V et la valeur numérique 1023
correspond à 5V.

 Ainsi le pas de quantification est de 5V/1024 soit environ 5


mV.

Initialisation d'une entrée analogique


 Les entrées analogiques A0 à A5 sont automatiquement paramétrées au démarrage du
programme.

 Il n'y a donc rien à faire pour spécifier leur utilisation.


4
analogReference(type)

Parameters
type: which type of reference to use (see list of options in the description).
Returns: Nothing

Description

 Configures the reference voltage used for analog input (i.e. the value used as the top of the
input range).

 The options for Arduino AVR Boards (Uno, Mega, Leonardo, etc.)
 DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts
(on 3.3V Arduino boards)

 INTERNAL: a built-in reference, equal to 1.1 volts on the ATmega168 or ATmega328P


and 2.56 volts on the ATmega32U4 and ATmega8 (not available on the Arduino Mega)

 INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)

 INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)

 EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference.
5
Lecture d'une entrée analogique Exemple 1

 Pour pouvoir lire une entrée analogique, il vous faudra utiliser la fonction analogRead(pin) où
pin correspond au numéro de la broche que l'on souhaite lire : A0 à A5.

 Afin de mettre en oeuvre cette entrée analogique, nous allons utiliser un potentiomètre dont le
curseur sera relié à l’entrée A0.

 En fonction de la position du curseur et en modifiant/complétant le code ci-dessous, vous


afficherez la tension lue.

6
Variation du temps de clignotement d’une LED Exemple 2a

7
Acquisition et affichage des tensions Exemple 2b

8
Mesure de l’intensité de la lumière Exemple 3

photorésistance :LDR

9
Exemple 4

 Hardware required:
 Arduino Uno
 LED
 LDR (Photoresistor)
 220 and 10K ohm resistors
 Wires
 Breadboard

10
Exemple 4

11
12
Modifier l'intensité lumineuse d'une LED Exemple 5

13
Modifier l'intensité lumineuse d'une LED Exemple 6

14
Exemple 7
Mega analogWrite() test

This sketch fades LEDs up and down one at a time on digital pins 2 through 13.
This sketch was written for the Arduino Mega, and will not work on other boards.

The circuit:
- LEDs attached from pins 2 through 13 to ground.

15
Exemple 7

For(int i =2;i<=13;i++)

16
Exemple 8

Demonstrates one technique for calibrating sensor input.


The sensor readings during the first five seconds of the sketch execution define the minimum and
maximum of expected values attached to the sensor pin.

The sensor minimum and maximum initial values may seem backwards. Initially, you set the
minimum high and listen for anything lower, saving it as the new minimum. Likewise, you set
the maximum low and listen for anything higher as the new maximum.

The circuit:
- analog sensor (potentiometer will do) attached to analog input 0
- LED attached from digital pin 9 to ground
17
Exemple 8

18
Exemple 9
Fading

This example shows how to fade an LED using the analogWrite() function.

The circuit:
- LED attached from digital pin 9 to ground.

19
Exemple 10
Smoothing
Reads repeatedly from an analog input, calculating a running average and
printing it to the computer. Keeps ten readings in an array and continually
averages them.
The circuit:
- analog sensor (potentiometer will do) attached to analog input 0

20
Exemple 10

21
Exemple 11
Analog input, analog output, serial output
Reads an analog input pin, maps the result to a range from 0 to 255 and uses the result to set the
pulse width modulation (PWM) of an output pin. Also prints the results to the Serial Monitor.
The circuit: - potentiometer connected to analog pin 0.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
- LED connected from digital pin 9 to ground

22

Vous aimerez peut-être aussi