Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.



  1. #1
    hary

    Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.


    ------

    Bonjour à Tous.

    J'ai découvert les uC avec Arduino.
    Le B-a-ba, me semble t-il est de pourvoir lire une tension grâce à l'ADC intégré au uC. Utilisation de capteur divers, contrôle tension de batterie, ampèremètre par résistance Shunt......

    Au travers de quelques manipulations et observations personnelles, j'ai été amené à décortiquer la question d'une mesure précise.
    Or, je trouvait des modes de calcul utilisant des formule du style ADC/1023*Vréf ou ADC/1024*Vréf. (ADC étant la valeur renvoyée par l'ADC comprise entre 0 et 1023 pour un codage sur 10bit, Vréf, la tension de référence souvent considérée comme étant 5.00V).

    J'ai commencé à faire quelque recherche et suis tombé sur ça : (désolé, c'est en Anglais)
    http://provideyourown.com/2012/secre...ttery-voltage/

    Ici, j'ai enfin compris les raisons pour lesquelles mes résultats étaient si inconstants.

    Puis, en essayant de bien comprendre afin de pouvoir faire une petite routine qui permettrait une autocalibration facile de chacune de mes platines Arduino, je me suis rendu compte que le gars du lien cité utilisait 1023, que d'autres lien référencés dans ce même article indiquaient 1024.
    Je ne savais plus à qui et à quoi me fier et était de nouveau désespéré !
    .
    Un petit coup de Google "ADC 1023 vs 1024" et là, Euréka, je suis arrivé sur ça ! (toujours en anglais)
    http://forum.allaboutcircuits.com/sh...ad.php?t=80018


    Vous l'avez compris. La réponse est ni l'une ni l'autre des 2 formules proposées en début de post !

    Depuis mes début en Arduino, j'utilisais l'une ou l'autre avec Vréf = 5.00V ! Que de sources d'erreurs !

    j'aimerai bien savoir ce que les bons programmeurs maitrisant les uC utilisent comme formule pour calculer la tension renvoyée par leur ADC.
    Procèdent ils à une calibration ou étalonnage de Vréf ?

    -----
    Dernière modification par hary ; 28/04/2014 à 23h18.

  2. #2
    kevin8z

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Le quantum se calcul comme suit : Q = Vref/2^Nbits.
    Donc quand tu a converti ta tension, tu fait Q * N (le nombre retourné).

  3. #3
    Jack
    Modérateur

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Je pense que c'est écrit dans la doc de l'ADC, donc il ne doit pas y avoir de problème.

    De plus pour quelle raison on devrait diviser par 2n - 1 pour un convertisseur n bits?

  4. #4
    cubitus_54

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    En prenant un exemple sur 2 bits.
    On peut avoir les valeurs : 0 1 2 3 - > on compte de 0 à 3 (2^2-1) et pas jusqu'à 4...

    On dispose de 4 valeurs, mais 3 variations donc la variation n'est pas U/4, mais U/(4-1)

    Le quantum est donc égal à Umax/(2^n-1)

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

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Bonjour,
    c'est l’éternel problème : en reprenant l'exemple sur 2 bits : il y a 4 marches en comptant le zéro!
    Tous les ADC sont conçus pour que 1LSB = Vref/2^n.
    ce que dit le second lien est correct mais en effet si Vref = Valim alors il faut calibrer l'ADC en codant une tension nulle externe (cela donnera l'offset) et une tension externe précise (ajout d'une référence de tension de précision) qui donnera le gain.
    dans ce cas si Vn0 est ce que retourne l'ADC pour le zéro et Vnr la valeur lue pour la ref (Vr) de tension pour toute autre tension qui renvoie Vnx on fait le petit calcul suivant:
    Vx = (Vnx-Vn0)*Vr/(Vnr-Vn0).
    Nota : ce calcul ne vaut que si Vn0 reste très petit.
    JR


    JR
    l'électronique c'est pas du vaudou!

  7. #6
    Jack
    Modérateur

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Citation Envoyé par cubitus_54 Voir le message
    En prenant un exemple sur 2 bits.
    On peut avoir les valeurs : 0 1 2 3 - > on compte de 0 à 3 (2^2-1) et pas jusqu'à 4...

    On dispose de 4 valeurs, mais 3 variations donc la variation n'est pas U/4, mais U/(4-1)

    Le quantum est donc égal à Umax/(2^n-1)
    C'est marrant, parce que je prends souvent l'exemple avec 2 bits pour montrer qu'il faut bien diviser par 4.
    On peut même prendre une entrée logique qui peut être considérée comme un convertisseur 1 bit: le seuil n'est évidemment pas aussi simplement défini, mais tout ce qui est au dessous de Vcc/2 est considéré comme un 0 et tout ce qui est au dessus comme un 1.

    Pour le reste jiherve a parfaitement répondu.

  8. #7
    PA5CAL

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Bonjour

    Citation de la datasheet de l'ATmega328P (pour l'Arduino Uno, notamment) au § 23.2 :

    he ADC converts an analog input voltage to a 10-bit digital value through successive approxi- mation. The minimum value represents GND and the maximum value represents the voltage on the AREF pin minus 1 LSB.
    et au § 23.7 de la même datasheet :

    For single ended conversion, the result is :

    Les indications sont apparemment contradictoires avec l'interprétation où une tension d'entrée de 5V donnerait 1023 comme résultat.

    Mais c'est sans compter sur le fait que ces formules sont insuffisantes pour déterminer la tension réellement lue, puisqu'il faut en réalité également tenir compte des erreurs propres au convertisseur en terme de gain, d'offset et de non-linéarités, et de l'erreur provenant de l'imprécision de la tension de référence ... en plus des erreurs imputables au bruitage des mesures.

    Quand on se réfère aux spécifications du convertisseur un peu plus loin dans la datasheet, on s'aperçoit que les erreurs attendues sont typiquement de 2 LSB pour le gain, 2 LSB pour l'offset et 4,5 LSB au total (2 LSB seulement à basse fréquence et avec le réducteur de bruit).

    Dans ces conditions, cette discussion sur la formule à utiliser (qui ne porte finalement que sur 1 LSB) n'a plus aucune pertinence, car quel que soit le choix adopté on risque de se trouver à côté de la vérité.
    Dernière modification par PA5CAL ; 29/04/2014 à 11h55.

  9. #8
    abracadabra75

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Bonjour.
    1023 contre 1024...
    Tout ça résulte d'une incompréhension du 0 en mathématiques....
    Il y a confusion entre '0 donc ce n'est "rien", et 0 qui représente(très grossièrement) une valeur : mon thermomètre marque 0.
    Que de discussions pour différencier la numération de 0 à 1023 soit, (je vous le donne en 1000!) 1024 intervalles (ou pas), tout comme dans la journée les horloges sont marquées de 0 à 23 heures pour une durée de 24 heures.
    Donc, tous les calculs étant basés sur le nombre de pas, doivent être faits avec 1024 et non 1023.

    D'autre part, en ce qui concerne Vref, il faudrait que nos djeun's abandonnent l'idée qu'un µp peut tout faire... sans que , eux, n'aient rien à faire .
    C'est vrai si l'on en revient aux principes de base qu'ils semblent trop vouloir ignorer: si l'on veut avoir un résultat fiable depuis le CAN, tous les ouvrages (sérieux) précisent bien que la mesure n'est fiable que si Vref est stable.
    On peut en conclure que si l'on utilise la tension de référence interne, celle-ci ne sera que le reflet de la tension d'alimentation et de ses variations possibles, sauf si les spécifications du µp utilisé précisent que Vref est indépendante de Valim.
    Une zéner compensée en température, un bon vieux TL431, un CI référence de tension, peuvent fournir une solution meilleure que Vref interne.

    Et tous ces calculs.... ne connaissant rien du cahier des charges, du but final du montage, la précision demandée est elle dépassée ou seulement obtenue? Connaître la tension de ma batterie au millivolt près (+ ou - x digits, ce qu'on s'empresse d'oublier!!!!) , est-ce vraiment nécessaire? Si c'est du positionnement GPS, c'est alors (peut-être) valable (encore que cela fait x milliers d'années qu'on navigue sans), sauf si c'est comme on le voit pour frimer en faisant son jogging dans le parc du coin!

    Bonne bidouilles.
    Il n'y a que dans le dictionnaire où 'réussite' vient avant 'travail'.

  10. #9
    cubitus_54

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Bonjour,

    On parle bien d'un ADC pour UC (et pas du DAC)

    Quand on regarde la doc d'un PIC on serait plutôt sur du Verf/1023...
    A noter que le quantum en 10 bit et petit
    /1023 cela donne 4.8875mV
    /1024 cela donne 4.8828mV

    Nom : Image3.gif
Affichages : 215
Taille : 10,6 Ko

  11. #10
    gcortex

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Citation Envoyé par cubitus_54 Voir le message
    On parle bien d'un ADC pour UC (et pas du DAC)
    C'est la même chose. L'arrondi est fait par défaut

  12. #11
    PA5CAL

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Oup...
    Citation Envoyé par PA5CAL Voir le message
    Les indications sont apparemment contradictoires avec l'interprétation où une tension d'entrée de 5V donnerait 1023 comme résultat.
    Il faut lire : « ... l'interprétation où un résultat de 1023 correspondrait à une tension d'entrée de 5V. »

    En effet, une entrée à 5V donnera théoriquement toujours 1023, que l'échelle soit 1023 ou 1024.
    Dernière modification par PA5CAL ; 29/04/2014 à 13h52.

  13. #12
    cubitus_54

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    C'est la même chose. L'arrondi est fait par défaut
    Il n'est pas question ici d'arrondi....

    Pour un DAC en R2R
    Vs=Verf(N/2^n)

    pour un DAC en résau binaire
    Vd=Vref(N/((2^n)-1)

    Cela dépend de la structure

  14. #13
    gcortex

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    On vend des centaines de convertisseurs.
    Trouve moi en un à 2^n - 1 pas.

  15. #14
    jiherve

    Re : Pour utilisateur avertis de uC : ADC/1023*Vréf ou ADC/1024*Vréf.

    Bonjour,
    oui mais là c'est vraisemblablement SAR (qui bien sur dine à l'huile) et donc le nombre de pas est strictement une puissance de 2 car chaque step est la moitié du précédent.
    et la fonction de transfert que tu as jointe fait implicitement référence à un arrondi car les nez de marche sont à 2(k+1)LSB/2!
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. Vref stable pour conversion A/N
    Par princesofien dans le forum Électronique
    Réponses: 1
    Dernier message: 20/11/2010, 09h13
  2. Vref ADC Pic
    Par gcortex dans le forum Électronique
    Réponses: 11
    Dernier message: 14/10/2010, 08h48
  3. ALI Vref et Amplification
    Par invitec1fb11ca dans le forum Électronique
    Réponses: 1
    Dernier message: 03/11/2009, 18h39
  4. Vref
    Par invitef1cfab1e dans le forum Électronique
    Réponses: 2
    Dernier message: 22/05/2007, 00h56
  5. Tension vref des pic
    Par invitea192d499 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/05/2005, 16h59
Découvrez nos comparatifs produits sur l'informatique et les technologies.