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

101 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Библиотека для работы с датчиками температуры DS18B20 по 1-Wire
---
## Описание
Данная библиотека предоставляет драйвер для работы с цифровыми температурными датчиками DS18B20, подключёнными по однопроводному интерфейсу 1-Wire. Библиотека поддерживает:
- Инициализация шины 1-Wire и обнаружение всех датчиков на шине
- Инициализация датчика по:
- ROM-адресу
- Пользовательским байтам (TH, TL, UserByte3, UserByte4)
- Индексу (порядковому номеру) найденного устройства
- Запуск преобразования температуры у всех или отдельных датчиков с выбором метода ожидания окончания преобразования (по шине или задержкой)
- Чтение температуры и проверка статуса подключения датчика
- Возможность замены потерянного датчика в структуре
---
## Быстрый старт
### 1. Настройка порта и таймера для 1-Wire (файл `ow_port.h`):
```c
#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. Подключение библиотеки и инициализация таймера:
```c
#include "dallas_tools.h"
MX_TIM_Init(); // Инициализация таймера (например, TIM3)
```
### 3. Инициализация шины и поиск датчиков:
```c
Dallas_BusFirstInit(&htim);
```
### 4. Инициализация структуры датчика по одному из методов:
```c
// Объявление хендлов датчиков
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. Запуск измерения и чтение температуры:
```c
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`, она будет искать датчик и пытаться его инициализировать по заданной функции инициализации.