​ ​ ​ ​ readadc10 sur batterie avec TMP36
Page 1 of 2 1 2 LastLast
Results 1 to 10 of 12

Thread: readadc10 sur batterie avec TMP36

  1. #1
    New Member
    Join Date
    May 2015
    Location
    France
    Posts
    17

    Default readadc10 sur batterie avec TMP36

    Bonjour à tous, voila tout est à peut prêt dans le titre, J'aimerai connaitre la température via un TMP36.
    Je sais qu'il faut convertir la valeur du readadc10 en volte (et déjà là sur le web il y as plusieurs formule différente, donc je ne sais pas laquelle prendre!)

    Ensuite d'après le site Adafruit, la formule pour convertir les milivolte en température la formule serait :
    Temp in °C = [(Vout in mV) - 500] / 10

    Si cette formule est bonne, je ne sais pas comment récupérer la tension ADC puisque la tension de référence peut changer (alimentation batterie, 4.2V).

    Merci d'avance.

  2. #2
    Senior Member
    Join Date
    Jul 2010
    Location
    paris
    Posts
    1,507

    Default

    Quote Originally Posted by guitoon41 View Post
    Bonjour à tous, voila tout est à peut prêt dans le titre, J'aimerai connaitre la température via un TMP36.
    Je sais qu'il faut convertir la valeur du readadc10 en volte (et déjà là sur le web il y as plusieurs formule différente, donc je ne sais pas laquelle prendre!)

    Ensuite d'après le site Adafruit, la formule pour convertir les milivolte en température la formule serait :
    Temp in °C = [(Vout in mV) - 500] / 10

    Si cette formule est bonne, je ne sais pas comment récupérer la tension ADC puisque la tension de référence peut changer (alimentation batterie, 4.2V).

    Merci d'avance.
    Bonjour,

    Il faut calibrer l'ADC, avec ce capteur, 2,048 v semble la bonne valeur:
    voir ADCconfig et VFRsetup
    Ex pour les LM35 et 335:

    http://electromag1.wifeo.com/meesure...5-et-lm335.php

    MM

  3. #3
    New Member
    Join Date
    May 2015
    Location
    France
    Posts
    17

    Default

    Cool, c'est exactement se que je cherché. J'avais vu sur le forum "ADCconfig et VFRsetup" mais je comprend bien mieux le principe avec l'exemple sur le site.
    Merci.

  4. #4
    New Member
    Join Date
    May 2015
    Location
    France
    Posts
    17

    Default

    Oups, pardon, je comprend bien le principe de la référence interne, mais je ne vois pas la formule pour transformer la valeur ADC en milivolte ?

    EDIT: Suffi de multiplier par la tension de reference car "ADC 10 bits divise la tension d'alimentation en 1024 paliers"
    Last edited by guitoon41; 24-02-2018 at 01:50.

  5. #5
    Senior Member
    Join Date
    Jul 2010
    Location
    paris
    Posts
    1,507

    Default

    Quote Originally Posted by guitoon41 View Post
    Oups, pardon, je comprend bien le principe de la référence interne, mais je ne vois pas la formule pour transformer la valeur ADC en milivolte ?

    EDIT: Suffi de multiplier par la tension de reference car "ADC 10 bits divise la tension d'alimentation en 1024 paliers"
    Bonjour,

    readadc10 donne une résolution de 2mV, de 0 à 2,048v.
    La valeur en mV est la valeur de l'adc10 multipliée par deux, plus astucieux d'additionner deux mesures consécutives

    Il faut maintenant appliquer la formule de transformation tension -> température.
    Le picaxe ne connait que des nombres entiers positifs, faut bricoler un peu

    MM
    Last edited by MGU; 24-02-2018 at 09:52.

  6. #6
    New Member
    Join Date
    May 2015
    Location
    France
    Posts
    17

    Default

    Quote Originally Posted by MGU View Post
    Bonjour,

    readadc10 donne une résolution de 2mV, de 0 à 2,048v.
    La valeur en mV est la valeur de l'adc10 multipliée par deux, plus astucieux d'additionner deux mesures consécutives

    Il faut maintenant appliquer la formule de transformation tension -> température.
    Le picaxe ne connait que des nombres entiers positifs, faut bricoler un peu

    MM
    Je pense que c'est pas trop mal :

    Code:
    fvrsetup FVR2048		; set FVR as 2.048V to prepare for TMP36 Temprature read
    adcconfig %011 			; set ADC Vref+ = 2.048, 0V Vref-
    
    symbol TMP36 = C.1
    symbol val36 = w1
    symbol negat = w2
    
    main:
    	
    	' Si 1 = valeur negative.
    	negat = 0
    	
    	' Lecture de la valeur ADC.	
    	readadc10 TMP36, val36
    	
    	
    	' Si la valeur est plus PETITE  que ""(250 * 2) - 500 / 10"" = ZERO
    	' En dessous 0 picaxe retire la valeur à 65536, on fait donc la difference.
    	if val36 < 250 then
    		let val36 = val36 * 2
    		let val36 = val36 - 500
    		let val36 = 65535 - val36 + 1 ' + 1 car 65535 max.
    		let val36 = val36 / 10
    		
    		negat = 1
    			
    	' Valeur positive
    	else
    		let val36 = val36 * 2
    		let val36 = val36 - 500 / 10
    		
    	end if
    	
    	
    	
    	debug
    	
    	goto main
    Plus qu'a envoyer la valeur sur un mini 3x 7segment.

  7. #7
    Senior Member
    Join Date
    Jul 2010
    Location
    paris
    Posts
    1,507

    Default

    Quote Originally Posted by guitoon41 View Post
    Je pense que c'est pas trop mal :
    Plus qu'a envoyer la valeur sur un mini 3x 7segment.
    Mouai...As tu fait le calcul ligne à ligne pour voir le résultat?

    En fait, la mesure sera probablement instable, et l'erreur de mesure sera multipliée par deux.
    En ajoutant deux mesures successives, on moyenne sur deux mesures (c'est déjà ça) et on augmente la résolution.

    Deux cas :
    La valeur est >= 500, c'est une température positive, on enlève 500 pour avoir la température.
    La valeur est < 500, c'est une t° négative
    En calculant 500- valeur lue, on a la valeur absolue de cette température, il faut ajouter un "-" devant l'affichage.

    Enfin, c'est ce que j'aurais essayé de faire...

    Pour l'affichage, il y a des 4 chiffres TM1637, c'est une autre histoire:

    http://electromag1.wifeo.com/affiche...par-tm1637.php

    MM

  8. #8
    New Member
    Join Date
    May 2015
    Location
    France
    Posts
    17

    Default

    Quote Originally Posted by MGU View Post
    Mouai...As tu fait le calcul ligne à ligne pour voir le résultat?

    En fait, la mesure sera probablement instable, et l'erreur de mesure sera multipliée par deux.
    En ajoutant deux mesures successives, on moyenne sur deux mesures (c'est déjà ça) et on augmente la résolution.

    Deux cas :
    La valeur est >= 500, c'est une température positive, on enlève 500 pour avoir la température.
    La valeur est < 500, c'est une t° négative
    En calculant 500- valeur lue, on a la valeur absolue de cette température, il faut ajouter un "-" devant l'affichage.

    Enfin, c'est ce que j'aurais essayé de faire...

    Pour l'affichage, il y a des 4 chiffres TM1637, c'est une autre histoire:

    http://electromag1.wifeo.com/affiche...par-tm1637.php

    MM
    Ca fonctionne bien mais c'est vrai que ta formule est bien moins chiante. Je n'y avais pas pensé d'inverser ""valeurADC - 500"" en ""500 - valeurADC""
    Se qui est bien plus simple, du coup j'utilise cette méthode.

    Pour se qui est de faire 2 fois d’affilés readadc10 je ne comprend pas pourquoi la valeur changerai en 10ms et donc en faire une moyenne.

  9. #9
    Senior Member
    Join Date
    Jul 2010
    Location
    paris
    Posts
    1,507

    Default

    Quote Originally Posted by guitoon41 View Post
    Pour se qui est de faire 2 fois d’affilés readadc10 je ne comprend pas pourquoi la valeur changerai en 10ms et donc en faire une moyenne.
    Je ne connais pas ces capteurs, mais pour les LM35 et LM335, la mesure est bruitée (as tu essayé ton capteur?) et donc, deux mesures consécutives ne sont pas forcement identiques, on peut ajouter une pause de qques centaines de ms entre les deux. Ou faire 10 mesures et diviser par 5 pour, a voir...
    Mais il est peut être super stable.

    MM

  10. #10
    New Member
    Join Date
    May 2015
    Location
    France
    Posts
    17

    Default

    Quote Originally Posted by MGU View Post
    Je ne connais pas ces capteurs, mais pour les LM35 et LM335, la mesure est bruitée (as tu essayé ton capteur?) et donc, deux mesures consécutives ne sont pas forcement identiques, on peut ajouter une pause de qques centaines de ms entre les deux. Ou faire 10 mesures et diviser par 5 pour, a voir...
    Mais il est peut être super stable.

    MM
    Oui pour le TMP36, il y a peut être un tolérance de +/- 2° comparé au LM35 +/- 0.5° mais aucun souci de "bruit". la valeur reste fixe entre plusieurs ADC.
    Merci pour ton aide.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •