Контроллер газового котла

CRJ
Offline
Зарегистрирован: 22.09.2017

Привет всем!

Пытаюсь собрать контроллер газового котла со следующим алгоритмом:

Вентилятор вкл. постоянно.

Продувка: продолжительность 20 сек. заслонка 100%.

Поджиг: открытие клапана подачи газа, заслонка 50%, искра, мониторим датчик огня.

Огонь есть: выключаем искру, заслонка 100% (открыта)

Рабочий режим.

Огня нет - повтор цикла.

После 3х неудачных попыток - аврийный режим:

Клапан подачи газа - закрыт. Продувка. Аварийная лампа.

Собрано на датчике огня с дискретным сигналом, блоке реле с управлением землей и серве управления заслонкой.

Что-то пошло не так:

#include <Servo.h>
Servo servo;
boolean f_fire = 0; // наличие пламени (0 - нет, 1 - есть)
boolean f_vent = 0; // продувка (0 - не продуто, 1 - продуто)
boolean f_servo = 0; // полжение серво (0 - рабочее, 1 - зажигание)
boolean f_ready = 0; // готовность
boolean f_work = 0; // рабочий режим
boolean f_ignit = 0; // зажигание

int gasPin = 8;
int fanPin = 9;
int ignitPin = 10;
int servoPin = 11;
int sensPin = 12;

void setup()
{
  servo.attach(11);
  pinMode(sensPin, INPUT);
  pinMode(gasPin, OUTPUT);
  pinMode(fanPin, OUTPUT);
  pinMode(ignitPin, OUTPUT);
  pinMode(13, OUTPUT); // ALARM LED

  digitalWrite(fanPin, HIGH);
  digitalWrite(gasPin, HIGH);
  digitalWrite(ignitPin, HIGH);
  servo.write (0);
}
void ventilation() {
  delay (1000);
  servo.write (90);
  f_servo = 0;
  digitalWrite(fanPin, LOW);
  delay (5000);
  servo.write (0);
  f_servo = 1;
  f_vent = 1;
  f_ready = 1;
}

void ignition() {
  if (f_vent == 1 && f_servo == 1 && f_ready == 1 && f_servo == 1) {
    digitalWrite(gasPin, LOW);
    digitalWrite(ignitPin, LOW);
    f_ignit = 1;
  }
  else {
    digitalWrite(gasPin, HIGH);
    digitalWrite(ignitPin, HIGH);
    f_ignit = 0;

  }
}

void fire() {
  if (digitalRead(sensPin == HIGH)) {
    f_fire = 1;
  }
  else {
    f_fire = 0;
  }
}

void loop()
{
  ventilation();
  delay (1000);
  ignition();
  delay (1000);
  fire();
  delay (1000);
  
  if (f_ignit == 1 && f_fire == 1 && f_servo == 1 && f_vent == 1)
  { digitalWrite(gasPin, LOW);
    digitalWrite(ignitPin, HIGH);
    servo.write (0);
    f_work = 1;
  }
  else {
    digitalWrite(gasPin, HIGH);
    digitalWrite(ignitPin, HIGH);
    servo.write (0);
    f_work = 0;
    ventilation();
  }
}

 

Renat
Offline
Зарегистрирован: 21.04.2018

Задумка интересная но вот от deley я бы на вашем месте отказался тем более при работе с газовым оборудованием. Лечше поставить часы и из них секунды считать. и можно еще добавить проверку во время работы на всякий случай. типо заслонка открыта - искра была - огонь горит. если огня нет то вырубаем газ 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А я бы вапще с такими знаниями к газу не лез. Пока. 

А то, мало того, что сам на марс улетишь, по частям, на своем котле, дак еще и соседей прихватишь

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Датчик пламени обязательно нужно проверять до подачи газа.
И если он покажет пламя - газ подавать нельзя.
Также и после выключения газа.
Датчики иногда врут.
И без собаки тоже совсем нельзя.
Иногда вижу как мой Церапур сам перегружается.

А вообще то дед Семён прав на все 100.
И совсем не понятно как вам подключат газ к чему-то непонятному.
А если уже подключен вас должны поймать и крепко выпороть.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

trembo пишет:
И совсем не понятно как вам подключат газ к чему-то непонятному. А если уже подключен вас должны поймать и крепко выпороть.

это все от малообразованности и незнания.. незнания правил, сводов и законов, незнания что должна быть собака, незнаний основ написания программы для сложного устройства и т.д.

b707
Offline
Зарегистрирован: 26.05.2017

ТС не появлялся в ветке с марта, а вы все воюете :) Он, наверно, давно на марс улетел и счастлив там

marc1961
Offline
Зарегистрирован: 06.10.2018

Привет всем!

Пытаюсь собрать контроллер газового котла со следующим алгоритмом:

Вентилятор вкл. постоянно.

Продувка: продолжительность 20 сек. заслонка 100%.

Поджиг: открытие клапана подачи газа, заслонка 50%, искра, мониторим датчик огня.

Огонь есть: выключаем искру, заслонка 100% (открыта) всё это интересно написанно газ горит допустим а тепло куда отводится ? трубы у автора уже сгорели в котле так как по ним не поступала вода или ещё лучше три цикла говорите .... ну вот первые два цикла поджиг не контачил а на третий котёл взорвался и куски летели от котла на 80 метров вот автор давно в земле и лежит... по этому его и нет...

MaksVV
Offline
Зарегистрирован: 06.08.2015

Он же написал «что то пошло не так»