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

Предлагаю вашему вниманию небольшую простенькую схемку на микроконтроллере TINY AVR, возможно интересную для начинающих.

Были у меня настенные часы с 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

Комментарии (29)

RSS свернуть / развернуть
Хоть бы фото приложил реализации, любопытно.
+3
-режим зануды On-
после первого абзаца поставьте тэг cut
-режим зануды Off-

фотка результата действительно интересна
+3
Да там фотографировать то нечего.
Земля и + припаяны к проводам, идущие от батареек.
Провод + от светодиода наращен и идет к R1-Q1.
Кондеры и резистор (smd 0805) припаяны к ножкам контроллера, все в термоусадке.
Снаружи часов сбоку сверху немного торчит фоторезистор.
0
  • avatar
  • vad7
  • 20 февраля 2013, 14:00
настройка весьма изящно)главное через год не потерять инструкцию как это делать.
+3
Ну я то уже прошил с проверенным значением, поэтому при замене батареек настраивать не надо. :)
А так да, EEPROMа этой тиньке не хватает…
0
  • avatar
  • vad7
  • 20 февраля 2013, 15:19
Ну всё-равно добавить бы настройку «нажал кнопку — текущую яркость выбрать пороговой». Там и вывод есть свободный.

P.S.: Корпус МК именуют SOT23-6, а уже «расшифровка» как SOT-23, только с 6 лапами.
И используйте ссылку «Ответить» под комментарием, к которому пишите ответ.
0
Внешний вид испортится — надо кнопку выводить, возможно дырки делать.
Можно, конечно, что-то типа геркона прикрутить, но настройка нужна либо никогда, либо один раз в год после замены батареек.
0
Ву упоминали что фоторезистор вывели через вентиляционную решётку. В эту же решетку можно поставить толкатель для кнопки. Или просто кнопку разместить под решеткой и нажимать её иголкой (по типу сброса в устройствах). Или тот же фоторезистот и сделать кнопкой.
0
М.б. поместить кнопку на дно корпуса, если позволяет его форма? Тогда и видно ее не будет и внешний вид не будет испорчен.
0
Вчера мучался из тини9. USBasp-ом програмировал. Но сперва намучался из ним, купил на ебеи, нужно было прошивку обновить чтоб прошить тиньку. Ещо вопросец. У етих тинек стандартная частота тактирования 1МГц?
0
Да. 8Mhz внутренний и 8 делитель
0
Такую схему и без МК можно было сделать.
А с МК можно было обойтись без фоторезистора. dcoder недавно писал топик о использовании светодиода в качестве датчика. Там же в комментах была ссылка на статью о измерении освещенности при помощи светодиода и МК (даже без АЦП), а также о использовании светодиода как приемопередатчика. Помимо прочего, в примерах приводилось именно измерение освещенности светодиодом подсветки с целью включений оной в темное время суток. Тогда бы не пришлось выводить наружу фоторезюк.
+1
  • avatar
  • Vga
  • 20 февраля 2013, 20:10
Такую схему и без МК можно было сделать.
А разве кто-то сомневается?
А можно без МК столь же мелким сделать?
А все ли в курсе о существовании шестилапых атмелов?
А вас оригинальность настройки не повеселила?
Это я к тому, что статья имеет гораздо больше, чем «логический элемент на микроконтроллере».
+2
А вас оригинальность настройки не повеселила?
Да, настройка прикольная. Нет, не особо повеселила, я Canon Pixma настраивал после сброса.
А можно без МК столь же мелким сделать?
Мелким — да, вот с энергопотреблением, возможно, придется помучиться.
0
А как сделать настройку пороговой освещенности без МК и не выводя наружу никаких ручек?
+2
Подстроечником в недрах. Подстроить достаточно один раз, при сборке.
-2
Ну, если бы я взялся за такой проект, то я бы скорее всего и использовал подстроечник для настройки. Сделал бы отверстие в неприметном месте (на нижней стенке, например), прикрепил бы подстроечник за ним, и крутил бы через дырку отверткой. Но без фонарика это уже не выглядит веселым.
0
Дырка не нужна. Регулируешь при установке и больше про регулировку даже не вспомнишь. А если и вспомнишь — разберешь часы быстрее, чем найдешь инструкцию по настройке.
Но без фонарика это уже не выглядит веселым.
О да!
Алсо, я бы все же сделал настройку более вменяемым вариантом. Можно применить интерфейс LEDComm (описан по моей ссылке), можно еще какой изврат придумать (скажем, можно сделать настройку первым попавшимся ИК ПДУ, дальность будет никакая, но это как раз плюс, а запомнить кнопки для входа в настройки, изменения уровня и применения куда проще, особенно если их выбрать логично — скажем, MENU, <, >, OK на пульте типичного телевизора).
0
Успокойтесь Вы. Это всего лишь подсветка часов. А то сейчас начнем ещё датчик движения, синхронизацию времени и пр городить. :)
+1
Ты так говоришь, как будто это что-то плохое.
0
Да не. Просто оставьте интригу про «часть вторая». Зачем сразу всё обламымать? потом же читать будет не интересно. :)
0
Просто оставьте интригу про «часть вторая».
Я тебя не понял.
0
Нет, не особо повеселила, я Canon Pixma настраивал после сброса.
там что, «посветите фонариком в левый верхний угол?»
0
Нет, там кнопочкой. В остальном инструкция крайне похожа) Все эти «нажмите пять раз», «индикатор мигнет три раза с подвывертом» и так далее.
0
Думал над этим, но светодиод утоплен внутрь корпуса и светит в торец LCD.
То есть на него очень мало света будет попадать.
0
Там хитрый рассеиватель и он, в принципе, работает в обе стороны. Кроме того, это не так уж и страшно — разве что замер освещенности будет происходить несколько дольше.
0
Для низкого потребления использовал режим Power-down с просыпанием по Watchdog каждые ~8 секунд, далее — измеряем, включаем/выключаем и опять засыпаем.
Молодец! Начинающие редко задумываются над вопросом энергопотребления.
+1
Настройка освещенности более чем занятна :)
+1
  • avatar
  • Ozze
  • 22 февраля 2013, 00:54
Это JFET, он ведет себя аналогично радиолампе, при нулевом напряжении на затворе максимально открыт, при опускании напряжения ниже истока закрывается. Т.е. при увеличении тока возрастает падение напряжения на резисторе, соответственно опускается напряжение на затворе относительно истока и транзистор прикрывается, уменьшая ток. ИОНом здесь служит пороговое напряжение полевика.
Правда, меня удивляет другое — что всей этой цепочке хватает напряжения. На таком источнике тока довольно высокое минимальное падение, плюс самому СИДу нужно все три вольта (хотя цвет не указан, если СИД красный или зеленый — то ему нужно около 1.5В), плюс сколько-то падает на пине МК.
0
  • avatar
  • Vga
  • 01 марта 2013, 05:22
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.