Кто бы мог подумать, что порой на первый взгляд простые вещи весьма сложно реализовать привлекательно… Хотя наверное здесь в самый раз стоит вспомнить о высказывании, что все гениальное просто! Именно поэтому эту привлекательную простоту не всегда легко воссоздать. Ведь она гениальна!
Что же, я уже начал повторять все высказывания по кругу, все они верны, но не приносят какой-либо пользы, а более напоминают сюжет, когда собака гоняется за своим собственным хвостом. Если же подходить к теме статьи предметно, то она будет о простом розжиге, то есть плавном включении, свечении светодиодов. Задача, кажется, весьма простой, но ее настоящее решение было нетривиальным. Я уже рассказывал о самых простых, но как вы понимаете не о самых лучших способах плавного розжига.
Все сводилось к использованию транзистора и конденсатора, по факту примитивная аналоговая схема, когда при плавном возрастании (изменении) потенциала на базе транзистора, меняется ток между эмиттером и коллектором.
Однако в этот раз речь пойдет о реализации плавного розжига на микроконтроллере, причем для двух каналов, то есть с возможностью выбрать два разных режима розжига и с экспоненциальной зависимостью. Собственно в этом случае кажущаяся простая задача переходит на новый уровень, а использование микроконтроллера для нее становится вполне оправданным.
Алгоритм розжига на микроконтроллере
Все стало таким сложным после того, как был опробован самый простой линейный режим розжига, то есть когда светодиод разжигается равномерно, от начала и до полного своего номинального свечения. Однако как бы это не показалось странным, но такой розжиг смотрится не очень красиво.
В итоге было решено сделать так, вначале светодиод зажигается и постепенно набирает свечения, а через какое-то время скорость его розжига увеличивается. Это происходит в конце фазы выхода на номинальный режим.
Такая задержка полного розжига смотрится интереснее, а на графике ее представить можно примерно вот так.
Ну и как я уже упоминал, будет два канала, две цепи управления. Это позволит не столько разделить мощность, сколько сделать каждый из розжигов разным по времени выхода на номинальный режим.
В одном случае он будет разгораться быстрее, в другом медленнее. То есть можно будет и здесь выбрать то, что больше нравится вам.
Однако при таком раскладе, уже нельзя будет использовать обычный delay, то есть осуществлять задержку каналов обычным выжиданием. Ведь такой операнд сам по себе полностью занимает микроконтроллер, а в этом случае надо будет смотреть то за одним светодиодом (цепью), то за другим. В итоге взял операнд – «millis» и пришлось ввести переменную времени – «unsigned long»
Вот так из весьма простой затеи розжига получился целый квест. Само собой и код стал несколько сложнее, но оно того стоило. Теперь у меня есть два канала, теперь розжиг осуществляется не линейно, а с небольшой изначальной задержкой и увеличением скорости при выходе на номинальный режим.
Скетч для плавного розжига на микроконтроллере Attiny 13, 13а, 85
Все о чем я говорил выше можно описать и другим языком в среде Arduino.
Смотреть код. (Attiny 13, на частоте 128 KHz)
В целом, как мне кажется, код получился весьма изящным. Пару независимых каналов и сложная зависимость выхода на режим.
Схема и плата для плавного розжига на микроконтроллере Attiny 13, 13а, 85
Схема получилась весьма простенькой. Две цепочки со светодиодами питаются от бортовой сети, через понижающий резистор, а далее управляются ключами (полевыми транзисторами P3055LD).
Ну и сразу приведу спецификацию по деталям применяемым в проекте. Сама схема открывается в программе TinyCAD и может быть в ней же отредактирована.
Применяемые радиоэлементы
Наименование | Обозначение на схеме | Номинал | Кол-во | Примечание |
Резистор | R5, R6 | 10 кОм | 4 | 1206 корпус |
Резистор | R3, R4 | 220 Ом | 2 | 1206 корпус |
Резистор | R1, R2 | 660 Ом | 2 | * - для 12 вольт |
Транзистор | tr1, tr2 | PD3055LD | 2 | TO-252 |
Диод | d1, d2 | 1N4148 | 2 | 1206 |
Микроконтроллер | u1 | Attiny 13 | 1 | 13а, 45, 85 |
Конденсатор | с1 | 100мкФ*30v | 1 | |
Стабилизатор | lm | LM7805 | 1 | TO-252 |
Что на счет платы, то она будет позаимствована из статьи о двух нагрузках. Ведь уже тогда я предполагал некую универсальность платы, то есть возможность ее применения и для других проектов, что собственно себя оправдало в настоящий момент.
На плате предусмотрено еще два входа. О них я еще не говорил, но они здесь по факту и не нужны, если вы не хотите использовать какие-то дополнительные опции цепи. Однако если возникнет желание, то для начала розжига можно подать управляющие сигналы.
На ножку 2 (IN1) это «+», на ножку 7 (IN), это «-». Если этого не требуется, то сразу подключаем «землю» на 7 ножку (перемычка между IN и ground) и все устройство запускается при подаче напряжения по умолчанию.
Теперь можно считать, что быть может не все, но основная часть розжига на микроконтроллере раскрыта. Приведу еще видео…
…и скажу, что если вы хотите что-то подобное, то пишите в комментариях. Также если есть вопросы, то тоже велком!
Да, с датчика '1' -плавный по экспоненте розжиг, '0' -плавное по экспоненте затухание. Один канал.
Хотелось бы увидеть программу для изучения.
Благодарен за то что отозвались!
novig1mail.ru
То есть датчик движения является управляющим сигналом для включения, то розжиг идет на включение, а когда он отработает (выйдет время), то опять же затухание плавное. Да вроде нет ничего в этом сложного. Должна быть одна управляющая ножка, которая видит логику, и включает розжиг, а когда реле в датчике размыкается, логика пропадает и идет затухание. Насчет сделать вы имеете ввиду вам программу написать или полностью собрать устройство?
Спасибо за вашу работу!
Долго искал включение по экспоненте
Могли бы вы сделать включение и выключение по экспоненте на attiny13 от сигнала с датчика движения?