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

Один раз был остановлен гаишниками, т.к. забыл включить свет.

Поэтому сделать устройство автоматического включения и выключения света фар давно руки чесались, а после того, как летом 2015 досталась одна неисправная плата, на которой обнаружились подходящие исправные радиоэлементы - ключи BUK202 - решил-таки сделать такой девайс:

Ключи BUK202 рассчитаны на 9 ампер, для двух фар нужно около 10А, и охлаждение под панелью приборов не очень хорошее, поэтому поставил параллельно два таких ключа на общий радиатор из алюминиевой пластинки 7 на 1,5 см. При длительных поездках радиатор нагревается примерно до 45...50 градусов. (летом, температура в салоне около 30 гр.)

В качестве управляющего элемента применил имеющуюся маленькую простейшую отладочную плату Digispark (ардуино-совместимая с микроконтроллером Attiny85 на борту):

 Специально пришлось докупить только стабилитрон на 18 вольт, остальная мелочь имелась в наличии. Учитывая, что лампы ближнего света частенько перегорают ( как известно, большей часть из-за броска тока при включении), сделал плавное зажигание ламп ( примерно в течение 2 сек). Габаритные огни включаются у меня сразу же после включения зажигания.

Переключатель режимов работы световых приборов работает по-прежнему, независимо от системы автоматического включения/выключения света фар.

  Я считаю, что поставленной цели я добился - фары невозможно забыть включить - они сами автоматически включатся при запуске двигателя - и невозможно забыть выключить - если оставить переключатель в положении "фары" или "габариты" то при повороте ключа в положение "0" зажигание просто не выключится , и соответственно, двигатель будет продолжать работать.

 

ПО достаточно простое - постоянно отслеживается  напряжение на P2 - при повышении на входе напряжения до 13,5...13,8 вольт( это около 3,2 V на порту Р2) фары плавно загораются, при снижении напряжения - через некоторое время плавно гаснут.  Встроенный  светодиод на отладочной плате Digispark используется для контроля работы устройства:

 

Первоначальная версия ПО:

 


// auto light auto turn on/off version_1_3_2_digispark (C)alex---1967 2015

byte i=0;
int c0 = 0;
int s0 = 0;
int svet = 0;
int full_svet = 0;

void setup()
{
pinMode(4, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, INPUT);
}


void loop()
{
c0 = 0;
svet = -1;

for ( i=0; i < 32; i++)
{
s0 = analogRead(A1);
c0 = c0 + s0;
}

c0 = c0 / 32;

if ( c0 > 560 ) { svet = 1; }
full_svet = full_svet + svet;
if ( full_svet > 250 ) { full_svet = 250; }
if ( full_svet < 0 ) { full_svet = 0; }

if ( full_svet > 1 )
{
digitalWrite(4,1);
digitalWrite(1,1);
delay(1 + full_svet / 16);
}
if ( full_svet < 49 )
{
digitalWrite(4,0);
digitalWrite(1,0);
delay(50 - full_svet);
}

}

 

Данное устройство установлено в пластмассовый корпус,  прикреплено непосредственно к МУС и соединено с МУС короткими проводами. В штатной проводке изменений нет.

 

Октябрь 2015 г. - по результатам эксплуатации в течение нескольких месяцев - решил немного доработать ПО.

Во-первых, сделал так, чтобы фары начинали загораться не сразу после пуска двигателя, а спустя примерно 3 секунды ( за это время бортовое напряжение "устаканивается" - соответственно уменьшается вероятность перегорания ламп).

Во-вторых, сделал так, чтобы при падении бортового напряжения ниже порогового фары гасли не сразу, а продолжали гореть достаточно долго. То есть теперь при резко заглохшем двигателе например при высокой скорости на неосвещенной трассе ночью можно безопасно вырулить на обочину - фары не погаснут.

 

 


// auto light auto turn on/off version_2_2_2_1_digispark (C)alex---1967 2015

byte i=0;
int c0 = 0;
int s0 = 0;
int svet = 0;
int full_svet = -25;

void setup()
{
pinMode(4, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, INPUT);
}


void loop()
{
c0 = 0;
svet = -1;

for ( i=0; i < 32; i++)
{
s0 = analogRead(A1);
c0 = c0 + s0;
}

c0 = c0 / 32;

if ( c0 > 558 ) { svet = 1; }
full_svet = full_svet + svet;
if ( full_svet > 25000 ) { full_svet = 25000; }
if ( full_svet < -25 ) { full_svet = -25; }

if ( full_svet > 1 )
{
digitalWrite(4,1);
digitalWrite(1,1);
delay(1 + full_svet / 16);
}
if ( full_svet < 49 )
{
digitalWrite(4,0);
digitalWrite(1,0);
delay(50 - full_svet);
}

}

 

 

 

                На главную страницу                     На страницу Мое Авто

 

              

Hosted by uCoz