Table des matières:

Test des capteurs de température - Lequel pour moi ? : 15 étapes (avec photos)
Test des capteurs de température - Lequel pour moi ? : 15 étapes (avec photos)

Vidéo: Test des capteurs de température - Lequel pour moi ? : 15 étapes (avec photos)

Vidéo: Test des capteurs de température - Lequel pour moi ? : 15 étapes (avec photos)
Vidéo: Essai TUYA: Thermomètre Hydromètre Connecté à 13,5€ (Installation SmartLife) 2024, Novembre
Anonim
Tester des capteurs de température - Lequel est fait pour moi ?
Tester des capteurs de température - Lequel est fait pour moi ?

L'un des premiers capteurs que les débutants en informatique physique veulent essayer est quelque chose pour mesurer la température. Quatre des capteurs les plus populaires sont le TMP36, qui a une sortie analogique et nécessite un convertisseur analogique-numérique, le DS18B20, qui utilise une connectivité à un fil, le DHT22, ou le DHT11 légèrement moins cher, qui a juste besoin d'une broche numérique, mais aussi fournit une lecture d'humidité, et enfin le BME680 qui utilise I2C (avec SPI également sur certaines cartes de dérivation) et donne la température, l'humidité, le gaz (COV) et la pression atmosphérique mais coûte un peu plus cher.

Je veux voir à quel point ils sont précis et découvrir les avantages ou les inconvénients. Je possède déjà un thermomètre à mercure précis, issu de l'impression photographique couleur à l'époque du traitement chimique, pour les comparer. (Ne jetez jamais rien - vous en aurez besoin plus tard !)

Je vais utiliser CircuitPython et une carte de développement Adafruit Itsybitsy M4 pour ces tests. Des pilotes appropriés sont disponibles pour tous les appareils.

Fournitures

Ma liste initiale:

  • Microcontrôleur Itsybitsy M4 Express
  • câble micro USB - pour la programmation
  • TMP36
  • DS18B20
  • Résistance 4.7K Ohm
  • DHT22
  • BME680
  • Multimètre
  • Planche à pain ou planche à bande
  • Fil de connexion

Étape 1: Circuits

Circuits
Circuits

Les fils oranges sont de 3,3 V

Les fils noirs sont GND

Au bas de la carte se trouvent des points de test pour mesurer les tensions. (Sortie analogique 3.3v, GND et TMP36)

Les prises centrales sont, de gauche à droite:

  • TMP36: 3,3 v, sortie de signal analogique, GND
  • DS18B20: GND, sortie de signal numérique, 3,3 v
  • DHT22: 3,3 v, sortie de signal, vide, GND
  • BME680: 3,3 v, SDA, SCL, vide, GND

Le connecteur arrière, pour la connexion à la carte IB M4E, de gauche à droite

  • 3.3v
  • TMP36 - sortie analogique vers la broche A2
  • GND
  • DS18B20 sortie numérique vers broche D3 - vert
  • Sortie numérique DHT22 vers broche D2 - jaune
  • SDA - blanc
  • SCL - rose

La résistance de 4,7 K Ohm est un pullup du signal à 3,3 V pour une connexion à un fil sur le DS18B20.

Il y a 2 pistes coupées au dos de la planche:

Sous l'extrémité gauche des fils rose et blanc. (Sous le fil jaune.)

Étape 2: Méthode

Méthode
Méthode

Pour chaque capteur, j'écrirai un court script pour lire la température (et d'autres éléments si disponibles) plusieurs fois et vérifier la température par rapport à mon thermomètre à mercure (Hg). Je vais chercher à voir à quel point la température se compare à la lecture du mercure et si les lectures sont stables/cohérentes.

Je vais également regarder la documentation pour voir si les lectures correspondent à la précision attendue et s'il y a quelque chose qui peut être fait pour apporter des améliorations.

Étape 3: TMP36 - Essai initial

TMP36 - Essai initial
TMP36 - Essai initial
TMP36 - Essai initial
TMP36 - Essai initial

La jambe gauche est de 3,3 V, la jambe droite est GND et la jambe centrale est une tension analogique représentant la température à l'aide de la formule suivante. TempC = (millivolts - 500) / 10

Donc, 750 millivolts donne une température de 25 C

Il semble y avoir quelques problèmes ici. La température du thermomètre à mercure "normal" est beaucoup plus basse que celle du TMP36 et les lectures ne sont pas très cohérentes - il y a un peu de "gigue" ou de bruit.

Le capteur TMP36 envoie une tension proportionnelle à la température. Cela doit être lu par le convertisseur A/D avant que la température ne soit calculée. Lisons la tension directement à partir de la jambe médiane du capteur avec un multimètre et comparons-la au résultat de l'A/D. La lecture de la jambe centrale avec mon multimètre est de 722 millivolts, beaucoup plus faible et une lecture très stable.

