Система мониторинга напряжения и температуры с передачей показаний через Bluetooth

Система предназначена для измерения напряжения с высокой точностью и беспроводной передачи результатов в систему мониторинга (ПК, мобильный телефон или другой контроллер, оснащенный Bluetooth-приемником).

Для повышения точности измерений (внесения дополнительных поправок) помимо напряжения передается и точная температура в зоне измерения. Показания датчика температуры также можно использовать для защиты от перегрева оборудования, на котором установлена система.

Система питается от сети постоянного тока 12 В через понижающий преобразователь. Напряжение питания может влиять на точность измерения, поэтому оно также контролируется и передается вместе с другими данными. Опорное значение напряжения питания можно дополнительно отрегулировать при вводе в эксплуатацию с помощью переменного резистора.

Дополнительную передачу данных (температура и напряжение питания) можно отключить для уменьшения объема передаваемых данных (если эти данные не требуются или частоту измерения напряжения необходимо значительно увеличить)

Рабочая логика

Измерение осуществляется с помощью высокоточного АЦП-преобразователя ADS1115, подключенного к контроллеру Arduino Nano по протоколу I2C.

АЦП имеет несколько режимов измерения, которые отличаются точностью и длительностью измерения. По умолчанию прошивка настроена на измерение с множителем «8х», что соответствует диапазону измерения +/-0,512В и пределу измерения на 1 бит = 0,25мВ.

[!ВНИМАНИЕ] Для установленного множителя x8 измеренное напряжение не должно выходить за пределы +/-0,8 В (0,512+60%). Если оно превышено, АЦП выйдет из строя. Для измерения более высоких напряжений необходимо сначала изменить значение множителя (что соответственно снизит точность измерения) в прошивке перед включением системы

После подачи питания на систему выдерживается пауза в 1 секунду (переменная ADSPause, по умолчанию 1000 мс), необходимая для корректного включения измеряемого оборудования.

После этого каждые 0,3 с (переменная ADSDelay, по умолчанию 300 мс) измеряется напряжение на входе АЦП ADS1115. Для уменьшения шума измеряются 3 значения напряжения (параметр ADSCount, по умолчанию 3), после чего рассчитывается среднее значение и используется как результат измерения тока.

Для управления напряжением питания используется собственный аналоговый выход Arduino, который измеряет напряжение на аналоговом входе каждые 1 с (параметр PowerVolageDelay, по умолчанию 1000 мс).

Для снижения напряжения питания 12В до диапазона измерения 0..5В используется переменный резистор, подключаемый к земле в качестве понижающего резистора. По умолчанию он установлен в положение 6кОм+4кОм, что соответствует коэффициенту понижения 2,5 (чтобы привести результаты на аналоговом входе обратно к опорному напряжению питания 12 В, используйте параметр PowerVolageRatio, по умолчанию 2.5)

Для контроля температуры используется датчик DS18B20, измерения проводятся каждые 1 с (параметр TemperatureDelay, по умолчанию 1000 мс). При разрешении по умолчанию 9 бит каждое измерение занимает 94 мс. При повышении точности частота измерений не может быть выше 1 измерения за 0,75 с.

Формат вывода

При поступлении запроса на измерения тока через последовательный интерфейс отправляется строка с измерениями тока

При получении запроса n (запрос всех параметров) в ответ отправляется следующая строка:

U:12.03 T:22.3 Q:0.33325

  • U:12.03 – напряжение питания 12,03 В
  • T:22,3 – температура 22,3°C
  • Q:0.33325– измеряемое напряжение 0,33325 В

При получении запроса q (запрос только по напряжению) в ответ отправляется следующая строка:

Q:0.33325 – измеряемое напряжение 0,33325 В

Сразу после получения команды на начало измерения контроллер сигнализирует о начале процесса измерения выдачей логического сигнала 5В на вход D5. Этот сигнал можно использовать для подключения сигнального светодиода или подключения к другой системе автоматизации

Основные характеристики

  • Основной контроллер – Arduino Nano
  • Процессор – 16 МГц, ATmega328P
  • Память контроллера — 32 КБ Flash + 2 КБ SRAM + 1 КБ EEPROM.
  • Аналоговый вход контроллера – 10 бит (1024 уровня)
  • Разрешение аналогового входа контроллера – 0,00448 В
  • Датчик напряжения – преобразователь АЦП ADS1115
  • Разрешение датчика напряжения – 16 бит.
  • Частота выборки – от 8 до 860 выборок в секунду.
  • Возможные множители и разрешение АЦП

    • x2/3 – диапазон входного сигнала ±6,144 В,
    • x1 – диапазон входного сигнала ±4,096 В, 1 бит = 2 мВ
    • x2 – диапазон входного сигнала ±2,048 В, 1 бит = 1 мВ
    • x4 – вводдиапазон ±1,024 В, 1 бит = 0,5 мВ
    • x8 – диапазон ввода ±0,512 В, 1 бит = 0,25 мВ (по умолчанию)
    • x16 – диапазон входного сигнала ±0,256 В, 1 бит = 0,125 мВ
  • Датчик температуры – DS18B20
  • Температурное разрешение – 9..12 бит.
  • Время измерения – 94..750мс (9..12бит). По умолчанию – 94мс.
  • Диапазон измерения – -10..+85°C
  • Точность измерения – ±0,5°C
  • Источник питания DC/DC преобразователь – MP1584
  • Входное напряжение питания — 4,5–28 В (регулируемое).
  • Номинальная входная мощность – 12 В, 0,5 А.
  • Рабочая температура: – -10..+85 °С)
  • Размеры – 50x25x20 мм (компоненты собраны в корпусе).
  • Вес – 50 г (с пластиковым футляром).

Компоненты

Схема подключения

Схема подключения датчика напряжения Bluetooth

Дальнейшие улучшения системы

  • Добавление каналов измерения (всего до 4)
  • Выдача результатов с помощью таймера или логического сигнала (от кнопки или другой системы автоматизации)
  • Добавление ЖК-экрана с отображением результатов измерений в реальном времени.
  • Ведение журнала параметров с отметками времени.
  • Добавление триггера превышения показания с дополнительными действиями (включение/выключение реле, выдача логических сигналов, звуковая сигнализация и т.д.)
  • Добавление независимого источника питания
  • Веб-интерфейс и передача данных в облако