Печать

Наручные часы на Atmega328 и OLED дисплее

Опубликовано . Опубликовано в Устройства на AVR

Рейтинг:   / 56
ПлохоОтлично 

Наручные часы на Atmega328 и OLED дисплее

Главным стимулом создания этого проекта был вопрос - как много я смог бы втиснуть с точки зрения аппаратного и программного обеспечения в наручные часы, устройство которое не больше по размерам, чем его дисплей. OLED -дисплей был выбран из-за того, что его толщина только 1,5 mm, ему не требуется подсветка (каждый пиксель производит свой собственный свет), но главным образом потому, что он выглядит очень круто.

Первоначально для часов планировалось использовать дисплей 0,96", но это оказалось слишком сложно, чтобы воплотить в нем все свои идеи. Решение увеличить размер экрана до 1,3" было правильным.

Аппаратная реализация

В аппаратной части часы содержат микроконтроллер Atmel ATmega328P, 2,5 V регулятор напряжения Torex, часы реального времени DS3231M(RTC), 1.3" 128x64 монохромный OLED дисплей, 2 светодиода (красный и зеленый), зуммер, 3-х позиционный переключатель для навигации, питание от 150 mAh LiPo аккумулятора, который можно заряжать через USB и 2-х печатных плат(хотя одна используется только для монтажа OLED дисплея).

Принципиальная схема часов

Принципиальная схема часов

ATmega328P использует свой внутренний генератор 8 МГц и работает от 2,5 V линейного регулятора. Ее ток потребления составляет около 1,5 mА при активной и 100 nА в режиме сна.

DS3231M является отличным прибором, который выпускается в небольшом 8-ми контактном корпусе и включает в себя встроенную температурную компенсацию MEMS резонаторов с точностью ± 5 ppm (± 2 минуты 40 секунд в год). В обвязке только фильтрующий конденсатор и несколько дополнительных подтягивающих резисторов. Питание RTC подключено не к выводу VCC, а к выводу Vbat, для того чтобы уменьшить ток потребления с 100 uА до 2,5uA. К сожалению, этот чип очень трудно заполучить по разумной цене, если вы не в США. Я получил необходимое количество DS3231M в качестве образцов.

Для зарядки аккумулятора используется Microchip MCP73832 вместе с некоторыми дополнительными компонентами для распределения нагрузки, где батарея может заряжатся без вмешательства в остальную часть часов.

Вы могли заметить, что на схеме светодиоды напрямую связаны с микроконтроллером без резисторов. Внутренние MOSFET микроконтроллера имеют сопротивление около 40 Omh, напряжение с 2,5 V падает до 2 V, что достаточно для питания светодиодов. Мне хотелось использовать синий светодиод, но у него большое падение напряжения, что потребовало бы увеличить напряжение питания до 3 V и ставить некоторые дополнительные резисторы и MOSFET.

Поскольку микроконтроллер работает от 2,5 V чтобы измерить напряжение батареи нужно понизить этот сигнал перед тем как подключить его к АЦП. Для этого используется делитель напряжения. Однако, делитель напряжения подключен параллельно батарее и через него будет постоянно протекать ток 350 uA, а это огромная трата энергии. В этой версии проекта добавлен P-MOSFET, чтобы делитель был включен только при необходимости.

2,5 V регулятор используется марки Torex XC6206, в первую очередь я выбрал его из-за своего крошечного ток покоя, всего 1 uA. Почему выбран линейный регулятор, а не импульсный? КПД у импульсного стабилизатора не менее 80% при нагрузке 2 mА, но с нагрузками 100 uА его эффективность падает до менее чем 50%. Так как потребление устройства в спящем режиме составляет 2-3 uA, импульсный стабилизатор показал себя невероятно плохо по сравнению с линейным регулятором. Эффективность 2,5 V линейного регулятора составляет до 60% с 4,2 V на  входе и до 83% с 3 V на входе.

