Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Résultat conversion A/D sur PIC



  1. #1
    jorg1n

    Résultat conversion A/D sur PIC


    ------

    Bonjour,

    Pas facile la programmation quand on est débutant...

    Bon, j'ai encore un souci:
    j'utilise un PIC 18F4682 (je travail avec MPLAB et C18)(et mon quartz est de 20MHz)et je souhaite faire une conversion A/N sur AN0. La tension que je veut mesurer varie entre 0 et 15V, je l'adapte donc par le biais d'un pont div pour que la tension varien entre 0 et 5V.
    Jusque là j'espère avoir bon!
    Ensuite, coté programme, j'utilise les données sources de adc.h (OpenADC,ConvertADC,ReadADC,.. .)(j'espère que mon code est correct???)
    J'ai préalablement définit le bit 0 du port A en analogique par le biais de ADCON1)
    Code:
    OpenADC(ADC_FOSC_32 &	
    				ADC_RIGHT_JUST &
    				ADC_12_TAD,
    				ADC_CH0 &
    				ADC_INT_OFF,7);
    Delay10TCYx(5);
    ConvertADC();
    while(BusyADC());
    result=ReadADC();
    CloseADC();
    Je stocke donc le résultat dans résult, mais je ne sais pas à quoi correspond les valeurs (je n'ai pas encore testé sur carte le programme), comment faire pour traduire le résultat en décimal...

    Je vous remercie d'avance pour votre aide
    Nicolas

    -----

  2. Publicité
  3. #2
    jorg1n

    Exclamation Re : Résultat conversion A/D sur PIC

    Bonjour,
    personne ne peut m'aider s'il vous plait...

    Encore merci
    Nicolas

  4. #3
    Gérard

    Re : Résultat conversion A/D sur PIC

    Que veux-tu savoir exactement ?
    Ex
    entrée 0 à 5V
    si convertisseur 10 bit alors résultat de 0 à 1023

    Que veut dire traduire la résultat en décimal ?

  5. #4
    invite_P89
    Invité

    Re : Résultat conversion A/D sur PIC

    LU

    Pas de quantification Q=Vref+ - Vref-/1024 (1024 pour un 10 bits)
    Valeur numerique obtenue Val= int(Va-Vref-/Q) si Vref-=masse on Val=int (va/Q)

    Exemple: calcul de Q
    pour Vref+=4,96 Vref-= masse Q=4,96-0/1024 Q=0,004

    pour Va=3V tension entrée

    Val=3/0,004=750

    un petite remarque sur pont diviseur : RS < 10K utilisais plutôt AOP en suiveur

    à bientôt
    Dernière modification par Pom26 ; 18/10/2007 à 08h44.

  6. #5
    Gérard

    Re : Résultat conversion A/D sur PIC

    Citation Envoyé par Pom26 Voir le message
    LU

    Pas de quantification Q=Vref+ - Vref-/1024 (1024 pour un 10 bits)
    Valeur numerique obtenue Val= int(Va-Vref-/Q) si Vref-=masse on Val=int (va/Q)

    Exemple: calcul de Q
    pour Vref+=4,96 Vref-= masse Q=4,96-0/1024 Q=0,004

    pour Va=3V tension entrée

    Val=3/0,004=750

    un petite remarque sur pont diviseur : RS < 10K utiliser AOP en suiveur

    à bientôt
    Il y a effectivement 1024 pas sur 10 bit, mais la valeur max est 1023 (3FFh).
    Dans mon post, je n'ai pas tenu compte du fait qu'on pouvait utiliser VRef+ et VRef-.
    La question de départ portant sur une amplitude de 15V ramenée à 5V par un diviseur.
    Ta remarque sur le pont diviseur est bonne (j'avais zappé).

  7. A voir en vidéo sur Futura
  8. #6
    HULK28

    Re : Résultat conversion A/D sur PIC

    Salut,

    si tu veux afficher ta valeur sur un afficheur LCD par exemple il faut formater ton résultat du CAN en Hex -> ASCII.

    Voici un exemple ou l'on désire afficher une valeur max de 16,83V pour une acquisition sur 10 bits.
    L'astuce consiste ici à ne pas faire appel à un long.
    Le résultat est formaté pour être envoyé directement à l'afficheur.

    Code:
    /****************************************************************
    		Conversion Voltage CAN en ASCII
    ****************************************************************/
    void VCanToAscii(ushort VCan, uchar *Ascii)
    {
    	ushort	voltage;	 		// Précision une décimal, Max = 16.83 pour 1023 résultat du CAN
    	
    	voltage = VCan*21;			// 1024 => 16.8 V, affichage précision 1/10 => On multiplie par 10
    	voltage = voltage/128;			// Pour éviter le long on multiplie et on divise par 8 (21*8=168 et 128*8=1024) 
    	DecToAscii(voltage,Ascii);
    }
    
    /****************************************************************
    	Conversion Décimal -> ASCII (Max:999)
    ****************************************************************/
    void DecToAscii(ushort Decimal, uchar *Ascii)
    {
    	uchar reste;
    	
    	Ascii[0] = (uchar)(Decimal/100) + 0x30;
    	reste = (uchar)(Decimal%100);
    	Ascii[1] = (reste/10) + 0x30;
    	Ascii[2] = reste%10 + 0X30;
    }
    Il suffit d'adapter à ton cas.
    @+
    Dernière modification par HULK28 ; 18/10/2007 à 09h15.
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  9. Publicité
  10. #7
    jorg1n

    Re : Résultat conversion A/D sur PIC

    Je vous remercie, j'ai enfin compris...
    Pour l'adaptation, pas de pont diviseur alors, mais quel type d'AOP je peut utiliser?
    et au point de vue de la prog , cela vous parait bon ?

    Encore merci
    Nicolas

  11. #8
    invite_P89
    Invité

    Re : Résultat conversion A/D sur PIC

    LU
    Pour AOP tient,un au hasard LM324

    bon bidouille et
    a bientôt

  12. #9
    HULK28

    Re : Résultat conversion A/D sur PIC

    Citation Envoyé par jorg1n Voir le message
    Je vous remercie, j'ai enfin compris...
    Pour l'adaptation, pas de pont diviseur alors, mais quel type d'AOP je peut utiliser?
    et au point de vue de la prog , cela vous parait bon ?

    Encore merci
    Nicolas
    Bien sur qu'il te faut un pont diviseur, tu ne vas pas appliquer 15V à l'entrée du PIC tout de même.

    Tu fais un pont diviseur et tu entres le point médian sur l'entrée + de l'AO, la patte - étant reliée à la sortie (montage suiveur).
    => grande impédance d'entrée, pas d'influence sur la mesure.
    => faible impédance de sortie, pas d'influence sur la chaîne d'acquisition.

    LM324 ou LM358 sont des bons candidats.
    Attention juste à ne pas les alimenter en +5V tu n'aurait que 3,5V max en sortie pour une entrée à 5V.
    Il faudra les alimenter en 7~8V ou utiliser des LMV324, LMV358: rail to rail.
    @+
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  13. #10
    jorg1n

    Re : Résultat conversion A/D sur PIC

    Merci pour vos réponse...
    et au point de vue de la programmation, cela vous parait bon?.?

    Encore merci
    Nicolas

  14. #11
    invite_P89
    Invité

    Re : Résultat conversion A/D sur PIC

    Pour le programme,je ne suis pas doué en C
    a bientot

  15. #12
    jorg1n

    Re : Résultat conversion A/D sur PIC

    Juste un truc que je ne vois pas...
    Ton résultat a la fin de la conversion est bien sur 10 bits, il correspond a quelle variable dans ton programme...?
    Je te remercie infiniment

    A +
    Nico

    PS: et par la meme occasion, vs en pensez quoi du prog de conversion...merci

  16. Publicité
  17. #13
    DavidDB

    Re : Résultat conversion A/D sur PIC

    Salut,

    OpenADC(ADC_FOSC_32
    Pas certain que cela soit juste...

    Pour moi, c'est ADC_FOSC_16, mais il faut le vérifier avec le datasheet de ton PIC, car je ne l'ai pas.

    David.

Sur le même thème :

Discussions similaires

  1. Conversion Binaire(résultat conv AD) en décimal
    Par jorg1n dans le forum Électronique
    Réponses: 7
    Dernier message: 20/11/2007, 08h26
  2. freqence et conversion analogique sur pic
    Par alainav1 dans le forum Électronique
    Réponses: 4
    Dernier message: 17/05/2007, 18h15
  3. resultat d'une conversion A/N
    Par solid_sneak06 dans le forum Électronique
    Réponses: 21
    Dernier message: 21/05/2006, 15h16
  4. Programmation en C PIC et résultat conversion A/N
    Par smartise73 dans le forum Électronique
    Réponses: 3
    Dernier message: 17/05/2006, 16h57
  5. Conversion hexa en BCD sur PIC
    Par ioio59 dans le forum Électronique
    Réponses: 2
    Dernier message: 14/04/2004, 10h17
Découvrez nos comparatifs produits sur l'informatique et les technologies.