GY906 capteur très imprécis

Bonjour à tous,

J'ai acheté un capteur de température GY906, MLX90614, dans le but de pouvoir capter la température du front pour savoir si on a un peu de fièvre.

Le problème c'est que le capteur ne fonctionne pas du tout comme prévu. La température augmente bien quand j'approche quelque chose de chaud mais les mesures sont très loin de la réalité.

Tutoriel YouTube essayé: Arduino Pyrometer: Infrarot Temperatur von Objekten messen mit dem GY-906 / MLX90614 - YouTube
Branchements(Arduino Uno): Vin-> 3.3v; GND -> GND; SDA -> A4; SCL -> A5

J'utilise le code fourni par le vendeur, bibliothèque: Adafruit_MLX90614 et le code est mlxtest.

Quand j'approche mon front:

14:25:14.723 -> Ambient = 24.43*C	Object = 57.89*C
14:25:14.771 -> Ambient = 75.97*F	Object = 136.20*F
14:25:14.771 -> 
14:25:15.219 -> Ambient = 24.45*C	Object = 60.65*C
14:25:15.254 -> Ambient = 76.01*F	Object = 141.17*F
14:25:15.298 -> 
14:25:15.726 -> Ambient = 24.53*C	Object = 62.83*C
14:25:15.774 -> Ambient = 76.15*F	Object = 145.09*F
14:25:15.822 -> 
14:25:16.225 -> Ambient = 24.61*C	Object = 54.27*C
14:25:16.273 -> Ambient = 76.30*F	Object = 129.69*F
14:25:16.329 -> 
14:25:16.761 -> Ambient = 24.75*C	Object = 45.67*C
14:25:16.809 -> Ambient = 76.55*F	Object = 114.21*F

Quand j'approche ma paume:

14:24:11.976 -> Ambient = 24.19*C	Object = 41.07*C
14:24:11.976 -> Ambient = 75.54*F	Object = 105.93*F

Je ne comprends pas pourquoi cela fait ça. Pouvez-vous m'aider ?

le MLX90614 existe en ~3V (MLX90614ESF-BAA) et ~5V (MLX90614ESF-AAA)
Quel est votre modèle ?

