Capteur de température qui donne de mauvaises températures
Publié : 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:
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é :
Merci pour vos suggestions. J'ai dû faire une erreur bête.
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
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
Le schéma de cablage ne me parait pas bien compliqué :
- Le NodeMCU est alimenté par le port USB
- Patte de gauche reliée à 3V sur le NodeMCU
- Patte du milieu reliée à A0
- Patte de droite reliée à GND
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;
}