Электронное реле с функцией плавного включения света фар
Введение
Требования к схеме Схема включения штатного реле Схема электронного реле Использованные компоненты Описание электронной части Режимы работы Отвод тепла Алгоритм работы Программа микроконтроллера Изготовление реле Исходный код прошивки для AtmelStudio 6 Автор: Погребняк Дмитрий. Самара, 2014 ВведениеВ моём автомобиле, Kia Cerato LD (2008) установлены галогенные фары. Слепить встречных водителей колхозно установленным "ксеноном" у меня нет никакого желания, но белый свет фар, мне кажется, куда приятнее для глаз, чем утомляющая желтизна "обычной" лампы. Я предпочитаю галогенные лампы Philips CrystalVision, которые дают световой пучок белого цвета по остальным параметром такой же как у "обычной" лампы - то есть встречные водители не ослепляются при правильной настройке фары. За такой комфорт приходится платить: мало того что они значительно дороже обычных фар, так ещё и ресурс у них не очень велик. Я заметил что момент перегорания обычно совпадает с моментом включения фар. И действительно: наибольшая нагрузка на нить выпадает на тот момент, когда от уличной температуры ей за доли секунды приходится нагреться до нескольких тысяч градусов. Сопротивление нити лампы зависит от её температуры. Так, сопротивление холодной нити может быть в 12-13 раз ниже, чем в рабочем режиме, соответственно, в момент включения через холодную лампу протекает ток в 12-13 раз больше номинального, что также влечёт увеличение рассеиваемой мощности. Этот момент и становится губительным для лампы. Что, если замедлить нагрев нити? - подумал я. Если растянуть момент нагрева нити на несколько секунд, возможно, это увеличит срок её службы? Идея плавного включения света не нова: при помощи мощного полевого транзистора и широтно-импульсного модулятора такаю задача реализовывалась не раз, и в интернете найдётся с десяток различных вариантов схем. Всех их объединят то, что они требуют доработок проводки самого автомобиля. А вот возможно ли собрать такую схему в корпусе штатного реле? Тогда вся установка на автомобиль заключалась бы в простой замене реле, без необходимости ворошить внутренности автомобиля. Задачка показалась мне интересной и я приступил... Требования к схемеНемного поразмыслив над тем, как это будет выглядеть в эксплуатации, составил для себя такие требования, которым должна удовлетворять схема: 1) Потреблять как можно меньший ток, когда зажигание выключено. Хотя потребление в районе 5-7 миллиампер, которые требуются для питания стабилизатора и микроконтроллера, было бы приемлемым, хочется минимизировать ток утечки. 2) Обеспечивать плавный, в течение 10-12 секунд, нагрев нитей ламп при первом включении. Когда машина только заведена нить должна нагреваться плавно. 3) Если зажигание не выключалось, то после повторного включения ближнего света более быстрый, в течение 0,5 секунд выход на уровень 80% и затем, в течение секунды выход на уровень 100%. Так как используются лампы H4, то есть совмещающие нити ближнего и дальнего света в одной колбе, при включении или мигании дальним светом, ближний свет отключается. После выключения дальнего света фары остаются достаточно горячими и быстрый накал не сильно сказывается на их работе. В то же время ждать несколько секунд, пока они разгорятся, как при первом старте - неприемлемо: в условиях дорожного движения дорога должна быть освещена. 4) При включенном зажигании и отключении ближнего света в течение 0,5 секунды удерживать уровень 50%. Это позволит не охлаждать нить во время кратких миганий дальним светом. Схема включения штатного реле
Рассмотрим схему подключения реле. Схема довольно проста: выключатель с одной стороны, зажигание с другой - управляют обмоткой реле. То есть отключение света происходит как при повороте выключателя, так и при выключении зажигания. Выключатель - единственный источник постоянного "минуса" на этой схеме. Но по вышеизложенным требованиям после выключения, схема должна "помнить", что зажигание не выключалась, чтобы быстро вернуть ближний свет, когда он понадобиться. Мало того! Схема должна поддерживать нити в полнакала, после того как выключатель ближнего света отключен. Однако, источником "минуса" могут являться сами фары, чьё сопротивление достаточно мало. Решением является использование паразитного питания через цепь фар. Если установить конденсатор достаточной ёмкости, чтобы он смог удерживать питание управляющего микроконтроллера, пока тот переключается на режим широтно-импульсной модуляции (ШИМ), то он сможет подзаряжаться в моменты, когда ключ разомкнут. Схема электронного релеВ итоге родилась такая схема:
Использованные компоненты
Описание электронной частиРеле подключено к электрике автомобиля, как показано на рисунке. Основной силовой элемент - это полевой МОП транзистор с p-каналом VT4. Главное требование к нему - обеспечить коммутацию постоянного тока не менее 12Ампер, при этом выдерживать импульсный ток до 150 Ампер; он должен обладать низким сопротивлением исток-сток в открытом состоянии, но при этом умеренной входной ёмкостью, и открываться при напряжении исток-затвор 5Вольт. В качестве такового выбран IRF9310, он рассчитан на напряжение сток-исток до 30В и ток до 20А (до 16А при температуре 70 градусов), импульсный ток до 160 Ампер. При напряжении исток-затвор 4,5 Вольта обеспечивает сопротивление исток-сток не более 6,8мОм, входная ёмкость 5,2нФ. Управляет им микроконтроллер ATtiny13A, работающий на частоте 1,2МГц, потребляющий в таком режиме ток менее миллиампера. Его силовые драйверы способны принимать и выдавать ток до 40мА, чего вполне достаточно для управления затвором силового транзистора. ШИМ выход микроконтроллера, работающий на частоте 2,35кГц, подключен к затвору транзистора через резистор R11 130 Ом, который, с учётом сопротивления затвора, а также падения напряжения под нагрузкой на выводе микроконтроллера, ограничивает ток на уровне 33-35мА. Быстрое закрытие транзистора также обеспечивается разрядом затвора через вывод микроконтроллера, но, когда схема отключена, резистор R12 20килоОм держит транзистор закрытым. Питание осуществляется через линейный стабилизатор 79L05 отрицательного напряжения -5В рассчитанный на нагрузку до 100мА. В данной схеме он является основным потребителем тока: ток покоя в нём может достигать 6 мА. Пульсации тока, вызванные моментами заряда затвора транзистора сглаживает керамический конденсатор C2, ёмкостью от 2,2 мкФ (можно использовать и 1 мкФ). Единственный постоянный минусовой провод подходит через выключатель ближнего света. Схема должна и после выключения ближнего света продолжать работать в "полнакала", а также активно отслеживать - не выключалось ли зажигание. Решением для этого является использование паразитного питания через сами лампы. В момент, когда МОП-транзистор VT4 закрыт, через фары и диод VD3 заряжается конденсатор C1, обеспечивающий питание схемы как минимум в течение 10мс. В схеме используется танталовый электролитический конденсатор 22мкФ, но схема будет работать и при использовании конденсатора 10 мкФ. Конденсатор должен быть рассчитан на напряжение не менее 35 Вольт. Резистор R4 51 Ом ограничивает ток в цепи, когда конденсатор разряжен. Когда выключатель ближнего света включен, схема запитывается через него и диод VD4, дополнительный резистор R6 51 Ом также призван ограничить ток заряда конденсатора, идущий через замыкающиеся контакты выключателя ближнего света. В качестве диодов выбраны BAS321, рассчитанные на постоянный ток 250мА, импульсный (в течение 10мс) ток до 1,7А, с напряжением пробоя 200 Вольт. Транзистор VT1 отключает схему от питания, когда зажигание выключено. В качестве него выбран n-канальный МОП транзистор IRLML0030, рассчитанный на ток до 5 Ампер и допускающий напряжение между затвором и истоком до 20 Вольт. Вместо него может быть использован и другой транзистор, рассчитанный на ток до 1 Ампера. При появлении напряжения на линии зажигания, на затворе транзистора через диод VD1 и резистор R1, а также фары, диод VD3 и резистор R4 20кОм поступает ток, который заряжает затвор и открывает транзистор. Когда напряжение на линии зажигания пропадает, затвор разряжается через резистор R3 50кОм. Если в то время, когда зажигание включено и силовой транзистор VT4 открыт, размыкается выключатель ближнего света, то заряд конденсатора C1 через диод, встроенный в сам транзистор V1, продолжает удерживать разницу потенциалов между затвором и истоком транзистора, тем самым не давая ему закрыться, пока микроконтроллер не перейдёт в импульсный режим, что позволит конденсатору подзарядиться через фары. Одновременно с этим, вход от зажигания через диод VD2 и резистор R2 10кОм, открывает n-канальный МОП транзистор VT2. Он замыкает вывод PB4 микроконтроллера на "землю" микроконтроллера. К линии питания этот вывод подтягивается через встроенный в микроконтроллер подтягивающий резистор (порядка 40 кОм). Ток, проходящий через транзистор VT2 достаточно невелик, порядка 125мкА, но, так как его исток подключен на линию -5В, то важным параметром для его выбора должно являться небольшое пороговое напряжение затвора. Выбор пал на 2N7002 чьё пороговое напряжение не превышает 2,5 В. С учётом того, что между выводами 85 и 30 реле уже может существовать небольшая разница потенциалов, резистор R2 и диод VD2 выбраны так, чтобы минимизировать падение напряжения. В качестве диода используется всё тот же BAS321, при небольших токах падение напряжения на нём составляет порядка 0,7 Вольт. Когда зажигание отключается, затвор транзистора VT2 разряжается через резистор R5 50 кОм, напряжение на выводе PB4 повышается через встроенный подтягивающий резистор, тем самым микроконтроллер оповещается о выключении зажигания. За те несколько миллисекунд, которые обеспечивает конденсатор C1, микроконтроллер успевает разрядить затвор силового транзистора VT4 и перейти в режим ожидания. Резистор R7 20кОм притягивает вход PB3 микроконтроллера к линии -5В, удерживая тем самым низкий логический уровень на входе. При включении ближнего света через резистор R9 20кОм заряжается затвор p-канального МОП транзистора VT3, в качестве которого выбран IRLML5103, который притягивает вывод PB3 к линии питания и устанавливает высокий логический уровень. При отключении ближнего света, затвор транзистора VT3 разряжается через резистор R10 50кОм, и на входе PB3 микроконтроллера посредством резистора R7 устанавливается низкий логический уровень, оповещая микроконтроллер, что выключатель фар отключен. В этот момент, если силовой транзистор VT4 открыт, то конденсатор C1 не заряжается, но его заряда хватает, чтобы микроконтроллер успел переключиться в ШИМ-управление силовым транзистором, тем самым давая возможность, подзарядиться конденсатору через фары. Микроконтроллеры AVR обладают встроенным подтягивающий резистором на ножке сброса. Но, чтобы обеспечить стабильность работы в условиях возможных помех, в схему добавлен дополнительный подтягивающий резистор R8 5,1кОм. Режимы работыИтак, как ведёт себя схема при разных режимах? Зажигание и свет выключены. Транзисторы VT4 и VT1 закрыты. За исключением токов утечки в транзисторах, в пределах нескольких микроампер, ток не течёт. Включено зажигание. Через диод VD1 и резистор R1, резистор R4 и диод VD3, открывается транзистор VT1, конденсатор C1 заряжается, включается стабилизатор 79L05, подаётся питание на микроконтроллер. Через диод VD2, резистор R2 открывается транзистор VT2, который сажает вход PB4 микроконтроллера на "землю", чем оповещает что зажигание включено. Микроконтроллер ожидает включение света фар. Включен ближний свет. Через резистор R9 открывается транзистор VT3, и сажает вход PB3 микроконтроллера на линию питания, чем оповещает его о включении света фар. Конденсатор поддерживается заряженным через диод VD4. Контроллер управляет силовым транзистором VT4. Ближний свет выключен. Транзистор VT3 закрывается резистором R10 и микроконтроллер включает режим ШИМ для управления силовым транзистором. В промежутках, когда транзистор VT4 закрыт, конденсатор C1 подзаряжается через фары и диод VD3. В моменты когда VT4 открыт, VT1 удерживается открытым т.к. присутствующий заряд на C1 попадает на исток транзистора VT1 через встроенный диод. Выключено зажигание. Транзистор VT2 закрывается через резистор R5, через встроенный в микроконтроллер подтягивающий резистор на входе PB4 появляется высокий уровень, обнаружив который микроконтроллер закрывает VT4 и переходит в ждущий режим. Одновременно через резистор R3 закрывается транзистор VT1, отключая конденсатор от фар и выключателя света. Зажигание выключено, но переключатель ближнего света включен. В этом случае транзисторы VT1 и VT4 также закрыты, но через резисторы R9 и R10 утекает дополнительно 170 микроампер (при напряжении 12 Вольт) Отвод теплаСпецификация на силовой транзистор IRF9310 говорит, что при напряжении затвор-исток -4,5Вольта, сопротивление исток-сток составит максимум 6,8 мОм. Из расчёта с запасом, что фары потребляют 11А, мощность, рассеиваемая на транзисторе составит максимум 0,822 ватта. То есть корпус нагреется на 16,5 градусов, относительно ножек. Задача состоит в эффективном отводе тепла от места пайки транзистора. Спецификация указывает, что даже при пайке на 1 квадратный дюйм (квадрат 25,4 х 25,4мм) меди, толщиной 35мкм повышение температуры составит 50 градусов на ватт, т.е. 41 градус в нашем случае. Хотя в малом корпусе реле не удастся разместить такую площадку для охлаждения, однако отводить тепло можно наружу через ножку реле, припаяв сток транзистора как можно ближе к месту крепления ножки. Эксперимент при комнатной температуре показал, что, хотя транзистор и нагревается, несколько секунд удержать палец на нём можно. То есть его температура около 55-60 градусов, что на 30-35 градусов больше комнатной. Уровень вполне приемлемый. Алгоритм работы
Если зажигание было выключено, то при первом включении света фар происходит медленный разогрев: - в течение 3х секунд коэффициент заполнения ШИМ плавно нарастает до 30%; - затем, в течение 2х секунд остаётся на том же самом уровне, давая возможность лампам плавно набрать температуру; - затем, в течение 3х секунд повышается до 80%, давая уже приемлемый уровень освещения; - и, наконец, в течение 4х секунд доводится до 100%.
Когда свет фар отключается, то коэффициент заполнения ШИМ устанавливается сразу же на 50%, давая возможность заряжаться конденсатору. - Он удерживается на этом уровне в течение 0,5 секунды; - и затем плавно снижается до нуля в течение 0,5 секунды. Если зажигание не выключалось, то при повторном включении света фар происходит быстрый разогрев: - в течение 0,5 секунд уровень нарастает до 80%; - и затем в течение 1 секунды доводится до 100%.
Если во время медленного разогрева свет фар был выключен, то: - если уровень достиг 50%, то осуществляется переход к фазе удержания. - если уровень менее 50%, то свет выключается, и следующее включение фар будет считаться первым, будет выполняться плавный разогрев. Если во время быстрого разогрева свет фар был выключен, то: - если уровень больше, или равен 50%, то осуществляется переход к фазе удержания - если уровень менее 50%, то переход на фазу удержания осуществляется к той позиции спадающей части, которая соответствует текущему уровню. Иначе говоря, происходит плавное затухание без полусекундного удержания. Если во время фазы удержания свет фар был снова включен, то осуществляется переход к фазе быстрого разогрева, на точку графика, уровень которого соответствует текущему коэффициенту заполнения ШИМ. Программа микроконтроллераПрограмма реализует конечный автомат, находящийся в одном из шести состояний: - зажигание было отключено, ожидание включения света фар. - плавный разогрев - свет уже включался, ожидание повторного включения света фар - быстрый разогрев - лампа включена на 100% - удержание и гашение после отключения фар. ШИМ реализуется при помощи режима "phase-correct PWM" таймера, работающего на частоте процессора . В этом режиме обеспечивается полное отключение и полное включение при крайних значениях параметра ШИМ, а один период занимает 510 тактов процессора. При работе микроконтроллера на частоте 1,2 МГц, частота импульсов составляет 2353 Гц. Обработка состояний конечного автомата осуществляется в обработчике прерывания по переполнению таймера. // Прерывание по таймеру, выполняется 2353 раза в секунду ISR(TIM0_OVF_vect) { if (countdown > 0) { countdown--; return; } switch (current_state) { case STATE_SLOW_WARM: { // медленный прогрев uint8_t o = PWM_OC; if (o >= 254) { PWM_OC = 255; current_state = STATE_ON; } else { o++; PWM_OC = o; if (o < SLOW_RAMP_VALUE) { countdown = SLOW_RAMP_SPEED; } else if (o == SLOW_RAMP_VALUE) { countdown = SLOW_RAMP_HOLD; } else if (o < SLOW_WARM_VALUE) { countdown = SLOW_WARM_SPEED; } else { countdown = SLOW_LAST_SPEED; } } } break; case STATE_FAST_WARM: { // быстрый прогрев uint8_t o = PWM_OC; if (o >= 254) { PWM_OC = 255; current_state = STATE_ON; } else { o++; PWM_OC = o; if (o < FAST_WARM_VALUE) { countdown = FAST_WARM_SPEED; } else { countdown = FAST_LAST_SPEED; } } } break; case STATE_HOLD: { // удержание после отключения uint8_t o = PWM_OC; if (o <= 1) { PWM_OC = 0; current_state = STATE_LIGHT_OFF; } else { o--; PWM_OC = o; countdown = HOLD_FALL_SPEED; } } break; } } Также присутствует прерывание, наблюдающее за изменением логических уровней на входах PB3 и PB4. Если такое изменение зарегистрировано, вне зависимости от того на каком именно входе, оценивается состояние обоих входов, и в зависимости от этого и текущего состояния, автомат переводится в то, или иное состояние. // Прерывание по любому изменению логических уровней на входах "зажигание" и "выключатель света" ISR(PCINT0_vect) { if (is_ignition_on()) { if (is_switch_on()) { // Если зажигание включено, и выключатель включен. switch (current_state) { case STATE_IGNITION_OFF: current_state = STATE_SLOW_WARM; countdown = 0; break; case STATE_HOLD: case STATE_LIGHT_OFF: current_state = STATE_FAST_WARM; countdown = 0; break; } } else { // Если зажигание включено, но выключатель отключен switch (current_state) { case STATE_SLOW_WARM: if (PWM_OC >= HOLD_VALUE) { PWM_OC = HOLD_VALUE; current_state = STATE_HOLD; countdown = HOLD_COUNTDOWN; } else { current_state = STATE_IGNITION_OFF; PWM_OC = 0; countdown = 0; } break; case STATE_FAST_WARM: current_state = STATE_HOLD; if (PWM_OC >= HOLD_VALUE) { PWM_OC = HOLD_VALUE; countdown = HOLD_COUNTDOWN; } else { countdown = 0; } break; case STATE_ON: PWM_OC = HOLD_VALUE; current_state = STATE_HOLD; countdown = HOLD_COUNTDOWN; break; } } } else { // Если зажигание выключено - то выкл, без вариантов. current_state = STATE_IGNITION_OFF; PWM_OC = 0; } } Основное тело программы не выполняет никаких действий, а просто циклически переводит микроконтроллер в режим ожидания (idle). set_sleep_mode(SLEEP_MODE_IDLE); sleep_enable(); sei(); while(1) { sleep_cpu(); } В настройках микроконтроллера включен режим защиты по падению напряжения (Brown-out detector) установленный на уровень 2,7 Вольта. При падении напряжения ниже этого уровня микроконтроллер входит в состояние сброса. Задержка после сброса настроена на 64мс (настройка по-умолчанию). Изготовление реле
Как оказалось, Kia использует свои какие-то уникальные формы реле, которые не встретишь в магазинчиках на улице, лишь под заказ и за большие деньги. Реле симметричное четырёхногое: две ноги по диагонали – катушка, две другие ноги – замыкаемые контакты. В общем случае, это удобно: не нужно думать, какой стороной втыкать руле, оно будет работать и так и эдак. Но в нашем случае соблюдение полярности играет важную роль, если повернуть реле не той стороной, то это может привести к перегоранию силового транзистора. Что ж, придётся нарисовать на корпусе предупреждающую надпись и быть внимательным при установке.
Но разбирать реле не пришлось. Как оказалось, в моей машине предусмотрена опция дневных ходовых огней. Всё что нужно – это вытащить заглушку, по форме точь-в-точь реле, и на её место вставить обычное реле. Я так и сделал. В руках у меня оказалась эта заглушка-шунт. Мало того, что такой шунт куда удобнее в последующей обработке, так ещё и под заказ он обойдётся в разы дешевле, чем целое реле.
Немного подпилив и обработав шунт, я приступил к проектированию платы, которая поместилась бы в этот корпус. Места внутри не много: плата не должна превышать 19мм в ширину и 18мм в высоту. Плату пришлось делать двухсторонней. Стороны соединяются меж собой в четырёх точках. Для соединения я использовал кусочки ножек оставшихся от радиодеталей. Для вытравливания использовал Лазерно-Утюжную Технологию (ЛУТ), отпечатав шаблон на лазерном принтере, на глянцевой фотобумаге для струйной печати. Исходный код прошивки для AtmelStudio 6Исходный код прошивки микроконтроллера доступен для скачивания здесь: zip-файл, 9 кБ (последнее обновление от 12.10.2014) Помещённый здесь код, является свободным. То есть, допускается его свободное использование для любых целей, включая коммерческие, при условии указания ссылки на автора (Погребняк Дмитрий, http://aterlux.ru/). 6 ms; mod: Mon, 11 Jan 2021 09:39:36 GMT; gen: Thu, 21 Nov 2024 09:32:31 GMT |