Bonjour,
Comment fonctionne t'il le convertisseur analogique numérique?
si je prends un ADC de 10bit par exemple, et je veux convertir des tensions continues.
par exemple une tension de 3.5V, ça devient combien en binaire?
Merci!
-----
Bonjour,
Comment fonctionne t'il le convertisseur analogique numérique?
si je prends un ADC de 10bit par exemple, et je veux convertir des tensions continues.
par exemple une tension de 3.5V, ça devient combien en binaire?
Merci!
Tout dépend de la tension de référence de l'ADC . donne le lien de la datasheet de l'ADC
Si la gamme de conversion est 0/3,5V , Tu peux, au max, envoyer une tension de 3,4965117V et le résultat est 0x3FF
Bonjour,
Merci pour ta réponse,
j'ai choisi le circuit MCP3002.
comment t'as calculé le 0x3FF? il y a une formule de conversion?
Merci!
Merci pour ta réponse,
http://docs-europe.electrocomponents...6b81380ac0.pdf
si j'ai bien compris, donc pour convertir des micro volts, un convertisseur 16bits ne suffit pas, il me faut un convertisseur 16bits
aucun ADC ne peut convertir des µV
[b]le bon sens est un fardeau, car il faut s'entendre avec ceux qui ne l'ont pas [/b]
bonjour penthode,
tu peux m'expliquer pourquoi stp
biscotte leur domaine se situe , en gros , dans leur domaine d'alimentation , soit entre 3 et 5 V pour les modéles courants.
pour traiter du µV (gamme à définir) il faut du traitement analogique en amont.
[b]le bon sens est un fardeau, car il faut s'entendre avec ceux qui ne l'ont pas [/b]
les micro volts viennent d'une carte de commande d'un moteur en mode standby
eh béh avec ça..... on est ben avancés !
[b]le bon sens est un fardeau, car il faut s'entendre avec ceux qui ne l'ont pas [/b]
Je vois
C'est pour son utopie (inutile) de mesurer un courant de 50µA à 10A) :http://forums.futura-sciences.com/el...ml#post6020304
@achach
La formule que tu cherches est celle là : 1 bit = VREF ÷ ((210bits - 1))
VREF c'est la tension que tu décides de mettre sur la broche du même nom sur ton composant (en respectant les préconisation de la datasheet)
Exemple avec 5V sur VREF
1 bit = 5 / (1024 - 1) = 0.0048V
Si tu mesures une tension de 2V le convertisseur te donnera une valeur numérique de 0x199
Tu sera probablement tenté de réduire la valeur de VREF mais ce serait trop simple, tu t'en doutes bien, tu verras que plus tu baisses la VREF et plus tu dégrades (diminue) le rapport signal/bruit. En français, plus tu dégrades le rapport signal/bruit et plus tu vas lire n'importe quoi puisque ton signal est de plus en plus noyé dans le bruit. C'est pour ça que penthode te dit qu'il faut amplifier tes µV en V (voir mieux, jusque la pleine échelle donc VREF) pour pouvoir mesurer avec toute la dynamique (les 10 bits) de l'ADC.
Là où il n'y a pas de solution, il n'y a pas de problème.
Bonjour,
Le principe c'est 1 bit = Vref/2^n
Il peut y avoir quelques exceptions selon le type de l'ADC, mais mathématiquement Vref/2^(n-1) est un non sens.
Cordialement.
Salut,
Ce n'est pas une exception, c'est valable pour n'importe quel ADC.
Ici on parle d'un ADC 10 bits donc sa résolution permet une quantification de 1024 valeurs possibles (le quantum est égale à VREF ÷ (210bits)) mais si on ramène le tout à la pleine échelle qui est 1023 (la valeur de sortie de l'ADC est comprise entre 0 et 1023, ce qui fait bien 1024 valeur) alors on a bien 1 bit = VREF ÷ (210bits - 1)
Cordialement,
Là où il n'y a pas de solution, il n'y a pas de problème.
Pas simple cette histoire
Je vais tenter une démonstration par l'absurde.
Imaginons, pour exclure tout problème d'arrondi que : VREF = 1.024V
1 bit = 1,024V ÷ (210bits)
1 bit = 0.001V
L'ADC renvoie les valeurs :
0x000
0x001
0x002
0x100
0x3FF
Puisque 1 bit = 0,001V on multiplie simplement la valeur hexa par 0.001V et comme il n'y a pas d'arrondi ça tombe bien :
0x000 = 0.000V
0x001 = 0.001V
0x002 = 0.002V
0x100 = 0,256V
0x3FF = 1.023V au lieu de 1.024V
Ici on voit que 0x3FF ne vaut pas VREF, il vaut peu moins. Oui je sais on pinaille mais pour que 0x3FF vaut VREF il faut que 1 bit = VREF ÷ (210bits - 1)
C'est un très bon exemple mais je dirais plutôt : avec 1024 poteaux combien poses tu de clôtures ?
1023
Bon après il est question de µV de différence et l'ADC est incapable de le voir de toute façon.
Là où il n'y a pas de solution, il n'y a pas de problème.
je confirme qu'il faut bien diviser d'une manière générale par 2n
C'est d'ailleurs la formule qu'on retrouve dans les doc constructeur.
Je vais y aller de mon exemple également:
Si Vref = 4.096 V et que l'on a un convertisseur 1 bit, le quantum q est égal à 4.096 / 2 = 2.048V.
Donc si 0 V <= Vin< 2.048 V, la sortie sera égale à 0
et si 2.048 V <= Vin < 4.096 V, la sortie sera égale à 1
Avec 2 bits q = 4.096/4 = 1.024 V
etc. pour n bitsCode:0 V <= Vin < 1.024 V => 00 1.024 V <= Vin < 2.048 V => 01 2.048 V <= Vin < 3.072 V => 10 3.072 V <= Vin < 4.096 V => 11
Le quantum correspond donc à un intervalle et pas à une valeur palier.
Dernière modification par Jack ; 16/11/2017 à 16h26.
Bonjour,
En complément de ce qu'écrit Jack :
On reprend l'ADC 10 bits avec une tension de référence de 1024 mV :
1. Supposant que le quantum vaut Vref/2n = 1 mV
Si la tension d'entrée vaut entre 0 et 1 mV, l'ADC renvoit 0x000.
Si la tension d'entrée vaut entre 1 mV et 2 mV, l'ADC renvoit 0x001.
Si la tension d'entrée vaut entre 2 mV et 3 mV, l'ADC renvoit 0x002.
...
Si la tension d'entrée vaut entre 1022 mV et 1023 mV, l'ADC renvoit 0x3FE.
Si la tension d'entrée vaut entre 1023 mV et 1024 mV, l'ADC renvoit 0x3FF.
2. Supposant que le quantum vaut Vref/(2n-1) = 1.001 mV
Si la tension d'entrée vaut entre 0 et 1.001 mV, l'ADC renvoit 0x000.
Si la tension d'entrée vaut entre 1.001 mV et 2.002 mV, l'ADC renvoit 0x001.
Si la tension d'entrée vaut entre 2.002 mV et 3.003 mV, l'ADC renvoit 0x002.
...
Si la tension d'entrée vaut entre 1022.999 mV et 1024 mV, l'ADC renvoit 0x3FE.
Le code 0x3FF est donc inutilisable.
C'est d'ailleurs pour cela qu'on vend des références de tension de 1024, 2048, 4096 mV : cela donne des quantums ronds, en nombre de mV entiers.
Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
Voici une doc de chez ST http://www.st.com/content/ccc/resour...CD00004444.pdf
Regardez la définition 3.1 (Page 12 du doc)
L'explication chez Texas http://www.ti.com/lit/an/slaa013/slaa013.pdf
Regardez l'explication 2.1 (page 5 de votre navigateur ou page 1 du doc si vous préférez)
Après je n'ai pas lu entièrement la doc de Texas, peut être qu'un élément me donne tord plus loin ?
Nous ne nous contredisons pas sur le quantum, j'ai écrit plus haut qu'il était égale à 1 LSB = VREF/2n mais le point sur le quel je ne suis pas d'accord c'est que ramené à la tension de pleine échelle, qui est VREF et pas une valeur strictement inférieure à REF, le calcul devient VREF/2n-1
Là où il n'y a pas de solution, il n'y a pas de problème.
C'est un problème d'arrondi
0x3FF c'est exactement la VREF 1024mV dans l'exemple.
Après peut être que je m'explique mal (c'est tout à fait possible) et que j'ai mal traduit ce qu'écrit Texas et ST mais je n'en ai pas l'impression de prime abord.
Là où il n'y a pas de solution, il n'y a pas de problème.
Il y a en effet 2n - 1 intervalles car pour minimiser l'erreur de quantification, le premier palier s'effectue à un 1/2 LSB, et donc le dernier également. La somme du premier et du dernier palier correspond donc à 1 palier complet, ce qui explique pourquoi on en a 1 de moins que les 2n
cependant, un bit, donc un lsb correspond bien au quantum et donc à VFS/2n.
Ce que je veux dire c'est qu'avec cet exemple, il faudrait envoyer entre 1024 et 1025 mV à l'ADC pour obtenir le code 0x3FF. Ce n'est pas acceptable avec une Vref à 1024 mV, c'est pourquoi je qualifie le code d’inaccessible.
Effectivement, ces doc indiquent que les changements de code n'ont pas lieu sur les multiples entiers du quantum, mais à (k+0.5)*Vref/(2n-1) avec k entier entre 0 et 2n-2.
Reprenant mon exemple précédent, cela revient à translater la courbe de réponse d'un demi-quantum vers le bas :
2. Supposant que le quantum vaut Vref/(2n-1) = 1.001 mV
Devient :Si la tension d'entrée vaut entre 0 et 1.001 mV, l'ADC renvoit 0x000.
Si la tension d'entrée vaut entre 1.001 mV et 2.002 mV, l'ADC renvoit 0x001.
Si la tension d'entrée vaut entre 2.002 mV et 3.003 mV, l'ADC renvoit 0x002.
...
Si la tension d'entrée vaut entre 1022.999 mV et 1024 mV, l'ADC renvoit 0x3FE.
Le code 0x3FF est donc inutilisable.
Si la tension d'entrée vaut entre 0 et 0.5005 mV, l'ADC renvoit 0x000.
Si la tension d'entrée vaut entre 0.5005 mV et 1.5015 mV, l'ADC renvoit 0x001.
Si la tension d'entrée vaut entre 1.5005 mV et 2.5025 mV, l'ADC renvoit 0x002.
...
Si la tension d'entrée vaut entre 1023.4995 mV et 1024 mV, l'ADC renvoit 0x3FF.
Cela permet de minimiser l'erreur de quantification (qui se retrouve centrée sur zéro) et de "symétriser" la réponse du composant.
Le quantum moyen est, alors, effectivement de Vref/2n, mais c'est du au fait que la zone donnant le code 0x000 et celle donnant le code 0x3FF sont deux fois plus petite que toutes les autres (qui sont, elles, de largeur Vref/(2n-1)). Autrement dit : sur les 1024 marches, il en est deux petites et 1022 de largeur Vref/(2n-1).
Au temps pour moi.
Dernière modification par Antoane ; 16/11/2017 à 17h30.
Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
Vref/2n+1 plutôt, non?Autrement dit : sur les 1024 marches, il en est deux petites et 1022 de largeur Vref/(2n-1).
Mises ensembles, la première et la dernière marches donnent une marche de largeur "normale" ; additionnée aux 1022 marches "normales", il y a donc 2n-1 équivalent- marches "normales", chacune de largeur Vref/(2n-1)
Autre façon de voir :
Avec la valeur Vref/2n+1, la largeur totale de ces 2n-2 (i.e. 1022) marches "normales" serait de (2n-2)*Vref/(2n+1), soit environ Vref/2, alors qu'on s'attend à ce que les 1022 marches couvre la quasi-intégralité de l aplage de Vin possible.
Dernière modification par Antoane ; 16/11/2017 à 17h43.
Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
On est d'accord, c'est ce que je disais dans mon message #23.Mises ensembles, la première et la dernière marches donnent une marche de largeur "normale" ; additionnée aux 1022 marches "normales", il y a donc 2n-1 équivalent- marches "normales",
La largeur d'une marche normale n'est pas égale à 1 quantum? Dans les ADC que j'utilise, 1 lsb = Vref/2n, donc 1/2 lsb = Vref/2n+1chacune de largeur Vref/(2n-1)
Par exemple MAX103x, figure 12, ou MAX727x, figure 21
Leur dernière marche à pour largeur 1.5 LSB, ce qui donne bien un total de 2n LSB, avec LSB = Vref/2n
Dans la doc donnée par Vincent (http://www.ti.com/lit/an/slaa013/slaa013.pdf, fig. 6.a), la dernière marche à pour largeur 0.5 LSB, ce qui donne bien un total de 2n-1 LSB, avec LSB = Vref/(2n-1).
Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.
En conclusion, la définition d'un LSB dépend du convertisseur choisi.
Dans la pratique, que l'on utilise 2^n ou 2^(n-1) on ne trouvera pas, en réalité, la bonne valeur, puisque il faut tenir compte des effets de bords bien plus importants (offset, gain, influence de la température, routage, etc).
Chaque fabricant "bricole" ses pas pour tomber au mieux sur ses pattes, mais d'un point de vue conceptuel, seul Vref/2^n à un sens, comme il a été justement dit en #23 et démontré en #19 et #20.
Dans la pratique, patatra, les différentes erreurs cumulées ont pris largement le dessus et vous devrez calibrer de toutes façon