0% ont trouvé ce document utile (0 vote)
150 vues20 pages

Adc Dac

Ce document décrit les concepts de conversion numérique-analogique et analogique-numérique. Il explique le fonctionnement des convertisseurs du microcontrôleur LPC1768 et identifie certains défauts potentiels comme le dépassement de la plage de conversion. Le document présente également une solution pour réaliser un filtre numérique suiveur entre les convertisseurs en raison de leurs caractéristiques différentes.

Transféré par

ibrahimelbahnsi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
150 vues20 pages

Adc Dac

Ce document décrit les concepts de conversion numérique-analogique et analogique-numérique. Il explique le fonctionnement des convertisseurs du microcontrôleur LPC1768 et identifie certains défauts potentiels comme le dépassement de la plage de conversion. Le document présente également une solution pour réaliser un filtre numérique suiveur entre les convertisseurs en raison de leurs caractéristiques différentes.

Transféré par

ibrahimelbahnsi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 20

MICROCONTROLEUR – LP SESAM :

Partie 2 – Conversion AN et NA

Version 2.1
Mise à jour oct. 2017
LibreOffice 5.1 - Ubuntu
Les E/S T.o.R. et après?

De nombreux systèmes ne peuvent se limiter à des entrées/sorties TOR :

ADAPTATION

ADAPTATION
+ Programme pour
«traiter» le son

2
Système numérique

CAN Capteurs analogiques

PROCESSUS
CONTRÔLÉ
Port
Capteurs TOR
µC Entrée

+ programme Port
Actionneurs TOR
Sortie

CNA
Actionneurs
analogiques

CAN : Convertisseur Analogique → Numérique


CNA : Convertisseur Numérique → Analogique
3
Conversion Numérique/Analogique

• Un CN/A (ou DAC en anglais : Digital-to-Analog Converter) convertit un


code numérique en un signal analogique (généralement une tension)
Ex. d'un CN/A 8 bits :

0
1
1 Vs : tension de sortie
0
CN/A
CPU 1
0
0
8 bits
1
VREFN VREFP
(Pré-actionneur +)
µC Actionneur
Tensions de référence analogique

4
Conversion Numérique/Analogique

Suivant le convertisseur :
• différentes « plages » de conversion possibles (tensions en V)
• Différentes résolutions (associées au nombres de bits)
Ex. d'un CN/A 8 bits :
Bipolaire [-5;5V] avec codage binaire signé Unipolaire [0;3,3V] avec codage binaire non signé
Tension de sortie Tension de sortie
5V 3,3 V

0x80
0x7f Code

Code
-5 V 0xff
5
CN/A du LPC1768
Cortex M3 : CN/A 10bits → 1024 valeurs possibles en entrée
Plage de conversion : 0/3,3V
Codes binaires non signés → valeurs de 0 à 0x3FF

Vs
3,3V
Tension de sortie :
𝑁
Vs = ⋅ 3,3𝑉
1024

Remarque :
• on ne peut pas atteindre les 3,3V
• il existe des technologies de CN/A
N
0 qui le permettent, avec une formule
0x3FD

0x3FE

0x3FF

légèrement différente
0x000

0x001

0x002

6
“Défauts” d’un CN/A

• Problèmes courants avec un CN/A et un µC


– Si on utilise un CN/A 10, il n’existe pas de variable de 10 bits en langage C
– → On utilise alors un short (16 bits) ou un int (32 bits) pour préparer la valeur à envoyer
au CN/A

– Si on ne prend pas de précautions, on pourrait dépasser les limites du nombre attendu


par le CN/A

– Exemple : Que se passe-t-il si on envoie la valeur 0x0400 (1024) sur un CN/A 10 bits non
signés (valeur maximum 1023) ?
à Réponse : le CN/A ne regarde que les 10 bits de poids faible (ici
0x000), et on aura alors une tension nulle en sortie !

7
“Défauts” d’un CN/A

• Dans l’exemple de CN/A précédent, imaginons que nous essayons de


fabriquer un signal sinusoïdal en envoyant au CN/A des valeurs
comprises entre -2200 et 2200

3,3V 3,3V

0V 0V

SIGNAL INCOHERENT SIGNAL « ACCEPTABLE » (= saturé)

8
Conversion Analogique/Numérique
Conversion Analogique-Numérique
• Un CA/N (ou ADC en anglais : Analog-to-Digital Converter) convertit
un signal analogique (généralement une tension) en un code
numérique
Ex. d'un CA/N 8 bits :

0
1 Ve : tension d’entrée
1
0 CA/N
CPU 1
0 8 bits
0
1 Capteurs
VREFN VREFP
analogiques
µC
Tensions de référence analogique

