Temperaturmessung mit Maxim 1-Wire Sensoren und DS2482 I2C-Bridge am Raspberry Pi
Temperaturmessung mit Maxim 1-Wire Sensoren und DS2482 I2C-Bridge am Raspberry Pi
Präzise Temperaturüberwachung ist für viele Raspberry Pi Projekte essenziell – von der Klimasteuerung bis zum Data Logging. Die Maxim Integrated 1-Wire Sensorfamilie, wie der DS18B20, bietet eine einfache Lösung mit minimalem Pin-Verbrauch. Durch den Einsatz der DS2482 1-Wire-zu-I2C-Bridge können bis zu zehn Sensoren an einem einzigen I2C-Bus betrieben werden, wodurch der GPIO-Footprint des Pi minimal bleibt.
Hardware-Übersicht
- Raspberry Pi – jedes Modell mit I2C-Bus (z. B. Pi 2/3/4/5)
- DS2482‑2 – 1-Wire Master auf I2C, Adresse 0x18
- Maxim 1-Wire Temperatursensoren – bis zu 10 Stück, jeder mit einzigartiger 1-Wire-Adresse
- Pull-Up-Widerstände – 4,7 kΩ an der 1-Wire Datenleitung (optional, falls DS2482 Pull-Ups handhabt)
Software-Voraussetzungen
Diese Anleitung setzt eine Standard-Installation von Raspberry Pi OS mit verfügbaren Kernel-Quellen voraus. Sie müssen den Kernel nach den folgenden Änderungen neu kompilieren.
Schritt 1 – DS2482 am I2C-Bus aktivieren
Ändern Sie arch/arm/mach-bcm2708/bcm2708.c im Kernel-Quellcode, um den DS2482 als I2C-Gerät zu registrieren. Fügen Sie die folgende Plattform-Geräte-Definition und Board-Info-Array hinzu:
static struct platform_device bcm2708_bsc1_device = {
.name = "bcm2708_i2c",
.id = 1,
.num_resources = ARRAY_SIZE(bcm2708_bsc1_resources),
.resource = bcm2708_bsc1_resources,
};
static struct i2c_board_info __initdata pi_i2c_devs[] = {
{ I2C_BOARD_INFO("ds1307", 0x68) },
{ I2C_BOARD_INFO("ds2482", 0x18) },
};
...
bcm_register_device(&bcm2835_thermal_device);
i2c_register_board_info(1, pi_i2c_devs, ARRAY_SIZE(pi_i2c_devs));
Nach Hinzufügen des Geräts den Kernel neu kompilieren und installieren.
Schritt 2 – 1-Wire Pull-Ups im Kernel handhaben
Modifizieren Sie drivers/w1/w1_io.c, um dem DS2482 die Steuerung des Pull-Up-Widerstands während Konvertierungen zu ermöglichen. Ersetzen Sie die Funktion w1_post_write durch:
static void w1_post_write(struct w1_master *dev) {
if (dev->pullup_duration) {
if (dev->enable_pullup && dev->bus_master->set_pullup) {
dev->bus_master->set_pullup(dev->bus_master->data, 0);
msleep(dev->pullup_duration);
} else {
msleep(dev->pullup_duration);
}
dev->pullup_duration = 0;
}
}
Schritt 3 – Pull-Up-Steuerung zum DS2482-Treiber hinzufügen
In drivers/w1/masters/ds2842.c einen Helper hinzufügen, der den starken Pull-Up des DS2482 aktiviert, wenn eine Verzögerung angefordert wird:
static u8 ds2482_w1_set_pullup(void *data, int delay) {
struct ds2482_w1_chan *pchan = data;
struct ds2482_data *pdev = pchan->pdev;
u8 retval = 1;
u8 cfg;
if (delay) {
/* Sicherstellen, dass der Bus idle ist, bevor die Config geändert wird */
ds2482_wait_1wire_idle(pdev);
/* SPU und APU für starken Pull-Up aktivieren */
retval = ds2482_send_cmd_data(pdev, DS2482_CMD_WRITE_CONFIG,
ds2482_calculate_config(DS2482_REG_CFG_SPU | DS2482_REG_CFG_APU));
ds2482_wait_1wire_idle(pdev);
}
return retval;
}
Abschließende Schritte
- Kernel neu bauen und Pi mit dem neuen Kernel neustarten.
- Prüfen, ob der DS2482 unter
/sys/bus/i2c/devices/1-0018erscheint. - Maxim 1-Wire Sensoren an die DS2482 Datenleitung (Pin 1) und Ground anschließen.
- Verifizieren, dass jeder Sensor unter
/sys/bus/w1/devices/auftaucht undcat /sys/bus/w1/devices/28‑xxxxxxxxxxxx/w1_slaveeinen Temperaturwert liefert.
Mit diesen Kernel-Anpassungen kann der Raspberry Pi zuverlässig bis zu zehn 1-Wire Temperatursensoren über eine einzelne DS2482 Bridge auslesen – ideal für Multi-Sensor-Monitoring-Projekte.
Zusätzliche Ressourcen
- Maxim Integrated – DS2482 Datenblatt
- Raspberry Pi – I2C Tutorial
- eLinux – Raspberry Pi Kernel Konfiguration
Herstellungsprozess
- Integriertes QR-, RFID- und Temperatur-Verifikations-Zugangskontrollsystem
- Raspberry Pi Temperaturlogger mit 5 $ I2C Sensor bauen
- Präzises Raspberry Pi Temperaturprofiling mit Python, SQLite und LabVIEW
- Mehrere DS18B20 1-Wire Sensoren an Raspberry Pi anschließen für präzises Temperaturmonitoring
- Raspberry Pi Temperatur- & Feuchtigkeits-Netzwerkmonitor – DIY Setup Guide
- Temperatur mit DS18B20 am Raspberry Pi 2 auslesen
- Professionelle Temperaturüberwachung mit Raspberry Pi und DS18B20
- Fern-Temperatursensor mit Raspberry Pi & Python bauen – Schritt-für-Schritt-Anleitung
- Nahtlose Temperatur- & Feuchtigkeitsüberwachung am Raspberry Pi mit EzTemp
- Präzise Temperaturüberwachung im Server-Schrank mit Raspberry Pi