Алгоритм управления свечами накаливания дизеля 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 работает как бы «укороченная» программа прогрева?

