Cuprins:
- Provizii
- Pasul 1: Circuite
- Pasul 2: Metoda
- Pasul 3: TMP36 - Încercare inițială
- Pasul 4: Rezultatele înlocuirii potențiometrului
- Pasul 5: Citiri medii și un rezultat
- Pasul 6: DS18B20 - Testarea inițială
- Pasul 7: DS18B20 funcționează bine
- Pasul 8: DHT22 și DHT11
- Pasul 9: Rezultate DHT22
- Pasul 10: Testul DTH11
- Pasul 11: BME680
- Pasul 12: Pe care ar trebui să îl folosesc?
- Pasul 13: Gânduri și experimentări suplimentare
- Pasul 14: Grafic complet
- Pasul 15: Concluzii
Video: Testarea senzorilor de temperatură - Care pentru mine ?: 15 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Unul dintre primii senzori pe care noii veniți în calcul fizic vor să-l încerce este ceva pentru a măsura temperatura. Patru dintre cei mai populari senzori sunt TMP36, care are ieșire analogică și are nevoie de un convertor analogic la digital, DS18B20, care utilizează conectivitate cu un singur fir, DHT22 sau DHT11 puțin mai ieftin, care are nevoie doar de un pin digital, dar și oferă o citire a umidității și, în cele din urmă, BME680 care folosește I2C (cu SPI, de asemenea, pe unele plăci de rupere) și oferă temperatură, umiditate, gaz (VOC) și presiune atmosferică, dar costă puțin mai mult.
Vreau să văd cât de precise sunt și să descopăr orice avantaje sau dezavantaje. Dețin deja un termometru precis cu mercur, rămas din imprimarea fotografică color în vremurile procesării chimice, pentru a le compara cu acestea. (Nu aruncați niciodată nimic afară - veți avea nevoie de el mai târziu!)
Voi folosi CircuitPython și o placă de dezvoltare Adafruit Itsybitsy M4 pentru aceste teste. Sunt disponibile drivere adecvate pentru toate dispozitivele.
Provizii
Lista mea inițială:
- Microcontroler Itsybitsy M4 Express
- cablu micro USB - pentru programare
- TMP36
- DS18B20
- Rezistor de 4,7K Ohm
- DHT22
- BME680
- Multimetru
- Panou sau panou de benzi
- Sârmă de conectare
Pasul 1: Circuite
Firele portocalii sunt de 3,3 V
Firele negre sunt GND
În partea de jos a plăcii sunt puncte de testare pentru măsurarea tensiunilor. (Ieșire analogică 3.3v, GND și TMP36)
Priza centrală este, de la stânga la dreapta:
- TMP36: 3.3v, ieșire semnal analog, GND
- DS18B20: GND, ieșire semnal digital, 3.3v
- DHT22: 3.3v, semnal ieșit, gol, GND
- BME680: 3,3v, SDA, SCL, gol, GND
Conectorul din spate, pentru conectarea la placa IB M4E, de la stânga la dreapta
- 3.3v
- TMP36 - ieșire analogică la pinul A2
- GND
- DS18B20 ieșire digitală la pinul D3 - verde
- DHT22 ieșire digitală la pinul D2 - galben
- SDA - alb
- SCL - roz
Rezistorul de 4.7K Ohm este un pullup de la semnal la 3.3v pentru conexiunea 0ne-wire pe DS18B20.
Există 2 piste tăiate pe spatele plăcii:
Sub capătul din stânga al firelor roz și alb. (Sub firul galben.)
Pasul 2: Metoda
Pentru fiecare senzor voi scrie un scurt script pentru a citi temperatura (și alte elemente, dacă sunt disponibile) de mai multe ori și pentru a verifica temperatura față de termometrul meu cu mercur (Hg). Voi căuta să văd cât de strâns se compară temperatura cu citirea mercurului și dacă citirile sunt constante / consistente.
De asemenea, voi examina documentația pentru a vedea dacă citirile se încadrează în precizia așteptată și dacă se poate face ceva pentru a face îmbunătățiri.
Pasul 3: TMP36 - Încercare inițială
Piciorul stâng este de 3,3v, piciorul drept este GND, iar piciorul central este o tensiune analogică reprezentând temperatura folosind următoarea formulă. TempC = (milivolți - 500) / 10
Deci, 750 milivolți dau o temperatură de 25 C
Se pare că există câteva probleme aici. Temperatura de la termometrul „normal”, cu mercur, este mult mai scăzută decât de la TMP36, iar citirile nu sunt foarte consistente - există o oarecare „zgomot” sau zgomot.
Senzorul TMP36 transmite o tensiune proporțională cu temperatura. Acest lucru trebuie citit de convertorul A / D înainte de calcularea temperaturii. Să citim tensiunea direct de la piciorul central al senzorului cu un multimetru și să o comparăm cu rezultatul de la A / D. Citirea din piciorul central cu multi-metrul meu este de 722 milivolți, mult mai mică și o lectură foarte constantă.
Există două lucruri pe care le putem încerca. Înlocuiți un potențiometru pentru TMP36 și reglați tensiunea din calcul la tensiunea reală a microcontrolerului. Vom vedea apoi dacă tensiunea calculată este mai apropiată și dacă zgomotul / jitterul este redus.
Să măsurăm tensiunea reală folosită de microcontroler și A / D. Acest lucru a fost presupus la 3,3v, dar este de fapt doar 3,275v.
Pasul 4: Rezultatele înlocuirii potențiometrului
Este mult mai bine. Citirile sunt în câteva milivolți cu mult mai puțin zgomot. Acest lucru sugerează că zgomotul provine de la TMP36 mai degrabă decât de la A / D. Citirea contorului este întotdeauna constantă - fără jitter. (Contorul poate „netezi” ieșirea nervoasă.)
O modalitate de îmbunătățire a situației poate fi luarea unei citiri medii. Faceți zece citiri rapid și utilizați media. De asemenea, voi calcula abaterea standard în timp ce schimb programul, pentru a da o indicație a răspândirii rezultatelor. De asemenea, voi număra numărul de citiri în cadrul unei deviații standard a mediei - cu cât este mai mare cu atât mai bine.
Pasul 5: Citiri medii și un rezultat
Există încă o mulțime de zgomot și citirea de la TMP36 este încă mai mare decât de la termometrul cu mercur. Pentru a reduce zgomotul, am inclus un condensator 100NF între semnal și GND
Am căutat apoi alte soluții pe internet și am găsit următoarele: https://www.doctormonk.com/2015/02/accurate-and-re… Dr. Monk sugerează includerea unui rezistor de 47 k Ohm între semnal și GND.
www.desert-home.com/2015/03/battery-operate… În timp ce acest tip sugerează sortarea a 15 citiri în ordine și media centrului 5.
Am modificat scenariul și circuitul pentru a include aceste sugestii și am inclus o citire din termometrul cu mercur.
În sfârșit! Acum avem citiri constante în intervalul de precizie al descrierii dispozitivului.
A fost un efort destul de mare pentru ca senzorul să funcționeze, care are doar o precizie a producătorului de:
Precizie - Cea mai mare (cea mai mică): ± 3 ° C (± 4 ° C) Costă doar aproximativ 1,50 USD (2 GBP)
Pasul 6: DS18B20 - Testarea inițială
Fii foarte atent. Acest pachet arată foarte asemănător cu TMP36, dar picioarele sunt invers, cu 3.3v în dreapta și GND în stânga. Semnalul de ieșire este în centru. Pentru ca acest dispozitiv să funcționeze, avem nevoie de un rezistor de 4,7 k Ohm între semnal și 3,3v. Acest dispozitiv utilizează protocolul cu un singur fir și trebuie să descărcăm câteva drivere în folderul lib al Itsybitsy M4 Express.
Acest lucru costă aproximativ 4 USD / 4 GBP Specificații tehnice:
- Gama de temperatură utilizabilă: -55 până la 125 ° C (-67 ° F până la + 257 ° F)
- Rezoluție selectabilă de la 9 la 12 biți
- Folosește interfața cu 1 fir - necesită un singur pin digital pentru comunicare
- ID unic pe 64 de biți ars în cip
- Mai mulți senzori pot partaja un singur pin
- ± 0,5 ° C Precizie de la -10 ° C la + 85 ° C
- Sistem de alarmă cu limită de temperatură
- Timpul de interogare este mai mic de 750 ms
- Utilizabil cu putere de la 3.0V la 5.5V
Principala problemă cu acest senzor este că folosește interfața Dallas 1-Wire și nu toate microcontrolerele au un driver adecvat. Suntem norocoși, există un șofer pentru Itsybitsy M4 Express.
Pasul 7: DS18B20 funcționează bine
Acest lucru arată un rezultat excelent.
Un set constant de citiri, fără alte lucrări suplimentare și cheltuieli generale. Citirile se încadrează în intervalul de precizie preconizat de ± 0,5 ° C în comparație cu termometrul meu cu mercur.
Există, de asemenea, o versiune impermeabilă la aproximativ 10 USD pe care am folosit-o în trecut cu același succes.
Pasul 8: DHT22 și DHT11
DHT22 folosește un termistor pentru a obține temperatura și costă aproximativ 10 USD / 10 GBP și este fratele mai precis și mai scump al DHT11 mai mic. De asemenea, folosește o interfață cu un singur fir, dar NU este compatibil cu protocolul Dallas utilizat cu DS18B20. Simte umiditatea și temperatura. Aceste dispozitive au nevoie uneori de un rezistor de tragere între 3,3 v și pinul de semnal. Acest pachet are deja unul instalat.
- Cost scăzut
- Putere de la 3 la 5V și I / O
- Utilizare curentă maximă de 2,5 mA în timpul conversiei (în timp ce solicitați date)
- Bun pentru citiri de umiditate 0-100% cu o precizie de 2-5%
- Bun pentru citiri de temperatură de -40 până la 80 ° C precizie ± 0,5 ° C
- Rată de eșantionare mai mare de 0,5 Hz (o dată la 2 secunde)
- Dimensiunea corpului 27 mm x 59 mm x 13,5 mm (1,05 "x 2,32" x 0,53 ")
- 4 pini, distanță de 0,1"
- Greutate (doar DHT22): 2,4g
Comparativ cu DHT11, acest senzor este mai precis, mai precis și funcționează într-un interval mai mare de temperatură / umiditate, dar este mai mare și mai scump.
Pasul 9: Rezultate DHT22
Acestea sunt rezultate excelente, cu foarte puțin efort. Citirile sunt destul de constante și se încadrează în toleranța așteptată. Citirea umidității este un bonus.
Puteți face citiri doar în fiecare secundă.
Pasul 10: Testul DTH11
Termometrul meu cu mercur a arătat 21,9 grade C. Acesta este un DHT11 destul de vechi pe care l-am preluat dintr-un proiect vechi, iar valoarea umidității este foarte diferită de citirile DHT22 de acum câteva minute. Costă aproximativ 5 USD / 5 GBP.
Descrierea sa include:
- Bun pentru citiri de umiditate de 20-80% cu o precizie de 5%
- Bun pentru citiri de temperatură 0-50 ° C precizie ± 2 ° C - mai mică decât DTH22
Temperatura pare să fie încă în intervalul de precizie, dar nu am încredere în citirea umidității de pe acest dispozitiv vechi.
Pasul 11: BME680
Acest senzor conține capacități de detectare a temperaturii, umidității, presiunii barometrice și a gazelor COV într-un singur pachet, dar este cel mai scump dintre senzorii testați aici. Costă aproximativ 18,50 GBP / 22 USD. Există un produs similar fără senzorul de gaz, care este puțin mai ieftin.
Acesta este un senzor standard de aur al celor cinci. Senzorul de temperatură este precis și cu drivere adecvate, foarte ușor de utilizat. Această versiune folosește I2C, dar placa de breakout Adafruit poate folosi și SPI.
La fel ca BME280 și BMP280, acest senzor de precizie de la Bosch poate măsura umiditatea cu precizie de ± 3%, presiunea barometrică cu precizie absolută de ± 1 hPa și temperatura cu precizie de ± 1,0 ° C. Deoarece presiunea se schimbă odată cu altitudinea, iar măsurătorile de presiune sunt atât de bune, îl puteți folosi și ca altimetru cu precizie de ± 1 metru sau mai bună!
Documentația spune că are nevoie de un „timp de ardere” pentru senzorul de gaz.
Pasul 12: Pe care ar trebui să îl folosesc?
- TMP36 este foarte ieftin, mic și popular, dar destul de dificil de utilizat și poate fi inexact.
- DS18B20 este mic, precis, ieftin, foarte ușor de utilizat și are o versiune impermeabilă.
- DTH22 indică, de asemenea, umiditatea, are un preț moderat și este ușor de utilizat, dar poate fi prea lent.
- BME680 face mult mai mult decât celelalte, dar este scump.
Dacă vreau doar temperatura, aș folosi DS18B20 cu o precizie de ± 0,5 ° C, dar preferatul meu este BME680, deoarece face mult mai mult și poate fi folosit într-un număr mare de proiecte diferite.
Un ultim gând. Asigurați-vă că țineți senzorul de temperatură departe de microprocesor. Unele HAT-uri Raspberry Pi permit căldura de pe placa principală să încălzească senzorul, dând o citire falsă.
Pasul 13: Gânduri și experimentări suplimentare
Mulțumesc gulliverrr, ChristianC231 și pgagen pentru comentariile tale despre ceea ce am făcut până acum. Îmi pare rău pentru întârziere, dar am fost în vacanță în Irlanda, fără acces la trusa mea electronică de câteva săptămâni.
Iată o primă încercare de a arăta senzorii care lucrează împreună.
Am scris un script pentru a citi pe rând senzorii și a imprima valorile temperaturii la fiecare 20 de secunde sau cam așa ceva.
Am pus trusa la frigider timp de o oră, pentru a răci totul. L-am conectat la computer și am primit Mu să tipărească rezultatele. Ieșirea a fost apoi copiată, transformată într-un fișier.csv (variabile separate prin virgulă) și graficele se extrag din rezultatele din Excel.
Au fost necesare aproximativ trei minute de la scoaterea trusei din frigider înainte ca rezultatele să fie înregistrate, astfel încât s-a produs o creștere a temperaturii în acest interval. Bănuiesc că cei patru senzori au capacități termice diferite și astfel s-ar încălzi la viteze diferite. Se va aștepta ca rata de încălzire să scadă odată cu apropierea senzorilor de temperatura camerei. Am înregistrat acest lucru la 24,4 ° C cu termometrul meu cu mercur.
Diferențele mari de temperatură la începutul curbelor ar putea fi reduse la diferitele capacități termice ale senzorilor. Mă bucur să văd că liniile converg spre final pe măsură ce se apropie de temperatura camerei. Îmi fac griji că TMP36 este întotdeauna mult mai mare decât ceilalți senzori.
Am căutat fișele tehnice pentru a verifica din nou acuratețea descrisă a acestor dispozitive
TMP36
- Precizie de ± 2 ° C peste temperatură (tip)
- Liniaritate ± 0,5 ° C (tip)
DS18B20
± 0,5 ° C Precizie de la -10 ° C la + 85 ° C
DHT22
temperatura ± 0,5 ° C
BME680
temperatura cu precizie de ± 1,0 ° C
Pasul 14: Grafic complet
Acum puteți vedea că senzorii s-au nivelat în cele din urmă și au fost de acord asupra temperaturii mai mult sau mai puțin în cadrul preciziei lor descrise. Dacă se scot 1,7 grade valorile TMP36 (se așteaptă ± 2 ° C) există un acord bun între toți senzorii.
Prima dată când am rulat acest experiment, senzorul DHT22 a provocat o problemă:
ieșire 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
Eroare de citire DHT: („Senzorul DHT nu a fost găsit, verificați cablarea”,)
Traceback (ultimul apel cel mai recent):
Fișier „main.py”, linia 64, în
Fișier „main.py”, linia 59, în get_dht22
NameError: variabilă locală la care se face referire înainte de atribuire
Așa că am modificat scriptul pentru a face față acestei probleme și am repornit înregistrarea:
Eroare de citire DHT: („Senzorul DHT nu a fost găsit, verificați cablarea”,)
25.9, 22.6, -999.0, 22.6
Eroare de citire DHT: („Senzorul DHT nu a fost găsit, verificați cablarea”,)
25.9, 22.8, -999.0, 22.7
25.9, 22.9, 22.1, 22.8
25.9, 22.9, 22.2, 22.9
Eroare de citire DHT: („Senzorul DHT nu a fost găsit, verificați cablarea”,)
27.1, 23.0, -999.0, 23.0
Eroare de citire DHT: („Senzorul DHT nu a fost găsit, verificați cablarea”,)
27.2, 23.0, -999.0, 23.1
25.9, 23.3, 22.6, 23.2
Eroare de citire DHT: („Senzorul DHT nu a fost găsit, verificați cablarea”,)
28.4, 23.2, -999.0, 23.3
Eroare de citire DHT: („Senzorul DHT nu a fost găsit, verificați cablarea”,)
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
Nu am avut nicio problemă cu a doua cursă. Documentația Adafruit avertizează că uneori senzorii DHT lipsesc citirile.
Pasul 15: Concluzii
Această curbă arată clar că capacitatea termică mai mare a unor senzori le crește timpul de reacție.
Toți senzorii înregistrează creșterea și scăderea temperaturilor.
Nu sunt foarte repezi să se stabilească la o temperatură nouă.
Nu sunt foarte exacte. (Sunt suficient de bune pentru o stație meteo?)
Poate fi necesar să vă calibrați senzorul cu un termometru de încredere.
Recomandat:
Testarea imaginii pentru culoare și claritate: 8 pași
Testarea imaginii pentru culoare și claritate: am făcut acest instructable pentru mine; pentru a-mi îmbunătăți Instructabilele, cu toate acestea intenționez să împărtășesc ceea ce am găsit. Am observat că unele dintre imaginile pe care le încarc pe Instructabes ies perfect și alte imagini pierd claritatea, puțin decolorate sau neclare. Nu știu
Ghid pentru începători pentru utilizarea senzorilor DHT11 / DHT22 cu Arduino: 9 pași
Ghid pentru începători de utilizare a senzorilor DHT11 / DHT22 W / Arduino: Puteți citi acest tutorial și alte tutoriale uimitoare pe site-ul oficial al ElectroPeak Prezentare generală În acest tutorial, veți afla cum să configurați senzorii DHT11 și DHT22 și să măsurați temperatura și umiditatea mediului înconjurător. Aflați: DHT11 și DHT22
Testarea stresului Raspberry Pi: 6 pași (cu imagini)
Testarea stresului Raspberry Pi: Când Raspberry Pi a fost lansat pentru prima dată, am fost cuprins de hype de a cumpăra unul, dar în cele din urmă am petrecut mai mult timp cu Arduino, deoarece acestea sunt mai potrivite pentru proiectele electronice. Am două Raspberry Pi originale în magazie și am crezut că este
Sfaturi pentru testarea componentelor: 5 pași
Sfaturi pentru testarea componentelor: Ți s-a întâmplat oricând că ai făcut un proiect și nu a funcționat din cauza tranzistoarelor defecte sau a afișajelor defecte. Deci, iată un dispozitiv cu care puteți testa componente precum tranzistor, diode, LDR, LED etc. înainte de a începe proiectul. Aceasta
Utilizarea senzorilor de temperatură, apă de ploaie și vibrații pe un Arduino pentru a proteja căile ferate: 8 pași (cu imagini)
Utilizarea senzorilor de temperatură, apă de ploaie și vibrații pe un Arduino pentru a proteja căile ferate: în societatea modernă, o creștere a pasagerilor feroviari înseamnă că companiile feroviare trebuie să facă mai mult pentru a optimiza rețelele pentru a ține pasul cu cererea. În acest proiect vom arăta pe o scară mică modul în care senzorii de temperatură, apă de ploaie și vibrații