Taula de continguts:

Prova dels sensors de temperatura: quin per a mi ?: 15 passos (amb imatges)
Prova dels sensors de temperatura: quin per a mi ?: 15 passos (amb imatges)

Vídeo: Prova dels sensors de temperatura: quin per a mi ?: 15 passos (amb imatges)

Vídeo: Prova dels sensors de temperatura: quin per a mi ?: 15 passos (amb imatges)
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, Desembre
Anonim
Provar els sensors de temperatura: quin per a mi?
Provar els sensors de temperatura: quin per a mi?

Un dels primers sensors que volen provar els nouvinguts a la informàtica física és mesurar la temperatura. Quatre dels sensors més populars són el TMP36, que té sortida analògica i que necessita un convertidor analògic a digital, el DS18B20, que utilitza connectivitat d’un cable, el DHT22 o el DHT11 una mica més econòmic, que només necessita un pin digital, però també proporciona una lectura d’humitat i, finalment, el BME680 que utilitza I2C (amb SPI també en algunes plaques de ruptura) i dóna temperatura, humitat, gas (VOC) i pressió atmosfèrica, però costa una mica més.

Vull veure quina precisió tenen i descobrir qualsevol avantatge o desavantatge. Ja tinc un termòmetre de mercuri precís, que sobrava de la impressió fotogràfica en color en els dies del processament de productes químics, per comparar-los amb. (No llenceu mai res; ho necessitareu més endavant!)

Utilitzaré CircuitPython i una placa de desenvolupament Adafruit Itsybitsy M4 per a aquestes proves. Hi ha disponibles controladors adequats per a tots els dispositius.

Subministraments

La meva llista inicial:

  • Microcontrolador Itsybitsy M4 Express
  • cable micro USB - per a la programació
  • TMP36
  • DS18B20
  • Resistència de 4,7 k Ohm
  • DHT22
  • BME680
  • Multímetre
  • Tauler de pa o tauler de tires
  • Cable de connexió

Pas 1: circuits

Circuits
Circuits

Els cables taronja fan 3,3 V

Els cables negres són GND

A la part inferior de la placa hi ha punts de prova per mesurar tensions. (Sortida analògica de 3,3 v, GND i TMP36)

Els endolls centrals són, d’esquerra a dreta:

  • TMP36: 3,3v, sortida de senyal analògica, GND
  • DS18B20: GND, sortida de senyal digital, 3,3v
  • DHT22: 3,3 v, sortida de senyal, buit, GND
  • BME680: 3,3 v, SDA, SCL, buit, GND

El connector posterior, per a la connexió a la placa IB M4E, d’esquerra a dreta

  • 3.3v
  • TMP36: sortida analògica al pin A2
  • GND
  • Sortida digital DS18B20 al pin D3: verd
  • Sortida digital DHT22 al pin D2: groc
  • SDA: blanc
  • SCL: rosa

La resistència de 4,7 k ohmis és una extensió del senyal a 3,3 v per a la connexió 0ne-wire al DS18B20.

Hi ha 2 pistes tallades a la part posterior del tauler:

A sota de l'extrem de l'esquerra dels cables rosats i blancs. (Sota el fil groc.)

Pas 2: mètode

Mètode
Mètode

Per a cada sensor, escriuré un breu guió per llegir la temperatura (i altres elements si hi ha disponibles) diverses vegades i comprovar la temperatura amb el meu termòmetre de mercuri (Hg). Miraré per veure fins a quin punt la temperatura es compara amb la lectura de mercuri i si les lectures són constants / consistents.

També examinaré la documentació per veure si les lectures s’ajusten a la precisió esperada i si es pot fer alguna cosa per fer millores.

Pas 3: TMP36: prova inicial

TMP36: prova inicial
TMP36: prova inicial
TMP36: prova inicial
TMP36: prova inicial

La cama esquerra és de 3,3 v, la cama dreta és GND i la cama central és una tensió analògica que representa la temperatura mitjançant la següent fórmula. TempC = (milivolts - 500) / 10

Així, 750 milivolts donen una temperatura de 25 ° C

Sembla que hi ha un parell de problemes aquí. La temperatura del termòmetre 'normal', de mercuri, és molt inferior a la del TMP36 i les lectures no són molt consistents; hi ha una certa "fluctuació" o soroll.

El sensor TMP36 envia un voltatge proporcional a la temperatura. El convertidor A / D ho ha de llegir abans de calcular la temperatura. Llegim el voltatge directament de la cama central del sensor amb un multímetre i el comparem amb el resultat de l'A / D. La lectura de la cama central amb el meu multímetre és de 722 milivolts, molt més baixa i una lectura molt constant.

Hi ha dues coses que podem provar. Substituïu un potenciòmetre pel TMP36 i ajusteu la tensió del càlcul al voltatge real del microcontrolador. A continuació, veurem si el voltatge calculat és més proper i si es redueix el soroll / fluctuació.

Mesurem la tensió real que s’utilitza el meu microcontrolador i l’A / D. Es va suposar que això era de 3,3 v, però en realitat només és de 3,275 v.

Pas 4: Resultats de la substitució del potenciòmetre

Resultats de substitució de potenciòmetres
Resultats de substitució de potenciòmetres

Això és molt millor. Les lectures es troben en un parell de milivolts amb molt menys soroll. Això suggereix que el soroll prové del TMP36 en lloc del A / D. La lectura del comptador sempre és estable, sense fluctuacions. (El mesurador pot "suavitzar" la sortida nerviosa.)

Una manera de millorar la situació pot ser fer una lectura mitjana. Feu deu lectures ràpidament i utilitzeu la mitjana. També calcularé la desviació estàndard mentre canvio el programa, per donar una indicació de la difusió dels resultats. També comptaré el nombre de lectures dins d’una desviació estàndard de la mitjana: com més alta millor.

Pas 5: lectures mitjanes i un resultat

Lectures mitjanes i un resultat
Lectures mitjanes i un resultat

Encara hi ha un gran soroll i la lectura del TMP36 continua sent superior a la del termòmetre de mercuri. Per reduir el soroll he inclòs un condensador 100NF entre el senyal i el GND

Després vaig buscar altres solucions a Internet i vaig trobar aquestes: https://www.doctormonk.com/2015/02/accurate-and-re… El doctor Monk suggereix incloure una resistència de 47 k Ohm entre el senyal i el GND.

www.desert-home.com/2015/03/battery-operate… Tot i que aquest noi suggereix ordenar 15 lectures en ordre i fer una mitjana del centre 5.

Vaig modificar el guió i el circuit per incloure aquests suggeriments i vaig incloure una lectura del termòmetre de mercuri.

Per fi! Ara tenim lectures constants dins del rang de precisió de la descripció del dispositiu.

Això va suposar un gran esforç per fer funcionar el sensor, que només té una precisió del fabricant de:

Precisió: màxima (mínima): ± 3 ° C (± 4 ° C) Només costen aproximadament 1,50 $ (2 £)

Pas 6: DS18B20: proves inicials

DS18B20: proves inicials
DS18B20: proves inicials

Tingueu molta cura. Aquest paquet té un aspecte molt similar al TMP36, però les potes són al revés, amb 3,3 v a la dreta i GND a l’esquerra. El senyal de sortida és al centre. Per fer funcionar aquest dispositiu necessitem una resistència de 4,7 k Ohm entre senyal i 3,3v. Aquest dispositiu utilitza el protocol monofilat i hem de descarregar un parell de controladors a la carpeta lib del Itsybitsy M4 Express.

Especificacions tècniques:

  • Rang de temperatura útil: -55 a 125 ° C (-67 ° F a + 257 ° F)
  • Resolució seleccionable de 9 a 12 bits
  • Utilitza una interfície de 1 cable: només requereix un pin digital per a la comunicació
  • Identificador únic de 64 bits gravat al xip
  • Diversos sensors poden compartir un pin
  • ± 0,5 ° C Precisió de -10 ° C a + 85 ° C
  • Sistema d'alarma de límit de temperatura
  • El temps de consulta és inferior a 750 ms
  • Utilitzable amb una potència de 3,0V a 5,5V

El principal problema d’aquest sensor és que utilitza la interfície Dallas 1-Wire i no tots els microcontroladors tenen un controlador adequat. Estem d’enhorabona, hi ha un conductor per al Itsybitsy M4 Express.

Pas 7: el DS18B20 funciona bé

DS18B20 Funciona bé
DS18B20 Funciona bé

Això mostra un gran resultat.

Un conjunt constant de lectures sense despeses de càlcul i treballs addicionals. Les lectures estan dins del rang de precisió esperat de ± 0,5 ° C en comparació amb el meu termòmetre de mercuri.

