Регулятор яркости (ШИМ) для светодиодного драйвера или велофары

ШИМ-регулятор яркости на МК ATmega8, с батарейным питанием, и индикацией заряда.

Статья предназначена для лиц, обладающих некоторыми знаниями по радиоэлектронике, а именно:

  • что такое микроконтроллер и как его прошить,
  • что такое ШИМ-регулирование,
  • что такое светодиодный драйвер.

Проект придумывался для установки на велосипед. С чего всё начиналось. Мы с друзьями частенько участвовали в ночных вело-покатушках, поэтому нужна была фара на велосипед. Ну а обычный фонарик ставить не хотелось… нужно было что-нибудь по функциональней. К примеру, с регулировкой яркости «маленькая / средняя / максимальная», а потому что в качестве питания планировалось использовать литий-ионный аккумулятор, то нужен был ещё и индикатор уровня заряда. В интернете я видел много подобных проектов, но они чем-то меня не устраивали. К примеру, мне встречались проекты ШИМ-регуляторов яркости, но у них либо отсутствовал индикатор уровня заряда, либо индикатор уровня заряда был на 1…3 светодиодах, а мне не нравилась такая маленькая информативность. Ну что ж, делать так делать, и я взялся за сборку своего проекта. Итак, в качестве индикатора заряда я беру 10 светодиодов, а вернее, беру светодиодный «столбик», вот такой:

Данный светодиодный «столбик» я заказал в интернет-магазине (в нашем городе отсутствуют радиомагазины), поэтому он приедет лишь через пару недель. Вместо него я временно поставил 10 обычных светодиодов.

В качестве управляющего микроконтроллера я использовал ATmega8 (либо ATmega328), потому что у данного МК имеется АЦП, при помощи которого я организовал измерение уровня заряда аккумулятора. Также у данного МК имеется достаточное количество выводов (а мы ведь хотим подключить аж 10 светодиодов). Данный микроконтроллер распространён в радиомагазинах, и стоит отностиельно дёшево – в районе 50…100 рублей, в зависимости от жадности магазина и типа корпуса.

Чтобы понять, как работает устройство, посмотрим на блок-схему:

В данной статье описывается лишь то, что касается ШИМ-регулятора (левая часть блок-схемы), а драйвер светодиода и сам светодиод Вы выбираете на свой вкус, тот который Вам больше подходит. Мне подходит драйвер ZXSC400, поэтому его я буду рассматривать как пример.

ШИМ-регулятор должен быть подключен к светодиодному драйверу, у которого есть функция регулировки яркости (DIM, PWM, и т. п.), например, ZXSC400. Можно использовать любой другой подходящий драйвер, главное чтобы он поддерживал ШИМ-регулировку яркости, и питался от того же аккумулятора, которым питается ШИМ-регулятор. Для тех, кто не знает что такое светодиодный драйвер – поясню: драйвер нужен для того, чтобы светодиод светился одинаково ярко как при заряженном аккумуляторе, так и при севшем аккумуляторе. Иными словами – драйвер светодиода поддерживает стабильный ток через светодиод.

Типовая схема включения светодиодного драйвера ZXSC400:

Питание этой схемы нужно соединить с питанием нашего ШИМ-регулятора, а ШИМ-выход с регулятора нужно подключить ко входу «STDN» драйвера ZXSC400. Вывод «STDN» как раз служит для регулировки яркости при помощи ШИМ сигнала. Аналогичным способом можно подключить ШИМ-регулятор ко многим другим светодиодным драйверам, но это уже отдельная тема.

Алгоритм работы устройства. При подаче питания, МК на 1 секунду отображает уровень заряда аккумулятора (на светодиодной шкале из 10 светодиодов), далее светодиодная шкала гаснет, МК переходит в режим энергосбережения, и ждёт команд управления. Всё управление я сделал на одной кнопке, чтобы на велосипеде тянуть меньше проводов. При удерживании кнопки более 1 секунды, ШИМ-регулятор включается, на ШИМ-выход подаётся сигнал со скважностью 30% (1/3 яркости светодиода). При повторном удерживании кнопки более 1 секунды, ШИМ-регулятор выключается, на ШИМ-выход не подаётся сигнал (скважность 0%). При кратковременном нажатии на кнопку, происходит переключение яркости 30% — 60% — 100%, а также на 1 секунду отображается заряд аккумулятора. Таким образом, однократное нажатие изменяет яркость светодиода, а долгое нажатие включает/выключает светодиод. Для проверки работоспособности ШИМ-регулятора, я подключил к его выходу обычный светодиод, но ещё раз повторюсь – исключительно в целях проверки работоспособности. В дальнейшем я подключу ШИМ-регулятор к драйверу ZXSC400. Более подробно и наглядно работа устройства показывается на видео (ссылка в конце статьи).

Также процесс регулировки яркости показывает следующая схема:

