Ce site contient essentiellement des notes de travail. Le contenu est en constante évolution, et loin d'être achevé. (+ d'infos)
La plupart des documentations informatiques sont orientées Debian / Ubuntu.

Electronique/Hardware/Tests/Capteurs de température

De Ordinoscope.net
< Electronique‎ | Hardware‎ | Tests
Révision datée du 2 juin 2018 à 13:38 par Jean-christophe (discussion | contributions) (Références)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Introduction

Les capteurs de température digitaux sont tous réputés être calibrés d'usine et avoir une précision de plus ou moins tant. La réalité se révèle plus comme un champ de bataille avec des résultats plus exotiques les uns que les autres.

Après avoir partagé cette expérience dans un forum [1], il s'avère que ce problème est réellement lié à la proximité du MCU (un Wemos D1 pour l'occasion). Si le MCU sort d'un deep sleep, il est froid et n'influence pas la mesure. Mais après quelques secondes, les relevés se mettent à varier. Si le MCU doit rester allumé, il est impératif de séparer physiquement le capteur du MCU, et non pas de les empiler comme prévu sur le Wemos D1.

1er round: l'interrogation

Température ambiante

Mon premier gros problème est arrivé lorsque j'ai testé 3 capteurs simultanément à température ambiante

capteur mesures diff DS18B20
minimum moyenne maximum minimum moyenne maximum
DS18B20 20.25 21.12 23.06
DHT22 22.2 23.05 25.0 1.56 1.93 2.52
SHT30 23.91 25.14 27.25 3.55 4.02 4.36

