Problème avec capteur LM335Z

Bonjour,

Je poste ce (mon) premier topic car j'ai un souci avec mon capteur de Température LM335Z (fabricant National SemiConductor d'après le logo) et j'ai espoir que votre aide pourra solutionner le problème.

Tout d'abord j'ai longtemps "enquêté" comment utiliser ce capteur avec l'arduino, chose relativement simple (ou peut-être pas :roll_eyes: ).

Pour en venir aux faits, je branche mon capteur comme sur l'image suivante :

A savoir que j'utilise une carte Arduino MEGA et non une UNO.
Autre détails, je ne branche pas la broche du milieu sur le même n° de Pin que sur l'image mais sur une autre Pins de type Analog aussi et je ne mets pas de résistance. Donc pour résumer le branchement, en prennant le côté plat du capteur face à nous, la pin gauche sur VCC (+5V) , pin centrale sur pin Analog (sans résistance), pin de droite à la masse GND.

Mon problème est que le résultat de la température obtenue est bizzard car je mesure une T° d'environ 34 °C (oui celcius après conversion) donc déjà élevé à la base. Et lorsque je tiens le capteur entre mes doigts pour augmenter la Température, bah là la température diminue !?!

Bref, je me suis dit qu'il faut peut-être calibrer le capteur.....
Puis je fais un test avec de l'eau glacée. Je trempe la tête du capteur dans l'eau (en m'assurant de ne pas plonger les broches pouvant faire cours-circuit) et là, la température augmente vers 43 °C.

Je trouve ça vraiment bizzard ? les tendances sont inversées. Quand je chauffe ça diminue et quand je refroidi ça augmente en température ?!? :fearful:
Admettons que je me suis planté dans mon code et je n'obtient pas vraiment une température mais une valeur mesurée , on sait pas trop quoi par exemple ; mais quelque soit la valeur mesurée , la tendance devrai suivre la logique ! Quand on chauffe ça doit augmenter et à l'inverse quand on refroidi.

Voilà mon raisonnement du code : j'ai bien pris soins de convertir la mesure analog (entre 0 et 1023) en tension par produit en croix Volt= [mesure x 5]/1023 , puis cette tension je la converti en milliVolts (x1000) et puisque le capteur est calibré d'usine à 10mV=1°KELVIN je divise les milliVolts précédent par 10 ainsi j'obtiens une température en Kelvin. Pour finir je converti en Celcius (°C = °K - 273,15) .

Voilà! Est-ce que quelqu'un a une explication ou a vécu le même problème ?
Merci vraiment pour votre aide. je suis perdu.

PS: je me suis procurer une dizaine de ces capteurs chez nos amis Asiatiques via Ali....press .

Faudrait m'expliquer comment tu as cherché ... Ya un post de 3 pages sur ce forum à l'endroit où tu as fait le tien ..vas le lire .

Et ton schéma est pas bon , le 5V est pas bien placé ..

ne pas melanger lm35 et lm335 !!! ce n'est pas le meme branchement, je pense que le schema est correct pour lm335

Bonjour,

Effectivement le schema semble correct pour un lm335

Si la température diminue lorsque tu le serre entre les doigts je vois 3 causes

  • soit le capteur à un problème
  • soit le branchement n'est pas conforme au schéma
  • soit ce n'est pas un lm335 mais un lm35
  • soit il y a une erreur dans le calcul de la température

Affiche la valeur mesurée en pas avec un Serial.print, vérifie que ça augmente quand tu tiens le capteur entre tes doigts.

"et aussi je ne mets pas de résistance"

Il en faut une, lm35 et lm335 ne fonctionnent pas de même façon, il y a plus de différence que les unités degrès centigrade ou Kelvins.

Le lm335 s'utilise comme une zéner, sans résistance en série avec l'alim c'est normal qu'il fasse n'importe quoi

Nom d'une pipe, une bonne fois pour toute ne croyez jamais ce que vous trouvez sur internet, il y a de l'utile mais aussi des conneries énormes.
Internet c'est pratique pour commencer avec un nouveau composant mais IL FAUT TOUT VERIFIER.

Lisez la datasheet du produit : vous y trouverez les schémas d'utilisation proposés par le fabricant et aussi plein d'astuces . C'est quand même celui qui a conçu le produit qui sait le mieux comment il faut l'utiser !

Désolé, je ne suis pas vraiment spécialiste en électronique, pardonnez mes erreurs.
J'essaie juste d'apprendre et d'avancer...

Mais cela dit, l'absence d'une résistance peut-elle vraiment inverser la logique d'évolution ?

Ce soir je mettrai le code + photo.

Mais j'ai bien un capteur LM335Z.

Merci encore pour vos réponses.

Il m'est venu un doute : de quelle résistance parle tu ?

  • De celle qui est sur la photo que tu as joint : elle est INDISPENSABLE il n'y aucune discussion possible.
  • Du potentiomètre qui sert à calibrer le module et qui n'apparait pas sur la photo ? -> il est facultatif

sikskiller:
Désolé, je ne suis pas vraiment spécialiste en électronique, pardonnez mes erreurs.
J'essaie juste d'apprendre et d'avancer...

Mais cela dit, l'absence d'une résistance peut-elle vraiment inverser la logique d'évolution ?

Même si tu n'es pas un spécialiste, je n'arrive pas très bien à comprendre que tu postes un schéma correct et que tu câbles différemment.

Je pense que c'est parce qu'il n'ose pas faire un schéma à la main.
Dessine crayon/papier
Fais un scan ou une photo
et poste ce qui ne sera pas une œuvre d'art mais qui sera plus clair.

elektrax:
ne pas melanger lm35 et lm335 !!! ce n'est pas le meme branchement, je pense que le schema est correct pour lm335

Sorry ! On va mettre ça sur le compte de l'heure matinale , j'ai lu lm35 au lieu de lm335 ...

Ya un interêt particulier à l'utiliser ? Parce que chez nous, on reconverti en °C ..

Re bonjour,

Voilà, j'ai recommencé depuis le début. J'ai refais les branchements et re-écris le code.
Mais le truc c'est que j'obtient tout autre chose !!!
J'ai une température élevé ! :o
EN plus le capteur CHAUFFE !! :o catastrophe !!
Alors là , je comprends pus rien.
En plus que j'ai testé avec 2 autres capteurs en me disant que le 1er est peut-être HS.

je poste ci-dessous les photos du montage et le code :

Voilà le code source :

void setup()
{
  Serial.begin(9600); 
}

void loop()
{
  
  // mesure la valeur analogique (entre 0 et 1023)
  int mesure = analogRead(A7); // mesure la valeur analogique (entre 0 et 1023)
  
  //Converti cette mesure en milliVolts
  float Tension_mV = ((mesure * 5.0 )/1023.0)*1000 ; 
  
  // Transforme la tension en Celcius : division par 10 pour obtenie des Kelvin, puis soustraction de 273,15 pour obtenir les °C
  float Temp_C = (Tension_mV / 10 ) - 273.15 ;
  
  // Affiche la mesure brute (entre 0 et 1023)
  Serial.print("mesure: ");
  Serial.print(mesure);                  

  //Affiche la tension en MilliVolt
  Serial.print("   Tension_mV: ");
  Serial.print(Tension_mV);
  
  //Affiche la tension en Celcius
  Serial.print("   Temp C: ");
  Serial.println(Temp_C);

  delay(1000); 
}

et Voila le résultat :

Bonjour,

  • Ta résistance est en cours circuit (le trous transversaux sont reliés avec une coupure au milieu)
  • j'ai l'impression qu'elle n'est pas sur la patte du milieu

C'est pas compliqué suit le 1er schema que tu as posté (si ton lm335 n'est pas encore détruit)

