Официальный сайт компании Arduino по адресу arduino.cc
Проект отопительного котла.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 29/09/2016 - 18:31
Здравствуйте. Хотел попросить совет как можно перезагрузить весю программу по значению канала.
Котел газовый самодельный.
последовательность действий.
1. Вентиляция например 5 мин.
2. Индикация готовности. (после вентиляции контроллер должен ждать нажатия кнопки)
3. Кнопка запуска искры и клапана искры факела.
4. если фоторезистор видит пляме в котле он открывает клапан основной горелки.
Задача в том что если в момет горения по каким то причинам пропало пламе в котле то весь цикл должен пройти заново.
код вроде все расписал чтобы было понятнее.
/*
Контроль самодельного котла. Первый проект 16.09.2016
*/
int val = 0; //начальное значение пина 11 (искра факела)
int sensePin = 0; //Фотодатчик контроля пламени.
void setup() {
// Обявление всех каналов.
pinMode(13, OUTPUT); // Канал вентиляции.
pinMode(12, OUTPUT); // Канал готовности.
pinMode(11, OUTPUT); // Канал искры факела.
pinMode(10, OUTPUT); // Канал клапана подачи газа на факел.
pinMode(9, OUTPUT); // Канал клапана подачи газа на основную горелку.
pinMode(8, OUTPUT); // Канал пустой.
pinMode(7, OUTPUT); // Канал пустой.
pinMode(6, OUTPUT); // Канал пустой.
pinMode(5, OUTPUT); // Канал пустой.
pinMode(4, INPUT); // Канал подачи искры и клапана подачи газа на факел.
analogReference(DEFAULT); //Стандартное значение аналогово входа.
// Запуск вентиляции, задержка времени и готовность системы.
digitalWrite(13, HIGH); // Венциляция запущена.
delay(1000); // Время продувки.
digitalWrite(12, HIGH); // Готовность системы
}
// Цикл проекта
void loop() {
val = digitalRead(4); // Кнопка искры и клапана подачи газа на факел.
if (val == HIGH) {
digitalWrite(11,HIGH); // Искра включена пока кнопка нажата.
digitalWrite(10,HIGH); // Клапан газа факела включен.
}
else
{
digitalWrite(11,LOW); // Отключение искры когда кнопка отпущена.
digitalWrite(10,LOW); // Отключение клапана газа факела когда кнопка отпущена.
int val1 = analogRead (sensePin); //Установка значения VAL1 в значение фотодатчика.
if (val1 < 800) digitalWrite(9, HIGH); // Включение клапана основной горелки если горит пламя факела.
else digitalWrite (9, LOW); // Оставить выключеным клапан основной горелки если пламени факела нет.
}
}
Для простоты нужно выделить отдельные задачи в самостоятельные функци.
Например функция продувки (void ventilation())
Функция росжига (void kindling())
В основном цикле проверять состояние пламени, и если оно отсутствует то вызывать соответствующие функции в неоходимой последовательности.
Я не верно написал извините. вентиляции нужна всегда. то есть изночально она используется для вентиляции котла а в дальнейшем она дает воздух для горения пламени так как газ без воздуха не горит. и еще в вашем коде все работает. но единственное когда пропадает пляме нужно чтобы кнопка подачи искры игаза на клапан не работали пока не пройдет вентиляция.
Чтобы не работала кнопка необходимо завести флаг, и во время продувки его выставлять, а после продувки снимать. При проверке кнопки нужно смотреть на флаг и если он поднят то не реагировать на кнопку.
Както я монтировал газовый котел в одном котедже, так там защита была от отсутствия тяги. Работала следующим образом - питание подовалось на вытяжной вентилятор, на всасе был установлен датчик разряжения с контактами через которые запитывался сам котел. При включении веетилятора появлялось разряжение и включался котел, соответственно если тяга проподала то и котел обесточивался и клапана закрывались.
Я тут както класс писал DigOut (через поиск на форуме найдете), так вот с ним можно написать более читабельный код. Еще неплохо бы завести индикатор редима работы (светодиод напимер, который различными вспышками индицировал текущий режим)
Удачи!
Попробуйте так
Подал питание, котел продулся, затем розжиг, если не разжегся то опять продувка (можно установить лимит автоматических попыток розжига), если горел но потух, опять продувка и розжиг, если с 5 попытки не разжогся то аварийный останов с непрерывной продувкой.
Вот код с применением классов DigIn и DigOut
DigIn обеспечивает защиту от дребезга
Если у Вас на 12 выводе "готовность" висит светодиод, то теперь его можно просто заставить индицировать различные состояния системы различными вспышками.
Для этого вместо
Нужно написать
в скобочках (период в мс, % заполнения периода)
Таким же образом можно и искру подавать многократно.
У вас есть протеус? я бы вам скинул проект. сейчас факел все время моргает. а кнопка подачи искы и открытие клапана факела не работает.
Попробуйте так
Подал питание, котел продулся, затем розжиг, если не разжегся то опять продувка (можно установить лимит автоматических попыток розжига), если горел но потух, опять продувка и розжиг, если с 5 попытки не разжогся то аварийный останов с непрерывной продувкой.
вот этот код работает отлично. но есть сомнения дело в протэусе или нет не пойму. когда котел разгорелся и потом тухнет то готовность и горелка отключается но потом готовность не включается совсем.
Может так.
Proteus есть. Выложте схему девайса.
Вот ссылка https://yadi.sk/d/N_xjnm4vvxjHN
Спасибо за вашу помощь. Очень благодарен вам.
Не получается открыть, проверте наличие ощего доступа к файлам.
попробуйте вот эту ссылку https://yadi.sk/d/CG8B_gFkvxkGQ
попробуйте вот эту ссылку https://yadi.sk/d/CG8B_gFkvxkGQ
Мой протеус не хочет открывать, пишет что фаил испорчен. Выложите схему просто, или принт скрин из протеуса.
попробуйте вот эту ссылку https://yadi.sk/d/CG8B_gFkvxkGQ
Мой протеус не хочет открывать, пишет что фаил испорчен. Выложите схему просто, или принт скрин из протеуса.
Это 8 протеус. Сейчас уже не могу завтра выложу у меня давольно таки поздно завтра на работе выложу
вот так выглядит.
Попробуйте этот код
Попробуйте этот код
Кнопка искры совсем перестала работать.
Вот еще попробуйте
Вот еще попробуйте
все отлично спасибо вам. а можно где нибудь еще добавить чтобы проверялось давление газа и воды? в качестве датчиков буду использовать обычные ЭКМ.
Добавил Delay в пол секунды на отключение факела посмотрите все правильно ли сделал?
Всё правильно. Но её лучше вынести в define вверх кода, чтобы настраивать легче было
все отлично спасибо вам. а можно где нибудь еще добавить чтобы проверялось давление газа и воды? в качестве датчиков буду использовать обычные ЭКМ.
Возможно всё, но спортивного интереса к этому не имею, я и так много сделал.
И за это спасибо вам.
Удачи!
Удачи!
Еще раз огромное спасибо вам. Теперь попробую сам глядя на ваш пример что нибудь сделать. Что получится потом напишу. Спасибо большое.
Хотелось бы увидет проект в "железе". Можно еще прикрутить датчик температуры и тушить котел когда температура теплонасителя находится в нужных пределах, добавить управление насосом теплоносителя и т.п.
Хотелось бы увидет проект в "железе". Можно еще прикрутить датчик температуры и тушить котел когда температура теплонасителя находится в нужных пределах, добавить управление насосом теплоносителя и т.п.
как закончу установку сделаю фото и выложу. пока что то ни как ни могу добавить датчики давления.
Нужно добавить флаг для состояния датчика давления.
Затем в loop опрашивать его вход и выставлять флаг в зависимости от состояния входа.
Затем добавить реакцию на этот флаг
Например
Вот еще попробуйте
Извините конечно за наглость но объясните пожалуста как работает этот код. как не пробовал не получается сделать так чтобы готовность зависила от еще двух каналов от давления воды и газа. или ткните меня пожалуйста в статью в интернете где есть об этом информации.
Нужно добавить флаг для состояния датчика давления.
Затем в loop опрашивать его вход и выставлять флаг в зависимости от состояния входа.
Затем добавить реакцию на этот флаг
Например
а флаг можно устанавить через такой способ?
Вот еще попробуйте
Извините конечно за наглость но объясните пожалуста как работает этот код. как не пробовал не получается сделать так чтобы готовность зависила от еще двух каналов от давления воды и газа. или ткните меня пожалуйста в статью в интернете где есть об этом информации.
В посте #27 пример привел. А вообще нужно както более грамотно собрать все необходимые для готовности флаги и если они все подняты то готовность есть, если хоть один не поднят, то готовности нет.
Сегодня времени нет, подумаю как лучьше организовать. А Вы пока сами подумайте.
Сегодня времени нет, подумаю как лучьше организовать. А Вы пока сами подумайте.
Хорошо. Спасибо вам. я напишу до завтра все мои соображения на этот счет. и еще вопрос а как вы сделали так чтобы без объявления канала он используется. мне нужно добавить 2 канала на воду и газ. но как их использовать теперь не знаю. я совсем не знаю языка программирования и для меня очень сложно сейчас так сразу это понять. потихоньку изучаю
Сегодня времени нет, подумаю как лучьше организовать. А Вы пока сами подумайте.
Не получается. код даже компилируется.
Может так пойдет
Ваша ошибка была в том что Вы не опрашивали входы датчиков давления.
Может так пойдет
Ваша ошибка была в том что Вы не опрашивали входы датчиков давления.
теперь котел снова не встает на готовность.
Может так пойдет
Ваша ошибка была в том что Вы не опрашивали входы датчиков давления.
все нашел в чем причина.
исправил на
Может так пойдет
Ваша ошибка была в том что Вы не опрашивали входы датчиков давления.
все нашел в чем причина.
исправил на
сейчас возникла проблема когда датчик видет огонь и включает основную горелку. через задержку на факел тухнет готовность факел и сама горелка
сейчас код выглядит так. и когда тухнет пламе готовность и горелка не сбрасывается. но реагирует на давление.
Так попробуйте.
Вообще изначально подход не очень правельный, нужно составить конечный автомат, а потом по нему написать программу.
Так попробуйте.
Вообще изначально подход не очень правельный, нужно составить конечный автомат, а потом по нему написать программу.
фото датчик не реагирует если котел горел и потух. готовность не сбрасывается. но она отлично работает на каналах давления
Так попробуйте.
Вообще изначально подход не очень правельный, нужно составить конечный автомат, а потом по нему написать программу.
да извините я вас только запутал. я хотел контакты ЭКМ посадить на цепь питания но потом подумал что будет с двигателем винтиляции от отключений и включений. хотя газ и вода не должны уж так сильно прыгать.
Вам нужно составить конечный автомат, а потом его запрограммировать.
Вам нужно составить конечный автомат, а потом его запрограммировать.
Я вас не понял
nezza_profi , не разобрался как написать Вам в ЛС, хотел уточнить: вы собираете полностью автономный блок автоматики, или костыль к существующему? Как производится росжиг?
К чему спрашиваю: газовый котел protherm , навернулся блок росжига и автоматики honeywell, ремонту они не поддаются, а новый стоит 10-15 т.р. вот и возникла мысль реализовать на arduino блок автоматики.
По сути задача предстоит такая: газовый клапан управляется напряжением, 220в 100% открытие, ниже - соответственно ниже %. Но с АС напряжением проблема регулировать, проще выставить на 100% т.к за все время работы так и было.
из безопасности установлен датчик разрежения в улитке, которая высасывает отработавшие газы, ну и соответственно датчик пламени, но реализован он по системе Ионизации.. на ардуино ничего похожего не нашел, как вариант использовать фоторезистор.
а вот с росжигом проблема.. кто-то использует от Ксенона, или от катушки зажигания авто (с классики), но система очень "шумная" в сеть.
nezza_profi , не разобрался как написать Вам в ЛС, хотел уточнить: вы собираете полностью автономный блок автоматики, или костыль к существующему? Как производится росжиг?
К чему спрашиваю: газовый котел protherm , навернулся блок росжига и автоматики honeywell, ремонту они не поддаются, а новый стоит 10-15 т.р. вот и возникла мысль реализовать на arduino блок автоматики.
По сути задача предстоит такая: газовый клапан управляется напряжением, 220в 100% открытие, ниже - соответственно ниже %. Но с АС напряжением проблема регулировать, проще выставить на 100% т.к за все время работы так и было.
из безопасности установлен датчик разрежения в улитке, которая высасывает отработавшие газы, ну и соответственно датчик пламени, но реализован он по системе Ионизации.. на ардуино ничего похожего не нашел, как вариант использовать фоторезистор.
а вот с росжигом проблема.. кто-то использует от Ксенона, или от катушки зажигания авто (с классики), но система очень "шумная" в сеть.
мой котел самодельный. все своими руками. сварка и все такое)) в качестве искры буду использовать тоже самодельную схему зажигания на подобе свечи в автомобили. где напряжение большое а вот ток маленький.
выложите обязательно в этой теме подробнее... пока еще ничего не приобретал, но думаю начать сборку
выложите обязательно в этой теме подробнее... пока еще ничего не приобретал, но думаю начать сборку
хорошо завтра объязательно сфоткаю готовое устройство и схема где то должна быть у меня.
Для управления свечей лучше использовать автомобильный комутатор
и вместо прерывателя использовать транзистор на который подавать импульсы для получения продолжительной искры, т.к. при одиночной иске возможно не получится разжеч факел.
Чтобы написать грамотный код нужна полная схема подключения периферии и точный алгоритм работы.
Для управления свечей лучше использовать автомобильный комутатор
и вместо прерывателя использовать транзистор на который подавать импульсы для получения продолжительной искры, т.к. при одиночной иске возможно не получится разжеч факел.
Чтобы написать грамотный код нужна полная схема подключения периферии и точный алгоритм работы.
в принцепи ваш последний код очень отлично работает. я постараюсь поправить его реакцию на пламе. а если не получится то уберу совсем датчики давленя. и поставлю как и планировал на цепь питания. Огромное спасибо вам.
у тому же я подозреваю что возможно эта проблема с реакцией может быть из за протеуса. скоро закончу с монтажом тогда и проверим на деле это все.