Автоматическое включение фар при запуске двигателя

Новая тема Ответить
Водитель
Регистрация: 17.02.2012
Сообщения: 2
Откуда: Россия
Реле автоматического включения света 719.3777-02
Автоматическое включение света происходит после запуска двигателя при достижении напряжения бортовой сети значения «напряжения включения» и удержания его не ниже этого уровня в течение 5с, выключение - сразу после выключения зажигания. Обеспечивая включение фар ближнего света и габаритных огней непосредственно после запуска двигателя, реле позволяет облегчить пуск двигателя, уменьшить нагрузку на аккумулятор (особенно в холодное время) и увеличить срок службы ламп. При этом водитель всегда может отключить автоматический режим «перещелкиванием» штатного переключателя света.

за всё про всё 360 рэ , а делает энергомаш


Цитата
Водитель
Регистрация: 03.03.2012
Сообщения: 5
Авто: ВАЗ-2108
Откуда: г. Витебск
Добрый день. Всем здравствуйте.
Собрал я сегодня Управление дневным светом автомобиля опубликованное на 2 стр. форума.
И увы, не работает.
Вместо:
ВС817-40 поставил КТ3102,
BSS88 поставил КП504
Отлаживать пытаюсь от генератора с компьютера.
Но вот что самое главное. При подачи питаня на устройство на 2 ножке МК есть импульс с амплитудой питания наверное это происходит сброс МК. При подаче частоты с генератора на этой же 2 ножке очень малая амплитуда около 0,5V. Плату всю проверил. Замыканий нет.
Прошу помщи в наладке.
Спасибо, с уважением
Виталий-1

Цитата
Водитель
Регистрация: 03.03.2012
Сообщения: 5
Авто: ВАЗ-2108
Откуда: г. Витебск
Директор
Регистрация: 22.11.2009
Сообщения: 1217
Авто: ВАЗ-2113
Откуда: Москва

С этой схемой вообще отдельная тема.
Там в принципиальной схеме ошибка была Грусть . Там на U1 связь должна быть с PB2 а не с PB1. Сейчас новую залил.

Исправленная схема блока автоматического включения фар дальнего света в полнакала

Вот архив с исправлениями.
Также несколько раз менялась прошивка.

Прошивка 1.1
В начале движения, при достижении автомобилем скорости 6 км/ч устройство плавно включает
лампы ближнего света до 60% от напряжения бортовой сети и удерживает это значение до скорости 69 км/ч.
В диапазоне от 70 км/ч до 94 км/ч устанавливается 80% от напряжения бортовой сети.
В диапазоне от 95 км/ч и выше устанавливается 95% от напряжения бортовой сети.
После остановки автомобиля на время более 22 секунд напряжение снижается до 30%.
При возобновлении движения напряжение снова устанавливается в соответствии с вышеописанным алгоритмом.
При включении водителем ближнего света штатным выключателем напряжение устанавливается 100%.
После выключения зажигания лампы горят ещё несколько секунд, а затем гаснут.
Все изменения напряжения осуществляются плавно с шагом 5%.еденного на контакт 2 (ON).

Прошивка 1.4
1. Исправлена ошибка со "случайным" загоранием ламп при включении зажигания.
2. Добавлена функция полного выключения ламп при простое более 4 минут (гашение ламп до 30% при простое более 22 секунд осталось).
3. Уменьшена на 5% скважность для низших диапазонов скоростей.
Теперь так:
6...69 км/ч - 70%
70...94 км/ч - 80%
95...255 км/ч - 95%
остановка более 22 секунд - 30%
остановка более 4 минут - лампы выключены

Прошивка 1.7.2
ШИМ 35-75-85-95 %
Время простоя до 35% 45 секунд
Время простоя до выключения ламп 5 мин
Исправлена ошибка с включением/выключением света штатным переключателем при стоящей машине с включенным зажиганием.

Цитата
Водитель
Регистрация: 03.03.2012
Сообщения: 5
Авто: ВАЗ-2108
Откуда: г. Витебск
авто
Директор
Благодарю Вас, за быстрый и исчерпывающий ответ.
Завтра буду подключать Ваше устройство,
Управление дневным светом автомобиля по новой схеме и прошивке.
По результатам запуска, отпишусть.
Спасибо
С уважением, Виталий-1

Цитата
Директор
Регистрация: 22.11.2009
Сообщения: 1217
Авто: ВАЗ-2113
Откуда: Москва
Да это не моё устройство. Из Рыбинска кто-то сделал. Где то даже тема была...

Цитата
Водитель
Регистрация: 03.03.2012
Сообщения: 5
Авто: ВАЗ-2108
Откуда: г. Витебск
авто
Директор
Всё равно СПАСИБО!!!!!
Всё заработало с прошивкой 1.7.2
Правда схемное решение прежнее:

Контакт 1 (SPD - вход) подключается к выходному контакту датчика скорости с разрешением 6 импульсов на метр. Это РВ0 вывод 14 МК