Нижняя сторона платы

Верхняя сторона платы под дисплеем

Программное обеспечение

Итак, мы имеем в нашем распоряжении хороший OLED-дисплей и 32 КB флеш памяти микроконтроллера, конечно же, мы можем иметь больше, чем просто время и дату?

Почти все анимировано

Много времени было потрачено на оптимизацию кода визуализации, который включает в себя копирование растровых изображений с флэш в кадровый буфер оперативной памяти и отправки кадра по SPI на OLED. Конечный результат был способен поддерживать 100 FPS почти во всех областях с частотой генератора микроконтроллера 8 МГц. Однако, поскольку кадр анимации длится определенное время, чтобы сократить расход энергии, частота кадров ограничена до 60 FPS.

Некоторые из основных анимированных кадров:

- CRT анимация при входе и выходе из спящего режима (по аналогии с анимацией Android CRT).
- Цифры главных часов имеют эффект Ticker.
- Меню имеет анимированные прокрутки влево/вправо, при входе в текущее меню, при навигации по меню выше или ниже.

Будильники

- Активация до 10 будильников.
- Количество будильников ограничено только количеством доступных EEPROM и RAM.
- У каждого будильника настраиваются часы, минуты и в какие дни недели он должен быть активным.

Будильники

Игры

Побег

АвтомобильDodge

Приложения

Фонарик. Включаетвсе пикселиOLEDи

светодиоды, а также имеетрежим

стробоскопа

 

 

Стопкадр

Некоторые возможности:

- 3 канала регулировки громкости для:

Основного режима;
Будильника;
Почасового сигнала.

Регулировка громкости

- Режим ожидания
- Регулировка яркости дисплея
- Анимация

Вы же не собираетесь, от этого отказываться, или может g shock купить спб ?

Энергосбережение

В активном режиме микроконтроллер пытается уйти в режим сна при каждой возможности. В режиме сна контроллер просыпается на миллисекунду чтобы посмотреть нуждается устройство в обновлении, если нет, то он возвращается в режим сна, это обычно занимает менее 100 us, если дисплей не нуждается в обновлении. В этом режиме ток потребления может быть примерно от 0,8 мА до 2 мА, в зависимости от того, как долго высвечивается кадр.

В режиме сна микроконтроллер отключает OLED дисплей и уходит в спящий режим, где его разбудит только нажатие кнопки, сигнал от RTC или при подключении к USB. В этом состоянии микроконтроллер потребляет ничтожные 100 nА.

В спящем режиме общий ток потребления часов 6 uA. В активном режиме ток может варьироваться от 2 мА до более чем 70 мА, средний ток потребления 10 mA.

Общее потребление тока, емкость аккумулятора: 150mAh

Минимальный
(В режиме сна)
Нормальный
(Индикация главных часов)
Высокий
(Фонарик)
6uA
2.85 years
10mA
15 hours
64mA
2 hours, 20 minutes

Если часы находятся в активном режиме в среднем 1 минуту в день (с 5-секундный тайм-аутом сна и проверкой времени 12 раз в день), то они должны работать около 1 года 4 месяцев на одной зарядке. (30 дней, если часы просыпаются на 1 минуту в час).

Потребление тока для отдельных компонентов

Компонент Потребление тока
ATmega328P (сон/активный) 100nA / 1.5mA
OLED (сон/активный) 500nA / 8.5mA
DS3231M RTC 2.5uA
Диод Шоттки (D1) (ток обратной утечки) 1uA
Регулятор (ток покоя) 1uA
Другие (MOSFET и конденсаторы и т.п. утечки) 1uA
Всего (сон/активный) 6.1uA / 10mA

Дальнейшее совершенствование проекта

- Программирование через USB.
На данный момент используются 4 провода для SPI программирования, при частом подключении к разъему программирования, боюсь что он расшатается.

