Résolution TMP36

Bonjour on m'a dit qu'il était possible d'améliorer la résolution du TMP36 et je voulais avoir plus d'information sur le sujet.

#include <SPI.h>

const int sensorPin0 = A0; //Numéro du port analogique sur lequel la température est mesurée

void setup()
{
Serial.begin(9600);
pinMode(A0, INPUT);
analogReference(INTERNAL);
}

void loop()
{
float mesure; //Variable pour le stockage mesure retournée par le capteur
float tension; //Variable pour le stockage de la tension
float temperature; //Variable pour le stockage de la température

mesure = analogRead(A1); //Lecture de la valeur fournie par le capteur de température
tension = (mesure * 1.1) / 1024; //Conversion en tension (en volt)
// 110 mv pour le décallage
temperature = (tension -0.5) * 100.0; //Conversion en température (en degré Celsius) delay(1000);
//Serial.println(mesure);
//Serial.println(tension);
Serial.println(temperature); //Ecriture de la temperature sur le potr série
delay(1000);
}

J'ai effectué ce bout de code et je pensais me retrouver avec une température plus précise mais un seuil de tension ne pouvant pas dépasser le 60 degrés.

Je reçois des valeurs incohérentes température de -11 à 50 degrés :s

Merci de votre aide Cordialement Quentin

Quentinb56:
Bonjour on m'a dit qu'il était possible d'améliorer la résolution du TMP36 et je voulais avoir plus d'information sur le sujet.

J'ai effectué ce bout de code et je pensais me retrouver avec une température plus précise mais un seuil de tension ne pouvant pas dépasser le 60 degrés.

Je reçois des valeurs incohérentes température de -11 à 50 degrés :s

Merci de votre aide Cordialement Quentin

bonjour
problème récurent avec les capteurs T° ana qui sortent en mV/degrés
lire déjà ça
http://forum.arduino.cc/index.php?topic=169442.msg1260774#msg1260774

Ah ok merci pour cette réponse rapide !

Je complète car j'ai encore approfondi le sujet :
Une conversion "normale" prend 13 cycles horloge de l'ADC qui avec le bootloader arduino est préconfigué à 125 kHz.

Attention à la mise en route du convertisseur la première conversion prend 23 à 25 cycles et Atmel recommande de la rejeter.
En API arduino la mise en route de l'ADC est effectuée implicitement a chaque appel de la fonction analog.Read()

De même après un changement soit de référence soit même d'entrée du multiplexeur Atmel recommande de ne pas tenir compte de la première mesure.

Ce que je fais maintenant quand je veux faire une acquisition A/N:

  • en premier une boucle poubelle : de 3 à 5 acquisitions dont je ne garde pas la valeur.
  • ensuite la véritable acquisition.

La suite dans quelque temps mais attiser votre curiosité :grin: je vous indique que j'ai réussi à obtenir une mesure parfaitement stable et juste avec un LM35 et un LM335 au bout de 50 m de câble ethernet catégorie 5.

Et pour enfoncer encore un peu plus le clou : toute la solution est décrite dans les datasheets du LM35, du LM335, de l'ATMega 328p et dans les notes d'application Atmel, je n'ai rien inventé.
Comme quoi il faut lire la documentation.

68tjs:
Je complète car j'ai encore approfondi le sujet :
...

  • La suite dans quelque temps mais attiser votre curiosité :grin: je vous indique que j'ai réussi à obtenir une mesure parfaitement stable et juste avec un LM35 et un LM335 au bout de 50 m de câble ethernet catégorie 5.

  • Comme quoi il faut lire la documentation.

bonjour 68tjs

ok et merci pour tes nouvelles demo
anecdotiquement j'avais fait un test avec des ref V externes "qualité metro", et l'acquisition (stabilisée) selon le port ana choisi variait quand même pas mal selon le port
il faudrait que je refasse la manip , mais de memoire j'avais un delta assez significatif de rendu entre A0 et les autres.

  • travail en différentiel ? :grin:

  • Et oui

travail en différentiel ? smiley-mr-green

Oui dans un premier temps mais après ce n'était même plus la peine.

Mais bon j'ai pas tout dit, faut bien faire saliver un peu.
Le LM35 est très chatouilleux quand il voit un câble capacitif, le LM335 lui s'en fiche complètement.
Pour le LM35 il faut lire la datasheet, c'est expliqué et ne pas se contenter de placer la résistance indiquée mais l'adapter au câble.
Bien évidement j'ai encadré entre plusieurs valeurs -> on naît développeur et on le reste.
Au mieux le résultat oscillait entre 3/4 valeurs consécutives.

Et pour arriver à la stabilité parfaite : toujours la même valeur ou seulement deux valeurs consécutives je n''ai pas tout à fait tout dit -> j'ai "un tout petit peu" amélioré la carte uno,
voir photos sur le filtrage de la piste Aref (le trajet est une horreur !)

Quand je vois à quel point l'implantation de ces cartes arduino est pourrie il me vient à l'esprit une chanson de Brassens :
Le temps ne fait rien à l'affaire
Jeunes c** de la dernière averse
Vieux c** des neiges d'autant
Quand on est c** on est c**