Контакт 2 (ON - вход) подключается к проводу штатной проводки подающему +12 вольт на лампы ближнего света,
который необходимо заранее отключить от ламп. Это РВ1 вывод 15 МК

Здорово Здорово Здорово
Ещё раз Вас благодарю. Спасибо
С уважением, Виталий-1 Пивка? Пивка? Пивка?

Цитата
Директор
Регистрация: 22.11.2009
Сообщения: 1217
Авто: ВАЗ-2113
Откуда: Москва
Поздравляю Сюрприз Сюрприз Сюрприз
Я что-то не решился на повторение этой схемы, заморочек много Конфуз

Цитата
Водитель
Регистрация: 03.03.2012
Сообщения: 5
Авто: ВАЗ-2108
Откуда: г. Витебск
авто
Директор

Добрый день. Спасибо за поздравление.
Всё очень просто. Схема работает на ура.
А, подключение к авто простое.
Рекомендую. И продлите жизнь своему аккумулятору.
С уважением. Виталий-1 Баян

Цитата
Директор
Регистрация: 22.11.2009
Сообщения: 1217
Авто: ВАЗ-2113
Откуда: Москва
По просьбам трудящихся исходник прошивки к схеме управления дневным светом автомобиля:
Код:
program pwr1;
// версия с задержками на таймере 1.6
// исправлена ошибка с запуском ламп в момент включения зажигания
// добавлено отключение ламп через 4 минуты
{$NOSHADOW}
{ $WG} {global Warnings off}
{$OPTIMISE}

Device = mega8, VCC=5;
{ $BOOTRST $01C00} {Reset Jump to $01C00}

Import SysTick, WatchDog, SoftPWM, FreqCount;

{From System Import LongInt;}


Define
ProcClock = 16000000; {Hertz}
SysTick = 2; {msec}
WatchDog = msec2000; {presc = 7}
StackSize = $0032, iData;
FrameSize = $0032, iData;
FreqTimer = Timer1; {use Timer1}
SoftPWMport = PortD; {use PortB for PWM output}
SoftPWMtimer = Timer2, 10; {use timerx, PWM cycle time msec}
SoftPWMres = 100; {PWM resolution is 100 points}
SoftPWMchans = 1, 0; {x channels, bity is the first bit}

Implementation

{$IDATA}

{--------------------------------------------------------------}
{ Type Declarations }

type


{--------------------------------------------------------------}
{ Const Declarations }

