Arduino Forum

Forum 2005-2010 (read only) => International => Français => Topic started by: masterbalby on Jan 20, 2011, 09:38 am

Title: LM35 capteur température
Post by: masterbalby on Jan 20, 2011, 09:38 am
Bonjour,

j'utilise dans mon montage un capteur de température LM35.
Il est alimenté en 5v par le régulateur interne de mon arduino.

Voici le bout de code que j'utilise pour convertir le résultat en température :

Code: [Select]
int reading = analogRead(sensorPin);  
float voltage = reading * 5.0 / 1024;
int temp = voltage * 100 ;


Le résultat est juste après comparaison avec deux autres thermomètres (un au mercure et un digital).

Malheureusement j'ai des fluctuations très importantes de la température.
Je peux avoir 25° (correct) puis passer à 15° deux secondes après et passer ensuite à 30° encore deux secondes après.

Comme la formule de conversion du résultat en température est liée à la tension d'alimentation (5volts) j'ai vérifié le 5V délivré par l'arduino.
Il est stable.

Je ne vois as où chercher
Title: Re: LM35 capteur température
Post by: B@tto on Jan 20, 2011, 10:27 am
Je pense que c'est un probleme de type de variable. Essaye avec :

Code: [Select]
float reading = analogRead(sensorPin);  
float voltage = reading * 5.0 / 1024.0;
float temp = voltage * 100 ;


On pourra mieux adapter ensuite mais si ça marche on saura déjà si ça vient pas de la ...
Title: Re: LM35 capteur température
Post by: gozaki on Jan 20, 2011, 01:36 pm
un petit RC dans la ligne pour filtrer un p'tit coup devrait aider aussi...

Gozaki
-----------------------------
www.laboelectronique.be
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 20, 2011, 03:14 pm
comment déterminer la valeur de R et de C ??
J'ai trouvé ca sur un autre site

sortie_lm35----------R1--------------------------arduino
                                    |
                                    |
                                    C1
                                    |
                                  ----
                                  ///
             
avec comme valeur R1=56kOhm et C1=0.1µF
C'est bon ???                    
Title: Re: LM35 capteur température
Post by: B@tto on Jan 20, 2011, 03:37 pm
Sur un schéma j'ai trouvé du 100k avec 0.01µF. Mais 90% des schémas que j'ai vu n'ont pas de filtre, et à mon avis c'est pas le bruit qui te fait faire du +- 5°C
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 20, 2011, 06:41 pm
j'ai modifié mon code comme proposé avant par B@tto.
Le résultat est le même.

Je vais essayer le filtre RC.
mais que prendre comme condo ??

J'ai même des amplitudes de -10V à +10V de la bonne valeur
Title: Re: LM35 capteur température
Post by: gozaki on Jan 20, 2011, 10:00 pm
la frequence de coupure du filtre est de 1/2*pi*RC. prendre une céramique pour la capa genre 100n.

Ce n'est pas forcement la solution à ton probleme... mais c'est une règle de bonne conduite quand on utilise des capteurs analogiques... ;)

Gozaki
----------------------------
www.laboelectronique.be
Title: Re: LM35 capteur température
Post by: B@tto on Jan 20, 2011, 10:43 pm
Quote
J'ai même des amplitudes de -10V à +10V de la bonne valeur


Erreur d'unité peut-être ??
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 07:06 am
Pour trouver le problème j'ai injecté dans mon arduino uiniquement le code pour la température avec un affichage sur le moniteur série.

Celui ci affiche toute les secondes le résultat relevé sur la borne 0 de l'arduino,  puis la tension relevée et enfin la température.

