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

Vos échanges, bricolages, idées et questions concernant l'ESP8266, les NodeMCU,Weemos, et consort
Répondre
axellec
Messages : 3
Enregistré le : 20 févr. 2019, 23:36

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

Message par axellec » 20 févr. 2019, 23:54

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;
}

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Neutrino
Messages : 1211
Enregistré le : 10 juil. 2015, 15:42
Localisation : Challans (85)
Contact :

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

Message par Neutrino » 22 févr. 2019, 09:03

Bonjour,
Le nodemcu comporte un pont diviseur sur sa pin A0 :
adc nodemcu.png
adc nodemcu.png (31.98 Kio) Vu 391 fois
Il faut que tu le prennes en compte dans ta formule de conversion.
Ma maison à plein d'IP ! :mrgreen:

axellec
Messages : 3
Enregistré le : 20 févr. 2019, 23:36

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

Message par axellec » 23 févr. 2019, 20:39

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 : 1211
Enregistré le : 10 juil. 2015, 15:42
Localisation : Challans (85)
Contact :

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

Message par Neutrino » 24 févr. 2019, 09:39

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:

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


axellec
Messages : 3
Enregistré le : 20 févr. 2019, 23:36

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

Message par axellec » 25 févr. 2019, 21:05

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 : 1211
Enregistré le : 10 juil. 2015, 15:42
Localisation : Challans (85)
Contact :

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

Message par Neutrino » 25 févr. 2019, 22:42

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:

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre