Tabla de contenido:
- Suministros
- Paso 1: circuitos
- Paso 2: método
- Paso 3: TMP36 - Prueba inicial
- Paso 4: Resultados de la sustitución del potenciómetro
- Paso 5: lecturas promedio y resultado
- Paso 6: DS18B20 - Prueba inicial
- Paso 7: DS18B20 funcionando bien
- Paso 8: DHT22 y DHT11
- Paso 9: Resultados de DHT22
- Paso 10: Prueba DTH11
- Paso 11: BME680
- Paso 12: ¿Cuál debo usar?
- Paso 13: Más pensamientos y experimentación
- Paso 14: Gráfico completo
- Paso 15: Conclusiones
Video: Prueba de sensores de temperatura: ¿cuál es para mí ?: 15 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Uno de los primeros sensores que los recién llegados a la informática física quieren probar es algo para medir la temperatura. Cuatro de los sensores más populares son el TMP36, que tiene salida analógica y necesita un convertidor de analógico a digital, el DS18B20, que usa conectividad de un cable, el DHT22, o el DHT11, un poco más económico, que solo necesita un pin digital, pero también proporciona una lectura de humedad y, por último, el BME680 que usa I2C (con SPI también en algunas placas de ruptura) y proporciona temperatura, humedad, gas (VOC) y presión atmosférica, pero cuesta un poco más.
Quiero ver qué tan precisos son y descubrir las ventajas o desventajas. Ya tengo un termómetro de mercurio preciso, sobrante de la impresión fotográfica en color en los días del procesamiento químico, para compararlos. (¡Nunca tires nada, lo necesitarás más tarde!)
Voy a usar CircuitPython y una placa de desarrollo Adafruit Itsybitsy M4 para estas pruebas. Los controladores adecuados están disponibles para todos los dispositivos.
Suministros
Mi lista inicial:
- Microcontrolador Itsybitsy M4 Express
- cable micro USB - para programar
- TMP36
- DS18B20
- Resistencia de 4.7K Ohm
- DHT22
- BME680
- Multímetro
- Tablero de pruebas o tabla de tiras
- Cable de conexión
Paso 1: circuitos
Los cables naranjas son de 3,3 V
Los cables negros son GND
En la parte inferior del tablero hay puntos de prueba para medir voltajes. (Salida analógica 3.3v, GND y TMP36)
Los enchufes centrales son, de izquierda a derecha:
- TMP36: 3.3v, salida de señal analógica, GND
- DS18B20: GND, salida de señal digital, 3.3v
- DHT22: 3.3v, salida de señal, vacío, GND
- BME680: 3.3v, SDA, SCL, vacío, GND
El conector trasero, para la conexión a la placa IB M4E, de izquierda a derecha
- 3,3 voltios
- TMP36 - salida analógica al pin A2
- GND
- Salida digital DS18B20 al pin D3 - verde
- Salida digital DHT22 al pin D2 - amarillo
- SDA - blanco
- SCL - rosa
La resistencia de 4.7K Ohm es un pullup de la señal a 3.3v para una conexión de un cable en el DS18B20.
Hay 2 pistas cortadas en la parte posterior del tablero:
Debajo del extremo izquierdo de los cables rosa y blanco. (Debajo del cable amarillo)
Paso 2: método
Para cada sensor, escribiré un breve guión para leer la temperatura (y otros elementos si están disponibles) varias veces y compararé la temperatura con mi termómetro de mercurio (Hg). Estaré mirando para ver qué tan cerca se compara la temperatura con la lectura de mercurio y si las lecturas son estables / consistentes.
También miraré la documentación para ver si las lecturas se ajustan a la precisión esperada y si hay algo que se pueda hacer para hacer mejoras.
Paso 3: TMP36 - Prueba inicial
La pierna izquierda es 3.3v, la pierna derecha es GND y la pierna central es un voltaje analógico que representa la temperatura usando la siguiente fórmula. TempC = (milivoltios - 500) / 10
Entonces, 750 milivoltios dan una temperatura de 25 C
Parece haber un par de problemas aquí. La temperatura del termómetro de mercurio "normal" es mucho más baja que la del TMP36 y las lecturas no son muy consistentes: hay algo de "inestabilidad" o ruido.
El sensor TMP36 envía un voltaje proporcional a la temperatura. Esto debe ser leído por el convertidor A / D antes de calcular la temperatura. Leamos el voltaje directamente del tramo medio del sensor con un multímetro y lo comparamos con el resultado del A / D. La lectura de la pierna central con mi multímetro es de 722 milivoltios, mucho más baja y una lectura muy estable.
Hay dos cosas que podemos intentar. Sustituya el TMP36 por un potenciómetro y ajuste el voltaje en el cálculo al voltaje real del microcontrolador. Luego veremos si el voltaje calculado está más cerca y si se reduce el ruido / jitter.
Midamos el voltaje real que se está utilizando en el microcontrolador y el A / D. Se supuso que era de 3.3v, pero en realidad solo es de 3.275v.
Paso 4: Resultados de la sustitución del potenciómetro
Esto es mucho mejor. Las lecturas están dentro de un par de milivoltios con mucho menos ruido. Esto sugiere que el ruido proviene del TMP36 en lugar del A / D. La lectura del medidor es siempre constante, sin fluctuaciones. (El medidor puede estar 'suavizando' la salida de nerviosismo).
Una forma de mejorar la situación puede ser tomar una lectura promedio. Tome diez lecturas rápidamente y use el promedio. También calcularé la desviación estándar mientras cambio el programa, para dar una indicación de la dispersión de los resultados. También contaré el número de lecturas dentro de 1 desviación estándar de la media; cuanto más alto, mejor.
Paso 5: lecturas promedio y resultado
Todavía hay mucho ruido y la lectura del TMP36 es aún más alta que la del termómetro de mercurio. Para reducir el ruido, he incluido un condensador de 100 NF entre la señal y GND
Luego busqué otras soluciones en Internet y encontré estas: https://www.doctormonk.com/2015/02/accurate-and-re… El Dr. Monk sugiere incluir una resistencia de 47 k Ohm entre la señal y GND.
www.desert-home.com/2015/03/battery-operate… Mientras que este tipo sugiere ordenar 15 lecturas y promediar las 5 del centro.
Modifiqué el guión y el circuito para incluir estas sugerencias e incluí una lectura del termómetro de mercurio.
¡Al final! Ahora tenemos lecturas constantes dentro del rango de precisión de la descripción del dispositivo.
Esto supuso un gran esfuerzo para que el sensor funcionara, que solo tiene la precisión del fabricante de:
Precisión: más alta (más baja): ± 3 ° C (± 4 ° C) Solo cuestan alrededor de $ 1,50 (£ 2)
Paso 6: DS18B20 - Prueba inicial
Ten mucho cuidado. Este paquete se ve muy similar al TMP36 pero las patas son al revés con 3.3v a la derecha y GND a la izquierda. La señal de salida está en el centro. Para que este dispositivo funcione necesitamos una resistencia de 4.7 k Ohm entre la señal y 3.3v. Este dispositivo usa el protocolo de un solo cable y necesitamos descargar un par de controladores en la carpeta lib del Itsybitsy M4 Express.
Esto cuesta alrededor de $ 4 / £ 4 Especificaciones técnicas:
- Rango de temperatura utilizable: -55 a 125 ° C (-67 ° F a + 257 ° F)
- Resolución seleccionable de 9 a 12 bits
- Utiliza una interfaz de 1 cable: solo requiere un pin digital para la comunicación
- Identificación única de 64 bits grabada en el chip
- Varios sensores pueden compartir un pin
- ± 0,5 ° C Precisión de -10 ° C a + 85 ° C
- Sistema de alarma de límite de temperatura
- El tiempo de consulta es inferior a 750 ms
- Utilizable con alimentación de 3,0 V a 5,5 V
El principal problema con este sensor es que utiliza la interfaz Dallas 1-Wire y no todos los microcontroladores tienen un controlador adecuado. Estamos de suerte, hay un controlador para el Itsybitsy M4 Express.
Paso 7: DS18B20 funcionando bien
Esto muestra un gran resultado.
Un conjunto constante de lecturas sin ningún trabajo adicional ni gastos generales de cálculo. Las lecturas están dentro del rango de precisión esperado de ± 0.5 ° C en comparación con mi termómetro de mercurio.
También hay una versión resistente al agua por alrededor de $ 10 que he usado en el pasado con igual éxito.
Paso 8: DHT22 y DHT11
El DHT22 usa un termistor para obtener la temperatura y cuesta alrededor de $ 10 / £ 10 y es el hermano más preciso y costoso del DHT11 más pequeño. También utiliza una interfaz de un cable, pero NO es compatible con el protocolo Dallas utilizado con el DS18B20. Detecta la humedad y la temperatura. Estos dispositivos a veces necesitan una resistencia pull up entre 3.3 vy el pin de señal. Este paquete ya tiene uno instalado.
- Bajo costo
- E / S y potencia de 3 a 5 V
- Uso de corriente máxima de 2.5mA durante la conversión (mientras se solicitan datos)
- Bueno para lecturas de humedad del 0 al 100% con una precisión del 2 al 5%
- Bueno para lecturas de temperatura de -40 a 80 ° C ± 0.5 ° C de precisión
- No más de 0,5 Hz de frecuencia de muestreo (una vez cada 2 segundos)
- Tamaño del cuerpo 27 mm x 59 mm x 13,5 mm (1,05 "x 2,32" x 0,53 ")
- 4 pines, espaciado de 0.1"
- Peso (solo el DHT22): 2,4 g
Comparado con el DHT11, este sensor es más preciso, más exacto y funciona en un rango mayor de temperatura / humedad, pero es más grande y más caro.
Paso 9: Resultados de DHT22
Estos son excelentes resultados con muy poco esfuerzo. Las lecturas son bastante constantes y están dentro de la tolerancia esperada. La lectura de humedad es una ventaja.
Solo puede tomar lecturas cada segundo.
Paso 10: Prueba DTH11
Mi termómetro de mercurio mostró 21,9 grados C. Este es un DHT11 bastante antiguo que recuperé de un proyecto antiguo y el valor de humedad es muy diferente de las lecturas del DHT22 de hace unos minutos. Cuesta alrededor de $ 5 / £ 5.
Su descripción incluye:
- Bueno para lecturas de humedad del 20 al 80% con una precisión del 5%
- Bueno para lecturas de temperatura de 0-50 ° C ± 2 ° C de precisión - menor que el DTH22
La temperatura parece estar todavía en el rango de precisión, pero no confío en la lectura de humedad de este dispositivo antiguo.
Paso 11: BME680
Este sensor contiene capacidades de detección de temperatura, humedad, presión barométrica y gases de COV en un solo paquete, pero es el más caro de los sensores que se prueban aquí. Cuesta alrededor de £ 18.50 / $ 22. Existe un producto similar sin el sensor de gas que es un poco más económico.
Este es un sensor estándar de oro de los cinco. El sensor de temperatura es preciso y con controladores adecuados, muy fácil de usar. Esta versión usa I2C pero la placa de arranque Adafruit también puede usar SPI.
Al igual que los modelos BME280 y BMP280, este sensor de precisión de Bosch puede medir la humedad con una precisión de ± 3%, la presión barométrica con una precisión absoluta de ± 1 hPa y la temperatura con una precisión de ± 1.0 ° C. Debido a que la presión cambia con la altitud y las mediciones de presión son tan buenas, también puede usarlo como un altímetro con una precisión de ± 1 metro o más.
La documentación dice que necesita algo de "tiempo de combustión" para el sensor de gas.
Paso 12: ¿Cuál debo usar?
- El TMP36 es muy barato, pequeño y popular, pero bastante difícil de usar y puede ser inexacto.
- El DS18B20 es pequeño, preciso, económico, muy fácil de usar y tiene una versión resistente al agua.
- El DTH22 también indica humedad, tiene un precio moderado y es fácil de usar, pero puede ser demasiado lento.
- El BME680 hace mucho más que los demás, pero es caro.
Si solo quisiera temperatura, usaría el DS18B20 con una precisión de ± 0,5 ° C, pero mi favorito es el BME680 porque hace mucho más y se puede utilizar en una gran cantidad de proyectos diferentes.
Un pensamiento final. Asegúrese de mantener su sensor de temperatura alejado del microprocesador. Algunos HAT de Raspberry Pi permiten que el calor de la placa principal caliente el sensor, dando una lectura falsa.
Paso 13: Más pensamientos y experimentación
Gracias gulliverrr, ChristianC231 y pgagen por sus comentarios sobre lo que he hecho hasta ahora. Lamento el retraso, pero he estado de vacaciones en Irlanda, sin acceso a mi equipo electrónico durante un par de semanas.
Aquí hay un primer intento de mostrar los sensores trabajando juntos.
Escribí un guión para leer los sensores por turno e imprimir los valores de temperatura cada 20 segundos más o menos.
Dejo el kit en el frigorífico durante una hora para enfriarlo todo. Lo conecté a la PC y conseguí que Mu imprimiera los resultados. Luego, la salida se copió, se convirtió en un archivo.csv (variables separadas por comas) y los gráficos se extrajeron de los resultados en Excel.
Pasaron unos tres minutos desde que se sacó el kit de la nevera antes de que se registraran los resultados, por lo que se había producido un aumento de temperatura en este intervalo. Sospecho que los cuatro sensores tienen diferentes capacidades térmicas y, por lo tanto, se calentarían a diferentes velocidades. Se esperaría que la tasa de calentamiento disminuya a medida que los sensores se acercan a la temperatura ambiente. Lo registré como 24,4 ° C con mi termómetro de mercurio.
Las grandes diferencias de temperatura al inicio de las curvas podrían deberse a las diferentes capacidades térmicas de los sensores. Me complace ver que las líneas convergen hacia el final a medida que se acercan a la temperatura ambiente. Me preocupa que el TMP36 sea siempre mucho más alto que los otros sensores.
Busqué las hojas de datos para verificar nuevamente la precisión descrita de estos dispositivos
TMP36
- ± 2 ° C de precisión sobre temperatura (típico)
- ± 0,5 ° C linealidad (típico)
DS18B20
± 0,5 ° C Precisión de -10 ° C a + 85 ° C
DHT22
temperatura ± 0.5 ° C
BME680
temperatura con precisión de ± 1.0 ° C
Paso 14: Gráfico completo
Ahora puede ver que los sensores finalmente se nivelaron y acordaron la temperatura más o menos dentro de la precisión descrita. Si se quitan 1,7 grados de los valores de TMP36 (se esperan ± 2 ° C), existe una buena concordancia entre todos los sensores.
La primera vez que ejecuté este experimento, el sensor DHT22 causó un problema:
salida 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 de DHT: ('No se encontró el sensor de DHT, verifique el cableado',)
Rastreo (llamadas recientes más última):
Archivo "main.py", línea 64, en
Archivo "main.py", línea 59, en get_dht22
NameError: variable local a la que se hace referencia antes de la asignación
Así que modifiqué el script para hacer frente a este problema y reinicié la grabación:
Error de lectura de DHT: ('No se encontró el sensor de DHT, verifique el cableado',)
25.9, 22.6, -999.0, 22.6
Error de lectura de DHT: ('No se encontró el sensor de DHT, verifique el cableado',)
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 de DHT: ('No se encontró el sensor de DHT, verifique el cableado',)
27.1, 23.0, -999.0, 23.0
Error de lectura de DHT: ('No se encontró el sensor de DHT, verifique el cableado',)
27.2, 23.0, -999.0, 23.1
25.9, 23.3, 22.6, 23.2
Error de lectura de DHT: ('No se encontró el sensor de DHT, verifique el cableado',)
28.4, 23.2, -999.0, 23.3
Error de lectura de DHT: ('No se encontró el sensor de DHT, verifique el cableado',)
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 tuve ningún problema con la segunda carrera. La documentación de Adafruit advierte que a veces los sensores DHT pierden lecturas.
Paso 15: Conclusiones
Esta curva muestra claramente que la mayor capacidad térmica de algunos sensores aumenta su tiempo de reacción.
Todos los sensores registran temperaturas subiendo y bajando.
No se adaptan muy rápido a una nueva temperatura.
No son muy precisos. (¿Son lo suficientemente buenos para una estación meteorológica?)
Es posible que deba calibrar su sensor con un termómetro confiable.
Recomendado:
Cámara web DSLR Wifi con tecnología Raspberry Pi a prueba de agua para lapsos de tiempo: 3 pasos (con imágenes)
Cámara web DSLR Wifi con tecnología Raspberry Pi impermeable para lapsos de tiempo: Soy un fanático de ver puestas de sol desde casa. Tanto es así que obtengo un poco de FOMO cuando hay un buen atardecer y no estoy en casa para verlo. Las cámaras web IP produjeron una calidad de imagen decepcionante. Comencé a buscar formas de reutilizar mi primera DSLR: una Cano 2007
Robot para evitar obstáculos con sensores ultrasónicos: 9 pasos (con imágenes)
Robot para evitar obstáculos con sensores ultrasónicos: este es un proyecto simple sobre el robot para evitar obstáculos que usa sensores ultrasónicos (HC SR 04) y la placa Arduino Uno. El robot se mueve evitando obstáculos y eligiendo la mejor manera de seguir por los sensores. Y tenga en cuenta que no es un proyecto tutorial, compartirte
Proyecto Arduino: Módulo RF1276 de rango de prueba LoRa para solución de rastreo GPS: 9 pasos (con imágenes)
Proyecto Arduino: Rango de prueba Módulo LoRa RF1276 para rastreo GPS Solución: Conexión: USB - Serial Necesidad: Navegador Chrome Necesita: 1 X Arduino Mega Necesita: 1 X GPS Necesita: 1 X Tarjeta SD Necesita: 2 X Módem LoRa RF1276 Función: Arduino Enviar valor GPS a la base principal - Datos de la tienda de la base principal en el módulo Lora del servidor Dataino: Alcance ultralargo
Uso de sensores de temperatura, agua de lluvia y vibración en un Arduino para proteger los ferrocarriles: 8 pasos (con imágenes)
Uso de sensores de temperatura, agua de lluvia y vibración en un Arduino para proteger los ferrocarriles: en la sociedad moderna, un aumento en los pasajeros de trenes significa que las compañías ferroviarias deben hacer más para optimizar las redes para mantenerse al día con la demanda. En este proyecto mostraremos a pequeña escala cómo los sensores de temperatura, agua de lluvia y vibraciones o
Centro de recopilación de datos de sensores habilitado para IoT con ESP8266 y PubNub: 9 pasos (con imágenes)
Centro de recopilación de datos de sensores habilitado para IoT con ESP8266 y PubNub: la mayoría de los tutoriales sobre ESP8266 se encuentran en el nivel de novato (parpadeando un LED de forma remota) o son demasiado complejos para alguien que está buscando algo para mejorar y actualizar sus habilidades de parpadeo de LED. instructable tiene como objetivo cerrar esta brecha para crear