Capteur de température qui donne de mauvaises températures

Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
axellec
Messages : 3
Inscription : 20 févr. 2019, 23:36

Capteur de température qui donne de mauvaises températures

Message par axellec »

Bonjour,

J'ai un capteur de température TMP36 (exactement il est marqué: TMP36GZ #1207 303597), et un NodeMCU Lua V3 (ESP8266). Je voudrais relever la température du capteur de température. Visiblement, je fais quelque chose de pas correct, car j'obtiens des températures entre 14 et 15°C, alors qu'il fait plutot 19/20°C.

Le capteur de température est relié à A0.
Pour lire la température, je me suis très fortement inspiré de https://learn.adafruit.com/tmp36-temper ... emp-sensor:
  • lecture via analogRead()
  • Conversion en volt en multipliant par 3.3 (à ma connaissance, le nodeMCU utilise du 3.3V) et je divise par 1024
  • il y a un offset de 500mV
Ca ne donne pas du tout la bonne température.

Code : Tout sélectionner

15.10
14.78
14.78
15.10
15.10
14.78
14.78
14.78
14.78
15.10
14.78
15.10
15.10
14.78
14.78
14.78
14.78
A noter que si j'utilise 5V à la place de 3.3V, c'est toujours une température très erronée !

Le schéma de cablage ne me parait pas bien compliqué :
  • Le NodeMCU est alimenté par le port USB
Si je mets le côté plat du TMP36 face à moi (le côté bombé derrière), j'ai:
  • Patte de gauche reliée à 3V sur le NodeMCU
  • Patte du milieu reliée à A0
  • Patte de droite reliée à GND
Test: si je mets les doigts autour du TMP36 ou que je souffle dessus , la température monte un peu (mais je m'attendrais à ce que ça monte plus. c'est un peu curieux).

Merci pour vos suggestions. J'ai dû faire une erreur bête.

Code : Tout sélectionner

#include <ESP8266WiFi.h>
//TMP36 Pin Variables
int temperaturePin = A0;

float readTemperature() {
  //getting the voltage reading from the temperature sensor
  int reading = analogRead(temperaturePin);  
  Serial.print("Analog reading: ");
  Serial.println(reading);
 
  // converting that reading to voltage, for 3.3v arduino use 3.3
  float voltage = reading * 3.3;
  voltage /= 1024.0; 
 
  // print out the voltage
  Serial.print(voltage); Serial.println(" volts");
 
  // now print out the temperature
  float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degr
ee wit 500 mV offset
                                                 //to degrees ((voltage - 500mV)
 times 100)
  return temperatureC;
}
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Capteur de température qui donne de mauvaises températures

Message par Neutrino »

Bonjour,
Le nodemcu comporte un pont diviseur sur sa pin A0 :
adc nodemcu.png
adc nodemcu.png (31.98 Kio) Consulté 3744 fois
Il faut que tu le prennes en compte dans ta formule de conversion.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
axellec
Messages : 3
Inscription : 20 févr. 2019, 23:36

Re: Capteur de température qui donne de mauvaises températures

Message par axellec »

Bonjour,

Euh ... vous pouvez préciser ? :D
Il faut que tu le prennes en compte dans ta formule de conversion.
Pour moi, le fait qu'il y ait un pont diviseur directement intégré fait qu'on peut mapper les données de 0 à 1024 sur 0 à 3.3V. Donc ça me semble bon... :?:

Code : Tout sélectionner

tension = analogRead * 3.3 / 1024
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Capteur de température qui donne de mauvaises températures

Message par Neutrino »

Vérifie que tu as bien 3.3v sur ta pin 3.3v.
Si tu relies le 3.3 sur A0, tu lis 1024 ?

D'après le datasheet, il y a un offset de 0.5v. 0°c = 500mV

Code : Tout sélectionner

int reading = analogRead(sensorPin); // current voltage off the sensor
 float voltage = reading * 3.3; 
 voltage /= 1024.0; 
 float temperatureC = (voltage - 0.5) * 100 ; 
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
axellec
Messages : 3
Inscription : 20 févr. 2019, 23:36

Re: Capteur de température qui donne de mauvaises températures

Message par axellec »

Vérifie que tu as bien 3.3v sur ta pin 3.3v
En fait, j'ai 3.2V, mais ça me semble ok.
Si tu relies le 3.3 sur A0, tu lis 1024 ?
J'ai carrément mis un petit potentiomètre. Et j'ai pu vérifier que j'obtenais bien des valeurs de 0 à 0V, et 1024 à 3.3V.

J'ai actuellement une température de 15.1°C (trop bas - à vue de nez il fait 19 ?). Et au travail, j'avais une température de 28°C. Trop haut, j'aurais dit 23.
Bizarre non ?

Je n'ai pas mis de pont diviseur. A ma compréhension, il n'y en a pas besoin pour mon NodeMCU (mais je peux me tromper).
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Capteur de température qui donne de mauvaises températures

Message par Neutrino »

Peut être qu'il met du temps à se stabiliser...
Il doit aussi être éloigné de l'esp qui a tendance à chauffer.

Perso, je n'utilise des ds18b20. C'est très bien supporté et tu peux en connecter plusieurs sur le même gpio.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Répondre