Il y a deux choses que nous pouvons essayer. Remplacez le TMP36 par un potentiomètre et ajustez la tension dans le calcul à la tension réelle du microcontrôleur. Nous verrons alors si la tension calculée est plus proche et si le bruit/gigue est réduit.

Mesurons la tension réelle utilisée par le microcontrôleur et l'A/D. Cela a été supposé à 3,3v mais n'est en fait que de 3,275v.

Étape 4: Résultats de substitution de potentiomètre

Résultats de substitution de potentiomètre
Résultats de substitution de potentiomètre

Ceci est vraiment mieux. Les lectures sont à quelques millivolts avec beaucoup moins de bruit. Cela suggère que le bruit provient du TMP36 plutôt que de l'A/D. La lecture sur le compteur est toujours stable - pas de gigue. (Le compteur peut « lisser » la sortie de nervosité.)

Une façon d'améliorer la situation peut être de prendre une lecture moyenne. Faites dix lectures rapidement et utilisez la moyenne. Je calculerai également l'écart type pendant que je change de programme, pour donner une indication de la dispersion des résultats. Je compte également le nombre de lectures à moins d'un écart type de la moyenne - plus c'est élevé, mieux c'est.

Étape 5: Lectures moyennes et un résultat

Lectures moyennes et un résultat
Lectures moyennes et un résultat

Il y a encore beaucoup de bruit et la lecture du TMP36 est toujours plus élevée que celle du thermomètre à mercure. Pour réduire le bruit, j'ai inclus un condensateur 100NF entre le signal et GND

J'ai ensuite cherché d'autres solutions sur Internet et j'ai trouvé celles-ci: https://www.doctormonk.com/2015/02/accurate-and-re… Le Dr Monk suggère d'inclure une résistance de 47 k Ohm entre le signal et GND.

www.desert-home.com/2015/03/battery-operate… Alors que ce type suggère de trier 15 lectures dans l'ordre et de faire la moyenne du centre 5.

J'ai modifié le script et le circuit pour inclure ces suggestions et inclus une lecture du thermomètre à mercure.

Enfin! Nous avons maintenant des lectures stables dans la plage de précision de la description de l'appareil.

Cela a demandé beaucoup d'efforts pour faire fonctionner le capteur qui n'a qu'une précision de fabricant de:

Précision - La plus élevée (la plus basse): ±3°C (±4°C) Ils ne coûtent qu'environ 1,50 $ (2 £)

Étape 6: DS18B20 - Test initial

DS18B20 - Test initial
DS18B20 - Test initial

Soyez très prudent. Ce package ressemble beaucoup au TMP36 mais les jambes sont à l'envers avec 3.3v à droite et GND à gauche. Le signal de sortie est au centre. Afin de faire fonctionner cet appareil, nous avons besoin d'une résistance de 4,7 k Ohm entre le signal et 3,3 V. Cet appareil utilise le protocole à un fil et nous devons télécharger quelques pilotes dans le dossier lib de l'Itsybitsy M4 Express.

Cela coûte environ 4 $ / 4 £ Spécifications techniques:

  • Plage de température utilisable: -55 à 125°C (-67°F à +257°F)
  • Résolution sélectionnable de 9 à 12 bits
  • Utilise une interface à 1 fil - ne nécessite qu'une seule broche numérique pour la communication
  • ID 64 bits unique gravé dans la puce
  • Plusieurs capteurs peuvent partager une broche
  • ±0,5°C Précision de -10°C à +85°C
  • Système d'alarme de limite de température
  • Le temps de requête est inférieur à 750 ms
  • Utilisable avec une alimentation de 3,0 V à 5,5 V

Le principal problème de ce capteur est qu'il utilise l'interface Dallas 1-Wire et que tous les microcontrôleurs n'ont pas de pilote approprié. Nous avons de la chance, il y a un chauffeur pour l'Itsybitsy M4 Express.

Étape 7: DS18B20 fonctionne bien

DS18B20 fonctionne bien
DS18B20 fonctionne bien

Cela montre un excellent résultat.

Un ensemble stable de lectures sans aucun travail supplémentaire ni frais de calcul. Les lectures se situent dans la plage de précision attendue de ±0,5 °C par rapport à mon thermomètre à mercure.

Il existe également une version étanche à environ 10 $ que j'ai utilisée dans le passé avec le même succès.

Étape 8: DHT22 et DHT11

DHT22 et DHT11
DHT22 et DHT11