{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var
i: word;
Timer : SysTimer; // Таймер для отсчета временных интервалов
TimeSpd : word; // Длина импульса по базе замера
PulseFlag: boolean; // Флаг замера количества импульсов
CountP, CountN: word; // Количество положительных и нулевых импульсов по базе замера
StopCount: word; // Счетчик циклов переполнения

const
SpeedOn : byte = 6; // Скорость при которой включится DRL
SpeedMin : byte = 70; // Скорость с которой начинает нарастать мощность DRL
SpeedMax : byte = 95; // Скорость при которой DRL выйдет на максимальную мощность
SpeedLimit: byte = 255; // Лимит скорости
TimeOn : word = (60000 div SpeedOn); // Длина имульса для включения DRL
TimeMin : word = (60000 div SpeedMin); // Длина импульса для нижней границы скорости
TimeMax : word = (60000 div SpeedMax); // Длина импульса для верхней границы скорости
TimeLimit : word = (60000 div SpeedLimit); // Длина импульса для лимита скорости
PWMOff : word = 0; // Скважность DRL при отключении света
PWMStop: word = 30; // Скважность DRL если машина стоит
PWMMin : word = 70; // Минимальная скважность DRL
PWMMid : word = 80; // Средняя скважность DRL
PWMMax : word = 95; // Максимальная скважность DRL
PWMStd : word = 100; // Cкважность DRL для штатного света
PWMDelta : word = ((PWMMax - PWMMin)*100) div (TimeMin - TimeMax); // 100% приращения PWM на единицу длины импульса
StopCycles : word = 20; // Количество циклов ожидания для перехода в режим PWMStop 30 сек *1,5
OffCycles : word = 200; // Количество циклов ожидания для перехода в режим PWMOff 300 сек

{--------------------------------------------------------------}
{ functions }

procedure InitPorts;
begin
DDRB := %11111100;
PortB := %00000000;
DDRC := %11111111;
PortC := %00000000;
DDRD := %11111111;
PortD := %00000001;
end InitPorts;

procedure SetPWM(NewPWM: byte; DelayPWM: word);
// Плавная установка PWM с шагом 5% и задержкой в цикле
var
D1, D2, i: byte;
begin
if SoftPWM1 = NewPWM then
return;
endif;
DelayPWM := DelayPWM div 2;
if SoftPWM1 > NewPWM then
D1 := (SoftPWM1 - NewPWM) div 5;
D2 := (SoftPWM1 - NewPWM) mod 5;
for i := 1 to D1 do
SoftPWM1 := SoftPWM1 - 5;
SetSysTimer (Timer, DelayPWM);
repeat until isSysTimerZero(Timer);
WatchDogTrig;
endfor;
SoftPWM1 := SoftPWM1 - D2;
SetSysTimer (Timer, DelayPWM);
repeat until isSysTimerZero(Timer);
endif;

if SoftPWM1 < NewPWM then
D1 := (NewPWM - SoftPWM1) div 5;
D2 := (NewPWM - SoftPWM1) div 5;
for i := 1 to D1 do
SoftPWM1 := SoftPWM1 + 5;
SetSysTimer (Timer, DelayPWM);
repeat until isSysTimerZero(Timer);
WatchDogTrig;
endfor;
SoftPWM1 := SoftPWM1 + D2;
SetSysTimer (Timer, DelayPWM);
repeat until isSysTimerZero(Timer);
endif;
end;

procedure flash;
var temp: byte;
begin
temp:=SoftPWM1;
SoftPWM1:=0;
mdelay(100);
SoftPWM1:=100;
mdelay(100);
SoftPWM1:=temp;
end;

{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin
InitPorts;
StopCount := 0;
EnableInts;
SoftPWM1 := byte(PWMOff);
loop
WatchDogStart;
FreqCountRestart;
if PinB.1 = false then // Если штатный свет включен, то обрабатываем режим штатного света
if SoftPWM1 <> byte(PWMStd) then // Если режим штатного света ещё не включен,
SetPWM(byte(PWMStd), 50); // то включаем его
else
SetSysTimer (Timer, 250); // Если режим уже включен, то пауза 0,5 сек
repeat until isSysTimerZero(Timer);
endif;
else // Если штатный свет отключен, то обрабатываем ДС
SetFreqCountMode(TTimeBase100ms); // Начинаем замер периода по базе 100 мсек
FreqCountRestart;
SetSysTimer (Timer, 251); // Задержка главного цикла 502 мсек
repeat until isSysTimerZero(Timer); //
if SemaStat(FreqCountSema) <> 0 then // Замер произошел
TimeSpd := GetTimeCounter;
if GetFreqCountOvrFlow <> 0 then // Переполнение при замере по базе 100 мсек - машина едет медленнее 6 км/ч
SetFreqCountMode(TPulseBase1s ); // Начинаем замер количества импульсов по базе 1 сек
FreqCountRestart;
SetSysTimer (Timer, 501); // Задержка главного цикла 1002 мсек
repeat until isSysTimerZero(Timer); //
if SemaStat(FreqCountSema) <0> 0 then
StopCount:=0;
if SoftPWM1 <byte>= byte(PWMStop)) then // Штатный свет выключен, PWM больше PWM стоящей машины ???
inc(StopCount);
if (StopCount = StopCycles) and (SoftPWM1 > byte(PWMStop)) then
SetPWM(byte(PWMStop), 50);
endif;
if (StopCount = OffCycles) and (SoftPWM1 = byte(PWMStop)) then
SoftPWM1 := byte(PWMOff);
StopCount := 0;
endif;
endif;
endif;
else
if (PinB.1 = true) and (SoftPWM1 >= byte(PWMStop)) then // Штатный свет выключен, PWM больше PWM стоящей машины ???
inc(StopCount);
if (StopCount = StopCycles) and (SoftPWM1 > byte(PWMStop)) then
SetPWM(byte(PWMStop), 50);
endif;
if (StopCount = OffCycles) and (SoftPWM1 = byte(PWMStop)) then
SoftPWM1 := byte(PWMOff);
StopCount := 0;
endif;
endif;
endif;
else
StopCount := 0;
SetSysTimer (Timer, 501); // Задержка главного цикла 1002 мсек
repeat until isSysTimerZero(Timer);
// Скорость выше или равна верхней границе
if (TimeSpd <TimeMax>= TimeLimit) and (SoftPWM1 <byte> TimeMax) and (TimeSpd < TimeMin) and (SoftPWM1 <> byte(PWMMid)) then SetPWM(byte(PWMMid), 50); endif;
// Скорость выше или равна границе включения и ниже или равна нижней границы
if (TimeSpd <TimeOn>= TimeMin) and (SoftPWM1 <byte>= byte(PWMStop)) then // Замер по базе 100 мсек не произошел, штатный свет выключен, PWM больше PWM стоящей машины ???
inc(StopCount);
if (StopCount = StopCycles) and (SoftPWM1 > byte(PWMStop)) then
SetPWM(byte(PWMStop), 50);
endif;
if (StopCount = OffCycles) and (SoftPWM1 = byte(PWMStop)) then
SoftPWM1 := byte(PWMOff);
StopCount := 0;
endif;
endif;
SetSysTimer (Timer, 501); // Задержка главного цикла 1002 мсек
repeat until isSysTimerZero(Timer); //
endif;
endif;
WatchDogTrig;
endloop;
end pwr1.

Взято с форума силыча, кстати там и автора можно найти...


Цитата