Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Hoe een DS1820 One-Wire temperatuursensor aan te sluiten op een Raspberry Pi via GPIO

Binnen- of buitentemperatuur monitoren met een Raspberry Pi kan met een minimale setup. Deze gids laat zien hoe u een DS18S20 (DS1820) 1-Wire-sensor direct aan een GPIO-pin koppelt, temperaturen in software uitleest en de data logt met RRDtool.

Raspberry Pi en 1-Wire

De DS18S20, DS18B20 en DS1822 zijn allemaal 1-Wire-temperatuursensoren die in een TO-92-behuizing passen en een sensor, ADC en seriële interface combineren. Hoewel ze dezelfde pinout en software-interface delen, verschillen ze in kosten en nauwkeurigheid – de DS18S20 biedt ±0,5 °C nauwkeurigheid, de DS18B20 ±0,5 °C, en de DS1822 ±0,5 °C ook, maar de laatste is goedkoper.

Elk apparaat heeft drie pinnen: Ground (GND, pin 1), Data (DQ, pin 2) en Voeding (VDD, pin 3). Een parasitaire voeding (3–5 V) stelt de sensor in staat om uitsluitend vanuit de datalijn gevoed te worden met behulp van een pull-up-weerstand.

Slechts één weerstand

Sluit de DQ-pin van de sensor aan op GPIO 4 op de Pi. Verbind GND met de ground van de Pi en VDD met GND, wat parasitaire voeding inschakelt. Plaats een 4,7 kΩ pull-up tussen 3,3 V en GPIO 4. Een klein breadboard of een rechte-hoek-header houdt de bedrading netjes en past binnen de officiële behuizing van de Pi.

1-Wire Software Drivers

Op Raspbian (of een andere Debian-gebaseerde distro) laad de kernelmodules met:

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

De pullup=1 vlag vertelt de driver dat de sensor gevoed wordt via de pull-up-weerstand. Na het laden verschijnt elke sensor als een submap onder /sys/bus/w1/devices. De mapnaam bestaat uit de familiecodes en de unieke 64-bit identifier van de sensor: DS18S20/DS1820 gebruiken familiecodes 10, DS18B20 gebruikt 28, en DS1822 gebruikt 22.

Binnen elke map zit w1_slave, wat twee regels bevat. De eerste toont de ruwe registerdump en een CRC-check. De tweede eindigt op t=xxxx, de temperatuur in milligraden Celsius. Voorbeeld:

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

De waarde 7375 correspondeert met 7,375 °C. Let op dat de datasheet een nauwkeurigheid van ±0,5 °C specificeren, dus de ware temperatuur ligt binnen ±0,5 °C van de meting.

Om ervoor te zorgen dat de modules bij opstart laden, voeg ze toe aan /etc/modules:

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

Round-Robin Database (RRDtool)

Voor lange-termijnopslag en visualisatie is RRDtool ideaal. Installeer het met:

sudo apt-get install rrdtool python-rrdtool

Definieer een database die elke 15 minuten een waarde registreert en dagelijkse aggregaten tien jaar bewaart:

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

Data-acquisitie met Python

Hieronder is een minimaal Python-script dat w1_slave leest en de waarde in de RRDtool-database invoegt. Pas de sensorpaden en databasebestandsnaam aan naar behoefte.

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

# Voorbeeld voor twee sensoren
temps = {
    'temp0': read_temp('10-000801b5'),
    'temp1': read_temp('28-0000045e')
}
rrdtool.update(DB_FILE, ','.join(str(t) for t in temps.values()))

Voer het script periodiek uit (bijv. via cron) om de database bijgewerkt te houden.

Productieproces

  1. Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
  2. Meerdere DS18B20 1-Wire Sensoren Aan Een Raspberry Pi Koppelen Voor Nauwkeurige Temperatuurmonitoring
  3. Hoe Temperatuur Te Lezen Met Een DS18B20 Op Raspberry Pi 2
  4. Professionele temperatuurbewaking met Raspberry Pi en DS18B20
  5. Temperatuurmeting op Raspberry Pi met Maxim 1-Wire sensoren en DS2482 I2C-brug
  6. TMP006 Infrarood temperatuursensor met Raspberry Pi: Python bibliotheek & installatiegids
  7. Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
  8. Een Raspberry Pi-weerstation bouwen dat dagelijkse weergegevens e-mailt
  9. Accurate temperatuurbewaking in een serverkast met Raspberry Pi
  10. HC-SR04 ultrasoon-sensor aansluiten op Raspberry Pi 3 – Complete gids
  11. Een LED Besturen met een PIR-bewegingssensor op Raspberry Pi