NB : notez bien mon esprit de sacrifice : je n'avais aucun besoin de ces LM, mais comme cela m’agaçais de voir écrire des énormités à leur sujet j'en ai approvisionné pour faire des tests.

Forum13.png

Forum12.png

68tjs:
Et pour arriver à la stabilité parfaite : toujours la même valeur ou seulement deux valeurs consécutives je n''ai pas tout à fait tout dit -> j'ai "un tout petit peu" amélioré la carte uno,
voir photos sur le filtrage de la piste Aref (le trajet est une horreur !)

bonne idée et la manip ne gene en rien

Pour Quentinb56
J'espère qu'on t'as pas trop pourri ton post.

Sache qu'on n'est pas obligé de faire toutes ces manips : je suis perfectionniste et j'aime bien pousser le matériel dans ses derniers retranchements.
Le coup du LM35 qui n'aime pas une charge capacitive c'est général aux circuits CMOS donc cela doit s'appliquer au TMP36 qui semble être un jumeau du LM35. Par contre le LM335 qui s'utilisee comme une "zéner thermique" ne présente pas cette susceptibilité.
Edit : je viens de regarder la spec du TMP36 -> idem LM35 pour la charge capacitive.

Pour juger de la validité d'une mesure je procède ainsi :
Je lance la mesure en continu avec une temporisation de 250 ms entre deux mesures.
J'affiche les résultats dans le serial monitor.
Quand j'ai assez de mesures (j'en prend au minimum 100) je fais un coupé coller du contenu du serial monitor dans une feuille de tableur.
J'utilise les fonctions du tableur: Min, Max, Moyenne, Médiane

Pourquoi vérifier la moyenne et la médiane, qui est la valeur telle que le nombre de mesures inférieures est égal aux nombre de mesures supérieures?

Parce que si les mesures sont instables à cause du bruit la moyenne et la médiane seront presque égales et il n'y a pas grand chose à faire.
Si elles sont trop différentes c'est parce qu'il y a un parasite récurant qui pollue la mesure et donc il faut revérifier le câblage.

Une bonne illustration de la différence entre la moyenne et la médiane en fonction d'éléments parasites :

<troll d'ancien 68tart tendance autogestionaire>
En France le salaire médian est nettement plus faible que le salaire moyen : la raison il n'y a que quelques hauts dirigeants d'entreprise avec des salaires exorbitants qui remontent artificiellement la moyenne alors qu'il y a des centaines de milliers de salariés au SMIC

Pour voir la répartition tu peux aussi utiliser la fonction FREQUENCE du tableur et l'écart type si tu es famillié avec.

Je fais encore un petit hors sujet, 68tjs tu as donc ajouté des condensateurs avec de toutes petites charges sur les pistes, on ne peut pas faire de même en en branchant un à l’extérieur des pistes ?

par exemple celui ci http://fr.farnell.com/avx/sr151a331jar/condensateur-330pf-100v/dp/1100375 (même capacité) entre le pin AREF et GND sur les connecteurs femelle ?

Merci pour le partage de toutes ces informations :slight_smile:

Pourquoi ?
Tu crains de souder un CMS ? -> c'est comme le vélo il suffit de vouloir se lancer. :grin:
Un condo à patte, comme celui que tu montre, soudé au niveau du support du micro améliorera certainement mais sera moins efficace [1] qu'un CMS mais peut-être que ce sera suffisant ? Il faut faire l'essai.

[1] la plaie dans un condensateur c'est la longueur des pattes de connexions : elles sont équivalentes à de l'inductance en série avec la capacité et donc l'ensemble fini par résonner. Au delà de la fréquence de résonance le condensateur sera équivalent à une inductance donc plus aucun effet de filtrage.
Exemple C= 100nF et 2 fois 1 cm de patte, On compte 10 nH d'inductance par cm de fil ce qui fait 20 nH.
Ce circuit résonne à 3,5 MHz, au delà c'est l'effet inductif qui devient prépondérante sur l'effet capacitif.
C'est la raison pour laquelle avec les condensateurs de fortes valeurs 10µF ou plus on place toujours un petit 100 nF céramique en parallèle, souvent en CMS.

Un CMS format 0805 est pile poil ce qu'il faut pour souder sur un pas à 2,54.
Taille du CMS = XXYY XX longueur YY largeur en unité à la c** britanniques :grin:.
Exemple 0805 : longueur = 0,08 inchs soit 2,54*0.08 = 2mm -> super pour mettre entre 2 picots espacé de 2,54 mm.
Il faut juste une bonne loupe, enfin après 40 ans parce qu'avant les jeunes se débrouillent bien sans.

68tjs:
Un CMS format 0805 est pile poil ce qu'il faut pour souder sur un pas à 2,54.
Taille du CMS = XXYY XX longueur YY largeur en unité à la c** britanniques :grin:.
Exemple 0805 : longueur = 0,08 inchs soit 2,54*0.08 = 2mm -> super pour mettre entre 2 picots espacé de 2,54 mm.
Il faut juste une bonne loupe, enfin après 40 ans parce qu'avant les jeunes se débrouillent bien sans.

:grin:
De nos jours mon pov mossieur pour "bricoler" :grin: , une bonne bino devient aussi incontournable qu'un bon oscillo 8)

(et de la bonne soudure :grin: )