- Добавить другой метод измерения заряда батареи.
На данный момент уровень заряда батареи определяется ее напряжением, это не очень точный метод получения оставшегося заряда батареи.

- Поддержка различных микроконтроллеров.
Текущая прошивка использует примерно 28 KB из 32 KB свободного места памяти  ATmega328P, при использовании других микроконтроллеров с большим объемом памяти, необходимо будет добавить больше возможностей, например калькулятор. Тем не менее, ATmega328P имеет самое большое количество памяти для AVR в 32 контактных TQFP корпусах, чтобы иметь больше памяти я должен был бы использовать 44 контактный AVR. ATmega1284 выглядит очень интересно.

- Импульсный стабилизатор, регулятор подкачки заряда или может быть гибридное решение?
Линейный регулятор который используется в данный момент не является особо эффективным, импульсный регулятор, кажется, не очень хорош при низком токе. Может есть возможность использования регулятора подкачки заряда или гибридное решение - линейным регулятор для неактивного режима и импульсный стабилизатор для активного режима?

Может кто знает?

Фотогалерея проекта

Автор: Zak Kemble

Файлы:
Исходный код(Си), файлы прошивки микроконтроллера, схема и макет печатной платы Eagle 6
Дата 15.11.2013 Размер файла 279.08 KB Закачек 2601

Комментарии  

+4 #1 Александр_ 29.11.2013 12:11
Просто восхищен.
По питанию посмотрите в сторону TPS62730. Или используйте один аккум на 1.2В + SPV1040.
Сообщить модератору
-19 #2 HWman 02.01.2014 21:10
Автор, юзай МК от Texas Instruments
Сообщить модератору
+2 #3 makc1806 24.02.2015 02:04
Geek часы , уже хочу себе такие! Автору - респект за оч. прямые руки. Корпус оч. нужен, как приятно смотритя новенький уголочек OLED, и каким он будет через год :cry:
И рубашки, кофты... Вопрос - как платку так четко сделали, заказывали где-то?
Сообщить модератору
+9 #4 Igor futa 27.02.2015 15:25
Просто шикарний годинник.
Планую повторити, єдине що використаю більш доступну DS1307 і LM1117, з відповідним редагуванням АЗ і ПЗ.
Велике ДЯКУЮ за опенсорс.
Сообщить модератору
+8 #5 MOZOK 10.03.2015 11:41
Лучше использовать ds1339u там и адреса совпадают , и будильники есть. разве что температуру не меряет. а насчет lm1117 , так она прожорливая. Думаю можна что-то получше найти.
Сообщить модератору
0 #6 igor futa 25.03.2015 14:11
Хто небудь знає де копати прошивку, щоб підключити sh1106 ? Некоректно відображається інфа.
Вичитав . що там розмір буфера 132х64 замість 128х64, тобто треба посунути його. на область ОЛЕД.
Декілька днів копаю. найти не можу...
Сообщить модератору
+1 #7 igor futa 04.04.2015 13:56
Проблема виявилась у відсутності автоматичного переадресування в наступний рядок , після закінчення попереднього, під час відображення.
Через це , вся картинка збивалась у один рядок.
Також було невідцентроване зоображення, через більший розмір буферу. та всі баги пофіксено, якщо комусь треба прошивка з підтримкою sh1106 Пишіть
З радістю поділюсь.
Сообщить модератору
+2 #8 igor futa 04.04.2015 13:56
Поправочка, Пишыть на
Сообщить модератору
0 #9 Makc_ 15.11.2015 08:02
Где купить такой джойстик?
Сообщить модератору
0 #10 AntonChip 15.11.2015 16:22
Цитирую Makc_:
Где купить такой джойстик?

например тут aliexpress.com/.../...
Сообщить модератору
0 #11 Andrii Vladyka 12.06.2016 21:45
Класного качества у Вас плата получилась. Можно у Вас заказать такую плату?
Сообщить модератору

Рекомендуем посмотреть