Files
DS18B20_Library/README.md
2025-06-22 20:35:10 +03:00

5.7 KiB
Raw Permalink Blame History

Библиотека для работы с датчиками температуры DS18B20 по 1-Wire


Описание

Данная библиотека предоставляет драйвер для работы с цифровыми температурными датчиками DS18B20, подключёнными по однопроводному интерфейсу 1-Wire. Библиотека поддерживает:

  • Инициализация шины 1-Wire и обнаружение всех датчиков на шине
  • Инициализация датчика по:
    • ROM-адресу
    • Пользовательским байтам (TH, TL, UserByte3, UserByte4)
    • Индексу (порядковому номеру) найденного устройства
  • Запуск преобразования температуры у всех или отдельных датчиков с выбором метода ожидания окончания преобразования (по шине или задержкой)
  • Чтение температуры и проверка статуса подключения датчика
  • Возможность замены потерянного датчика в структуре

Быстрый старт

1. Настройка порта и таймера для 1-Wire (файл ow_port.h):

#define OW_GPIO_Port  GPIOB
#define OW_Pin_Numb   0
#define OW_Pin        (1 << OW_Pin_Numb)
#define OW_TIM        TIM3
#define OW_TIM_1US_PERIOD 24

2. Подключение библиотеки и инициализация таймера:

#include "dallas_tools.h"

MX_TIM_Init();  // Инициализация таймера (например, TIM3)

3. Инициализация шины и поиск датчиков:

Dallas_BusFirstInit(&htim);

4. Инициализация структуры датчика по одному из методов:

// Объявление хендлов датчиков
DALLAS_SensorHandleTypeDef sens;

// Инициализация по индексу (порядковому номеру найденного датчика)
sens1.Init.init_func = &Dallas_SensorInitByInd;
sens1.Init.InitParam.Ind = 0;

// Инициализация по ROM-адресу
sens.Init.init_func = &Dallas_SensorInitByROM;
sens.Init.InitParam.ROM = rom_address;

// Инициализация по пользовательским байтам
sens.Init.init_func = &Dallas_SensorInitByUserBytes;
sens.Init.InitParam.UserBytes.UserByte1 = 1;
sens.Init.InitParam.UserBytes.UserByte2 = 2;
sens.Init.InitParam.UserBytes.UserByte3 = 3;
sens.Init.InitParam.UserBytes.UserByte4 = 4;

// добавление датчика в структуру sens
Dallas_AddNewSensors(&hdallas, &sens);

5. Запуск измерения и чтение температуры:

Dallas_StartConvertTAll(&hdallas, DALLAS_WAIT_BUS, 0);
Dallas_ReadTemperature(&sens);

Функции

Функция Описание
Dallas_BusFirstInit(&htim) Инициализация шины 1-Wire, запуск таймера и поиск датчиков
Dallas_AddNewSensors(&hdallas, &sensor) Инициализация структуры датчика и добавление в работу
Dallas_ReplaceLostedSensor(&sensor) Замена потерянного датчика на новый, если доступен
Dallas_StartConvertTAll(&hdallas, waitCondition, delay) Запуск преобразования температуры на всех датчиках
Dallas_ConvertT(&sensor, waitCondition) Запуск преобразования температуры на одном датчике
Dallas_ReadTemperature(&sensor) Чтение температуры с датчика
Dallas_IsConnected(&sensor) Проверка подключения датчика (чтение scratchpad)
Dallas_WriteUserBytes(&sensor, bytes12, bytes34, mask) Запись пользовательских байт в датчик

Требуемые зависимости

  • Драйвер 1-Wire (onewire.c/h, ow_port.c/h)
  • Драйвер DS18B20 (ds18b20_driver.c/h)

Примечания

  • Функции работы с датчиками возвращают статус в формате HAL_StatusTypeDef.
  • Ожидание окончания преобразования температуры настраивается через DALLAS_WaitConvertionTypeDef:
    • DALLAS_WAIT_BUS — ожидание по состоянию линии 1-Wire.
    • DALLAS_WAIT_DELAY — фиксированная задержка, зависящая от выбранного разрешения.
    • DALLAS_WAIT_NONE — без ожидания (асинхронный режим).
  • При потере связи с датчиком функция Dallas_IsConnected помечает датчик как потерянный. Для восстановления работы можно вызвать Dallas_ReplaceLostedSensor, она будет искать датчик и пытаться его инициализировать по заданной функции инициализации.