После сборки «минипрожектора» http://www.speleokiev.org.ua/forum/viewtopic.php?f=6&t=266 выяснилось, что внутри полно свободного места (Рис. 1) которое нехорошо оставлять незадействованным. Перебрав несколько вариантов, чего бы туда запихнуть, остановился на простом индикаторе состояния батарей. Ранее хотел туда запихнуть еще и термоконтроль, и разные режимы освещения, но в результате тестов стало ясно, что термоконтроль не нужен, так как радиатор нагревается не выше 50С. Разные режимы тоже не нужны, скорее всего, даже мешают, потому что девайс используется только на максимальной мощности. Итого из всей задумки полезным остался только индикатор разряда, который предупредит о скором разряде батарей и не даст убить аккумы, если таковые используются.
Идея, как реализовать индикатор была позаимствована у дяди Petzl'а. Мигающий светодиодик, если мигает зеленым - батареи нульцовые, если желтым – чуток поюзаные, если оранжевым – хорошо поюзаные, а если красным – готовимся их менять. Реализовать такую задумку проще всего на микроконтроллере и RGB светодиоде. Также можно поизвращатся с супервизорами, компараторами, но это в мои планы не входило, поскольку готовое устройство должно отличаться компактностью. В закромах был найден AtTiny45 (далее МК) в корпусе SO-8 и маломощный SMD RGB светодиод, а также немного мелочевки. Была нарисована принципиальная схема (Рис.2) и эскиз платки (Рис.3).
Так, как новые, последовательно соединенные 4 АА батарейки в сумме дают напряжение около 6,4В, а контроллеру максимум можно скормить 5,5В в схему был введен диод D1 и резистор R1, которые гасят «лишнее» напряжение. Делитель R2-R3 обеспечивает подачу сигнала на АЦП не более 2,56В, потому что для «оцифровки» используется внутренний источник опорного напряжения на 2,56В (встроен в МК). Конденсаторы С1, С2 – блокировочные. Светодиод D2 – RGB с общим анодом, в одном корпусе размещен красный, зеленый и синий диод (синий мы использовать не будем). Изменяя токи через каждый из диодов, можно выжать практически любой цвет из видимого спектра. Это мы будем делать с помощью встроенного в МК аппаратного ШИМ. Резистор R4 выставляет общую яркость индикации. Также не забываем подключать Reset МК к + питания, иначе возможны глюки в работе. Источником тактирования Tiny45 будет выступать встроенный RC генератор на 8 Мгц. Платку стараемся сделать поменьше, чтобы влезла в корпус Ж), у меня плата получилась 25х15мм (Рис. 4).
Для управления МК была написана программа на С. Программа проста, как два пальца, инициализируется порты ввода-вывода, ШИМ, АЦП, после чего в вечном цикле считывается напряжение с АЦП и мигает соответствующим цветом (Рис.5). Также в начале программы для красоты добавил попеременное мигание красным и зеленым, что сигнализирует удачный старт МК.
Теперь осталось дело за малым – запрограммировать контроллер. За этим отсылаю сюда: http://avr.nikolaew.org/progr.htm, где популярно описано, как это можно сделать. В двух словах это выглядит так: подпаиваемся к контроллеру 5 проводков, на ножки 1,4,5,6,7, эти проводки очень аккуратно, согласно даташиту на МК http://atmel.com/dyn/resources/prod_documents/doc2586.pdf (чтобы ничего не спалить) тыкаем в свой LPT или COM порт и с помощью специальной софтины заливаем файл прошивки. Готовую программу и бинарники можно взять отсюда: http://depositfiles.com/ru/files/ga0xdltwg (проект в AVR Studio 4 в связке с WinAvr)
После тестов, платка индикации была втиснута в мой Duo (Рис.6). Для демонстрации было добавлено видео http://www.youtube.com/user/vakulasergio#p/a/u/0/lMGau2HEqg4 работы девайса. На видео с помощью потенциометра меняю напряжение питания и смотрю на реакцию. Индикатор потребляет всего 3мА тока, при сравнении с 260мА, что потребляет «минипрожектор» кажется сущей ерундой.
Некоторые могут заметить: «Зачем мол использовать дорогой Tiny45 под такую мелкую поделку как индикатор разряда, ведь Tiny13 минимум в раза 2 дешевле». Нерационально. Соглашусь с этим, но во время ваяния устройства в закромах был только Tiny45 в соике, а специально ездить на радиорынок за Tiny13-м было лень Ж) Как буду делать еще один такой – переделаю под 13-ю тиньку.
Идея, как реализовать индикатор была позаимствована у дяди Petzl'а. Мигающий светодиодик, если мигает зеленым - батареи нульцовые, если желтым – чуток поюзаные, если оранжевым – хорошо поюзаные, а если красным – готовимся их менять. Реализовать такую задумку проще всего на микроконтроллере и RGB светодиоде. Также можно поизвращатся с супервизорами, компараторами, но это в мои планы не входило, поскольку готовое устройство должно отличаться компактностью. В закромах был найден AtTiny45 (далее МК) в корпусе SO-8 и маломощный SMD RGB светодиод, а также немного мелочевки. Была нарисована принципиальная схема (Рис.2) и эскиз платки (Рис.3).
Так, как новые, последовательно соединенные 4 АА батарейки в сумме дают напряжение около 6,4В, а контроллеру максимум можно скормить 5,5В в схему был введен диод D1 и резистор R1, которые гасят «лишнее» напряжение. Делитель R2-R3 обеспечивает подачу сигнала на АЦП не более 2,56В, потому что для «оцифровки» используется внутренний источник опорного напряжения на 2,56В (встроен в МК). Конденсаторы С1, С2 – блокировочные. Светодиод D2 – RGB с общим анодом, в одном корпусе размещен красный, зеленый и синий диод (синий мы использовать не будем). Изменяя токи через каждый из диодов, можно выжать практически любой цвет из видимого спектра. Это мы будем делать с помощью встроенного в МК аппаратного ШИМ. Резистор R4 выставляет общую яркость индикации. Также не забываем подключать Reset МК к + питания, иначе возможны глюки в работе. Источником тактирования Tiny45 будет выступать встроенный RC генератор на 8 Мгц. Платку стараемся сделать поменьше, чтобы влезла в корпус Ж), у меня плата получилась 25х15мм (Рис. 4).
Для управления МК была написана программа на С. Программа проста, как два пальца, инициализируется порты ввода-вывода, ШИМ, АЦП, после чего в вечном цикле считывается напряжение с АЦП и мигает соответствующим цветом (Рис.5). Также в начале программы для красоты добавил попеременное мигание красным и зеленым, что сигнализирует удачный старт МК.
Теперь осталось дело за малым – запрограммировать контроллер. За этим отсылаю сюда: http://avr.nikolaew.org/progr.htm, где популярно описано, как это можно сделать. В двух словах это выглядит так: подпаиваемся к контроллеру 5 проводков, на ножки 1,4,5,6,7, эти проводки очень аккуратно, согласно даташиту на МК http://atmel.com/dyn/resources/prod_documents/doc2586.pdf (чтобы ничего не спалить) тыкаем в свой LPT или COM порт и с помощью специальной софтины заливаем файл прошивки. Готовую программу и бинарники можно взять отсюда: http://depositfiles.com/ru/files/ga0xdltwg (проект в AVR Studio 4 в связке с WinAvr)
После тестов, платка индикации была втиснута в мой Duo (Рис.6). Для демонстрации было добавлено видео http://www.youtube.com/user/vakulasergio#p/a/u/0/lMGau2HEqg4 работы девайса. На видео с помощью потенциометра меняю напряжение питания и смотрю на реакцию. Индикатор потребляет всего 3мА тока, при сравнении с 260мА, что потребляет «минипрожектор» кажется сущей ерундой.
Некоторые могут заметить: «Зачем мол использовать дорогой Tiny45 под такую мелкую поделку как индикатор разряда, ведь Tiny13 минимум в раза 2 дешевле». Нерационально. Соглашусь с этим, но во время ваяния устройства в закромах был только Tiny45 в соике, а специально ездить на радиорынок за Tiny13-м было лень Ж) Как буду делать еще один такой – переделаю под 13-ю тиньку.