Данное устройство явилось в некотором роде преемником проекта "после Конкурса, все после Конкурса. Прим. Кота.". Хотя он и не вызвал особого интереса скорее ввиду некоторой специфичности и индивидуальности, тем не менее хочу предложить ещё один девайс, который по сравнению с вышеупомянутым ещё меньше по размеру, имеет более широкую функциональность и следовательно применение, а его энерговооруженность лучше.
А началось всё с того, что отдыхая в Турции я нечаянно в море утопил свои водонепроницаемые наручные часы и по приезду на Родину хотел уже было идти в магазин за новыми, но дома на глаза попались китайские полусломанные часы с относительно большим (для наручных) корпусом из какого-то нержавеющего сплава. Я подумал, что туда можно вставить самодельные часы, возможности которых ограничиваются только собственной фантазией и умением. В результате появилось устройство со следующими функциями:
1. Часы - календарь
- Отсчёт и вывод на индикатор часов, минут, секунд, дня недели, числа, месяца, года.
- Наличие автоматической корректировки текущего времени, которая производится каждый час (максимальные значения +/-9999 ед., 1 ед. = 3,90625 мс.)
- Вычисление дня недели по дате (для текущего столетия)
- Автоматический переход на летнее и зимнее время
- Учитываются високосные годы
2. Два независимых будильника (при срабатывании звучит мелодия)
3. Таймер с дискретностью 1 сек. (Максимальное время отсчета 99ч 59м 59с)
4. Двухканальный секундомер с дискретностью счета 0,01 сек. (максимальное время счета 99ч 59м 59с)
5. Секундомер с дискретностью счета 1 сек. (максимальное время счета 99 суток)
6. Термометр (диапазон от -55°С. до 125°С. с шагом 0,1°С)
7. Считыватель и эмулятор электронных ключей - таблеток типа DS1990 (память на 50 штук) с возможностью просмотра кода ключа (побайтно)
8. Дистанционный пульт управления на ИК лучах (реализована только команда "Сделать снимок") для цифровых фотокамер "Pentax"
9. Светодиодный фонарик
10. 7 мелодий
11. Звуковой сигнал в начале каждого часа (отключаемый)
12. Звуковое подтверждение нажатия кнопок (отключаемое)
13. Контроль напряжения батареи питания с функцией калибровки
14. Цифровая регулировка яркости индикатора
Может такая функциональность и избыточна, но я люблю универсальные вещи. Вообще устройство создавалось в первую очередь как наручные часы, а всё остальное как дополнительные возможности.
Принципиальная схема часов:
Устройство построено на микроконтроллере АТmega168-20AU. Часы тикают по таймеру Т2, работающему в асинхронном режиме от часового кварца на 32768 Гц. Микроконтроллер почти всё время находится в спящем режиме (индикатор при этом выключен), просыпаясь раз в секунду, чтобы добавить эту самую секунду к текущему времени и снова засыпает. В активном режиме МК тактируется от внутреннего RC осциллятора на 8 МГц, но внутренний прескалер делит её на 2, в итоге ядро тактируется от 4 МГц. Для индикации используется четыре одноразрядных семисегментных цифровых индикатора c общим анодом и децимальной точкой. Так же имеется 7 статусных светодиодов, назначение которых следующее:
D1- Признак отрицательного значения (минус)
D2- Признак работающего секундомера (мигает)
D3- Признак включенного первого будильника
D4- Признак включенного второго будильника
D5- Признак подачи звукового сигнала в начале каждого часа
D6- Признак работающего таймера (мигает)
D7- Признак низкого напряжения батареи питания
R1-R8 - токоограничительные резисторы сегментов цифровых индикаторов HG1-HG4 и светодиодов D1-D7. В качестве температурного датчика применён DS18B20. LS1 - обычная пьезоэлектрическая пищалка. R12,R13 - делитель напряжения для контроля батареи питания. Поскольку напряжение питания часов 3V, а белому светодиоду фонарика D9 надо около 4V, то он светится не в полную силу (но её хватает, чтобы не споткнуться в неосвещаемом подъезде) и поэтому подключен без токоограничительного резистора. Элементы R14, Q1, R10 предназначены для зажигания ифракрасного светодиода D8 (скорее всего функция ДУ для цифровых фотокамер "Pentax" большинству будет не нужна, тогда эти элементы можно не устанавливать). R19, R20 как не трудно догадаться служат для физической адаптации общения с устройствами, имеющими интерфейс 1-Wire. Управление осуществляется тремя кнопками, которые я условно назвал: MODE (режим), UP (вверх), DOWN (вниз). Первая из них также предназначена для пробуждения МК (при этом индикация включается), поэтому она подключена отдельно на вход PD3. Нажатия остальных двух определяется при помощи АЦП и резисторов R16, R17,R18. Если кнопки не нажимаются в течении 16 сек, то МК засыпает и индикатор гаснет. При нахождении в режиме "Пульт ДУ" этот интервал составляет 32 сек., а при включенном фонарике - 1 минуту. Также МК можно усыпить вручную, используя кнопки управления. При запущенном секундомере с дискретностью счета 0,01 сек устройство не переходит в спящий режим
Устройство собрано на двухсторонней печатной плате круглой формы по размеру корпуса наручных часов, чертеж и расположение деталей которых находятся в прилагаемых файлах.
При разработке встала проблема выбора индикатора. Хотелось бы конечно использовать ЖКИ, но я не нашел такого маленького со встроенным контроллером, чтобы влез в корпус. Из светодиодных понравился планарный KPSA02-105, но опять же 4 штуки чуть-чуть не входили в корпус, что меня несколько расстроило. В итоге не нашел ничего лучшего, как применить древний советский АЛ304Г с общим анодом, которые у меня где то завалялись, но яркость у них слабовата. Вообще при повторении конструкции наверно проще плату сделать побольше, поставить хорошие яркие индикаторы, взять корпус что-то типа брелка. Соединение катодов сегментов HG1, HG3 отличается от HG2, HG4, потому что так удобнее для топологии печатной платы. В связи с этим для них в программе использована различная таблица знакогенератора. Но так как более распространенным все таки является использование многоразрядного (в данном случае четырех) индикатора в одном корпусе, то я сделал ещё версию прошивки для такого случая (имеется в архиве со схемой). Для внутрисхемного программирования на плате имеются только 6 контактных площадок, так как полноценный разъем не уместился по высоте. Используемые резисторы и конденсаторы для поверхностного монтажа типоразмеров 0805 и 1206, светодиоды D1-D7 типоразмера 1206. Кварцевый резонатор от обычных наручных часов.
Ниже приведены фото собранной платы с двух сторон:
Подключается программатор к контактным площадкам J1 (те что справа от МК. Это как бы шестиконтактный разъём для внутрисхемного программирования). При этом удобнее прошивать без батареи, но чтобы питание поступало от программатора. Прошивки для FLASH и EEPROM прилагаются.
FUSE-биты микроконтроллера DD1 должны быть запрограммированы следующим образом:
CKSEL3...0 = 0010 - тактирование от внутреннего RC осциллятора 8 МГц;
SUT1...0 =10 - Start-up time: 6 CK + 64 ms;
CKDIV8 = 1 - делитель частоты на 8 отключён;
CKOUT = 1 - Output Clock on CKOUT запрещен;
BODLEVEL2:0 = 111 - контроль напряжения питания отключён;
EESAVE = 0 - стирание EEPROM при программировании кристалла запрещено;
WDTON = 1 - Нет постоянного включения Watchdog Timer;
Остальные FUSE - биты лучше не трогать. FUSE-бит запрограммирован, если установлен в "0".
Прошивка EEPROM прилагаемым в архиве дампом обязательна.
В первых ячейках EEPROM размещается начальные параметры устройства. В приведённой ниже таблице описывается назначение некоторых из них, которые можно менять в разумных пределах.
Небольшие пояснения по пунктам:
1. Здесь указывается величина напряжения на батарее, при которой загорится светодиод, сигнализирующий о её низком значении. Я поставил 2,6V (параметр - 260). Если нужно другое, например 2,4V, то надо записать 240($00F0). В ячейку по адресу $0000 заносится младший байт, соответственно в $0001 - старший.
2. Поскольку я не установил на плату переменный резистор для подстройки точности измерения напряжения батареи питания ввиду отсутствия места, то я ввел программную калибровку. Порядок калибровки для точного измерения следующий: изначально в данной ячейке EEPROM записан коэффициент 1024($400), необходимо перевести устройство в активный режим и посмотреть на индикаторе напряжение, и тут же замерить вольтметром реальное напряжение на батарее. Коэффициент коррекции (К), который необходимо выставить, вычисляется по формуле: K=Uр/Uи*1024 где Uр - реальное напряжение, измеренное вольтметром, Uи - напряжение которое, измерило само устройство. После подсчёта коэффициента "K" его заносят в устройство (как это делается сказано в инструкции по эксплуатации). После калибровки у меня погрешность не превысила 3%.
3. Здесь задается параметр времени, через которое устройство перейдет в спящий режим, если кнопки не нажимаются. У меня стоит 16 сек. Если допустим надо, чтобы засыпало через 30 сек, то надо записать 30($26). В 4 и 5 пунктах аналогично.
6. По адресу $0030 хранится код семейства нулевого ключа (dallas 1-Wire), затем его 48 битный номер и CRC. И так 50 ключей последовательно.
Устройство питается литиевой батареи CR2032 (3V) и потребляет в режиме сна примерно 8 мкА, а в активном режиме 10:20 мА в зависимости от яркости индикатора. По моим подсчетам (то есть теоретически) при ежедневном пятиминутном использовании активного режима батареи должно хватить на 5 месяцев (сам ещё пока не менял). Корпус часов соединен с минусом батареи.
Эмуляция ключей проверена на домофонах "VIZIT". Инструкция по эксплуатации находится в прилагаемых файлах.
Вид часов сзади со снятой крышкой
Внешний вид устройства:
Файлы:
Печатные платы в формате SL 5.0, GIF и JPG.
Прошивка МК.
Инструкция по применению.
Комплект схем.