Журнал РАДИОЛОЦМАН, сентябрь 2016
Михаил Русских
Рассматриваются преимущества и недостатки жидкотопливных котельных установок, описывается структура простой системы автоматизации жидкотопливной котельной установки, детально разъясняется назначение каждого элемента этой системы
Для отопления современных коттеджей или загородных частных домов в холодную погоду нередко используются котельные установки. Эти установки в зависимости от вида потребляемого ресурса делятся на электрические, газовые, твердотопливные и жидкотопливные. Впрочем, имеются также достаточно экзотические типы котельных, например, установки, работающие с передачей геотермальной энергии природных источников или на солнечной энергии, но в России они представлены в очень малом количестве.
Жидкотопливные аппараты, о которых пойдет речь в данном материале, имеют ряд преимуществ по сравнению с другими видами этих устройств. В отличие от электрических и газовых установок, они в большей степени являются автономными, поскольку не требуют прокладывания к участку газопровода или линий электропередач, а для питания несложной автоматики котла достаточно установить небольшой электрогенератор. Жидкотопливные установки характеризуются большей эффективностью сжигания топлива, поскольку их КПД в некоторых случаях может достигать 94%. Помимо этого, их конструкция достаточно проста и надежна. Поломки в них случаются крайне редко, как правило, данное оборудование нуждается только в периодической чистке форсунок и дымовых каналов. А благодаря простоте конструкции для обслуживания таких котельных не требуются специальные технические навыки.
Но у жидкотопливных установок есть один существенный недостаток. Стоимость их приобретения и использования довольно высока. Сам котел и горелка для него стоят дороже устройств, работающих на других видах топлива. Помимо этого цены на топливо довольно высоки, что небогатых хозяев может заставить рассматривать другие варианты отопительных систем. В связи с этим встает вопрос о повышении экономической эффективности установки за счет рационального и своевременного сжигания топлива и учета расхода этого топлива для анализа экономии и прогнозирования бюджета.
Этого можно добиться путем автоматизации установки. Сегодня доступны уже готовые отопительные системы с оборудованием для автоматизации работы. Как правило, они стоят значительно дороже минимального набора, состоящего из котла, горелки и простой автоматики управления. Но можно сделать свою бюджетную систему автоматизации, способную сохранять оптимальную температуру в отапливаемом помещении, не расходуя слишком много топлива, благодаря своевременному включению и отключению, а также вести учет расхода топлива.
В предлагаемой статье будет рассмотрено создание довольно простой системы автоматизации жидкотопливной котельной установки загородного дома. Основу системы составляют плата Arduino Uno, предназначенная в данном случае для мониторинга температуры в жилом помещении и ее регулирования за счет управления автоматикой котла, и недорогой китайский планшет на базе ОС Android, служащий для визуализации получаемых от платы Arduino данных о расходе топлива и расчета стоимости сожженного горючего. В материале будет представлена полезная информация об организации взаимодействия платы Arduino и вычислительного устройства на основе Android, а также о создании простой, но информативной визуализации в Android с помощью специальной библиотеки. Данная информация может быть применена не только для построения систем автоматизации отопительных котельных, подобных описанной в этом материале, но и для создания любых других устройств и оборудования, где необходима взаимосвязь микроконтроллерной платы, в частности Arduino, с любым планшетом или смартфоном на базе Android, а также удобное отображение данных на экране с последующим их анализом.
Схематично бюджетная система автоматизации жидкотопливной котельной установки представлена на Рисунке 1.
Рисунок 1. | Схематичное представление системы автоматизации жидкотопливной котельной установки. |
Для мониторинга температуры в жилом помещении к плате Arduino подключается датчик температуры. В данном случае использовался аналоговый датчик LM335 компании Texas Instruments. По сути LM335 представляет собой двухвыводной стабилитрон с линейной зависимостью напряжения стабилизации от температуры, поэтому он подключен как стабилитрон с токоограничивающим резистором. При этом изменение температуры на 1 °K вызовет изменение напряжения на 10 мВ. Сопротивление резистора рассчитывается по Формуле 1.
(1) |
Здесь
UПИТ – напряжение питания, В;
T – температура датчика, °K;
I – ток датчика, мА.
Для достижения оптимальной точности измерения сопротивление R1 необходимо рассчитать так, чтобы ток датчика был равен 1 мА. Также следует учитывать, что при изменении температуры ток должен быть в диапазоне от 0.4 до 5 мА. Принимая во внимание температурный диапазон датчика от –40 °C (233.15 °K) до +100 °C (373.15 °K), сопротивление может варьироваться от 2670 Ом до 1270 Ом. Оптимальным вариантом, обеспечивающим необходимую точность и работоспособность датчика, в данном случае будет значение сопротивления 2 кОм.
Весь код программы для Arduino выложен в репозитории SourceForge [1]. Здесь же приведем ключевые моменты, которые могут быть не совсем понятны на первый взгляд при анализе кода.
Для получения значения температуры в градусах Цельсия на основании показаний датчика используется следующий фрагмент кода:
int rawvoltage = analogRead(outputpin);
float kelvin = (rawvoltage/1024) * 500;
float celsius = kelvin - 273.15;
С помощью функции analogRead() выполняется считывание значения с АЦП, которое затем делится на 1024 (так как АЦП 10-разрядный) и умножается на 500. Число 500 представляет собой произведение максимального значения напряжения 5 В на величину 100 °K, которая пропорциональна 1 В, исходя из температурного коэффициента напряжения, равного 10 мВ/K. Значение температуры в градусах Цельсия получаем, отняв 273.15 из рассчитанной величины в Кельвинах.
Далее выполняется передача итогового значения температуры в планшет посредством модуля адаптера UART-USB FTDI FT232RL. Перед этим оно округляется с помощью функции floor(), так как в планшет передаются только целочисленные значения. Поскольку данные по последовательному порту передаются в виде символов ASCII, необходимо сделать так, чтобы все значения температуры были положительными. Для этого к полученному округленному значению добавляется константа смещения 90. Таким образом, это гарантирует, что даже при самом низком показании датчика температуры будет передано положительное значение, что в свою очередь, исключает появление ошибки при выполнении функции Serial.write().
Ввиду того, что значение температуры не меняется слишком быстро, нет необходимости передавать этот параметр каждый цикл. Поэтому с помощью библиотеки SimpleTimer.h был введен таймер, по срабатыванию которого происходит отправка измеренного значения. Настройка таймера с интервалом счета 100 секунд выполняется следующим образом:
wd_timer_id = timer.setInterval(100000, TimerFull);
Алгоритм работы части программы, отвечающей за прием, обработку и передачу показаний температуры, можно представить в виде блок-схемы на Рисунке 2.
Рисунок 2. | Алгоритм работы с температурными данными. |
Поскольку жилое помещение находилось недалеко от котельной, подключение датчика к плате Arduino осуществлялось с помощью экранированного провода длиной 16.5 м и сечением 0.5 мм2. При этом ухудшения точности измерения не наблюдалось. При значительно большем удалении датчика от управляющего устройства необходимо либо увеличивать диаметр сечения проводов согласно таблице, приведенной в описании микросомы LM335 на странице 17, либо использовать другие методы передачи данных, например, радиосвязь.
Для учета расхода топлива к Arduino подключается специальный расходомер-счетчик, предназначенный для протекания через него топливной жидкости, поскольку обычные счетчики не в состоянии точно учитывать количество протекающего через них горючего материала и довольно быстро выходят из строя из-за повышенной вязкости нефтепродуктов. В данном случае использовался счетчик LS-04 [2] отечественной компании ООО «Дарконт», предназначенный для монтажа внутри топливных систем. LS-04 представляет собой высокоточный волюметрический (объемный) расходомер, основанный на принципе измерения потока жидкости с помощью вращающегося ротора. В нем течение жидкости вращает ротор в точной цилиндрической измерительной камере, и на каждом обороте фиксируется объем жидкости, вытесняемый ее движением. Вставленный в ротор магнит генерирует импульсы высокого разрешения при замыкании контактов геркона, установленного на крышке расходомера.
Герконовый выход датчика представляет собой двухпроводной нормально-разомкнутый однополюсный свободный контакт, идеальный для установки без питания или для использования в опасных областях, когда необходимо обеспечение искробезопасности. Таким образом, выходными сигналами расходомера LS-04 являются импульсы, которые поступают на цифровой порт платы Arduino. Для подключения счетчика к регистрирующему устройству следует использовать экранированный кабель с витой парой и сечением провода 0.5 мм2, поскольку импульсный выход очень чувствителен к помехам. Этот кабель желательно не прокладывать по кабельным каналам, в которых могут быть линии питания и кабели с высокой индуктивностью, поскольку скачки напряжения могут вызвать появление помех, или даже привести к разрушению электронных схем. Также экран этого кабеля должен быть заземлен со стороны регистрирующего устройства.
Единственным параметром счетчика, который необходимо учитывать в нашей системе, является количество литров на один импульс. Для расходомера LS-04 он равен 0.005 л/имп. Эта величина будет фигурировать в расчетах, выполняемых в приложении для Android, а плата Arduino, в данном случае, является посредником, который с помощью цифровой линии ввода/вывода D3 принимает каждый импульс и отправляет его через последовательный порт в планшет. Чтобы зарегистрировать каждый поступающий импульс, следует реализовать опрос по прерыванию, поскольку программный опрос в цикле не даст точного результата из-за возможного пропуска считывания импульсов вследствие занятости ядра микроконтроллера другими задачами. Для настройки прерывания в Arduino используется приведенная ниже функция.
attachInterrupt(pbIn, stateCh, RISING);
Здесь параметр pbIn определяет линию ввода/вывода, по изменению состояния которой произойдет прерывание; stateCh представляет собой название обработчика прерывания, то есть функции, в которой происходит обработка прерывания, – в данном случае в ней выполняется отправка через последовательный порт символа, свидетельствующего о поступлении импульса; параметр RISING означает, что прерывание произойдет по фронту сигнала.
Для управления горелкой, а именно для ее включения и отключения на основании информации о температуре в отапливаемом помещении, используется реле SLA-05VDC-SL-C. Управляющее напряжение этого реле составляет 5 В, что позволяет подключать его к цифровым портам платы Arduino Uno. Нормально разомкнутый контакт реле способен выдерживать токи до 20 А, что является вполне достаточным условием для подключения контактов к стандартному котельному оборудованию. В данном случае требовалось только 13 А. Подключение реле к цифровому порту платы Arduino следует выполнять с использованием специальной цепи защиты, как показано на Рисунке 1.
Поскольку в данной системе предполагалось сделать плату Arduino управляющим устройством с возможностями приема данных с датчиков и регулирования температуры, а на планшет возложить только регистрационно-диагностические функции, чтобы система оставалась работоспособной и при отсутствии планшета или другого устройства с ОС Android, было принято решение об оснащении Arduino средствами отображения текущей температуры и ввода значения желаемой температуры. В качестве средства отображения температуры были задействованы два семисегментных индикатора (LED1 и LED2) с общим анодом. С целью экономии линий ввода/вывода платы Arduino управление индикаторами здесь осуществляется через два сдвиговых регистра 74HC595 (IC1 и IC2), каждый из которых обслуживает один индикатор. Таким образом, для управления индикаторами достаточно выделить всего лишь три линии ввода/вывода: линию данных DATA, линию синхронизации CLK и линию разрешения записи в регистр LATCH. Так как в данном случае используются только два одноразрядных индикатора, то отображаются лишь положительные значения температуры (от 0 до 99), что не является критичным, поскольку комнатная температура в жилом помещении не должна быть менее +15 °C, то есть, любая температура ниже этого значения является ненормальной и подлежит обязательному регулированию. При поступлении с датчика отрицательного значения температуры на индикаторе отображаются цифры «00». Сдвиговые регистры подключаются к индикаторам через токоограничивающие резисторы R3-R16 номиналом 660 Ом.
Для изменения значения температуры, которую должна поддерживать система отопления, используется потенциометр R17 номиналом 10 кОм. Такое решение, в отличие от клавиатуры, позволяет задействовать всего лишь один аналоговый вход платы Arduino. Желаемую температуру можно задавать потенциометром в диапазоне от +15 °C (соответствует максимальному сопротивлению потенциометра) до +30 °C (соответствует нулевому сопротивлению потенциометра). Поскольку порты Arduino работают с максимальным напряжением 5 В, разрядность АЦП равна 10 бит, и ширина температурного диапазона составляет 15 °C, на 1 °C будет приходиться 0.33 В, или число 68 в десятичном представлении при получении данных с АЦП. Для визуального контроля величины температуры при изменении сопротивления используются те же два семисегментных индикатора. Бóльшую часть времени, когда регулирование желаемого значения с помощью потенциометра не осуществляется, эти индикаторы отображают текущую температуру отапливаемого помещения. При повороте ручки потенциометра, а, следовательно, изменении его сопротивления и напряжения на АЦП, на индикаторах отображается желаемое значение температуры, которое исчезает по прошествии примерно двух секунд после остановки вращения ручки, и на индикаторах снова отображается текущая температура.
На Рисунке 3 в виде блок-схемы представлен алгоритм части программы, реализующей человеко-машинный интерфейс и отвечающей за регулирование температуры с помощью включения и отключения реле.
Рисунок 3. | Алгоритм реализации человеко-машинного интерфейса и регулирования температуры. |
Таким образом, подсистема управления, основанная на плате Arduino Uno, представляет собой конструктивно и программно довольно простое устройство, позволяющее регистрировать и регулировать температуру, а также считывать импульсы, необходимые в дальнейшем для учета расхода топлива. В следующей части будет рассмотрена работа приложения для Android, предназначенного для визуализации полученных с платы Arduino данных и расчета стоимости потраченного топлива.