Sonde LM35 qui passe à 1,47V (réglé)

J'ai branché une sonde lm35 (5V, A0, GND) et je récupère des valeurs élevée (1,47V), la sonde chauffe beaucoup, idem avec une DHT11 sur une uno et sur une duemilanove. Quelqu'un aurait-il une piste pour résoudre ce problème là ?

Si l'ordre des broches que tu donnes est l'ordre dans lequel tu as branché, ce n'est pas le bon. Revérifie la datasheet, c'est +V, GND, VOUT

C'est une LM35DZ donc côté "bombé" vers moi c'est +Vs Vout GND L'info vient de là http://www.ti.com/lit/ds/symlink/lm35.pdf +VS connecée à 5V Vout à A0 GND à GND

J'ai testé la sonde toute seule au multimètre elle sort dans les 0,5v et A0 la prend à 1,5v

Autant pour moi pour l’ordre, je me suit trompé de boitier.

Toutefois c’est pas coté bombé vers toi mais coté plat vers toi, les broches vers le bas.
La vue sur la datasheet est vue du dessous (BOTTOM VIEW)
Ce qui donne :

lm35.gif

bonjour le 5V d'alim du LM35 est pris Où ? c'est un composant tres sensible à la stabilité d'alimentation

3 tests à faire

  • changer de pin Ana su l'arduino pour voir si le probleme est reproductif
  • mettre une R 2.2 K en serie entre la sortie du LM35 et l'entrée ana
  • alimenter le LM35 par un 5V parfaitement découplé (pas celui de l'arduino)

@Artouste Le composant chauffe ! C'est symptomatique d'un mauvais branchement, pas d'une alim non découplée. Je comprend qu'il a pris le composant à l'envers.

C'est quasiment sur. Le LM35 est connecté à l'envers. J'ai eu le même problème. En revanche je ne l'ai pas ré-essayé en le branchant correctement et je ne sais pas s'i est mort.

Bon j'ai repris les branchements (pour faire que ça se "ballade" moins = clone arduino enfoncé à fond dans la breadboard) j'obtiens des valeurs réalistes (quoique 24°C dans le nord ...) mais négatives. J'ai essayé avec une sonde neuve et j'obtiens les mêmes résultats. (tout à l'heure j'avais essayé avec une pile pour alimenter le sensor et prendre le voltage via A0 et j'obtenais aussi les résultats foireux, et j'étais aussi passé sur A1) Reste que j'obtiens des valeurs négatives ( et le premier LM35, bien qu'ayant chauffé semble intact quand à son fonctionnement)

J'ai mesuré la sortie 5V , en fait elle est plus à 4,6 V en revanche la 3,3 est bien à 3,3 V Je vais tester en reprenant 4,6V au lieu de 5V sur le programme

barbudor: @Artouste Le composant chauffe ! C'est symptomatique d'un mauvais branchement, pas d'une alim non découplée. Je comprend qu'il a pris le composant à l'envers.

Oui j'avais zappé un peu vite ce detail et d'ailleurs quand on regarde le block diagram, le résultat initial lu correspond à l'inversion.

izbzorg: Reste que j'obtiens des valeurs négatives ( et le premier LM35, bien qu'ayant chauffé semble intact quand à son fonctionnement)

J'ai mesuré la sortie 5V , en fait elle est plus à 4,6 V en revanche la 3,3 est bien à 3,3 V Je vais tester en reprenant 4,6V au lieu de 5V sur le programme

l'alim du LM35 est donnée entre 4 et 20 V pour une sortie de 10 mV/°C mets ton code que l'on regarde comment cela transite entre l'acquisition et l'affichage.

NB : dans le mode d'alimentation choisi, tu ne peux lire qu'à partir de +2 °C et voir la dispersion de caractéristiques le "pas" de lecture d'un arduino en standard est de ~5mV

J’ai ressorti un script que j’avais mis de côté
en attendant d’avoir la sonde:

/*
An open-source LM35DZ Temperature Sensor for Arduino. This project will be enhanced on a regular basis
(cc) by Daniel Spillere Andrade , http://www.danielandrade.net
http://creativecommons.org/license/cc-gpl
*/

int pin = 0; // analog pin
int tempc = 0,tempf=0; // temperature variables
int samples[8]; // variables to make a better precision
int maxi = -100,mini = 100; // to start max/min temperature
int i;

void setup()
{
Serial.begin(9600); // start serial communication
}

void loop()
{

for(i = 0;i<=7;i++){ // gets 8 samples of temperature

samples = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
_ tempc = tempc + samples*;_
_
delay(1000);_
_
}_
tempc = tempc/8.0; // better precision
tempf = (tempc * 9)/ 5 + 32; // converts to fahrenheit
if(tempc > maxi) {maxi = tempc;} // set max temperature
if(tempc < mini) {mini = tempc;} // set min temperature
Serial.print(tempc,DEC);
Serial.print(" Celsius, ");
Serial.print(tempf,DEC);
Serial.print(" fahrenheit → ");
Serial.print(maxi,DEC);
Serial.print(" Max, ");
Serial.print(mini,DEC);
Serial.println(" Min");
tempc = 0;
delay(1000); // delay before loop
_
}_
Là ça a l’air de coller , j’ai
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
21 Celsius, 69 fahrenheit → 21 Max, 21 Min
20 Celsius, 68 fahrenheit → 21 Max, 20 Min
21 Celsius, 69 fahrenheit → 21 Max, 20 Min
21 Celsius, 69 fahrenheit → 21 Max, 20 Min
20 Celsius, 68 fahrenheit → 21 Max, 20 Min
20 Celsius, 68 fahrenheit → 21 Max, 20 Min
20 Celsius, 68 fahrenheit → 21 Max, 20 Min
20 Celsius, 68 fahrenheit → 21 Max, 20 Min
20 Celsius, 68 fahrenheit → 21 Max, 20 Min
À mon niveau :
int pin = 0;
void setup()
_
{_
_
Serial.begin(9600);_
_
}_
void loop()
_
{*_
_ int temp = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;_

* Serial.print(temp); Serial.println(" C");*

* delay(1000); *
}
Pas de moyenne et affichage direct de la température.