Что делать, если не устраивают данные значения яркости? К примеру, хочется чтобы было так: 1 %, далее 5 %, далее 100 %. Я предусмотрел и такой вариант. Теперь пользователь может сам установить эти три значения яркости, какие ему хочется! Для этого я написал небольшую программку, которая на основе желаемых значений генерирует файл для прошивки EEPROM. Прошив в микроконтроллер данный файл, яркости соответственно поменяются на желаемые. Прилагаю скриншот окна программы:

Если не прошивать файл EEPROM, то значения яркости останутся «по умолчанию» — 30 %, 60 %, 100 %. Правильно собранное устройство не нуждается в настройке. При желании можно лишь настроить минимальную, среднюю, и максимальную яркость по своему усмотрению. Программка и инструкция по использованию находятся в конце статьи.

Выбор используемого аккумулятора. Я использовал Li-ion аккумулятор ввиду его распространённости и дешевизны. Но в схеме я предусмотрел перемычку J1, при помощи которой можно выбрать, что мы используем в качестве питания.

Если перемычка J1 находится в положении «1», то используется один Li-ion аккумулятор. Если перемычка J1 находится в положении «2», то используются три обычные батарейки типа AAA/AA/C/D, соединённые последовательно. Перемычка J1 необходима для правильного отображения уровня заряда аккумулятора, потому что у Li-ion аккумулятора рабочее напряжение находится примерно в диапазоне 3,3…4,2в, а у обычных батареек рабочее напряжение примерно равно 3,0…4,5в. Таблицы соответствия напряжений аккумулятора с показаниями индикатора я приложил внизу статьи.

Индикаторные светодиоды. Светодиоды, отображающие уровень заряда аккумулятора, могут быть любыми. Подстроить их яркость в небольших пределах можно при помощи изменения номинала токоограничивающего резистора R1. Для отображения уровня заряда используется динамическая индикация, благодаря которой достигается экономия энергии, потому что в один момент времени светится лишь один светодиод. Про индикацию уровня заряда аккумулятора также можно посмотреть на видео (ссылка в конце статьи).

Схема устройства:

Микроконтроллер может быть как ATmega8, так и ATmega328. Оба этих микроконтроллера совместимы по расположению контактов, и различаются лишь содержанием «прошивки». Я использовал ATmega328, потому что этот МК был у меня в наличии. В целях снижения энергопотребления, микроконтроллер работает от внутреннего RC-генератора на 1 МГц. Программа микроконтроллера написана в среде FlowCode 4.3.6.61 (или 4.3.9.65).

В схеме применена микросхема-источник опорного напряжения TL431. С её помощью достигается неплохая точность измерения напряжения аккумулятора. Питание на TL431 подаётся с вывода PC1 микроконтроллера через резистор R3. Подача напряжения питания на TL431 происходит лишь во время индикации уровня заряда. После того, как светодиоды индикации гаснут, подача питающего напряжения прекращается, обеспечивая экономию энергии аккумулятора. Микросхему TL431 можно найти в негодных блоках питания от компьютеров, в сломанных зарядных устройствах от сотовых телефонов, в импульсных блоках питания от ноутбуков и различной радиоэлектронной техники. Я применил TL431 в корпусе SOIC-8 (smd вариант), но TL431 больше распространена в корпусе TO-92, поэтому я сделал несколько вариантов печатных плат.

Об эмуляции в программе «Proteus«. Проект в Proteus работает некорректно. Ввиду того, что модель ATmega8 не выходит из спящего режима, а также с тормозами отображается динамическая индикация. Если после запуска проекта, сразу удерживать кнопку, чтобы ШИМ-регулятор включился, то всё работает. Но стОит повторным удерживанием кнопки выключить ШИМ-регулятор, как МК погрузится в сон, и больше не проснётся (до перезапуска проекта). Проект в Proteus не прилагаю. Кто хочет поиграться – пишите, вышлю проект в Proteus.

Основные технические характеристики:

  • Напряжение питания, при котором гарантируется работоспособность:   2,8 … 5 вольт
  • Частота ШИМ сигнала:   244 Гц
  • Частота динамической индикации шкалы из 10 светодиодов:   488 Гц (на 10 светодиодов) или 48,8 Гц (на каждый светодиод)
  • Количество режимов яркости, переключаемых по циклу:   3 режима
  • Возможность изменения пользователем яркости каждого из режимов:   Имеется

Ниже вы можете скачать прошивки для МК ATmega8 и ATmega328

Шутов Максим, г.Вельск


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

U1
МК AVR 8-битATmega8-16PU1
U2
ИС источника опорного напряженияTL431ILP1
РезисторыR1, R2
Резистор постоянный SMD 1206330 Ом2
R3
Резистор постоянный SMD 12061 кОм1
R4
Резистор постоянный SMD 120610 кОм1
R5
Резистор постоянный SMD 120647 кОм1

Резистор постоянный SMD 12060 Ом (перемычка)1
КонденсаторыC1, C2,
Конденсатор керамический SMD 12060.1 мкФ3
C3
Электролитический конденсатор470 мкФ 10В1
 D1-D10
Светодиод10
S1
Кнопка тактовая1
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.