També hi ha una versió impermeable a uns 10 dòlars que he utilitzat en el passat amb el mateix èxit.

Pas 8: DHT22 i DHT11

DHT22 i DHT11
DHT22 i DHT11

El DHT22 utilitza un termistor per obtenir la temperatura i costa uns 10 $ / 10 £ i és el germà més precís i car del DHT11 més petit. També utilitza una interfície d’un fil però NO és compatible amb el protocol Dallas utilitzat amb el DS18B20. Detecta la humitat i la temperatura. Aquests dispositius de vegades necessiten una resistència de tracció entre 3,3 v i el pin de senyal. Aquest paquet ja n'ha instal·lat un.

  • Baix cost
  • Potència de 3 a 5V i E / S
  • Ús màxim de 2,5 mA actual durant la conversió (mentre es sol·liciten dades)
  • Bo per a lectures d'humitat del 0-100% amb una precisió del 2-5%
  • Bona per a lectures de temperatura de -40 a 80 ° C amb una precisió de ± 0,5 ° C
  • Freqüència de mostreig superior a 0,5 Hz (un cop cada 2 segons)
  • Mida del cos 27 mm x 59 mm x 13,5 mm (1,05 "x 2,32" x 0,53 ")
  • 4 pins, espaiat de 0,1"
  • Pes (només el DHT22): 2,4 g

En comparació amb el DHT11, aquest sensor és més precís, més precís i funciona en un rang més gran de temperatura / humitat, però és més gran i més car.

Pas 9: Resultats DHT22

Resultats DHT22
Resultats DHT22

Són resultats excel·lents amb molt poc esforç. Les lectures són força constants i dins de la tolerància esperada. La lectura de la humitat és un avantatge.

Només podeu fer lectures cada segon.

Pas 10: prova DTH11

Prova DTH11
Prova DTH11

El meu termòmetre de mercuri mostrava 21,9 graus C. Es tracta d’un DHT11 bastant antic que vaig recuperar d’un projecte antic i el valor d’humitat és molt diferent de les lectures DHT22 de fa uns minuts. Costa aproximadament 5 USD / 5 GBP.

La seva descripció inclou:

  • Bo per a lectures d'humitat del 20-80% amb una precisió del 5%
  • Bo per a lectures de temperatura de 0-50 ° C amb una precisió de ± 2 ° C, inferior al DTH22

Sembla que la temperatura encara està en el rang de precisió, però no confio en la lectura d’humitat d’aquest dispositiu antic.

Pas 11: BME680

BME680
BME680

Aquest sensor conté capacitats de detecció de temperatura, humitat, pressió baromètrica i gasos COV en un sol paquet, però és el més car dels sensors que s’examinen aquí. Costa aproximadament 18,50 lliures / 22 dòlars. Hi ha un producte similar sense el sensor de gas, que és una mica més barat.

Es tracta d’un sensor estàndard d’or dels cinc. El sensor de temperatura és precís i amb controladors adequats, molt fàcil d’utilitzar. Aquesta versió utilitza I2C, però el tauler d'Adafruit també pot utilitzar SPI.

Com els BME280 i BMP280, aquest sensor de precisió de Bosch pot mesurar la humitat amb una precisió del ± 3%, la pressió baromètrica amb una precisió absoluta de ± 1 hPa i la temperatura amb una precisió de ± 1,0 ° C. Com que la pressió canvia amb l'altitud i les mesures de pressió són tan bones, també podeu utilitzar-lo com a altímetre amb una precisió de ± 1 metre o millor.

La documentació diu que necessita una mica de temps de combustió per al sensor de gas.

Pas 12: Quin he d'utilitzar?

Quin he d'utilitzar?
Quin he d'utilitzar?
  • El TMP36 és molt barat, petit i popular, però força difícil d’utilitzar i pot ser imprecís.
  • El DS18B20 és petit, precís, econòmic, molt fàcil d’utilitzar i té una versió impermeable.
  • El DTH22 també indica humitat, té un preu moderat i és fàcil d’utilitzar, però pot ser massa lent.
  • El BME680 fa molt més que els altres, però és car.

Si només vull temperatura, faria servir el DS18B20 amb una precisió de ± 0,5 ° C, però el meu favorit és el BME680, perquè fa molt més i es pot utilitzar en un gran nombre de projectes diferents.

Una última reflexió. Assegureu-vos de mantenir el sensor de temperatura ben lluny del microprocessador. Alguns HAT de Raspberry Pi permeten que la calor de la placa principal escalfi el sensor, donant una lectura falsa.

Pas 13: Pensaments i experimentació addicionals

Pensaments i experimentació addicionals
Pensaments i experimentació addicionals

Gràcies gulliverrr, ChristianC231 i pgagen pels vostres comentaris sobre el que he fet fins ara. Ho sento per la demora, però he estat de vacances a Irlanda, sense accedir al meu equip electrònic durant un parell de setmanes.

Aquí hi ha un primer intent de mostrar que els sensors treballen junts.

Vaig escriure un script per llegir els sensors al seu torn i imprimir els valors de temperatura cada 20 segons aproximadament.

Vaig posar el kit a la nevera durant una hora, per refredar-ho tot. El vaig connectar al PC i vaig aconseguir que Mu imprimís els resultats. A continuació, es va copiar la sortida, es va convertir en un fitxer.csv (variables separades per comes) i els gràfics s’extreuen dels resultats a Excel.

Es van trigar uns tres minuts a treure el kit de la nevera abans de registrar els resultats, de manera que s’havia produït una certa pujada de temperatura en aquest interval. Sospito que els quatre sensors tenen capacitats tèrmiques diferents i, per tant, s’escalfarien a velocitats diferents. S’esperava que la taxa d’escalfament disminuirà a mesura que els sensors s’acostessin a la temperatura ambient. Ho vaig registrar a 24,4 ° C amb el meu termòmetre de mercuri.

Les àmplies diferències de temperatura a l’inici de les corbes es podrien reduir a les diferents capacitats tèrmiques dels sensors. Em complau veure que les línies convergeixen cap al final a mesura que s’acosten a la temperatura ambient. Em preocupa que el TMP36 sigui sempre molt més alt que els altres sensors.

Vaig buscar els fulls de dades per comprovar de nou la precisió descrita d’aquests dispositius

TMP36

  • Precisió de ± 2 ° C sobre temperatura (tip)
  • Linealitat de ± 0,5 ° C (tipus)

DS18B20

± 0,5 ° C Precisió de -10 ° C a + 85 ° C

DHT22

temperatura ± 0,5 ° C

BME680

temperatura amb precisió de ± 1,0 ° C

Pas 14: gràfic complet

Gràfic complet
Gràfic complet

Ara es pot veure que els sensors s’acaben d’anivellar i coincidir en la temperatura més o menys dins de la seva precisió descrita. Si s’eliminen 1,7 graus els valors TMP36 (s’espera ± 2 ° C) hi ha un bon acord entre tots els sensors.

La primera vegada que vaig executar aquest experiment, el sensor DHT22 va causar un problema:

sortida 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

Error de lectura DHT: ('No s'ha trobat el sensor DHT, comproveu el cablejat',)

Traceback (última trucada més recent):

Arxiu "main.py", línia 64, a

Arxiu "main.py", línia 59, a get_dht22

NameError: variable local referenciada abans de l'assignació

Així que vaig modificar l'script per fer front a aquest problema i vaig reiniciar la gravació:

Error de lectura DHT: ('No s'ha trobat el sensor DHT, comproveu el cablejat',)

25.9, 22.6, -999.0, 22.6

Error de lectura DHT: ('No s'ha trobat el sensor DHT, comproveu el cablejat',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

Error de lectura DHT: ('No s'ha trobat el sensor DHT, comproveu el cablejat',)

27.1, 23.0, -999.0, 23.0

Error de lectura DHT: ('No s'ha trobat el sensor DHT, comproveu el cablejat',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

Error de lectura DHT: ('No s'ha trobat el sensor DHT, comproveu el cablejat',)

28.4, 23.2, -999.0, 23.3

Error de lectura DHT: ('No s'ha trobat el sensor DHT, comproveu el cablejat',)

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

No vaig tenir cap problema amb la segona tirada. La documentació d'Adafruit adverteix que, de vegades, els sensors DHT falten lectures.

Pas 15: Conclusions

Conclusions
Conclusions

Aquesta corba mostra clarament que la major capacitat tèrmica d’alguns sensors augmenta el seu temps de reacció.

Tots els sensors registren la pujada i la baixada de temperatures.

No són molt ràpids per assentar-se a una nova temperatura.

No són molt precisos. (Són prou bons per a una estació meteorològica?)

És possible que hàgiu de calibrar el sensor contra un termòmetre de confiança.

Recomanat: