Forum de support pour les locuteurs de la langue française qui souhaitent écrire dans leur langue maternelle.
Moderator: Benj
tech
Posts: 353 Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Post
by tech » Mon May 09, 2016 9:15 pm
Bonjour,
Voici j'utilise un IC MCP9700A Analog-to-Digital Converters @ 10.0 mV/°C. Je ne parviens pas à trouver la bonne formule sur le forum pour calculer l'ADC et le transmettre en Celsius??
Merci
Chris
Dan81
Valued Contributor
Posts: 268 Joined: Sun Jan 15, 2006 4:07 pm
Location: Albi France
Been thanked: 60 times
Contact:
Post
by Dan81 » Thu May 12, 2016 8:31 am
Salut Christian
Le MCP donne 0.5V à T=0° et a un coef de 10mV/°.
Je suppose que l'alim du µP est de 5V et que la lecture analogique se fait sur 10 bits.
Dans le sous programme "Inits" ,
tu mets un bloc calcul avec :
N0 = 102 // valeur pour temp = 0° sur 10 bits
Vcc = 5000 // V alim en mV
Dans le prog principal , apres la lecture du MCP (à mettre dans N_Temp)
tu mets un bloc calcul avec :
Temp = ((((N_Temp - N0) * Vcc) / 10.0) / 1024)
Daniel
tech
Posts: 353 Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Post
by tech » Thu May 12, 2016 1:47 pm
Bonjour Daniel,
Voici j'ai utilisé une partie de ton calcule mais je ne parviens pas à avoir les valeurs du range qui sont de -40°C à +125°C avec le ADC?
Voir le programme....
Merci de ton aide!
Attachments
MCP9700 Celsius v1.fcfx
(9.33 KiB) Downloaded 364 times
Dan81
Valued Contributor
Posts: 268 Joined: Sun Jan 15, 2006 4:07 pm
Location: Albi France
Been thanked: 60 times
Contact:
Post
by Dan81 » Thu May 12, 2016 2:52 pm
salut
ta variable READADC0 n'est pas signée.
Prends "entier" (+/- 32000)
Daniel
tech
Posts: 353 Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Post
by tech » Thu May 12, 2016 3:32 pm
Salut Daniel,
Même si la variableREADADC0 et signée (+/- 32000) ça ne change pas la valeur afficher sur le LCD!?
Merci!
Chris
Dan81
Valued Contributor
Posts: 268 Joined: Sun Jan 15, 2006 4:07 pm
Location: Albi France
Been thanked: 60 times
Contact:
Post
by Dan81 » Fri May 13, 2016 6:55 am
Salut
Le problème est il en simu ou en réel ?
Sauf erreur : pour 0° => 0.5V (n=102); 100°=> 1.5V (n=307) ; -40° => 0.1V (n=10) (si VccµP = 5V)
Si tu affiches directement Celsius la valeur doit être bonne.
Dans ton cas, tu découpes la valeur qui est un nombre entier, le résultat est Celsius/10.
Si tu veux une pseudo-precision, dans le calcul divise par "1.0" à la place de "10.0".
Ton µP est il alimenté en 5V ou 3.3 ?
Donne moi quelques valeurs obtenues.
Daniel
tech
Posts: 353 Joined: Tue Sep 23, 2008 9:39 am
Been thanked: 9 times
Post
by tech » Wed May 18, 2016 7:10 pm
Bonjour Daniel
Voici je viens de faire des tests rée avec le MCP9700, voici les valeurs obtenues:
Sur la pin Vout du MCP9700A j'ai 0.855 volts ce qui devrais me donne comme valeur dans mon LCD 25C mais j'ai plutôt -9.7C?
Mon µP est il alimenté en 5V...
Merci
Chris
Dan81
Valued Contributor
Posts: 268 Joined: Sun Jan 15, 2006 4:07 pm
Location: Albi France
Been thanked: 60 times
Contact:
Post
by Dan81 » Fri May 20, 2016 8:31 am
Salut Christian
Pour 25° , la tension doit être de 0.75V (n= 153) , 0.855V correspond à 35.5° (175).
Il y un problème avec tes valeurs. Ton capteur est il loin du µP ?
Si tu modifies la température, vois tu changer N ?
Teste le programme joint.
Daniel
Attachments
MCP9700 Celsius v2.fcfx
OK sous Proteus7 (10.04 KiB) Downloaded 339 times