(http://img203.imageshack.us/img203/7540/capturezhg.png) (http://img203.imageshack.us/i/capturezhg.png/)

On voit bien les écarts de relevé dont je parle.

Vu que le code est bon (enfin je crois) il ne reste pour moi que les parasites pour expliquer le problème.

Je vais essayer de débrancher tout ce qui est branché sur mon arduino pour ne laisser que le lm35, on verra bien le résultat.
Title: Re: LM35 capteur température
Post by: B@tto on Jan 21, 2011, 08:50 am
Si tu as un voltmètre, vérifie que tu as les mêmes écarts.

Sinon ton montage ? Uniquement le LM35 ?
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 09:29 am
Je viens de vérifier au voltmètre.
Tension mesurée : 0.29V donc 29°
Température au thermomètre mercure 29°

Je n'ai aucune variation de tension à la sortie de mon capteur.

Donc ça doit être des parasites sur l'arduino.
Title: Re: LM35 capteur température
Post by: B@tto on Jan 21, 2011, 10:41 am
T'as essayé sur une autre entrée analogique ? Il me semble que j'avais eu des problèmes comme ça sur ma mega.
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 11:07 am
c'est ce que je suis en train de faire
Title: Re: LM35 capteur température
Post by: gozaki on Jan 21, 2011, 12:29 pm
tu as combien de metres entre ton capteur et ta carte ? paire torsadée ? cable blindé ? Boucle de masse - mode commun ?

Gozaki
----------------------------
www.laboelectronique.be
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 12:36 pm
j'ai 1m50 entre le capteur et l'arduino.
J'utilise un 3 fils d'un deux paires torsadées.

Je viens d'essayer toutes les entrées analogiques de la carte , c'est partout le même problème.

Pourtant au voltmètre entre l'entrée de l'arduino et la masse j'ai bien une tension constante et surtout qui ne varie jamais.
Title: Re: LM35 capteur température
Post by: fdufnews on Jan 21, 2011, 01:15 pm
As-tu placé un condensateur de découplage aux bornes de l'alimentation de ton LM35. Sur 1,5m tu peux attraper pas mal de perturbations.
Tu devrais regarder cette doc http://www.national.com/ds/LM/LM35.pdf ils préconisent aussi de mettre une résistance série ou un circuit d'amortissement si on attaque une ligne trop capacitive (ce qui est le cas avec une paire torsadée).
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 01:54 pm
non je ne l'ai pas fais et je ne peux plus le faire car le capteur est maintenant moulé  dans du silicone.

Mais je pense vraiment que cela doit etre un problème avec mon arduino vu que la tension relevée au voltmetre sur la capteur est stable
Title: Re: LM35 capteur température
Post by: gozaki on Jan 21, 2011, 01:58 pm
tu prends une pile avec un petit pont diviseur que tu mesures avec ton arduino. n'oublies pas d'ajouter ton 1,5m de cable . regarde si c'est stable...

Au fait t'as mis un RC ?

Gozaki
----------------------------
www.laboelectronique.be
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 02:05 pm
non pas encore

j'ai trouvé ça sur le net :

sortie_lm35----------R1--------------------------arduino
                                    |
                                    |
                                    C1
                                    |
                                  ----
                                  ///
             
avec comme valeur R1=56kOhm et C1=0.1µF

ca te parait correct ??  PAr ce que si oui je m'en vais de suite chez saint quentin...
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 03:14 pm
Je pense avoir trouvé une parade  :D :D

Au lieu d'alimenter mon lm35 à partir du 5V de mon arduino je l'alimente maintenant en 12V en utilisant le 12V d'une alim de PC qui sert aussi pour l'alimentation de l'arduino.

Ça a l'air de marcher................
Title: Re: LM35 capteur température
Post by: SamoLaw on Jan 21, 2011, 03:56 pm
Salut

Par curiosité, si tu l'alimente toujours en 5V mais avec une source extérieure. Ça fonctionne ?
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 05:16 pm
J avais essaye avec un 5v externe. Va ne marchait pas non plus __
Title: Re: LM35 capteur température
Post by: jfs on Jan 21, 2011, 06:29 pm
Sur cette page il y a un schéma d'utilisation du LM35 :

http://kudelsko.free.fr/thermometre/theorie2.htm
Title: Re: LM35 capteur température
Post by: fdufnews on Jan 21, 2011, 09:17 pm
Quote
vu que la tension relevée au voltmetre sur la capteur est stable

On parle de bruit, c'est de l'alternatif et c'est dans un domaine de fréquence qui échappe totalement au voltmètre.

Ces thermomètres retourne des tensions assez faibles. On est donc très sensible au bruit sur les alimentations mais aussi au bruit rayonné. Le bruit sur l'alimentation peut être réduit par un découplage de bonne qualité. pour le signal il faut le "protéger" (fil blindé, paire torsadée). Et un petit filtre sur l'entrée analogique de l'arduino mais il ne faut pas que la résistance du filtre soit trop élevée. Dans la doc Atmel ils indiquent que la source doit avoir une impédance de sortie < à 10K sous peine d'avoir des mesures instables.
Title: Re: LM35 capteur température
Post by: masterbalby on Jan 21, 2011, 09:25 pm
OK, il faut un filtre.
Je vais en mettre un

Mais quoi comme filtre ???
Juste un résistance ?? Si ou quelle valeur ??
Un RC ??? Pareil quelle valeurs pour la résistance et le condo ???

J'ai vraiment besoin d'aide.
Title: Re: LM35 capteur température
Post by: Bernarduino on Jan 21, 2011, 11:01 pm
Bonsoir,

Trouvé sur le forum Adafruit .. je n'ai pas  testé .. en espérant que ça vous aide.

The problem is that the Atmega on the Arduino has one ADC that is multiplexed for all the analog pins.
When you do an analogRead(), a multiplexer connects the pin you are reading to the ADC. This works fine for low impedance voltage sources.


It takes time for a high impedance sensor like your temperature sensor to change the voltage at the ADC after this switch of pins. Temperature sensors must use low power and thus be high impedance to avoid IR heating.

Try the following:


     
Code: [Select]

     analogRead(5);
     delay(10);
     nTemp = analogRead(5) * 5000L / 1024L  / 10;


The first analogRead(5) will switch the pin to the ADC. The delay will allow the voltage at the ADC to stabilize and the second analogRead(5) should get a stable value.

Salutations
Title: Re: LM35 capteur température
Post by: SamoLaw on Jan 22, 2011, 02:19 pm
Bonjour,

Si c'est une question d'impédance de sortie, un circuit comme le LH0002 devrait permettre d'adapter le LM35 avec l'impédance d'entrée de l'Arduino.

Au cas où la solution proposé ci-dessus ne fonctionne pas.  ::)