1. Le problème : Les fonctions devant effectuer une conversion analogique numérique sur une grande plage avec une grande résolution nécessitent des convertisseurs analogiques numériques souvent coûteux. Un exemple : mesure de température On souhaite mesurer une température entre 0 C et 50 C avec une résolution de 0,1 C, le μc utilisé est un MICROCHIP équipé d un CAN 10bits avec Vref=. (10bits) Le capteur Microchip mesure des températures de -40 C à +15 C évolue linéairement : de 10mV/ C avec un offset de 500mV 100mV à -40 C 500mV à 0 C 750mV à +5 C 1750mV à +15 C L étalonnage sera effectué par une correction logicielle, la résolution dépendant exclusivement du Vref CAN. Le quantum du CAN est q = soit ici 4.88mv (n représente le nombre de bits du CAN) n Pour une mesure de température entre 0 C et 50 C, évolue de 500mV à 1v. La résolution de la mesure serait donc de 500mV = 10 pts soit 50 C = 0,49 C 4,88mV 10 pts, insuffisante ici, Une solution consiste à réduire Vref. Pour obtenir une résolution de 0,1 C il faut q 1mV d où Vref 10 *1mV donc Vref 1,04v. Le data sheet du F45 donne Vrefmin=1,8v! Il est possible d amplifier et décaler cette tension afin qu elle entre dans la plage maximale du CAN (-) mais cela au prix d une électronique de traitement de signal complexe, onéreuse, analogique donc avec une tolérance sur les composants discrets. vc= (-0.5)*10 0, 1v Décaler et Amplifier vc (10bits) Une autre solution consiste à utiliser un CAN avec une plus grande résolution mais donc plus onéreux et surtout extérieur au micron contrôleur, augmentant ainsi la consommation et réduisant la fiabilité. En faisant le calcul inverse : 50 C = 500 pts donc un quantum 500mV q = = 1mV 0,1 C 500 pts Vref n = Vref log d où q n = = 1. 8 pratiquement il faudrait un convertisseur 13 bits q log() 13 bits N() SPI / IC Une troisième solution consiste à augmenter le nombre de bits effectif (Effective Number Of Bits ou ENOB) par suréchantillonnage, c est cette technologie qui est présentée ici. http://www.genelaix.fr.st Augmenter la résolution CAN.doc 1/5
. Approche intuitive La conversion analogique numérique introduit un bruit de conversion lié aux paliers du convertisseur. Le résultat est toujours une approximation à ½ bit près (ici à +/-,44mV) Généralement on peut considérer que ce bruit s approche d un bruit blanc. On démontre que le rapport signal bruit d un CAN est au maximum pour un signal d entrée sinusoïdal SNR = 6.0* N + 1, 77dB L incertitude sur le bit de poids faible le rend inexploitable en présence de bruit. Le SNR augmente donc avec le nombre de bits. Le bruit de quantification est crée par l erreur que quantification sur le bit de poids faible. Comme le bruit est blanc, l erreur est purement aléatoire, si la tension à mesurer est inférieure au ½ bit, il y aura probablement plus d échantillons mesurés aux bits inférieurs qu au supérieur et vice versa si la tension à mesurer est supérieure au ½ bit. Un suréchantillonnage suivit d un moyennage devrait augmenter la résolution (donc le nombre de bits effectifs). Exemple de suréchantillonnage par 8 : Résultat de la conversion 63 631 631 631 631 631 63 631 63 631 63 Résultats de la conversion Tension du ½ bit 631,5 631,4 631 Tension à mesurer Moments d échantillonnage t+te t+te t+3te. t Moyenne des 8 premiers échantillons : 631,375 pour une tension correspondant à 631,4 (attention c est un nombre réel, on recherche un résultat sous forme d un nombre entier). Il est donc possible par suréchantillonnage et moyennage d augmenter le nombre de bits effectifs. Ex : la somme des huit mesures précédentes fait 5051 pour une excursion comprise entre 0 et 819 (8 fois 10 ) 10 bits Somme des 8 échantillons N max 104 819 Mesure max 63 5051 Mesure min 631 Pas de mini N min 0 0 La somme des huit échantillons est proportionnelle au résultat d un CAN 13 bits (0 N 8191) Il faut 13 bits pour coder un nombre entre 0 et 819. Le nombre effectif de bits du CAN est donc maintenant de 13. Attention, ceci n est qu une première approche, ce résultat n est pas correct. Le paragraphe suivant décrit une approche mathématique de la réduction de bruit par suréchantillonnage. Il faut en réalité 4 3 échantillons (64) pour augmenter le nombre de bits de 3! http://www.genelaix.fr.st Augmenter la résolution CAN.doc /5
3. Approche théorique de la réduction du bruit par suréchantillonnage. Le critère de Nyquist impose une fréquence d échantillonnage fe au moins le double de la plus grande fréquence du signal à convertir. La technique du suréchantillonnage est basée sur l approximation que le bruit total de quantification q d un CAN peut s écrire σ = avec q : quantum. 1 La puissance de densité spectrale du bruit (Power Spectral Density ou PSD) est q 1 q PSD = * = avec fe la fréquence d échantillonnage 1 fe 1 fe Le PSD est inversement proportionnel à la fréquence d échantillonnage. Augmenter fe revient à diminuer le bruit donc augmenter le ENOB. fe : fréquence d échantillonnage initiale (souhaitée) fs : fréquence de suréchantillonnage PSD PSD Signal à convertir bruit -fe/ 0 +fe/ freq -fs/ -fe/ 0 +fe/ +fs/ freq On pose fs M = le suréchantillonnage fe Mêmes surfaces Le gain du SNR est : SNRg = 10 * log( M ) Le nombre de bit étant proportionnel au SNR : N =f(snr/6) (d après l équation page ) ( M ) 10*log ENOB = + N 6 (N est le nombre de bits intrinsèque du CAN) Un suréchantillonnage de augmente le ENOB de 0,5. Un suréchantillonnage de 4 augmente le ENOB de 1. Un suréchantillonnage de 16 augmente le ENOB de. Le suréchantillonnage k M = 4 Avec k le nombre de bits supplémentaires souhaités Remarques : Cette méthode ne fonctionne qu en présence d un bruit blanc d amplitude moyenne supérieure au quantum. Si le niveau de bruit est insuffisant, on doit ajouter artificiellement du bruit au signal à convertir (dithering) Le suréchantillonnage augmente le ENOB mais diminue la fréquence d échantillonnage maximum. Ex : Si la fréquence d échantillonnage pratique d un μc est de 10KHz (échantillonnage plus calculs divers). Elle tombe à156hz pour une augmentation de bits (suréchantillonnage fois 64) et à 39Hz pour une augmentation de 4 bits (suréchantillonnage fois 56). La pratique du suréchantillonnage est donc adaptée à la mesure de signaux évoluant lentement (cas de la température) http://www.genelaix.fr.st Augmenter la résolution CAN.doc 3/5
4. Récupérer le résultat, la décimation Le suréchantillonnage offre la possibilité d augmenter le ENOB de K. Pour récupérer le résultat on ajoute les échantillons et l on ramène la somme au nombre de bits souhaités en divisant le résultat par K (décimation). (Diviser par revient à effectuer un décalage à droite). R : résultat final sur N+k bits M 4 k = ) M : nombre d échantillons à acquérir ( K : nombre de bits supplémentaires souhaités 160 140 10 100 80 60 40 0 0 608 609 610 611 61 613 614 615 616 617 618 619 60 61 6 63 Répartition des 56 échantillons du programme page suivante. La courbe de Gauss peut être légèrement déséquilibrée si le bruit n est pas blanc. Exemple : On désire augmenter le ENOB de 1 (passer de 10 bits à 11 bits), donc suréchantillonner par M = 4 1 = 4 Sur 10 bits 0 N 104, avec Vref =, q=4,88mv Echantillons Résultats binaires Résultats décimaux Tension équivalente sur 10bits 1 1101011001 857 4,18v 1101011000 856 4,1773v 3 1101011000 856 4,1773v 4 1101011010 858 4,187 Somme 110101100011 Moyenne 4,1797v Le résultat est décalé à droite du nombre de bits supplémentaires souhaités (1 bit) (décimation) Résultat de la mesure =11010110001 (1713d) Sur 11 bits 0 N 048 q=,44mv Donc Vmes= N*q = 4,1797v qui correspond bien à la moyenne des mesures. Bibliographie: Reducing Quantization Noise : Richard Lyons & Randy Yates Understanding A/D Converter Performance Specification (MICROCHIP AD693) : Steve Bowling Improving resolution by oversampling and averaging : Silicon Laboratories Enhancing resolution by oversampling : ATMEL app note AVR11 Demystifying Sigma-Delta s : DALLAS-MAXIM app note 1870 Sigma-Delta Measurement s : James M.Bryant MICROCHIP : bibliothèque (assembleur) de suréchantillonnage pour avec l utilitaire MAESTRO. http://www.genelaix.fr.st Augmenter la résolution CAN.doc 4/5
5. Un exemple de programme en C de suréchantillonnage et décimation sur. Remarque : ce programme peut être testé sur PICDEM+, il mesure la tension sur AN0 (potentiomètre) /* Programme adover.c (compilateur C18) Augmenter la résoltion d'un CAN par surechantillonnage et decimation C.Dupaty 06/006 */ #define K 4 // nb de bits supplémentaires #define M 56 // nb d'échantillons : 4 puissance K #include <p18f45.h> unsigned int resultat; // le résultat sur N+K bits //N=10 pour le F45 void init_can(void) ON0=1; ON1=0x80; entrées AN activées, VREF+=VDD VREF-=VSS // effectue une conversion sur le canal spécifie unsigned int mesvolt(unsigned char canal) ON0=ON0 (canal<<3); ON0bits.GO_DONE=1; // SOC while(on0bits.go_done); // attend EOC return (ADRES); // CAN on. CLOCK=FOSC/. CANAL0 (RA) // justification à droite, toutes les // effectue une mesure de "entree" par surechantillonnage et decimation unsigned int adover(unsigned char entree) unsigned int c; unsigned long r=0; for (c=0;c<m;c++) // somme des M echantillons r+=mesvolt(entree); r>>=k; // decimation return (r); void main(void) init_can(); resultat=adover(0); while(1); // le resultat sur 10+K bits est disponible http://www.genelaix.fr.st Augmenter la résolution CAN.doc 5/5