pages

5 mars 2016

Lecture d'une tension continue

Maintenant que nous savons afficher sur un écran LCD,  nous allons étudier comment lire et afficher une tension continue.

La partie affichage étant résolue nous allons voir dans ce billet deux solutions pour utiliser le convertisseur A/N contenu dans le microcontrôleur 18F4525.

La première méthode utilise une librairie fournie avec le compilateur XC8, l'autre méthode impose l'écriture ou la lecture directement dans les registres du PIC.

Les fonctions concernant le convertisseur A/N sont décrites dans le document "MPLAB C18_Libraries" page 9 et suivantes.

Ces fonctions sont :
  • BusyADC ();
  • CloseADC ();
  • ConvertADC ();
  • OpenADC (unsigned char config, unsigned char config2 , unsigned char portconfig);
  • ReadADC();
  • SetChanADC (unsigned char channel);

BusyADC : retourne la valeur 1 si la conversion est en cours sinon 0 si la conversion est terminée.
CloseADC : désactive le convertisseur A/N.
OpenADC : configure le convertisseur A/N.
ConvertADC  : lance la conversion.
ReadADC : lit la valeur des buffers après une conversion.
SetChanADC : sélectionne le canal utilisé.

La fonction OpenADC demande plusieurs paramètres qu'il est préférable de consulter dans le document ci dessus et le datasheet du microcontrôleur utilisé. Ce sont principalement la fréquence d'horloge, le temps d'acquisition, la justification du résultat, la référence utilisée,  l'utilisation des interruptions et le nombre de voies analogique.

La fonction SetChanADC demande de lui fournir le canal désiré, par ex : SetChanADC(10) ou SetChanADC(ADC_CH8).

On utilise comme d'habitude le Pic 18F4525 monté sur une platine de test dont le schéma est :

platine 18f4525

On utilise un afficheur Lcd (en mode 4 bits) et le potentiomètre qui est connecté sur la pin AN0 (pin 2).

Le programme de test consiste à configurer le convertisseur A/N, à déclencher la conversion, à lire le résultat et à afficher ce résultat sur le LCD.


L'autre méthode demande de se plonger dans le datasheet du microcontrôleur pour déterminer les registres concernés et les valeurs à mettre dans ces registres.
Tout d'abord les registres de configuration sont au nombre de trois  :

  • ADCON0 : CHS3:CHS0 = choix voie analogique, GO/DONE =  déclenche la conversion et en lecture indique l'état du convertisseur et le bit ADON = pour activer le convertisseur.
  • ADCON1  : VCFG1 = choix référence basse, VCFG0 = choix référence haute, PCFG3:PCFG0 = bits de configuration du port A/D.
  • ADCON2  : ADFM = choix justification, ACQT2:ACQT0 = choix temps avant conversion et ADCS2:ADCS0 = choix fréquence d'horloge.
Pour le Pic 184525 les principales valeurs sont :


  • CHS3:CHS0 de "0000" pour la voie AN0 à "1100" pour la voie AN12
  • GO/DONE Ecriture : 1 pour déclencher la conversion, Lecture : 1 = conversion en cours
  • ADON = 1 pour activer le convertisseur
  • VCFG1  référence basse 1 = broche AN2, 0 = VSS
  • VCFG0  référence haute 1 = broche AN2, 0 = VDD
  • PCFG3:PCFG0 bits de configuration du port : 0000 = toutes les entrées analogiques, 1111 = toutes les entrées digitales
  • ADFM = 1 : justification à droite, =0 : justification à gauche
  • ACQT2:ACQT0 de "000" pour TAD = 0 à "111" pour TAD = 20
  • ADCS2:ADCS0 de "000" pour Fhorloge = Fosc/2 à "110" pour Fhorloge = Fosc/64, la valeur "111" est utilisée dans le cas d'un oscillateur RC.



Les registres ou buffer contenant le résultat sont : ADRESH et ADRESL

Le programme de test suit la même chronologie que précédemment soit :

  • configurer les registres ADCON0, ADCON1 et ADCON2,
  • démarrer la conversion en positionnant le bit GO/DONE à 1,
  • attendre la fin de la conversion en testant si le bit GO/DONE est à 0,
  • lire la valeur obtenue dans les buffers ADRESH et ADRESL : 
  • afficher cette valeur sur le LCD.
Pour obtenir la valeur de la conversion il faut :
  1. lire la partie haute, 
  2. décaler de 8 vers la gauche, 
  3. effectuer un ou bit à bit avec la partie basse :

valadc = ((ADRESH<<8) | ADRESL);

 Les fichier zip des deux méthodes.


Aucun commentaire:

Enregistrer un commentaire