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 :
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
Je pense que c'est un probleme de type de variable. Essaye avec :
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 ...
un petit RC dans la ligne pour filtrer un p'tit coup devrait aider aussi...
Gozaki
-----------------------------
www.laboelectronique.be
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 ???
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
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
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
J'ai même des amplitudes de -10V à +10V de la bonne valeur
Erreur d'unité peut-être ??
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.
Si tu as un voltmètre, vérifie que tu as les mêmes écarts.
Sinon ton montage ? Uniquement le LM35 ?
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.
T'as essayé sur une autre entrée analogique ? Il me semble que j'avais eu des problèmes comme ça sur ma mega.
c'est ce que je suis en train de faire
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
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.
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).
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
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
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...
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................
Salut
Par curiosité, si tu l'alimente toujours en 5V mais avec une source extérieure. Ça fonctionne ?
J avais essaye avec un 5v externe. Va ne marchait pas non plus __
Sur cette page il y a un schéma d'utilisation du LM35 :
http://kudelsko.free.fr/thermometre/theorie2.htm
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.
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.
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:
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
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. ::)