Table des matières:
- Fournitures
- Étape 1: Circuits
- Étape 2: Méthode
- Étape 3: TMP36 - Essai initial
- Étape 4: Résultats de substitution de potentiomètre
- Étape 5: Lectures moyennes et un résultat
- Étape 6: DS18B20 - Test initial
- Étape 7: DS18B20 fonctionne bien
- Étape 8: DHT22 et DHT11
- Étape 9: Résultats DHT22
- Étape 10: Test DTH11
- Étape 11: BME680
- Étape 12: Lequel dois-je utiliser ?
- Étape 13: Réflexions supplémentaires et expérimentation
- Étape 14: Graphique complet
- Étape 15: Conclusions
Vidéo: Test des capteurs de température - Lequel pour moi ? : 15 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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
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
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
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
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
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
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
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
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
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
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
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 ?
- 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
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
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
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é:
Comment créer une domotique basée sur l'IoT avec le relais de contrôle des capteurs NodeMCU : 14 étapes (avec photos)
Comment faire de la domotique basée sur l'IoT avec le relais de contrôle des capteurs NodeMCU : Dans ce projet basé sur l'IoT, j'ai réalisé la domotique avec le module de relais de contrôle Blynk et NodeMCU avec retour en temps réel. En mode manuel, ce module de relais peut être contrôlé à partir d'un mobile ou d'un smartphone et, commutateur manuel. En mode automatique, cette smar
Envoi des données des capteurs de vibrations et de température sans fil vers Excel à l'aide de Node-RED : 25 étapes
Envoi de données de capteur de vibration et de température sans fil vers Excel à l'aide de Node-RED : Présentation du capteur de vibration et de température sans fil industriel IoT à longue portée de NCD, offrant une portée allant jusqu'à 3 km grâce à l'utilisation d'une structure de réseau maillé sans fil. Intégrant un capteur de vibration et de température de précision 16 bits, cet appareil trans
Avoir une récolte exceptionnelle avec des capteurs d'humidité et ARDUINO : 4 étapes (avec photos)
Avoir une récolte de pare-chocs avec des capteurs d'humidité et ARDUINO : je dois être accro à Instructables entre le travail et faire mes tâches à la maison pour continuer à partager mes connaissances sans argent sur Instructables en écrivant un autre instructable. Je suis un juge maintenant, passant au crible de nombreux Instructables et toujours trouver des Instructabl
Utilisation de capteurs de température, d'eau de pluie et de vibrations sur un Arduino pour protéger les chemins de fer : 8 étapes (avec photos)
Utilisation de capteurs de température, d'eau de pluie et de vibrations sur un Arduino pour protéger les chemins de fer : Dans la société moderne, une augmentation du nombre de passagers ferroviaires signifie que les entreprises ferroviaires doivent faire davantage pour optimiser les réseaux afin de répondre à la demande. Dans ce projet, nous montrerons à petite échelle comment les capteurs de température, d'eau de pluie et de vibration o
Préparez des capteurs PIR excédentaires pour la robotique : 3 étapes (avec photos)
Préparez des capteurs PIR excédentaires pour la robotique : j'ai trouvé un tas de capteurs PIR sur eBay. Ils sont montés sur un circuit imprimé qui a été produit pour un ensemble mains libres pour téléphones mobiles. J'aime décrire ici comment préparer le capteur pour une utilisation dans des projets de robotique. Si vous ne savez pas ce qu'est un capteur PIR