El sensor de temperatura DS18B20 es perfecto para proyectos como estaciones meteorológicas y sistemas domóticos. Pocos sensores son tan fáciles de configurar. Es extremadamente preciso y toma medidas rápidamente.
Para usar su sensor de dallas, primero defina un pin y una identificación, que luego usará para crear los sensores. El bus de 1 cable al que están conectados los sensores debe tener una resistencia pull-up externa de aproximadamente 4,7 KΩ. Para ello, conecte una resistencia de unos 4,7 KΩ entre 3.3V y el pin de datos. Las resistencias con valores de ± 1KΩ, en la mayoría de los casos, también funcionarán bien, si no tiene cables muy largos. Es decir, podríamos llegar a utilizar resistencias de entre 3.7KΩ y 5.7KΩ sólo si los cables no son demasiado largos (inferiores a un metro).
En este tutorial, le mostraré cómo conectar el DS18B20 a una placa esp8266 y cómo no, voy a transmitir estos valores a mi Home Assistant utilizando ESPHome.
Piezas utilizadas en este tutorial:
Para poner en marcha este sensor, son imprescindibles las siguientes piezas.
- Sensor DS18B20
- Placa de desarrollo ESP32, ESP8266, Wemos d1 mini o equivalente. Yo en este tutorial voy a utilizar la ESP8266.
- Resistencia de 4,7 KΩ
- Cables de conexión. Estos cables te los puedes fabricar tú mismo siguiendo este tutorial.
- Fuente de alimentación de 5V (Micro USB o Externa).
La siguiente imagen muestra el sensor DS18B20.
SENSORES DE TEMPERATURA DIGITALES FRENTE A SENSORES DE TEMPERATURA ANALÓGICOS
Los sensores de temperatura digitales como el DS18B20 se diferencian de los termistores analógicos en varios aspectos importantes. En los termistores (dht11 o dht22), los cambios de temperatura provocan cambios en la resistencia de un material semiconductor cerámico o polimérico. Por lo general, el termistor se configura en un divisor de voltaje y el voltaje se mide entre el termistor y una resistencia conocida. La medición de voltaje se convierte en resistencia y luego el microcontrolador la convierte en un valor de temperatura.
Los sensores de temperatura digitales suelen ser circuitos integrados basados en silicio. La mayoría contiene el sensor de temperatura, un convertidor analógico a digital (ADC), memoria para almacenar temporalmente las lecturas de temperatura y una interfaz que permite la comunicación entre el sensor y un microcontrolador. A diferencia de los sensores de temperatura analógicos, el sensor realiza los cálculos y la salida es un valor de temperatura real.
ACERCA DEL DS18B20
El DS18B20 utiliza el protocolo de comunicación «One-Wire». Este es un protocolo de comunicación en serie que utiliza un solo cable para transmitir las lecturas de temperatura.
El DS18B20 también puede funcionar como modo de energía parásita. Normalmente, el DS18B20 necesita tres cables para funcionar: los cables Vcc, tierra y datos. En el modo parásito, solo se utilizan las líneas de tierra y de datos, y la alimentación se suministra a través de la línea de datos. De todos modos, esto no es muy recomendable hacerlo.
El DS18B20 también tiene una función de alarma que se puede configurar para emitir una señal cuando la temperatura cruza un umbral alto o bajo establecido por el usuario.
Una ROM de 64 bits almacena el código de serie único del dispositivo. Esta dirección de 64 bits permite que un microcontrolador reciba datos de temperatura de un número prácticamente ilimitado de sensores en el mismo pin. La dirección le dice al microcontrolador de qué sensor proviene un valor de temperatura particular.
El rango de temperatura tan amplio que tiene el DS18B20 permite tomar temperaturas en lugares muy fríos (hasta -55ºC) y en lugares muy calientes (hasta 125ºC). Si hablamos en grados Fahrenheit, el sensor estaría entre -67ºF y 257ºF.
DS18B20 DATASHEET
- Rango de -55 °C a 125 °C (-67ºF a 257ºF)
- Voltaje de funcionamiento de 3,0 V a 5,0 V
- muestreo de 750 ms
- 0,5°C (9 bits); 0,25°C (10 bits); 0,125°C (11 bits); Resolución de 0,0625 °C (12 bits)
- dirección única de 64 bits
- Protocolo de comunicación de un solo cable
Para obtener más detalles sobre el tiempo, la configuración de la energía parásita y la configuración de la alarma consulte la hoja de datos: Hoja de datos DS18B20
CÓDIGO PARA UTILIZAR EN ESPHOME CON EL DS18B20
# Ejemplo de configuración de un solo sensor.
dallas:
- pin: GPIO14 #D5
# sensor individual
sensor:
- platform: dallas
address: 0x1C0000031EDD2A28
name: "Temperatura pecera"
Ejemplo de configuración de más de un sensor
# Ejemplo de configuración de más de un sensor
dallas:
- pin: GPIO14 #D5
sensor:
- platform: dallas
address: 0xA40000031F055028
name: "Temperatura #1"
- platform: dallas
address: 0xDD0000031EFB0428
name: "Temperatura #2"
- platform: dallas
address: 0xDD0000045EFH0712
name: "Temperatura #3"
# ...
Variables de configuración:
- pin (Requerido, número): El pin al que está conectado el bus del sensor. Tenga en cuenta que 1 cable es un bus bidireccional, por lo que requiere tanto la entrada como la salida del pin.
- update_interval (opcional, tiempo): el intervalo en el que se deben verificar los sensores. El valor predeterminado es 60 segundos.
- id (opcional, ID): especifique manualmente el ID utilizado para la generación de código.
Sensor
El sensor dallas le permite usar el DS18B20 y sensores similares. Primero, debe definir un componente de sensor de dallas. El componente del sensor dallas (o «hub») es un modelo interno que define a qué pines están conectados los sensores DS18B20. Esto se debe a que con estos sensores puede conectar varios sensores a un solo pin y usarlos todos a la vez.
Para inicializar un sensor, primero suministre address
o index
para identificar el sensor.
Variables de configuración:
- address (Obligatorio, int): La dirección del sensor. Utilice esta opción o index.
- index (Requerido, int): El índice del sensor que comienza con 0. Por lo tanto, el primer sensor tendrá, por ejemplo, el índice 0. Se recomienda usar la dirección en su lugar.
- resolution (opcional, int): una resolución opcional de 8 a 12. Más alta significa más precisa. El valor predeterminado es el máximo para la mayoría de los sensores de temperatura de Dallas: 12.
- dallas_id (opcional, ID): el ID del centro de dallas. Use esto si tiene varios centros de dallas.
- id (opcional, ID): especifique manualmente el ID utilizado para la generación de código.
- Todas las demás opciones de Sensor.
Obtener ID de sensores
Se recomienda encarecidamente utilizar el atributo address para crear sensores dallas, porque si tiene varios sensores en un autobús y falla el descubrimiento automático de sensores, todos los índices de los sensores se desplazarán en uno. Para obtener la dirección, simplemente inicie el firmware en su dispositivo con un concentrador de dallas configurado y observe la salida del registro (¡el nivel de registro debe establecerse en al menos debug
!). Tenga en cuenta que no necesita definir los sensores individuales todavía, ya que el escaneo se realizará incluso sin sensores conectados. Por ejemplo, con esta configuración:
# Ejemplo de entrada de configuración
dallas:
- pin: GPIO23
# Tenga en cuenta que no tiene que agregar ningún sensor en este punto
Ahora ya podemos saber el Adress de nuestro sensor y con esto crearemos el sensor que nos dará la temperatura
sensor:
- platform: dallas
address: 0xa307864a9g64ff28
name: "Refrigerador"
Si te quedan dudas, no te pierdas el siguiente vídeo dónde hago la instalación paso a paso.