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

Mesure d'une tension avec un PIC16



  1. #1
    cubitus_54

    Mesure d'une tension avec un PIC16

    Bonjour,

    Je fais un petit programme qui doit afficher la tension sur un LCD
    Cette tension va de 0 à 5V en faite elle va de 3 à 4.2, car c'est la tension d'une cellule Li-Ion.

    le programme qui calcule est le suivant :

    batt_cal = batt_acq * 5
    decimale = (batt_cal MOD 256) * 39
    decimale = decimale / 100
    entier = batt_cal >> 8


    batt_acq entier 8 bits
    batt_cal entier 16 bits

    Par exemple pour batt_acq = 122
    batt_cal = 610
    decimale = 98 *39 = 3822
    decimale /100 = 38
    entier = 2
    soit 2,38V

    Ici, pas de problème...

    Si batt_acq = 156
    batt_cal = 780
    decimale = 12 *39 = 468
    decimale /100 = 4
    entier = 3
    soit 3,4V

    Il faudrait que ce soit 3,04...

    Faut-il faire une condition en SI avec une gestion de chaine de caractère pour ajouter le "0" ou y a-t-il une autre technique ?

    Merci

    -----


  2. Publicité
  3. #2
    paulfjujo

    Re : Mesure d'une tension avec un PIC16

    bonjour,

    passe par une phase intermediaire
    decim10=decimale/10
    decim100=decimale/100 - decim10*10
    pour recuperer 0,puis 4

  4. #3
    cubitus_54

    Re : Mesure d'une tension avec un PIC16

    Tu démarres à partir d'où ?

    ça ne serait pas plutôt

    unité = x/256

    décimale1=((x-unité*256)x10)/256

    décimale2= [x-(unité*256*10+décimal1*256)/10]*100/256

  5. #4
    paulfjujo

    Re : Mesure d'une tension avec un PIC16

    en fait, il me semble qu'il y a incompatibilité entre modulo 256 et decimal..


    autre soluce plus simple , si tu peux forcer la virgule sur l'affichage
    en multipliant par un rapport superieur à 100..

    Batt_Acq=122 122*195 => 23790
    batt_Acq=156 156*195 => 30420
    mettre la virgule apres le 1er digit
    Dernière modification par paulfjujo ; 02/08/2013 à 14h15.

  6. #5
    cubitus_54

    Re : Mesure d'une tension avec un PIC16

    Finalement c'est excellent

    batt_cal = batt_acq * 196
    temp = ToString$ (batt_cal)
    batt_chr = Left$ (temp,1)
    batt_chr = batt_chr + ","
    temp = Mid$ (temp,1,2)
    batt_chr = batt_chr + temp
    batt_chr = batt_chr + "V "

    Merci

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

    Re : Mesure d'une tension avec un PIC16

    au fait,
    tu pourrais ameliorer la resolution
    en fixant -vref de l'adc, a 2,048v circuit de ref tension,
    ou via un pont diviseur de tension grosso modo 3k+2k a affiner.
    de sorte a avoir 1024pts pour 3V.

  9. Publicité
  10. #7
    cubitus_54

    Re : Mesure d'une tension avec un PIC16

    Effectivement,

    La résolution 8 bits est suffisante pour afficher la tension de la batterie la précision est de 19.6 mV soit 0,4 % ce qui est déjà très bon.

    Avec le DAC 10 bits la précision serait de 4,88 mV soit 0,097%.
    et je n'aborde pas le cas ou on pourrait prendre -Vref= 3V et +Vref = 5V
    Dans ce cas, il faut soit une tension d'alimentation précise ou une référence de tension précise.

    Merci pour ta participation
    Dernière modification par cubitus_54 ; 03/08/2013 à 09h14.

Sur le même thème :

Discussions similaires

  1. probleme de debordement avec pic16
    Par veniroth dans le forum Électronique
    Réponses: 7
    Dernier message: 07/05/2012, 17h50
  2. capteur de tension LEM / mesure tension alternative
    Par sobek dans le forum Électronique
    Réponses: 10
    Dernier message: 27/07/2011, 21h43
  3. mesure de tension avec multimètre man'x en mode ampèremètre
    Par mahtador dans le forum Électronique
    Réponses: 1
    Dernier message: 31/01/2011, 19h20
  4. Réponses: 8
    Dernier message: 11/08/2009, 14h26
  5. Problème avec MPLAB et PIC16
    Par tof41 dans le forum Électronique
    Réponses: 4
    Dernier message: 04/03/2009, 17h03