Решил поделиться результатами своего хобби-проекта, возможно, кому-то из любителей DIY он покажется интересным и захочет повторить или как-то его использовать.
Был у меня такой фонарик «Космос 6011LED», его еще можно купить на озоне или wildberry (и не только там).
Однажды он сломался, я разобрал его и увидел, что корпус очень хорошо подходит для модификации - все модульное, есть свободное место и можно заменить его электронную начинку на свою: поменять светодиоды на цветные, добавить микроконтроллер в «умно» управлять их яркостью и в итоге сделать ее многоцветной и многорежимной.
Оригинальный фонарик излучает холодный белый свет. Слева на фото оригинал, справа доработанный.
Оригинальный фонарик (слева) и модифицированный (справа) Подробнее о процессе ремонта смотрите в этом видео.
Что касается светодиодов, то выбор пал на светодиоды формата «пиранья»; они хорошо вписываются в этот корпус и дают достаточно яркий свет. По высоте в каждой линии умещается ровно 8 светодиодов, 4 пары: красный, желтый, зеленый и синий.
К стандартному трио RGB я добавил желтый, чтобы сместить цветовую температуру в «теплую» сторону.
На очереди был вопрос о микроконтроллере – какой выбрать.
Семейство STM32 было для меня единственным выбором, так как опыт работы с ними у меня уже был, но изучать что-то новое (ардуино, например) не было ни времени, ни желания.
Внутри линейки STM32 — раньше я работал с STM32F407, но считал его слишком мощным для такого проекта.
Важно было, чтобы выбранная микросхема имела в наличии 16 ШИМ-выходов (для управления 4-мя светодиодными лентами по 4 пары светодиодов в каждой).
В итоге выбор пал на STM32F103RBT6. В относительно небольшом корпусе LQFP64 он имеет те же 16 выходов ШИМ, по 4 на каждый таймер TIM1 .
TIM4. В оригинальном фонаре используется свинцово-кислотный аккумулятор емкостью 2 Ач, я решил использовать более емкий литий-ионный аккумулятор емкостью 5 Ач, подходящий по размеру.
Оказалось, что выбрать компактный контроллер заряда для литиевого аккумулятора не так-то просто.
Сначала попробовал контроллер MCP73831T-2ACI - он работает, но выдает ток заряда всего 500 мА (маловато для 5Ач) и очень сильно греется для такого маленького корпуса (сот-23-5).
В итоге подошел контроллер TP4056 - он выдает зарядный ток около 1А, если немного позаботиться о радиаторе (подробности в видео, 23:20).
Дальше идет рутинная работа по проектированию принципиальных схем, разводке печатных плат и подбору элементов.
Первая итерация оказалась наполовину успешной (допустил несколько ошибок), но во второй раз получилась почти «чистая» сборка.
Отдельно хотелось бы отметить вопрос с питанием микроконтроллера, потому что.
Тут я сначала допустил ошибку - выставил линейный регулятор на 2,5В, но не посмотрел на его падение напряжения, а оказалось быть огромным - около 1,1В.
В результате при разряде литиевой батареи до 3,1В напряжение на выходе регулятора упало до 2В, что является минимально допустимым напряжением питания для данного МК.
Внизу — микроконтроллер начинает перезагружаться.
Вылечилось заменой на другой линейный стабилизатор с меньшим падением напряжения, около 0,4В.
Тогда даже при меньшем напряжении на выходе литиевой батареи, около 3В, мы все равно имеем стабильные 2,5В на выходе регулятора.
И самый интересный (по крайней мере для меня) блок работы — это разработка прошивки, особенно ее алгоритмической части, которая определяет, как светодиоды будут мигать и менять яркость.
На базовом уровне яркость контролируется с помощью ШИМ и таймеров.
Каждый таймер управляет яркостью одной светодиодной ленты, но скважностью импульса для каждого из 4-х выходов таймера можно управлять независимо.
Далее, на «более высоком уровне», алгоритм определяет, как яркость будет меняться со временем.
Пожалуй, самый интересный режим, для которого я все это делал, это имитация пламени – такое теплое, пульсирующее свечение.
С точки зрения алгоритма яркость каждого столбца меняется по кусочно-линейной функции, с элементом случайности (см.
видео, 20:30).
Это дало хороший результат, несмотря на то, что сам алгоритм прост. Неожиданным для меня оказалось то, что этот микроконтроллер «не может» нативно работать с числами с плавающей запятой — они там эмулируются, а это в разы медленнее, чем операции с числами int (сразу вспомнил компьютеры 386SX без сопроцессора).
Мне пришлось переписать всю математику, используя только целые числа, и это сработало.
С самого начала это задумывалось как хобби-проект и у меня не было намерений его монетизировать (дорого, нерентабельно), я просто хотел сделать несколько таких фонариков в подарок друзьям, что я и сделал (к Новому году - вот и все).
Я выложил файлы проекта в открытый доступ.
В архиве содержатся принципиальные схемы и печатные платы (разработаны в KiCAD), проект прошивки (разработан в Visual Studio 2015 с плагином Visual GDB).
В принципиальных схемах я указал ссылки на даташиты; почти все можно купить в Чипе и Дипе.
Кое-что пришлось заказать на алиэкспресс (провода с разъемами JST XH например).
В получасовом видео не удалось рассказать обо всех тонкостях и нюансах, поэтому если у вас возникнут вопросы, буду рад ответить в комментариях.
Теги: #Программирование микроконтроллеров #Сделай сам или Сделай сам #stm32f103 #Светодиоды #микроконтроллер
-
Sony Представила Самый Тонкий Ноутбук
19 Oct, 24 -
Лауреаты Премии Рунета
19 Oct, 24 -
«Страсти» Для World Of Warcraft И Blizzard
19 Oct, 24 -
Надежда Строганкова
19 Oct, 24 -
Давай Займемся Работой Не Глядя
19 Oct, 24