Ces résultats, plutôt aléatoires, ont été obtenus dans les conditions suivantes

  • bureau avec une fenêtre ouverte (légers courants d'air)
  • les capteurs n'ont pas de masse d'inertie
  • les mesures sont brutes, sans lissage
  • l'assemblage (Wemos) était penché de 90°, afin de minimiser l'impact de la température du processeur sur les mesures
  • les tests n'ont été effectués qu'avec un seul échantillon de chaque capteur

Dans le doute, j'ai utilisé un datalogger LIBERO Ti1-S. Ce dernier est vendu à ± 0.2 °C et ne peut pas être utilisé plus de 400 jours - c'est assez strict. J'ai donc décidé de l'utiliser comme référence.

Il en est ressorti que les mesures les plus ressemblantes provenaient du DS18B20 (± 0.2 °C), et que le plus proche était un thermomètre chinois bon marché avec des sondes analogiques (± 0.1 °C). Le DHT22 et le SHT30 ont clairement un décalage constant.

Réfrigérateur

A présent qu'on sait à quoi s'en tenir avec la température ambiante, il est temps d'éprouver ces capteurs dans d'autres conditions. J'ai un réfrigérateur moderne, qui a peu de variation de température et qui n'a pas de courants d'air. On devrait s'attendre à une meilleur stabilité des résultats.

Après une heure dans le réfrigérateur

capteur mesure commentaire
datalogger 4.0 applique un lissage de la mesure
thermomètre chinois 2.9 donnée brute, sans lissage
DS18B20 5.4
DHT22 4.3 dans la tolérence
SHT30 6.4

Après une nuit

Ds18b20-dht22-sht30-libero arduino.png
capteur min avg max
LIBERO T1-S 4.1 4.8 ~ 5.5
DS18B20 4.9 5.6 6.7
DHT22 4.1 6.7 8.6
SHT30 4.6 8.2 10.5

Ces valeurs sont tirées des relevés exacts, à l'exception du max du LIBERO, parce que j'ai dû le sortir du réfrigérateur pour le mette en marche.

Les trous sont dus à des erreurs de communication, qu'on pardonnera volontiers à l'ESP8266 qui est planté au milieu du réfrigérateur depuis 24h (cage de Faraday).

Ds18b20-dht22-sht30-libero libero.png

Ces résultats démontrent le progrès des réfrigérateurs actuels (2016). Maintenir une variation de 1 °C est remarquable pour un appareil domestique (son prédécesseur avait une variation de 12°C et consommait 5x plus). C'est même bien mieux qu'un réfrigérateur de laboratoire d'il y a 10 ans. Mais nous nous écartons du sujet. Les capteurs DHT22 et SHT30 affichent encore une nette différence par rapport au LIBERO (datalogger) et au DS18B20.

2ème round: DHT22 vs SHT30 vs BME/BMP280

les capteurs ne sont plus empilés sur le Wemos
le tout est soufflé par un ventilateur Dyson

Mon premier test était dirigé par l'interrogation et un certain énervement. J'ai donc décidé de reprendre les tests, cette fois-ci avec 5 capteurs DHT22, 4 BME280, 1 BMP280 et 2 SHT30.

Il est à présent reconnu officiellement que le design de Wemos ne peut pas fonctionner, car le MCU impacte fortement la température du shield. Cette fois-ci, j'ai utilisé des plaques de base pour séparer le Wemos des capteurs, penché le tout à 90° pour que les capteurs soient en bas, et le Wemos en haut, puis finalement utilisé un ventilateur avec un léger souffle constant pour éviter l'accumulation de chaleur. Bien que la méthode ne soit pas sans faille, les résultats sont sensiblement plus concluants.

Explications

  • « variation » = la plus grande différence entre les mêmes capteurs - si cette différence excède la tolérance, cela signifie fatalement que le capteur n'est pas fiable
  • « specs » = tolérance selon les spécifications du capteur
  • « moyenne » = moyenne par type de capteur à un moment donné
capteur écarts
température humidé pression
variation specs moyenne variation specs moyenne variation specs moyenne
5x capteurs DHT22 (AM2302) 2°C ± 0.5°C 25°C 25% ± 2% (max 5%) 44%
2x SHT30 0.2°C ± 0.2°C 25°C 0.2% ± 1.5% 53%
4x BME280 + 1x BMP280 1.25°C ± 1.0°C 25°C 3% ± 3% 49% 2 hPa ±1.5 hPa 965

Remarques

  • tous les capteurs mesurent la température dans une fourchette de ± 1°C, ce qui est remarquable
  • les DHT22 sont aussi précis dans la mesure de l'humidité que d'enrouler un cheveu autour d'un clou - du gros n'importe quoi
  • les SHT30 (à noter qu'il n'y en n'a que 2) ont une réponse remarquablement stable entre capteurs - je prends volontiers le pari qu'ils sont bien calibrés
  • la SHT30 affichent une humidité relative légèrement supérieure aux BME280 - si on part du principe que les SHT30 sont justes (je n'ai pas d'étalon à disposition), on peut dire que les BME280 sont presque dans le tir avec -4%
  • les BMP280 et BME280 ont tous retournés une pression de ±1 hPa, par rapport à la balise de MétéoSuisse à quelques kilomètres de chez moi

Les graphiques sur 3 heures

DHT22 vs SHT30 vs BME BMP280 temp.png

DHT22 vs SHT30 vs BME BMP280 hum.png

Conclusion

Les grandes surfaces nous vendent de la graille. Si vous ne me croyez pas, allez voir le rayon des hygromètres et regardez la différence entre ceux qui fonctionnent. Jusqu'à 10~15% de différence, ça semble normal. Et là ... le DHT22 arrive à nous afficher 25% de différence entre 5 exemplaires. Et dire qu'on nous a fait croire au début des arduinos que c'était LE CAPTEUR qu'il fallait absolument avoir (ou le DHT11 qui n'est pas meilleur).

Pour clore ces tests qui m'ont pris de nombreuses heures, les conclusion sont à mon avis sans équivoque

  • le SHT30 semble surpasser ses concurrents - plus précis, plus stable
  • le BME280 est un peu approximatif, mais amène la pression en plus - pour un capteur à 2$, c'est quand même pas mal
  • les DHT22 ... vont finir à la poubelle
  • quelque soit le capteur, il doit être impérativement éloigné du MCU, sans quoi il est impacté par le rayonnement de chaleur de ce dernier

En résumé

  • Le SHT30 est à présent vendu en version externe depuis USD $2.20 [1]. Pour une mesure précise de la température et l'humidité, c'est à mon sens le grand vainqueur. Le SHT30 est la version low cost, et le SHT31 [2] la version standard (2x plus cher).
  • Le BME280 est vendu vers USD 2.60 [3] (attention de ne pas le confondre avec le BMP280, qui n'a pas le capteur d'humidité). Pour le prix, c'est un chouette capteur d'environnement tout usage.
  • Le DHT22 est une daube que je ne peux que vous recommander d'éviter - uniquement bon pour la température

Références