В этой заметке описываю возможный порядок подключения платы NT28b16.
О плате
Плата NT28b16 является доступным модулем многоканального измерения температуры. В комплекте с AliExpress, как правило, идет мешок датчиков 10K/20K/50K/100K B3950 NTC-датчиков. В моем случае это набор 100К датчиков. Сама плата имеет следующие требования по подключению:
- Напряжение питания 8-25В (рекомендуется 12В)
- Ограничение по току до 50мА (при подключении 8 датчиков потребление не вырастало выше 5мА)
- Цифровой интерфейс передачи — RS485, протокол Modbus RTU (я использовал переходник с фото ниже для под ключения к ПК)
Плата позволяет:
- считывать данные с 16 каналов термодатчиков в виде температуры или сопротивления
- устанавливать корректировку к температурным данным (программно прибавлять и убавлять смещения)
- Изменять настройки выдачи данных (Baudrate, parity, slave ID)
- Включить автоматическую выдачу данных
- программный сброс настроек
Modbus RTU
Параметры подключения неоднозначно лежат на просторах интернета, например, в виде видео на Youtube или репозитории GitHub. Поэтому ниже привожу эту информацию в текстовом формате
Параметры подключения
- Поддержка считывания нескольких регистров за один запрос
- Slave ID (default)
0x01
- Baudrate (default) 9600
- Stop bit: 1
- Parity: None
Функции 0x03
/0x06
— чтение и запись параметров
Адрес регистра | R/W | Назначение | Тип данных | Пример значения |
---|---|---|---|---|
0x0000 - 0x000F |
RO | Температура канала 1-16, градусы Цельсия*10 | int16 | 337 (33.7C*10) |
0x0020 - 0x002F |
RO | Сопротивление канала 1-16, кОм*100 | uint16 | 1012 (10.12кОм*100) |
0x0040 - 0x004F |
R/W | Смещение к измерению температуры, градусы Цельсия*10 | uint16 | 10 (1C*10) |
0x0060 - 0x006F |
R/W | Смещение к сопротивлению, градусы Цельсия*10 | uint16 | 100 (1кОм*100) |
0x00F8 |
R/W | Пауза между автоматической выдачей - 0 - откл. автоматическую выдачу, максимум 255, секунды | uint16 | 2 |
0x00F9 |
R/W | Выбор данных автоматической выдачи: 0 - температура, 1 - сопротивление | uint16 | 1 |
0x00FB |
R/W | Программный сброс: запись нуля сбросит настройки | uint16 | 0 |
0x00FC |
R/W | Время ответа на команду, мс*40 | uint16 | 2 |
0x00FD |
R/W | Slave ID | uint16 | 0x01 |
0x00FE |
R/W | Baudrate: 0:1200 1:2400 2:4800 3:9600 4:19200 5:38400 6:57600 7:115200 | uint16 | 3 |
0x00FF |
R/W | Parity:0 - None, 1 - Even, 2 - Odd | uint16 | 0 |
Примеры использования
Для взаимодействия можно использовать массу ПО, личная рекомендация из бесплатных программ:
- Termite - отличное ПО для настройки
- ModbusScope - оптимальное ПО для визуализации и записи в файл
Пример настройки ModbusScope
В первую очередь необходимо указать в настройках соединения соответствующие настройки соединения + таймаут опроса
Затем необходимо настроить описание регистров, например, указать опрос трех регистров температуры:
Теперь достаточно включить питание платы и нажать Start в главном окне инструмента для визуализации температуры в реальном времени:
Надеюсь Вам помогла эта инструкция, если нет, то здесь работают комментарии, либо можно написать мне в Телеграмм @suggestmenews_bot