Go Down

Topic: faire une moyenne de la temperature ... (Read 4580 times) previous topic - next topic

djbouns

bonjour,

j'utilise mon arduino pour la gestion de mon aquarium.
avec l'arriver des beau jour  :smiley-zipper: j'ai decouvert un probleme avec ma gestion de temperature.
un ventilateur se met en route selon la temperature trouvé mais celle ci varie entre chaque loop de 0.5° se qui fait allumer/eteintre tout le temps.
voici la partie du code pour recumerer ma temperature
Code: [Select]
   //Récupération de la température du LM35 ***************************************************************************************

int reading = analogRead(sensorPin); 
  float voltage = reading * 5.52 / 1024;
  int temp = voltage * 100 ;


je voudrait savoir comment faire pour avoir une moyene de la temperature sur 10 loop (par exemple).

merci

MrPoulet

Tu peux faire une détection à hystérésis.

djbouns

bonjour,

je ne suis pas sur de comprendre.
Pouvez-vous me donner le code modifié pour obtenir le résultat voulu svp.
Merci

MrPoulet

Tu fais un seuil qui enclenche ton ventilo quand la température passe au dessus de 20° et un seuil qui éteint ton ventilo quand la température passe en dessous de 18°.

gunsman76

Je me permet d'intervenir, mais 2° d'écart sur un bac avec des poissons sensible peut dans certain cas être néfaste.


Ou alors 19° et 21°, peut être que là ce serait ok.

infobarquee

bonjour,
+1 pour le degré d'écart, même soucis sur la couveuse si je mets au 0.5C près.

sinon pour ta moyenne, tu fais une boucle en incrémentant un compteur de temp et tu divise par ton nombre de la boucle.
en prenant la temp toutes les 30s, cela suffit à mon sens, ca ne baissera pas de 10C à moins de le mettre dans le congélo :)

68tjs

Déjà améliore la précision de la mesure.

20°C représentent 200mV en sortie du LM35. Si comme je le présume la carte Arduino est utilisée basiquement tu as encore la référence de tension du convertisseur analogique/numérique à 5V.
Passe sur la référence interne à 1,1 V et cela améliorera la précision de la mesure.

Découple correctement l'alim du LM35 avec des condensateurs (100µF chimique + 100nF céramique) tu éliminera du bruit.

Et si c'est toujours insuffisant fait une moyenne.
On commence toujours par réduire le défaut avant de le masquer.

djbouns

bonjour?

effectivement infobarquee je déclenche a 0.5° de différence (a partir de 26.5°)
a 26.5° allumer a 10%
a 27° allumer a 30%
a 27.5° allumer a 50%
a 28° allumer a 80%
a 28.5° allumer a 100%

j'ai déjà un condo (chimiqu emais je ne sait plus de copmbien) sur le lm35 et il est alimenter par du 12v.

peut tu me donner le code pour faire un compteur de temps stp


MrPoulet

Quote
Je me permet d'intervenir, mais 2° d'écart sur un bac avec des poissons sensible peut dans certain cas être néfaste.


Les valeurs que j'ai donné été pour l'exemple...


Artouste


bonjour,
+1 pour le degré d'écart, même soucis sur la couveuse si je mets au 0.5C près.

sinon pour ta moyenne, tu fais une boucle en incrémentant un compteur de temp et tu divise par ton nombre de la boucle.
en prenant la temp toutes les 30s, cela suffit à mon sens, ca ne baissera pas de 10C à moins de le mettre dans le congélo :)

Bonjour infobarquee

c'est une bonne methode pour moyenner
mais il faut régulièrement "solder" l'addition et le facteur de division  (risque de débordement)
l'utilisation d'un modulo est simple
dans les applis de mesure de T° (et autres process à évolution "lente" )  , j'ai pour habitude de rejecter dans le calcul de la moyenne les valeurs acquises min,max

alors les coincs de l'année ?  déjà cuits au micro-onde ?  :smiley-mr-green:

infobarquee

salut Artouste,
ben pas terrible cette année, pas mal de casse chez les parents  ]:D et vu le temps, ca démarre très doucement.

pour en revenir au pb, effectivement, j'avais pas pensé au débordement, mais il y a moyen de moyenner.
mais faire des déclenchement par tranche de 0.5C, c'est hard, à 1C ca sera plus stable et plus fiable.
sinon l'autre solution, serait de faire varier les % directement en utilisant le pwm par rapport à la temp, un peu comme la led qui varie d'intensité avec la lumière.

djbouns

bonsoir messieurs,

je vois que le débat vous intéresse lol
mais moi en temps que novice, j'aimerais bien que vous me proposiez un code correspondant a vos discourt svp.
"faire varier les % directement en utilisant le pwm par rapport à la temp" moi je suis ok (si tu me donne le code correspondant  :P)
concernant la tranche de 0.5°, j'ai un aquarium récifal et je ne peut pas laisser la température varier d'1° sans que le "refroidissement" augmente.

infobarquee

un ti peu de lecture
http://www.siteduzero.com/sciences/tutoriels/arduino-pour-bien-commencer-en-electronique-et-en-programmation/la-pwm-de-l-arduino
sinon une recherche pwm sur le forum va te donner des pistes ;)

djbouns

merci infobarquee,

mais mon code fonctionne deja a se niveau (pwm pour la gestion de la ventilation)
mon seul souci est le déclenchement/arrêt répétitif lorsque la température vacille entre 26° et 26.5°.
je veut juste que l'on me donne le code a appliquer pour avoir une moyenne de la température sur plusieurs loop svp  ;). (ou toute autre méthode qui pourrait palier a mon problème)

merci

Go Up