adc à base de PIC16F877
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

adc à base de PIC16F877



  1. #1
    invite412b515c

    adc à base de PIC16F877


    ------

    salut mes amis .
    je suis entrain de réaliser un programme qui me permet de mesurer une tension qui varie de 0 à 5V.
    mais le problème que j'avais c'est qu'il affiche un valeur moitié .
    c'est à dire si j'ai 3v il affiche 1.52.
    voici mon programme :
    ConversionAN
    ; initialisation
    call LCD_CLEAR
    BSF STATUS, RP0 ; Bank 1 selectonnee
    MOVLW b'00001110' ; select RA0
    MOVWF ADCON1 ; as analog inputs
    BCF STATUS, RP0 ; Bank 0 selectonnee

    MOVLW b'10000001' ; Select; RC osc, Ch2
    MOVWF ADCON0 ; turn on A/D

    Convert CALL Wait50µs ; provide necessary samplig time

    BSF ADCON0, 2 ; Start new A/D conversion
    loop
    BTFSC ADCON0,2 ; A/D over ?
    GOTO loop ; no then loop
    CALL LCD_LOCATE_LINE0
    MOVF ADRESH, W
    CALL LCD_SEND_DECI ; print high bit of the result
    CALL LCD_PRINT_SPACE
    CALL LCD_PRINT_SPACE
    MOVLW "V"
    CALL LCD_SEND_CHAR
    GOTO Convert ; boucle
    aussi comment je peux multiplier cette valeur , car j'ai essayer par ajouter la mème valeur c'est à dire faire une addition de mème valeur .
    mais il a marché pour les valeurs de 0 à 2.5 V
    pour les autres ça va pas car il m'affiche des valeurs de 000 à 255.
    qui peut m'aider à resoudre ces problèmes merci.

    -----

  2. #2
    invitef86a6203

    Re : adc à base de PIC16F877

    normale par défaut la référence est le +5V et non pas 10V.
    tu fait un decalage pour x 2.

    rlf ADRESH ,f ; x 2
    sachant que le bit 7 sera perdu.

    ou en 16bits

    clrf ADRESH_H ; efface la partie haute du résultat 16bits
    rlf ADRESH,f ; x 2
    rlf ADRESH_H,f ; recupère le 7iém bit de ADRESH en 8 ièm bit de la valeur 16 bit

    Le 8 ièm bit sera sur le bit 0 de ADRESH_H

  3. #3
    invite5637435c

    Re : adc à base de PIC16F877

    Normal,

    Pour 5V, avec ce programme tu obtiendras 255 (conversion en 8 bits), donc pour 3V tu auras 152 et non pas 1.52.

    Il faut effectuer une conversion Hexa->décimale puis faire un rapport de type Y=(255*X)/5 pour avoir la valeur exacte en volt puis faire une conversion ASCII pour pouvoir afficher le résultat sur un afficheur.
    @+

  4. #4
    invitef86a6203

    Re : adc à base de PIC16F877

    Y=(255*X)/5
    avec un rapport 2 comme je le propose
    x=(Y/255)*5
    x=(2/255)*5 = 0.039
    chaque point vaudra 0.039 Volt

    Effectivement,J'ai peut être simplifié un peu vite ... , sans explication.

  5. A voir en vidéo sur Futura
  6. #5
    invitef86a6203

    Re : adc à base de PIC16F877

    pour une lecture directe , il faudrait une référence qualibrée pour 255 divisions.
    Intuitivement on peu dire 2.55V.

    par le calcul avec 0.01 V par division
    255 * 0.010 = 2.55V

    Sinon Pour la conversion exacte , il faudra faire un calcul ou utiliser une table de résultats si la valeur finale est sur 255 octets au dela le calcul devient impératif.
    Mieux vaux calibrer correctement ou admettre l'erreur de 1.9% = 5/(255/100)

  7. #6
    invite412b515c

    Re : adc à base de PIC16F877

    merci mon ami
    Citation Envoyé par HULK28 Voir le message
    Normal,

    Pour 5V, avec ce programme tu obtiendras 255 (conversion en 8 bits), donc pour 3V tu auras 152 et non pas 1.52.

    oui je sais moi j'ai mis le point .
    Il faut effectuer une conversion Hexa->décimale puis faire un rapport de type Y=(255*X)/5 pour avoir la valeur exacte en volt puis faire une conversion ASCII pour pouvoir afficher le résultat sur un afficheur.
    @+
    comment je peux faire le rapport de type Y=(255*X)/5 avec langage assembleur.
    une conversion ASCII (c'est à dire décimale -> hexa)
    c'est ça??

  8. #7
    invite412b515c

    Re : adc à base de PIC16F877

    merci mon ami
    Citation Envoyé par freepicbasic Voir le message
    Y=(255*X)/5
    avec un rapport 2 comme je le propose
    x=(Y/255)*5
    x=(2/255)*5 = 0.039
    chaque point vaudra 0.039 Volt

    Effectivement,J'ai peut être simplifié un peu vite ... , sans explication.
    mon ami est ce que tu peux simplifie tout ça pour moi
    en disant comment je peux faire tout ça en langage assembleur
    merci

  9. #8
    invite5637435c

    Re : adc à base de PIC16F877

    Tu trouveras ici des sources utiles et pratiques, tu as également des sources téléchargeables sur le site de Microchip avec des notes d'applications très bien faites.
    @+

    http://www.abcelectronique.com/bigon....php?par=30ca1

Discussions similaires

  1. adc +clavier+LCD à base de PIC16F877
    Par invite412b515c dans le forum Électronique
    Réponses: 5
    Dernier message: 17/05/2007, 15h54
  2. partage d'un ADC
    Par invite715b0c13 dans le forum Électronique
    Réponses: 1
    Dernier message: 06/02/2007, 18h28
  3. adc avec un PIC12F683
    Par invite721580c7 dans le forum Électronique
    Réponses: 2
    Dernier message: 21/01/2007, 15h38
  4. Pic18f Adc
    Par invitecfe43b36 dans le forum Électronique
    Réponses: 1
    Dernier message: 28/07/2006, 15h43
  5. Adc 0804 (can)
    Par inviteb2162cfe dans le forum Électronique
    Réponses: 1
    Dernier message: 15/05/2005, 19h59
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...