Доработка подсветки часов - автовключение светодиода на AVR ATtiny10 по освещенности с регулировкой

Были у меня настенные часы с LCD фирмы Wendox.
И была у них подсветка на светодиоде, которую по какой-то прихоти их создателя, можно было включить только на 6 часов начиная с определенного времени.
Получается в зимнее время толку от этой подсветки было мало.
Часы, естественно, на каком-то микроконтроллере, в прошивку не влезешь, поэтому решил я доработать подсветку, чтобы включалась она по освещенности.
Часы на батарейках (3V) и внутри не так много места, вот и решил использовать крохотную тиньку — ATtiny10:
Память: 1K
ОЗУ: 32 байта
Напряжение питания: 1.8 — 5.5
Есть АЦП
Потребление в режиме сна < 0.1uA при 1.8V
Корпус SOT-23 (3x3мм) 6 ног, 4 для ввода/вывода, один из которых RESET.
Для низкого потребления использовал режим Power-down с просыпанием по Watchdog каждые ~8 секунд, далее — измеряем, включаем/выключаем и опять засыпаем.
Микроконтроллер работает на частоте 64KHz.
В качестве датчика освещенности использовал фоторезистор, похожий на KE-10720 (~100КОм при 1 lux).
Фоторезистор подключен между землей и портом ADC0 (пин 1).
В часах есть сбоку небольшая решетка, через которую фоторезистор смотрит наружу. Так что сверлить и пилить ни чего не пришлось.
Для упрощения схемы использовался подтягивающий резистор порта PB0.
Чтобы светодиод светил одинаково ярко при различном напряжении батареек использован простейший стабилизатор тока на полевом транзисторе.
Ток через светодиод около 1мA и регулируется подбором резистора R1.
Светодиод яркий — диаметр 3мм, 3V, 20mA.
Схема:

