Система мониторинга напряжения и температуры с передачей показаний через 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°CQ: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 г (с пластиковым футляром).
Компоненты
- Arduino Nano – 1шт.
- Модуль АЦП ADS1115 – 1шт.
- Датчик температуры DS18B20 – 1шт.
- Модуль Bluetooth HC-06 - 1шт.
- Преобразователь постоянного тока MP1584 - 1шт.
Схема подключения
Дальнейшие улучшения системы
- Добавление каналов измерения (всего до 4)
- Выдача результатов с помощью таймера или логического сигнала (от кнопки или другой системы автоматизации)
- Добавление ЖК-экрана с отображением результатов измерений в реальном времени.
- Ведение журнала параметров с отметками времени.
- Добавление триггера превышения показания с дополнительными действиями (включение/выключение реле, выдача логических сигналов, звуковая сигнализация и т.д.)
- Добавление независимого источника питания
- Веб-интерфейс и передача данных в облако