Go Down

Topic: PROBLEME d'acquisition température stable avec un DS18B20 (Read 1 time) previous topic - next topic

manumanu

"Apprends moi ce que tu sais je t'apprendrais ce que je sais en nous serons intelligent"

hbachetti

[quote from destroyedlolo]Maintenant, je ne comprend pas vraiment ton pb : j'ai une 20e de DS18b20 dans ma maison, mais je n'ai jamais eu ce genre de fluctuations, parfois quelques 100e de degré mais jamais plus.[/quote]

+1

Le DS18b20 est précis à 0.5°, mais très stable.
Chez moi mes capteurs utilisent des cartes ARDUINO NANO ou MINI.
Tout est géré par DOMOTICZ et je peux visualiser les courbes de chaque capteur dans le temps.
Les montées et descentes de température n'ont rien d'anormal.
J'ai aussi un MCP9808, précis à 0.25°. Sa courbe de température n'est pas différente de celle des DS18B20.

Je ne mets en oeuvre aucune moyenne et j'utilise la même librairie que toi.


@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

destroyedlolo

On dérive un peu mais une question que je me pose : qu'est-ce qu'ils entendent par précision ?

Est-ce qu'elles peuvent fluctuer de +/- 0.25° par rapport la valeur absolue (c'est à dire donner au pire une valeur de T-0.25 puis une autre à T+0.25 ?) ?

Ou est-ce que ca veut dire que la valeur est précise à 0.5° par rapport à la valeur absolue mais ensuite ne fluctue pas pour une même température (donc juste un offset) ?

Je serai amené à penser que c'est la 2nd car mes courbes ne montrent que des fluctuations de 0.165° (ou truc du genre) ce qui la résolution de ses 12 bits.
En tout cas, pour les DS18B20 car les DS28EA00 semblent un chouille moins stables mais reste quand même d'une très bonne qualité.

Quoi qu'il en soit, j'ai calibré toutes mes sondes pour compenser cet offset.

hbachetti

Quote
Ou est-ce que ca veut dire que la valeur est précise à 0.5° par rapport à la valeur absolue mais ensuite ne fluctue pas pour une même température (donc juste un offset) ?
Oui, je pense aussi.

Éventuellement, tu peux faire l'acquisition d'un MCP9808 pour faire cette calibration.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

AIRPOPCIE

Bonjour, suite à ce programme qui fonctionne très bien quand j'appelle ces fonctions recopiées dans mon programme principal, je voudrais maintenant "moyenner" plusieurs températures avec les mêmes fonctions Void en passant des paramètres.

HR pour l'hygrométrie comme c'est le cas dans le code ci dessus.
TC pour TempC
TE pour TempE
Etc.
Le principe est qu'après avoir lu une Température je vais l'écrire dans le tableau qui vas bien (le sien) à l'index qui vas bien (+1 avant d'écrire)
Additioner
Moyenner
Récupérer la nouvelle valeur moyenne.

Mais je ne trouves pas la syntaxe pour que ça marche si on peut paramétrer dans ce genre de void..

Merci de votre aide.

AIRPOPCIE

 le MCP9808 ne fait que la Température.

Le principe de "moyenner" est utile pour "amortir" les variations du digit situé après la virgule, et si dans le cas de la température de la cave, il varie quelque peu, cela permet de lisser la valeur moyenne de la température et de déclencher la climatisation que sur une REELLE augmentation de la T° et non pas sur une fluctuation de la mesure.

Merci de vous intéresser au sujet.

destroyedlolo

Récupérer la nouvelle valeur moyenne.
Mais je ne trouves pas la syntaxe pour que ça marche si on peut paramétrer dans ce genre de void..
Y'a un pb de concept la :)
void signifie que la fonction ne retourne ... rien. Donc soit elle ne doit pas etre de type void, soit tu sois lui ajouter un parametre de sortie parmi ses arguments.

AIRPOPCIE

mon problème est de ne pas créer autant de sous programmes que de valeurs à "moyenner"
Mon idée est donc de "passer" des paramètres si c'est possible pour qu'en utilisant les mêmes sous programmes je remplis le tableau correspondant à la valeur à moyenner, additionner et moyenner la valeur traitée.
Je ne sais pas si je m'exprime correctement.

destroyedlolo

Ben pas spécialement car je ne vois pas trop ou est le problème ni surtout le rapport avec le void  :) 

Si j'avais a faire ce genre de truc, et qu'il devait pouvoir etre utilisable par plusieurs valeurs, je créerai un objet avec :

  • Un tableau de taille fixe contenant le nombre de mesure a concerver
  • une fonction ajoute() qui ... ajoute une nouvelle mesure de facon roulante (si la table est pleine, la nouvelle mesure remplace la premiere)
  • une fonction moyenne() qui renvoie ... ben la moyenne des mesures stockées en tenant compte du nombre de mesures.


Puis une instance de l'objet par valeur a mesurer.
Si tu découpe ton problème en petit morceau comme ça, la programmation devient trivial.

Lorsque tu tombes sur un probleme qui te parait trop compliquer, la solution est souvent (voir toujours) de le découper en pb plus simples.

AIRPOPCIE

n'étant pas encore très bon en programmation C+ arduino, je ne vois pas trop de solution.
A partir du croquis que j'ai mis qui "tourne" pour une valeur de température, es tu en mesure de me faire la modif qui me permettrais de faire la moyenne sur 2 voir 3 mesures en utilisant le même programme?;

Es ce qu'un tableau de x lignes (20) pour l'instant et 3 ou 4  colonnes (une par mesure) on peut faire ?.
Merci de ton aide éventuelle.

AIRPOPCIE

J'ai trouvé:

https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c/1896212-les-tableaux


merci pour votre participation à ce forum

Go Up