Программа написана на языке C в Atmel Studio 6.
Для регулировки сделана процедура настройки уровня срабатывания с помощью фонарика:
1. Осветить в упор фоторезистор фонариком более 5 (+8) секунд и дождаться пока мигнет 3 раза.
2. Выключить фонарик и дождаться 5 коротких вспышек.
3. Если посветить кратко (менее 1 сек) — уровень увеличивается (светодиод будет включаться при более ярком освещении)
4. Если посветить более 1 сек, но менее 6 — уровень уменьшается.
5. Если посветить более 6 сек — промигивает текущий уровень и текущее значение освещенности (длинные вспышки — сотни, средние — десятки, короткие — единицы).
6. Выход через 60 секунд бездействия — мигает 10 раз и затем текущий уровень срабатывания.
Программируется контроллер через TPI интерфейс.
Можно использовать AVRISP mkII (клон) со свежей прошивкой для Studio 6.
Прошивать можно и после сборки схемы, только надо фоторезистор чем-нибудь прикрыть.
- +4
- 20 февраля 2013, 12:18
- vad7
- 1
Файлы в топике:
LightSensor.zip
Ну я то уже прошил с проверенным значением, поэтому при замене батареек настраивать не надо. :)
А так да, EEPROMа этой тиньке не хватает…
А так да, EEPROMа этой тиньке не хватает…
Ну всё-равно добавить бы настройку «нажал кнопку — текущую яркость выбрать пороговой». Там и вывод есть свободный.
P.S.: Корпус МК именуют SOT23-6, а уже «расшифровка» как SOT-23, только с 6 лапами.
И используйте ссылку «Ответить» под комментарием, к которому пишите ответ.
P.S.: Корпус МК именуют SOT23-6, а уже «расшифровка» как SOT-23, только с 6 лапами.
И используйте ссылку «Ответить» под комментарием, к которому пишите ответ.
Внешний вид испортится — надо кнопку выводить, возможно дырки делать.
Можно, конечно, что-то типа геркона прикрутить, но настройка нужна либо никогда, либо один раз в год после замены батареек.
Можно, конечно, что-то типа геркона прикрутить, но настройка нужна либо никогда, либо один раз в год после замены батареек.
Такую схему и без МК можно было сделать.
А с МК можно было обойтись без фоторезистора. dcoder недавно писал топик о использовании светодиода в качестве датчика. Там же в комментах была ссылка на статью о измерении освещенности при помощи светодиода и МК (даже без АЦП), а также о использовании светодиода как приемопередатчика. Помимо прочего, в примерах приводилось именно измерение освещенности светодиодом подсветки с целью включений оной в темное время суток. Тогда бы не пришлось выводить наружу фоторезюк.
А с МК можно было обойтись без фоторезистора. dcoder недавно писал топик о использовании светодиода в качестве датчика. Там же в комментах была ссылка на статью о измерении освещенности при помощи светодиода и МК (даже без АЦП), а также о использовании светодиода как приемопередатчика. Помимо прочего, в примерах приводилось именно измерение освещенности светодиодом подсветки с целью включений оной в темное время суток. Тогда бы не пришлось выводить наружу фоторезюк.
Такую схему и без МК можно было сделать.А разве кто-то сомневается?
А можно без МК столь же мелким сделать?
А все ли в курсе о существовании шестилапых атмелов?
А вас оригинальность настройки не повеселила?
Это я к тому, что статья имеет гораздо больше, чем «логический элемент на микроконтроллере».
А вас оригинальность настройки не повеселила?Да, настройка прикольная. Нет, не особо повеселила, я Canon Pixma настраивал после сброса.
А можно без МК столь же мелким сделать?Мелким — да, вот с энергопотреблением, возможно, придется помучиться.
Ну, если бы я взялся за такой проект, то я бы скорее всего и использовал подстроечник для настройки. Сделал бы отверстие в неприметном месте (на нижней стенке, например), прикрепил бы подстроечник за ним, и крутил бы через дырку отверткой. Но без фонарика это уже не выглядит веселым.
Дырка не нужна. Регулируешь при установке и больше про регулировку даже не вспомнишь. А если и вспомнишь — разберешь часы быстрее, чем найдешь инструкцию по настройке.
Алсо, я бы все же сделал настройку более вменяемым вариантом. Можно применить интерфейс LEDComm (описан по моей ссылке), можно еще какой изврат придумать (скажем, можно сделать настройку первым попавшимся ИК ПДУ, дальность будет никакая, но это как раз плюс, а запомнить кнопки для входа в настройки, изменения уровня и применения куда проще, особенно если их выбрать логично — скажем, MENU, <, >, OK на пульте типичного телевизора).
Но без фонарика это уже не выглядит веселым.О да!
Алсо, я бы все же сделал настройку более вменяемым вариантом. Можно применить интерфейс LEDComm (описан по моей ссылке), можно еще какой изврат придумать (скажем, можно сделать настройку первым попавшимся ИК ПДУ, дальность будет никакая, но это как раз плюс, а запомнить кнопки для входа в настройки, изменения уровня и применения куда проще, особенно если их выбрать логично — скажем, MENU, <, >, OK на пульте типичного телевизора).
Это JFET, он ведет себя аналогично радиолампе, при нулевом напряжении на затворе максимально открыт, при опускании напряжения ниже истока закрывается. Т.е. при увеличении тока возрастает падение напряжения на резисторе, соответственно опускается напряжение на затворе относительно истока и транзистор прикрывается, уменьшая ток. ИОНом здесь служит пороговое напряжение полевика.
Правда, меня удивляет другое — что всей этой цепочке хватает напряжения. На таком источнике тока довольно высокое минимальное падение, плюс самому СИДу нужно все три вольта (хотя цвет не указан, если СИД красный или зеленый — то ему нужно около 1.5В), плюс сколько-то падает на пине МК.
Правда, меня удивляет другое — что всей этой цепочке хватает напряжения. На таком источнике тока довольно высокое минимальное падение, плюс самому СИДу нужно все три вольта (хотя цвет не указан, если СИД красный или зеленый — то ему нужно около 1.5В), плюс сколько-то падает на пине МК.
Комментарии (29)
RSS свернуть / развернуть