На склад поступили жидко-кристаллические индикаторы и дисплеи от KSE

Бюджетная система автоматизации котельной установки загородного дома. Часть 1

Texas Instruments LM335 SN74HC595

Журнал РАДИОЛОЦМАН, сентябрь 2016

Михаил Русских

Рассматриваются преимущества и недостатки жидкотопливных котельных установок, описывается структура простой системы автоматизации жидкотопливной котельной установки, детально разъясняется назначение каждого элемента этой системы

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

GHI Electronics Logo

Для отопления современных коттеджей или загородных частных домов в холодную погоду нередко используются котельные установки. Эти установки в зависимости от вида потребляемого ресурса делятся на электрические, газовые, твердотопливные и жидкотопливные. Впрочем, имеются также достаточно экзотические типы котельных, например, установки, работающие с передачей геотермальной энергии природных источников или на солнечной энергии, но в России они представлены в очень малом количестве.

Жидкотопливные аппараты, о которых пойдет речь в данном материале, имеют ряд преимуществ по сравнению с другими видами этих устройств. В отличие от электрических и газовых установок, они в большей степени являются автономными, поскольку не требуют прокладывания к участку газопровода или линий электропередач, а для питания несложной автоматики котла достаточно установить небольшой электрогенератор. Жидкотопливные установки характеризуются большей эффективностью сжигания топлива, поскольку их КПД в некоторых случаях может достигать 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 данных и расчета стоимости потраченного топлива.

Ссылки

Материалы по теме

Окончание

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя