Контроллер газовой пушки
- Войдите на сайт для отправки комментариев
Втр, 16/02/2016 - 16:24
Есть желание спаять контроллер для газовой пушки одной известной немецкой фирмы. Написал программу поведения девайса, но не полностью. Родной контроллер делает три попытки запуска, после чего уходит в ошибку при неудачном старте. Как мне добавить эту функцию ? Также прошу совета, можно ли это впихнуть в ATtiny13a ?
Так как в Arduino 1.0.5 размер скетча 1.5кБ. Пока ориентируюсь на ATtiny2313
int gassens = 6; // датчик наличия газа пин 6 int airsens = 7; // датчик наличия воздуха пин 7 int flamesens = 0; // датчик наличия пламени пин 0 int air = 4; // вентилятор пин 4 int gas = 5; // газовый клапан пин 5 int ignition = 9; // ШИМ электроподжиг пин 9 void setup() { pinMode(gassens, INPUT); pinMode(airsens, INPUT); pinMode(flamesens, INPUT); pinMode(air, OUTPUT); pinMode(gas, OUTPUT); pinMode(ignition, OUTPUT); } void loop() { analogRead(flamesens); // есть пламя? if(flamesens < 100) { // если нет пламени digitalWrite(gas, LOW); // закрыть газовый клапан digitalWrite(air, HIGH); // пуск вентилятора если первое включение delay(10000); // задержка на продувку digitalWrite(gas, HIGH); // открыть подачу газа if(airsens, HIGH) { // есть ли воздух ? if (gassens, HIGH) { // есть ли газ ? analogWrite(ignition, 127); // подать ШИМ электроподжиг delay(1000); // длительность ШИМ электроподжиг digitalWrite(ignition, LOW); // выключить ШИМ электроподжиг } else { // если нет газа digitalWrite(gas, LOW); // закрыть газ delay(10000); // задержка на продувку digitalWrite(air, LOW); // стоп вентилятор delay(1000); // задержка останов вентилятора } } else { // если нет воздуха digitalWrite(gas, LOW); // закрыть газ delay(10000); // задержка на продувку digitalWrite(air, LOW); // стоп вентилятор delay(1000); // задержка останов вентилятора } } else { // если есть пламя delay(1000); // задержка на следующий опрос датчика пламени } }
В коде ошибки. Строки 19, 20, 25...
Если пины объявишь как #define сэкономишь 12 байт памяти данных.
Речь о тепловой пушке, работающей на газе или легкогазовой пушке?
А что это такое у Вас написано?
С какой целью читать значение, если никуда его на присваивать?
Это всегда ИСТИНА, т.к. flamesens равен 0 и разумеется меньше 100
Это всегда ИСТИНА, т.к.HIGH всегда равен 1.
Каков глубокий смысл писать условия, которые всегда инстинны, да ещё и else к ним приписывать?
Благодарю за проверку !!! исправил скетч, 706 байт, проверьте плиззз. Не могу найти инфу по attempt. Куда его вставлять и как???
Речь о тепловой пушке, работающей на газе или легкогазовой пушке?
на магистральном газе, марка пушки kroll (euronord). Вышел из строя менеджер горения HONEYWELL DVI980
Переменную нужно объявить: byte popytka=0; В том месте, где делается электроподжиг добавить popytka++; И где-то в цикле добавить проверку: if (popytka>=3) Error(); Что должна делать функция Error(); я понятия не имею... можно уйти в бесконечный цикл, начать моргать светодиодами, опрашивать кнопки и т.п.
Добавил в начало цикла оператор while с условием попыток менее 4х. Но по достижении 4-й попытки запуска цикл становится пустым. Так можно ?
С точки зрения программирования можно.
С точки зрения здравого смысла - правильнее наверно все таки проверить, что поджиг не произошел, газ закрыть, включить индикацию и после этого уйти в бесконечный цикл.