9
CA/N du LPC1768
Cortex M3 CA/N 12bits : 4096 valeurs
Plage de conversion : 0/3,3V
Codes binaires non signés → valeurs entre 0 et 0xFFF

N
0xFFF

0xFFE
0xFFD
Caractéristique
« idéalisée » Ve
𝑁= ⋅ 4096
0x002 3,3𝑉
0x001 Formule du CN/A inversée

0x000
3,3V Ve
0

N est forcément un entier, on voit que la caractéristique est toujours


« sous » la caractéristique idéalisée, on garde donc la partie entière pour N

10
CA/N et CN/A
• → Réaliser un programme « suiveur » numérique : Vs=Ve

• On doit donc faire une CAN de la tension en entrée, stockée dans une
variable du programme
• Puis envoyer cette valeur sur le CN/A
• Question ? Pour réaliser un suiveur, l’organigramme ci-dessous est-il
correct?
CA/N → valeur

valeur → CN/A

→ oui si CA/N et CN/A avec même plage de conversion et même résolution


Et dans les autres cas ?
11
CA/N et CN/A sur le LPC1768
• → Réaliser un programme « suiveur » numérique : Vs=Ve

• Attention : nos CA/N et CN/A ne fonctionnent qu’en tension


unipolaire 0/3,3V … et nous voulons travailler avec des signaux
entrée/sortie bipolaires (exemple : un signal sinusoïdal) !
àIl faudra passer par l'utilisation d'un offset de 1,65 V additionné au
signal analogique en entrée Ve
• Question ? Pour réaliser un suiveur, l’organigramme ci-dessous est-il
correct?
CA/N → valeur

Réponse : NON !!!


valeur → CN/A OK… mais pourquoi ?

12
Filtre “Suiveur”
• Le CA/N et le CN/A sur notre cible n’ont pas les mêmes caractéristiques
code ↔ tension
– Les plages de conversion sont identiques : de 0 à 3,3 V
– mais les convertisseurs utilisent un nombre de bits différents :
• CA/N : 12 bits, valeurs numériques entre ………... et ………..
• CN/A : 10 bits, valeurs numériques entre ………... et ……..…

• Par exemple, si la tension 0,5V est présente en entrée du CA/N :


§ 0.5V à CAN à code 621
§ code 621 à CNA à 2.0V

• A cause de la différence du nombre de bits, la tension de sortie est 4 fois


plus grande que celle d’entrée
(+ attention au « défaut » du CN/A, cf cours précédent)
13
Filtre “Suiveur”
• Solution, diviser le code par 4 (ou >>2 ) avant l’écriture sur le CN/A

int main(void)
{
short valeur;

Init_CAN();
Init_CNA();

while(1)
{
valeur = lecture_CAN();
Ecriture_CNA(valeur >>2 );
}
return 0 ;
} → obtention d'un filtre numérique « suiveur »

14
Plus difficile : gain de 2

• On supposera que l’on a des signaux d'entrée centrés sur 1,65V


• Le gain 2 n’est pas à appliquer à cet offset, mais uniquement au
signal “utile”

Idéalement, on sortie
devrait donc obtenir :
entrée

L'offset n'a pas changé !

15
Filtre “Gain de 2”
• Pour ne pas appliquer le gain à l’offset, il faut manipuler les codes
numériques de telle sorte que 1.65V ↔ code 0

int main(void)
{
short entree,sortie;

Init_CAN();
Init_CNA();

while(1)
{
entree = lecture_CAN()-2048; //on enlève l’offset après CA/N
sortie = entree * 2; //on applique le gain 2
Ecriture_CNA((sortie + 2048)>>2); //on remet l’offset avant CNA
}
return 0 ;
}

16
Résumons…

• Chaîne totale de traitement :

μC – domaine numérique

Ve Vs
CA/N Gain x2 >>2 CN/A
• - • +

• 2048 • 2048

Ici en version “sans saturation numérique”...


Filtre Gain de 2 : Problème !

• Problème : il est possible de dépasser les limites des codes CN/A

18
Filtre Gain de 2 : la Solution !
• Il faut mettre en place les saturations numériques avant le CN/A
int main(void)
{
short entree,sortie;

Init_CAN();
Init_CNA();

while(1)
{
entree = lecture_CAN()-2048; //on enlève l’offset
sortie = entree<<1; //on applique le gain 2

if (sortie>2047) sortie=2047;
else if (sortie<-2048) sortie=-2048;

sortie = (valeur+2048)>>2; //on remet l’offset


Ecriture_CNA(sortie);
}
return 0 ;
}
19
Filtre Gain de 2 : Rendu final!

• C'est déjà beaucoup mieux…

20

Vous aimerez peut-être aussi