Je n'ai pas regardé en détail mais 40 ans d'électronique me font dire

  • Dans 99% de mes nombreuses conneries si le composant est vraiment très chaud c'est qu'il est alimenté a l'envers.
  • les composants c'est sacrément résistant et je compte sur les doigts d'une main ceux que j'ai tué ainsi.

Par contre même s'il fonctionne encore et permet la mise au point du projet je ne donne pas cher de sa fiabilité a long terme. Donc a changer quand tout sera au point.

Kamill , tu as raison . Il y a comme un court-circuit . La résistance est sur la même ligne donc shunté.
Pfff .. voilà ce qui arrive quand on fait ça à 21h.

Je revois ma copie et vous tiendrai informé.

68tjs , effectivement. Là on "sur-alimente" le capteur car pas de résistance suite au court-circuit.
Concernant la fiabilité à long terme, c'est vrai ; mais heureusement j'ai d'autres LM335. Bien que je n'ai pas de projet en vue avec ce capteur, quand je serai au point, je partirai sur un nouveau capteur pour un éventuel projet.

Et pour répondre à BrUnO14200 : non je n'ai pas d’intérêt particulier à utiliser ce type de capteur. C'est juste celui qui m'est venu en premier et avec un bon compromis précision/prix/plage de mesure . Voilà , sinon ça aurai pu être un autre capteur, ça na pas d'importance pour moi vue que je n'ai pas de besoin particulier (pas de projet).

Merci à vous.

OK

Après une nouvelle tentative (branchement correct) j'obtiens un résultat satisfaisant : 26 à 27°C

En pinçant le capteur entre mes doigts la température augmente et inversement quant je lâche.
Donc les tendances d'évolutions sont correctes.

J'en conclus donc qu'il me reste à calibrer le capteur avec une résistance variable comme le préconise le datasheet.

D'ailleurs, je pense calibrer le capteur en le mettant dans l'eau glacée (je vous rassure juste la tête du capteur) et après stabilisation j'ajuste la résistance variable jusqu'à obtenir 0°C.
Les puristes me dirons que le 0°C n'est pas vrai puisque le système n'est pas isolé de son environnement etc..etc...mais je sais bien, d'autant que ça c'est mon domaine ( 8) ceinture noir ) .

Même si effectivement le 0°C sera difficile dans ces conditions, le but c'est de calibrer le capteur au moins avec une référence connue à +/- 1°C.

Qu'en pensez-vous ? Mais dans ce cas, au fait , puisque l'on avoisine les températures négative, comment gérer ça dans le code avec ce capteur ?

Rien à gérer le capteur donne des kelvins et il est garanti dans la gamme ( -40 °C / +80 °C ).

Il est surement là l'intérêt : pouvoir mesurer des T°C négatives sans faire de montage avec "masse virtuelle" ...