Управление подсветкой на светодиодах на микроконтроллере AVR
Как-то приобрел светодиодную ленту (5 метров, 300 светодиодов типоразмера 5050, яркие) в китайском интернет-магазине по хорошей цене (5 метров за 15$) с целью сделать подсветку на кухне над рабочим столом. Проверил ее и положил в тумбочку.
Долго она лежала, и вот на днях решил заняться этим вопросом, но начал с подсветки над домашним компьютерным столом. Закрепил ее, подключил 12 В блок питания – красота, но уж слишком ярко светят, перебор.
Было решено «по-быстрому» собрать какой-нибудь регулируемый ШИМ и встроить все это в системный блок и подключиться к его блоку питания, тем самым подсветка будет включаться/отключаться при включении/отключении компьютера.
Решил просто поделиться, может кому-то и пригодится, и сразу скажу - это не супер-пупер изобретение и не нужно говорить, что в Интернете можно найти кучу подобных схем, но с бОльшим функционалом, я делал этот для себя и очень быстро.
Я не стал что-то особенное выдумывать и приобрел микроконтроллер ATtiny45 (около 3$), в котором на базе таймера можно организовать 8-разрядный ШИМ. Тем более что при таком подходе можно организовать простое управление яркостью и запоминать установленный уровень яркости (благодаря встроенной в микроконтроллер EEPROM). Своего рода диммер с дискретной установкой уровня яркости свечения.
Так и сделал. Схема простая: микроконтроллер, силовой MOSFET, дроссель и конденсатор в качестве фильтра, кнопка управления. Делал все «на скорую руку». MOSFET P3055LS и дроссель когда-то снял с убитой материнской платы, кнопка тоже с компьютерного хлама.
Печатную плату не делал, просто аккуратно вырезал дорожки на кусочке стеклотекстолита. Для подключения к компьютерному блоку питания с неисправного IDE винчестера взял коннектор питания и посадил его на свою плату. Напряжение питания +12 В используется для питания светодиодной ленты, +5 В через диод IN4007 в smd корпусе – для питания микроконтроллера.
Программу микроконтроллера писал на Си в AVR Studio. В исходнике старался все комментировать.
Поясню некоторые моменты прошивки. Управление яркостью осуществляется с помощью кнопки циклически, каждое нажатие увеличивает значение скважность сигнала ШИМ от 0 до 100%, затем цикл повторяется. Обработка нажатия кнопки, запись соответствующего значения в регистр сравнения OC1B и запись установленного значения яркости в EEPROM ведется в прерывании по изменению лог. уровня на выводе PB3. В основном цикле программы лишь одна команда, которая отправляет микроконтроллер в спячку (режим Idle).
С момента подачи напряжения питания, выполняется настройка портов ввода/вывода, периферии и режима работы микроконтроллера. Затем выполняется задержка 2 сек и плавное зажигание светодиодов до последнего сохраненного уровня яркости, после чего микроконтроллер уходит в спячку.
Микроконтроллер тактируется от встроенного RC осциллятора 8 МГц (делитель тактовой частоты на 8 отключен). Кнопка подключена к порту PB3 (PCINT5), транзистор управляется с порта PB4 (OC1B). Вывод сброса Reset потянут к питанию. Для программирования микроконтроллера использовал PonyProg.
Программирование Fuse-битов для нового микроконтроллера (у которого установлены Fuse-биты по-умолчанию) сводится к отключению внутреннего делителя тактовой частоты на 8, т.е. нужно чтобы бит CKDIV8=1. Конфигурация Fuse-битов: младший байт (Low) = E2, старший байт (High) = DF.
Во вложениях фотки платы, компьютерного стола с включенным и выключенным освещением, а также исходник и прошивка микроконтроллера.
Долго она лежала, и вот на днях решил заняться этим вопросом, но начал с подсветки над домашним компьютерным столом. Закрепил ее, подключил 12 В блок питания – красота, но уж слишком ярко светят, перебор.
Было решено «по-быстрому» собрать какой-нибудь регулируемый ШИМ и встроить все это в системный блок и подключиться к его блоку питания, тем самым подсветка будет включаться/отключаться при включении/отключении компьютера.
Решил просто поделиться, может кому-то и пригодится, и сразу скажу - это не супер-пупер изобретение и не нужно говорить, что в Интернете можно найти кучу подобных схем, но с бОльшим функционалом, я делал этот для себя и очень быстро.
Я не стал что-то особенное выдумывать и приобрел микроконтроллер ATtiny45 (около 3$), в котором на базе таймера можно организовать 8-разрядный ШИМ. Тем более что при таком подходе можно организовать простое управление яркостью и запоминать установленный уровень яркости (благодаря встроенной в микроконтроллер EEPROM). Своего рода диммер с дискретной установкой уровня яркости свечения.
Так и сделал. Схема простая: микроконтроллер, силовой MOSFET, дроссель и конденсатор в качестве фильтра, кнопка управления. Делал все «на скорую руку». MOSFET P3055LS и дроссель когда-то снял с убитой материнской платы, кнопка тоже с компьютерного хлама.
Печатную плату не делал, просто аккуратно вырезал дорожки на кусочке стеклотекстолита. Для подключения к компьютерному блоку питания с неисправного IDE винчестера взял коннектор питания и посадил его на свою плату. Напряжение питания +12 В используется для питания светодиодной ленты, +5 В через диод IN4007 в smd корпусе – для питания микроконтроллера.
Программу микроконтроллера писал на Си в AVR Studio. В исходнике старался все комментировать.
Поясню некоторые моменты прошивки. Управление яркостью осуществляется с помощью кнопки циклически, каждое нажатие увеличивает значение скважность сигнала ШИМ от 0 до 100%, затем цикл повторяется. Обработка нажатия кнопки, запись соответствующего значения в регистр сравнения OC1B и запись установленного значения яркости в EEPROM ведется в прерывании по изменению лог. уровня на выводе PB3. В основном цикле программы лишь одна команда, которая отправляет микроконтроллер в спячку (режим Idle).
С момента подачи напряжения питания, выполняется настройка портов ввода/вывода, периферии и режима работы микроконтроллера. Затем выполняется задержка 2 сек и плавное зажигание светодиодов до последнего сохраненного уровня яркости, после чего микроконтроллер уходит в спячку.
Микроконтроллер тактируется от встроенного RC осциллятора 8 МГц (делитель тактовой частоты на 8 отключен). Кнопка подключена к порту PB3 (PCINT5), транзистор управляется с порта PB4 (OC1B). Вывод сброса Reset потянут к питанию. Для программирования микроконтроллера использовал PonyProg.
Программирование Fuse-битов для нового микроконтроллера (у которого установлены Fuse-биты по-умолчанию) сводится к отключению внутреннего делителя тактовой частоты на 8, т.е. нужно чтобы бит CKDIV8=1. Конфигурация Fuse-битов: младший байт (Low) = E2, старший байт (High) = DF.
Во вложениях фотки платы, компьютерного стола с включенным и выключенным освещением, а также исходник и прошивка микроконтроллера.
Всего комментариев 2
Комментарии
-
А где схема-то? Что за файлы в архиве?
Запись от ovp размещена 20.12.2013 в 16:51 -
Извините, что долго не отвечал...
Если актуально, то схема в архиве в формате Proteus.
Даю ссылку на архив, где есть схема в формате JPEG.
tiny45_LED_Dimmer_Sch_JPGЗапись от Vadzz размещена 04.01.2014 в 23:39