Temperatuurmeting op Raspberry Pi met Maxim 1-Wire sensoren en DS2482 I2C-brug
Temperatuurmeting op Raspberry Pi met Maxim 1-Wire sensoren en DS2482 I2C-brug
Accurate temperatuurbewaking is essentieel voor veel Raspberry Pi-projecten, van klimaatbeheer tot datalogging. De Maxim Integrated 1-Wire familie van sensoren, zoals de DS18B20, biedt een eenvoudige, lage-pin oplossing. Door de DS2482 1-Wire-naar-I2C brug te gebruiken, kunt u tot tien sensoren aan een enkele I2C-bus koppelen, waardoor de GPIO-footprint van de Pi minimaal blijft.
Hardware-overzicht
- Raspberry Pi – elk model met een I2C-bus (bijv. Pi 2/3/4)
- DS2482‑2 – 1-Wire master op I2C, adres 0x18
- Maxim 1-Wire temperatuursensoren – tot 10 eenheden, elk met een uniek 1-Wire adres
- Pull-up weerstanden – 4,7 kΩ op de 1-Wire datalijn (optioneel als DS2482 pull-ups regelt)
Softwarevereisten
Deze instructies gaan uit van een standaard Raspbian-installatie met beschikbare kernelsource. U moet de kernel herbouwen na de volgende wijzigingen.
Stap 1 – DS2482 inschakelen op de I2C-bus
Wijzig arch/arm/mach-bcm2708/bcm2708.c in de kernelsource om de DS2482 te registreren als I2C-apparaat. Voeg de volgende platform device definitie en board info array toe:
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));
Na toevoegen van het apparaat, compileer en installeer de kernel opnieuw.
Stap 2 – 1-Wire pull-ups in de kernel afhandelen
Wijzig drivers/w1/w1_io.c om de DS2482 toe te staan de pull-up weerstand tijdens conversies te regelen. Vervang de w1_post_write functie door:
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;
}
}
Stap 3 – Pull-up controle toevoegen aan de DS2482 driver
In drivers/w1/masters/ds2842.c voeg een helper toe die de sterke pull-up van de DS2482 activeert wanneer een vertraging wordt aangevraagd:
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) {
/* Zorg dat de bus rustig is voordat configuratie verandert */
ds2482_wait_1wire_idle(pdev);
/* Schakel zowel SPU als APU in voor sterke pull-up */
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;
}
Laatste stappen
- Herbouw en herstart de Pi met de nieuwe kernel.
- Controleer of de DS2482 verschijnt onder
/sys/bus/i2c/devices/1-0018. - Sluit uw Maxim 1-Wire sensoren aan op de DS2482 datalijn (pin 1) en ground.
- Controleer of elke sensor verschijnt onder
/sys/bus/w1/devices/en datcat /sys/bus/w1/devices/28‑xxxxxxxxxxxx/w1_slaveeen temperatuurwaarde retourneert.
Met deze kernel-aanpassingen kan de Raspberry Pi betrouwbaar tot tien 1-Wire temperatuursensoren uitlezen via een enkele DS2482-brug, ideaal voor multi-sensor monitoringprojecten.
Aanvullende bronnen
Productieproces
- Geïntegreerde QR, RFID en Temperatuurverificatie Toegangscontrolesysteem
- Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
- Nauwkeurige Raspberry Pi Temperatuurprofielering Met Python, SQLite En LabVIEW
- Meerdere DS18B20 1-Wire Sensoren Aan Een Raspberry Pi Koppelen Voor Nauwkeurige Temperatuurmonitoring
- Raspberry Pi Temperatuur & Vochtigheid Netwerk Monitor – DIY Setup Gids
- Hoe Temperatuur Te Lezen Met Een DS18B20 Op Raspberry Pi 2
- Professionele temperatuurbewaking met Raspberry Pi en DS18B20
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Naadloze temperatuur- en vochtigheidsbewaking op Raspberry Pi met EzTemp
- Accurate temperatuurbewaking in een serverkast met Raspberry Pi
- Raspberry Pi BMP085: Accurate temperatuur- en drukmetingen via I2C