В этой заметке описываю возможный порядок подключения платы NT28b16.

О плате

Плата NT28b16 является доступным модулем многоканального измерения температуры. В комплекте с AliExpress, как правило, идет мешок датчиков 10K/20K/50K/100K B3950 NTC-датчиков. В моем случае это набор 100К датчиков. Сама плата имеет следующие требования по подключению:

  • Напряжение питания 8-25В (рекомендуется 12В)
  • Ограничение по току до 50мА (при подключении 8 датчиков потребление не вырастало выше 5мА)
  • Цифровой интерфейс передачи — RS485, протокол Modbus RTU (я использовал переходник с фото ниже для под ключения к ПК)

Board view

Плата позволяет:

  • считывать данные с 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

В первую очередь необходимо указать в настройках соединения соответствующие настройки соединения + таймаут опроса

ModbusScope connection settings

Затем необходимо настроить описание регистров, например, указать опрос трех регистров температуры:

ModbusScope registers settings

Теперь достаточно включить питание платы и нажать Start в главном окне инструмента для визуализации температуры в реальном времени:

ModbusScope registers settings

Надеюсь Вам помогла эта инструкция, если нет, то здесь работают комментарии, либо можно написать мне в Телеграмм @suggestmenews_bot