(ensuite quand on achète en Asie à bas coût on peut tomber sur des composants de rebus qui n'ont pas passés les tests...)

sur votre site web ils parlent du BAA donc 3V et on voit au dos du module


un 662K qui peut faire l'adaptation de tension

Bonjour
C'est quoi le marquage exact du MLX90614 ?

Tu devrais être mort depuis longtemps.

D'après le doc de Melexis, le capteur est configuré par défaut pour un corps ayant une émissivité de 1.0 (corps noir de référence).
Dans les exemples de la librairie, il y a un code ( mlx_set_emissivity) qui permet de changer l'émissivité du corps mesuré.
Le corps humain à une émissivité de l'ordre de 0.95 (c'est d'ailleurs la valeur qui est dans le code mlx_set_emissivity).

Ceci dit l'écart ne devrait pas être aussi important.
Quelques précautions c'est un capteur optique et les lois de l'optique s'appliquent:

  • l'objet à mesurer doit remplir le champs de vue du capteur (angle de 90° quand même). Il faut doc tenir le capteur assez près de l'objet.
  • attention aux réflexions. Si un objet chaud se trouve en face de la zone à mesurer il peut y avoir des réflexions et cela fausse la mesure.

Je ne connais absolument pas ce produit, mais je pense qu'àprès quelques recherches, sur internet je peux te donner des pistes.

Le produit que tu as acheté à pour référence :
MLX 90614 ESF BAA

Une recherche sur cette référence dirige vers le site du fabricant et la datasheet du produit :
https://www.melexis.com/en/documents/documentation/datasheets/datasheet-mlx90614
La datasheet donne la précision page 34.
La précision va selon les conditions de ± 0,5° à ± 4°.

Page 36 de la datasheet on trouve les performances du produit que tu pensais avoir acheté :
MLX 90614 DAA
qui est la version "médicalisée qui a une précision de ±0,3° dans la gamme de température 20°-40°.

Youtube est vraiment le dernier endroit pour chercher de l'information fiable.
Il faut le limiter à une première recherche et toujours vérifier.

La démarche que j'ai décrit :

  • site marchand,
  • référence du circuit intégré,
  • recherche de datasheet,

est à faire systématiquement quand on achète sur des sites comme Ebay ou Aliexpress. Les vendeurs n'y connaissent rien et indiquent n'importe quoi de préférence.

Extrait de la datasheet :

C'est uniquement le modèle Dxx qui est certifié médical.

L'autre Bxx doit probablement pouvoir être amélioré.
Déjà voir si un simple étalonnage n'apporte pas une précision suffisante.

@leg2027
en mesure, on fait la distinction entre la véracité de la mesure absolue et la véracité de la détection d'un écart.

Exemple si au lieu de donner 37,5 °C la mesure donne 40,00 °C, mais que pour 38,00° elle donne 40,50°C il est possible de faire une correction de -2,5°C.

Si entre 36 °C et 37 °C l'écart est constant, mais qu'il n'est pas le même entre 39°C et 41°C la correction sera plus difficile et moins précise.

D'après la description, il s'agit d'un MELEXIS MLX90614ESF-BAA-000-TU-ND.
Il est juste marqué GY-906 et possède bien un régulateur de tension 662k.

Je n'est pas vraiment fait attention qu'il y avait différentes versions de ce modules. Cette phrase me convenait:

Haute précision de 0.5 °C sur un large angle de température
(0…+ 50 °C pour Ta et To) étalonnage de haute précision (médical)

Pour l'instant je compte j'essaye de le tester et si on avait déjà 1°C de précision ça serait mieux !
Si j'arrive à bien l'utiliser et qu'il me sert souvent, je prendrai un médical et je garderai celui-ci pour un autre projet.

Il va falloir que je m'habitue aux datasheets, actuellement je n'ai pas trop le courage de lire des dizaines de pages d'autant plus que je ne comprends pas toujours.

J'ai refait un test en ayant téléversé mlx_set_emissivity à la bonne valeur, sans objets chauds à proximité (y compris des ampoules allumées), et en me mettant à 2 cm du capteur. Les résultats restent les mêmes.

Le problème vient pourrait peut-être être résolu avec un étalonnage mais je n'ai pas de thermomètre médical à ma disposition pour mesurer les températures précisément.
Vous avez peut-être une méthode ?

Le module n'a pas été très bien soudé et une des soudures du capteur touche au régulateur. Ca peut peut-être poser problème.

Dans un premier temps se concentrer sur les tableaux.

J'ai eu l'idée d'utiliser mon plateau chauffant d'imprimante 3D pour comparer la température réelle (pas très précise sur un plateau) et celle du capteur.
Il n'y a pas d'écart constant mais une courbe droite (capture d'écran).

Température réelle indiquée Température du module
30°C 46°C
40°C 76
50°C 99°C
70°C ~150°C
100°C 230°C

Je ne sais pas vraiment comment analyser cette courbe et comment l'utiliser.

c'est plutôt une bonne nouvelle.

vous avez dessiné une courbe T° indiquée = f(T° réelle)
comme c'est une droite, f(x) est de la forme ax + b

il vous suffit d'inverser cette courbe: x = (y - b)/a pour obtenir en fonction de la valeur indiquée, la valeur vraie

les coefficients a et b sont obtenus par votre régression linéaire ou résolution de la droite en prenant 2 points ➜ on trouve y = 2.63 x - 32.86 si on passe par le premier et dernier point

1 Like

parenthèse : le comportement fait à première vue* penser à celui d'un MLX90614 dont l'emissivité serait mal réglée, ou mal gérée dans cet exemplaire de capteur MLX90614. Comme cela a été écrit plus haut il arrive que des modules soient vendus avec des lots de composants hors spécification, mis au rebut en fin de chaîne de fabrication.

*a première vue , et pour creuser il y a ça :wink: https://makersportal.com/blog/2019/8/8/non-contact-infrared-thermometry-theory-and-applications-with-arduino

la valeur d'emissivité est mémorisée dans l'EEPROM de ce composant
https://www.espruino.com/MLX90614

Bonjour

Si il est difficile d'avoir/disposer d'étalons de température , avec les thermopiles , il est "assez facile

de se faire "son 0° C" acceptable avec une émissivité proche de celle d'un corps humain :slight_smile:

un grand saladier , des glaçons, du gros sel , et ... des tranches de jambon :pig2:

Mélanger un gros volume de glaçons avec du sel , poser qq tranches de jambon à plat sur le mélange , et ensuite ... ne pas attendre le mois d'aout pour faire ses manips de :thermometer: :innocent:

1 Like

super le coup du jambon pour approcher l'émissivité d'une peau humaine :+1:

il faut aussi:

  • 0,5 l de chablis
  • 400 g de concentré de tomates
  • 250 g d'échalote grise
  • 250 g de crème fraîche épaisse
  • 60 g de beurre
  • 3 c. à s. de farine

à la fin de l'expérience, vous pouvez alors vous préparer un bon jambon au chablis :slight_smile:

Préparation

• Sortir le jambon du réfrigérateur une bonne heure à l'avance. Mettre le vin, les échalotes émincées grossièrement, le sel et poivre dans une casserole.
Faire réduire à couvert environ 15 min.

• Dans une casserole en fonte, faire un roux avec le beurre et la farine. Filtrer le vin, l'ajouter au roux ainsi que le concentré de tomate. Mélanger sur feu doux une dizaine de minutes. Ajouter la crème fraîche et chauffer doucement. Le mélange ne doit pas bouillir. Rectifier l'assaisonnement si besoin.

• Rouler les tranches de jambon une par une dans un plat ou deux allant au four, les couvrir de papier aluminium et les mettre à tempérer dans le four à 80°C. Surveiller, il ne faut pas que le jambon rende du jus.

• Verser la sauce chaude dessus, et réserver à four tiède. Attention trop longtemps ferait sécher la sauce dessus et le jambon donnerai de l'eau.

1 Like

Bien évidemment ! :smiley:

Quelle est la correction à apporter suivant l'origine du jambon :
jambon dit de Paris, jambon de Parme, jambon de pays, jambon Sorrano, jambon de Bayonne (c'est mon préféré) ?

Le sel n'est-il pas trop ?
Il abaisse la température du point de transformation eau/glace en dessous de 0 °C.
Faut-il du jambon dessalé ?

1 Like

Ca sera jambon de Paris :grinning: !

C'est important de calculer à 0°C ?

Comme j'ai une sonde de température, pour de l'eau c'est parfait, je peux peut être juste mettre un verre d'eau avec du sel, regarder quand la température atteint 0°C et faire la mesure avec le morceau de jambon flottant.

Du coup le problème ne viendrait pas du capteur mais d'un mauvais étalonnage ?

c'est le jambon qui doit être à 0°, pas l'eau.

je dirai plutôt que le capteur reçu semble 'à côté de ses pompes' mais qu'au vu des mesures effectuées il parait utilisable avec un calibrage deux point par soft (compensation du problème)

Peut être un capteur de rebut .(Melexis est sérieux et ne vend que ce qui est conforme aux spécificatiosn) .. pas perdu pour tout le monde...;

Surprenant, tous les capteurs Melexis sont calibrés en usine et les valeurs de la calibration sont sauvegardés dans le capteur.

Factory calibrated in wide temperature range:
-40°C…+125˚C for sensor temperature and -70°C…+380˚C for object temperature.