Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C

Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C

Точный мониторинг температуры необходим во многих проектах на Raspberry Pi — от климат-контроля до логирования данных. Семейство датчиков 1-Wire от Maxim Integrated, таких как DS18B20, предлагает простое решение с минимальным числом контактов. Использование моста DS2482 (1-Wire-to-I2C) позволяет подключить до десяти датчиков к одной шине I2C, сохраняя GPIO-контакты Pi свободными.

Обзор оборудования

Программные предварительные требования

Инструкции предполагают стандартную установку Raspbian с доступными исходными кодами ядра. Вам потребуется пересобрать ядро после внесения следующих изменений.

Шаг 1 — Включение DS2482 на шине I2C

Измените arch/arm/mach-bcm2708/bcm2708.c в исходниках ядра для регистрации DS2482 как I2C-устройства. Добавьте следующее определение платформенного устройства и массив информации о плате:

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));

После добавления устройства пересоберите и установите ядро.

Шаг 2 — Обработка подтяжки 1-Wire в ядре

Измените drivers/w1/w1_io.c, чтобы разрешить DS2482 управлять подтягивающим резистором во время преобразования. Замените функцию w1_post_write на:

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;
    }
}

Шаг 3 — Добавление управления подтяжкой в драйвер DS2482

В drivers/w1/masters/ds2842.c добавьте вспомогательную функцию, активирующую сильную подтяжку DS2482 при запросе задержки:

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) {
        /* Убедиться, что шина свободна перед изменением конфигурации */
        ds2482_wait_1wire_idle(pdev);
        /* Включить SPU и APU для сильной подтяжки */
        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;
}

Финальные шаги

С этими изменениями в ядре Raspberry Pi может надёжно опрашивать до десяти датчиков 1-Wire через один мост DS2482 — идеально для многодатчиковых проектов.

Дополнительные ресурсы

Производственный процесс

  1. Интегрированная система контроля доступа с QR, RFID и верификацией температуры
  2. Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
  3. Точный температурный профиль Raspberry Pi с Python, SQLite и LabVIEW
  4. Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
  5. Raspberry Pi сетевой монитор температуры и влажности — руководство по DIY сборке
  6. Как считывать температуру с DS18B20 на Raspberry Pi 2
  7. Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
  8. Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
  9. Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
  10. Точный мониторинг температуры в серверной на Raspberry Pi