Алгоритм управления свечами накаливания дизеля 4D56
- Войдите на сайт для отправки комментариев
Приветствую!
Восстанавливаю техническую готовность старенького Pajero с дизелем 4D56
Родной блоку управления свечами накаливания работает только с дорогими оригинальными свечами, с заменителями отказывается работать в связи с разностью сопротивлений ориг. свечи и заменителя. Многие делают принудительное включение с кнопки и не заморачиваются. Одна чего не скажешь о ардуинщиках которые не ищут простых путей и пытаются применить сей чудесный контроле во всех областях народного хозяйства :)
В итоге решил собрать подобие блока на базе Arduino Nano.
Судя по приведенным выше скринам блок в первом приближении работает так:
При подачи питания с ключа зажигания блок опрашивает датчик температуры охлаждающей жидкости и если Т ниже 20-30 градусов запускает алгоритм включения свечей.
Одновременно включаются 2 реле на 12 и 6 вольт соответственно потом 12 вольтовое отключается и далее интервалами работает 6 вольтовое реле.
Я набросал скетч пока тестирую дома в настройках показание датчика температуры ОЖ имитирует напряжение 5в. (есть 5в алгоритм сработал, нет 5в реле не включаются).
// управление реле через функцию LOW int t12 = 5000; // время для реле 12v int t6s = t12+25000; // время для реле 6v при старте int t6r = 9000; // время для реле 6v при работе двигателя int tp6 = 3000; // время для паузы реле 6v int analogPin = 0; // номер порта к которому подключен датчик температуры int val = 0; // переменная для хранения считываемого значения void setup() { pinMode(12, OUTPUT); // реле 12 v pinMode(6, OUTPUT); // реле 6 v Serial.begin(9600);// тест значений } // алгоритм работы реле void loop() { val = analogRead(analogPin); // считываем значение Serial.println(val); // выводим значение на экран if (val > 1010 ) { digitalWrite(12, LOW); // 12 v ON digitalWrite(6, LOW); // 6 v ON delay(t12); digitalWrite(12, HIGH); // 12 v OFF delay(t6s); digitalWrite(6, HIGH); // 6 v OFF delay(tp6); // 6v пауза digitalWrite(6, LOW); delay(t6r); // 6v работа digitalWrite(6, HIGH); delay(tp6); digitalWrite(6, LOW); delay(t6r); digitalWrite(6, HIGH); delay(tp6); digitalWrite(6, LOW); delay(t6r); digitalWrite(6, HIGH); delay(tp6); digitalWrite(6, LOW); delay(t6r); digitalWrite(6, HIGH); delay(tp6); digitalWrite(6, LOW); delay(t6r); digitalWrite(6, HIGH); delay(tp6); digitalWrite(6, LOW); delay(t6r); digitalWrite(6, HIGH); delay(tp6); while (true) {}; } else { digitalWrite(12, HIGH); digitalWrite(6, HIGH); delay (100); while (true) {}; } }
Понятно что алгоритм сделан криво и через функцию delay, но уже может быть функциональным.
Хотел бы получить подсказку.
Как реализовать изменение времени включения реле в зависимости от температуры ОЖ, так как в оригинальном блоке при -20 одни тайминги включения, а при температуре 0 или +10 работает как бы «укороченная» программа прогрева?