Le DHT22 utilise une thermistance pour obtenir la température et coûte environ 10 $ / 10 £ et est le frère le plus précis et le plus cher du plus petit DHT11. Il utilise également une interface à un fil mais n'est PAS compatible avec le protocole Dallas utilisé avec le DS18B20. Il détecte l'humidité ainsi que la température. Ces appareils ont parfois besoin d'une résistance de rappel entre 3,3 V et la broche de signal. Ce paquet en a un déjà installé.

  • À bas prix
  • Alimentation 3 à 5V et E/S
  • Utilisation actuelle de 2,5 mA max pendant la conversion (lors de la demande de données)
  • Bon pour les lectures d'humidité de 0 à 100 % avec une précision de 2 à 5 %
  • Bon pour les lectures de température de -40 à 80 °C, précision de ±0,5 °C
  • Pas plus de 0,5 Hz de fréquence d'échantillonnage (une fois toutes les 2 secondes)
  • Taille du corps 27 mm x 59 mm x 13,5 mm (1,05" x 2,32" x 0,53")
  • 4 broches, espacement de 0,1"
  • Poids (juste le DHT22): 2,4g

Comparé au DHT11, ce capteur est plus précis, plus précis et fonctionne dans une plus grande plage de température/humidité, mais il est plus grand et plus cher.

Étape 9: Résultats DHT22

Résultats DHT22
Résultats DHT22

Ce sont d'excellents résultats avec très peu d'effort. Les lectures sont assez stables et dans la tolérance attendue. La lecture de l'humidité est un bonus.

Vous ne pouvez prendre des lectures que toutes les secondes.

Étape 10: Test DTH11

Test DTH11
Test DTH11

Mon thermomètre à mercure indiquait 21,9 degrés C. Il s'agit d'un assez vieux DHT11 que j'ai récupéré d'un ancien projet et la valeur d'humidité est très différente des lectures DHT22 d'il y a quelques minutes. Cela coûte environ 5 $ / 5 £.

Sa description comprend:

  • Bon pour les lectures d'humidité de 20 à 80 % avec une précision de 5 %
  • Bon pour les lectures de température de 0 à 50 °C ± 2 °C de précision - moins que le DTH22

La température semble toujours être dans la plage de précision, mais je ne fais pas confiance à la lecture d'humidité de cet ancien appareil.

Étape 11: BME680

BME680
BME680

Ce capteur contient des capacités de détection de température, d'humidité, de pression barométrique et de gaz COV dans un seul boîtier, mais est le plus cher des capteurs testés ici. Cela coûte environ 18,50 £ / 22 $. Il existe un produit similaire sans le capteur de gaz qui est un peu moins cher.

Il s'agit d'un capteur de référence parmi les cinq. Le capteur de température est précis, et avec des pilotes adaptés, très facile à utiliser. Cette version utilise I2C mais la carte de dérivation Adafruit peut également utiliser SPI.

Comme les BME280 et BMP280, ce capteur de précision de Bosch peut mesurer l'humidité avec une précision de ± 3 %, la pression barométrique avec une précision absolue de ± 1 hPa et la température avec une précision de ± 1,0 °C. Parce que la pression change avec l'altitude et que les mesures de pression sont si bonnes, vous pouvez également l'utiliser comme altimètre avec une précision de ±1 mètre ou mieux !

La documentation indique qu'il a besoin d'un « temps de rodage » pour le capteur de gaz.

Étape 12: Lequel dois-je utiliser ?

Lequel dois-je utiliser ?
Lequel dois-je utiliser ?
  • Le TMP36 est très bon marché, petit et populaire mais assez difficile à utiliser et peut être imprécis.
  • Le DS18B20 est petit, précis, pas cher, très simple d'utilisation et dispose d'une version étanche.
  • Le DTH22 indique également l'humidité, son prix est modéré et est facile à utiliser mais peut être trop lent.
  • Le BME680 fait beaucoup plus que les autres mais coûte cher.

Si je veux juste la température, j'utiliserais le DS18B20 avec une précision de ±0,5 °C, mais mon préféré est le BME680 car il fait tellement plus et peut être utilisé dans un grand nombre de projets différents.

Une dernière pensée. Assurez-vous de garder votre capteur de température à bonne distance du microprocesseur. Certains HAT Raspberry Pi permettent à la chaleur de la carte principale de réchauffer le capteur, donnant une fausse lecture.

Étape 13: Réflexions supplémentaires et expérimentation

Réflexions supplémentaires et expérimentation
Réflexions supplémentaires et expérimentation

Merci gulliverrr, ChristianC231 et pgagen pour vos commentaires sur ce que j'ai fait jusqu'à présent. Je suis désolé pour le retard mais je suis en vacances en Irlande, sans accès à mon kit électronique depuis quelques semaines.

Voici une première tentative pour montrer que les capteurs fonctionnent ensemble.

J'ai écrit un script pour lire les capteurs à tour de rôle et imprimer les valeurs de température toutes les 20 secondes environ.

J'ai mis le kit au réfrigérateur pendant une heure, pour tout refroidir. Je l'ai branché sur le PC et j'ai demandé à Mu d'imprimer les résultats. La sortie a ensuite été copiée, transformée en un fichier.csv (variables séparées par des virgules) et des graphiques sont tirés des résultats dans Excel.

Il a fallu environ trois minutes pour sortir le kit du réfrigérateur avant que les résultats ne soient enregistrés, de sorte qu'une certaine augmentation de la température s'était produite dans cet intervalle. Je soupçonne que les quatre capteurs ont des capacités thermiques différentes et se réchaufferaient donc à des vitesses différentes. Le taux de réchauffement devrait diminuer à mesure que les capteurs se rapprochent de la température ambiante. J'ai enregistré cela à 24,4°C avec mon thermomètre à mercure.

Les écarts importants de température au début des courbes pourraient être dus aux différentes capacités thermiques des capteurs. Je suis heureux de voir que les lignes convergent vers la fin à mesure qu'elles approchent de la température ambiante. Je crains que le TMP36 soit toujours beaucoup plus haut que les autres capteurs.

J'ai consulté les fiches techniques pour vérifier à nouveau l'exactitude décrite de ces appareils

TMP36

  • Précision de ±2°C sur la température (typ)
  • ±0,5°C linéarité (typique)

DS18B20

±0,5°C Précision de -10°C à +85°C

DHT22

température ±0,5°C

BME680

température avec une précision de ±1.0°C

Étape 14: Graphique complet

Graphique complet
Graphique complet

Vous pouvez maintenant voir que les capteurs se sont finalement stabilisés et se sont mis d'accord sur la température plus ou moins dans les limites de leur précision décrite. Si 1,7 degré est retiré des valeurs du TMP36 (±2°C est attendu), il y a un bon accord entre tous les capteurs.

La première fois que j'ai effectué cette expérience, le capteur DHT22 a posé un problème:

sortie main.py:

14.9, 13.5, 10.3, 13.7

15.7, 14.6, 10.5, 14.0

16.6, 15.6, 12.0, 14.4

18.2, 16.7, 13.0, 15.0

18.8, 17.6, 14.0, 15.6

19.8, 18.4, 14.8, 16.2

21.1, 18.7, 15.5, 16.9

21.7, 19.6, 16.0, 17.5

22.4, 20.2, 16.5, 18.1

23.0, 20.7, 17.1, 18.7

Erreur de lecture DHT: ('Capteur DHT introuvable, vérifiez le câblage',)

Traceback (appel le plus récent en dernier):

Fichier "main.py", ligne 64, dans

Fichier "main.py", ligne 59, dans get_dht22

NameError: variable locale référencée avant l'affectation

J'ai donc modifié le script pour faire face à ce problème et relancé l'enregistrement:

Erreur de lecture DHT: ('Capteur DHT introuvable, vérifiez le câblage',)

25.9, 22.6, -999.0, 22.6

Erreur de lecture DHT: ('Capteur DHT introuvable, vérifiez le câblage',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

Erreur de lecture DHT: ('Capteur DHT introuvable, vérifiez le câblage',)

27.1, 23.0, -999.0, 23.0

Erreur de lecture DHT: ('Capteur DHT introuvable, vérifiez le câblage',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

Erreur de lecture DHT: ('Capteur DHT introuvable, vérifiez le câblage',)

28.4, 23.2, -999.0, 23.3

Erreur de lecture DHT: ('Capteur DHT introuvable, vérifiez le câblage',)

26.8, 23.1, -999.0, 23.3

26.5, 23.2, 23.0, 23.4

26.4, 23.3, 23.0, 23.5

26.4, 23.4, 23.1, 23.5

26.2, 23.3, 23.1, 23.6

Je n'ai eu aucun problème avec la deuxième manche. La documentation Adafruit avertit que parfois les capteurs DHT manquent des lectures.

Étape 15: Conclusions

Conclusion
Conclusion

Cette courbe montre clairement que la capacité thermique plus élevée de certains capteurs augmente leur temps de réaction.

Tous les capteurs enregistrent les températures montantes et descendantes.

Ils ne sont pas très rapides à s'installer à une nouvelle température.

Ils ne sont pas très précis. (Sont-ils assez bons pour une station météo ?)

Vous devrez peut-être étalonner votre capteur par rapport à un thermomètre fiable.

Conseillé: