Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cómo conectar un sensor de temperatura DS1820 One‑Wire a Raspberry Pi usando GPIO

Monitorizar temperatura interior o exterior con una Raspberry Pi puede hacerse con una configuración mínima. Esta guía muestra cómo cablear un sensor DS18S20 (DS1820) 1‑Wire directamente a un pin GPIO, leer temperaturas en software y registrar los datos con RRDtool.

Raspberry Pi y 1‑Wire

El DS18S20, DS18B20 y DS1822 son sensores de temperatura 1‑Wire que caben en encapsulado TO‑92 y combinan sensor, ADC e interfaz serie. Aunque comparten el mismo pinout e interfaz software, difieren en coste y precisión – el DS18S20 ofrece precisión ±0,5 °C, el DS18B20 ±0,5 °C y el DS1822 ±0,5 °C también, pero este último es más barato.

Cada dispositivo tiene tres pines: Tierra (GND, pin 1), Datos (DQ, pin 2) y Alimentación (VDD, pin 3). Una alimentación parasitaria (3–5 V) permite alimentar el sensor únicamente desde la línea de datos usando una resistencia pull-up.

Solo una resistencia

Conecte el pin DQ del sensor al GPIO 4 de la Pi. Conecte GND a tierra de la Pi y VDD a GND, habilitando alimentación parasitaria. Coloque una resistencia pull-up de 4,7 kΩ entre 3,3 V y GPIO 4. Un pequeño breadboard o un header de ángulo recto mantiene el cableado ordenado y cabe dentro de la carcasa oficial de la Pi.

Controladores software 1‑Wire

En Raspbian (o cualquier distro basada en Debian) cargue los módulos del kernel con:

sudo modprobe w1-gpio pullup=1
sudo modprobe w1-therm

La opción pullup=1 indica al controlador que el sensor se alimenta a través de la resistencia pull-up. Tras cargar, cada sensor aparece como subdirectorio bajo /sys/bus/w1/devices. El nombre del directorio consiste en el código de familia y el identificador único de 64 bits del sensor: DS18S20/DS1820 usan código de familia 10, DS18B20 usa 28 y DS1822 usa 22.

Dentro de cada directorio está w1_slave, que contiene dos líneas. La primera muestra el volcado de registros brutos y una comprobación CRC. La segunda termina con t=xxxx, la temperatura en miligrados Celsius. Ejemplo:

cd /sys/bus/w1/devices
cd 10-000801b5*
cat w1_slave
0f 00 4b 46 ff ff 06 10 0c : crc=0c YES
0f 00 4b 46 ff ff 06 10 0c t=7375

El valor 7375 corresponde a 7,375 °C. Tenga en cuenta que la hoja de datos especifica precisión de ±0,5 °C, por lo que la temperatura real está dentro de ±0,5 °C de la lectura.

Para asegurar que los módulos carguen al arranque, añádalos a /etc/modules:

# /etc/modules
w1-gpio pullup=1
w1-therm

Base de datos Round‑Robin (RRDtool)

Para almacenamiento a largo plazo y visualización, RRDtool es ideal. Instálelo con:

sudo apt-get install rrdtool python-rrdtool

Defina una base de datos que registre un valor cada 15 minutos y guarde agregados diarios durante diez años:

rrdtool create temperature.rrd --step 900 \
DS:temp0:GAUGE:1200:-40:80 \
DS:temp1:GAUGE:1200:-40:80 \
RRA:AVERAGE:0.5:1:960 \
RRA:MIN:0.5:96:3600 \
RRA:MAX:0.5:96:3600 \
RRA:AVERAGE:0.5:96:3600

Adquisición de datos con Python

A continuación se muestra un script mínimo en Python que lee w1_slave e inserta el valor en la base de datos RRDtool. Ajuste las rutas de sensores y nombre de archivo de base de datos según necesite.

import os
import rrdtool

W1_PATH = '/sys/bus/w1/devices'
DB_FILE = 'temperature.rrd'

def read_temp(sensor_id):
    with open(f'{W1_PATH}/{sensor_id}/w1_slave') as f:
        lines = f.readlines()
    if lines[1].strip().endswith('YES'):
        temp_milli = int(lines[1].strip().split('t=')[-1])
        return temp_milli / 1000.0
    return None

# Ejemplo para dos sensores
temps = {
    'temp0': read_temp('10-000801b5'),
    'temp1': read_temp('28-0000045e')
}
rrdtool.update(DB_FILE, ','.join(str(t) for t in temps.values()))

Ejecute el script periódicamente (p. ej., vía cron) para mantener la base de datos actualizada.

Proceso de manufactura

  1. Construya un registrador de temperatura con Raspberry Pi y sensor I2C de 5 $
  2. Conectar múltiples sensores DS18B20 1‑Wire a Raspberry Pi para monitorización precisa de temperatura
  3. Cómo leer temperatura con un DS18B20 en Raspberry Pi 2
  4. Monitorización profesional de temperatura con Raspberry Pi y DS18B20
  5. Medición de temperatura en Raspberry Pi con sensores 1-Wire Maxim y puente I2C DS2482
  6. Sensor infrarrojo TMP006 con Raspberry Pi: librería Python y guía de configuración
  7. Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
  8. Construya una estación meteorológica con Raspberry Pi que envíe datos diarios por email
  9. Monitorización precisa de temperatura en armario de servidores con Raspberry Pi
  10. Conexión del sensor ultrasónico HC‑SR04 a Raspberry Pi 3 – Guía completa
  11. Controle un LED con Sensor PIR de Movimiento en Raspberry Pi