Это достаточно маломощные ЖК-часы построены на микроконтроллере AVR128DA48. Часы способные работать более трех лет от элемента CR2032 или «вечно» от солнечного элемента.
Также эти часы каждую минуту кратко отображают температуру, используя встроенный датчик температуры в AVR128DA48, а так же напряжение батареи, используя АЦП для считывания собственного напряжения питания. В схеме есть и шина I2C, поэтому вы можете добавить внешний датчик, например, датчик влажности.
Вступление
Хотя жидкокристаллические дисплеи (ЖК-дисплеи) являются относительно старой технологией, они по-прежнему обладают рядом преимуществ по сравнению с более новыми типами дисплеев, включая низкое энергопотребление, низкую стоимость и четкость отображения информации.
Недавно я приобрел несколько ЖК-дисплеев Densitron на eBay за несколько долларов. Цель — попробовать построить на них часы с низким энергопотреблением, чтобы посмотреть, насколько будет низким энергопотребление.
Дисплеи стандартного типа, доступны с совместимыми выводами от нескольких производителей. Такие дисплеи называются статическими (в отличие от мультиплексированных), что означает, что каждый сегмент имеет свой контакт. Поэтому для четырехразрядного дисплея получается 28 выводов плюс три десятичных знака, двоеточие и общий контакт, что в сумме дает 33 контакта.
Дисплеи, которые я нашел, имеют два общих контакта, а также обычно имеют дополнительные специальные сегменты, такие как знак минус, в 40-контактном корпусе.
Параметры ЖК-дисплея
Большинство 40-контактных ЖК-дисплеев с интервалом между рядами 33 мм должны быть совместимы с этой платой. Вот некоторые, которые я нашел. Все они имеют 4 разряда и 3 десятичные точки на контактах с 5 по 27, с 29 по 32 и с 34 по 37. Общий вывод на 1 и 40 контакте, а также несколько дополнительных символов:
- Densitron DG-201208-RP: Двоеточие (28), Треугольник (38)
- Varitronix VI-402-DP-RC-S: Двоеточие (28)
- RS PRO 7-Segment LCD: Двоеточие (28)
- Lumex LCD-S401C52TR: Двоеточие (28)
- EDC190: Двоеточие (28)
- EDS805: LB (2), Минус (3)
Ниже приведена принципиальная схема маломощных ЖК-часов
Печатная плата
Схема не так сложна, как кажется. Каждый сегмент дисплея просто подключается к одной линии ввода-вывода процессора. Все сегменты одной цифры подключены одному порту, причем десятичная точка на 7 бите, сегмент A на 6 бите, а сегмент G на 0 бите (с несколькими исключениями, описанными ниже).
Из-за большого количества соединений мне не хотелось создавать прототип этого проекта вручную, я сразу же приступил к разработке печатной платы в Eagle.
Я постарался сделать печатную плату максимально универсальной. Плата подойдет под любой из дисплеев в приведенном выше списке. Чтобы отобразить какой-либо из дополнительных символов, достаточно установить на плату резистор 0 Ом, который будет выступать в качестве связующего звена.

Дисплей
Дисплей представляет собой четырехзначный семисегментный статический ЖК-дисплей с 40 контактами и расстоянием между рядами 33 мм (см. выше список подходящих альтернатив). ЖК-дисплей установлен на передней панели платы, а компоненты — на задней.
Кварц, который я использовал, представляет собой SMD-кварц с частотой 32,768 кГц (3,2 мм x 1,5 мм) с точностью 20 ppm и емкостью нагрузки 6 пФ.
Для расчета емкости конденсатора я использовал формулу C = 2 (CL — CS ), где CL — емкость нагрузки 6 пФ, а CS — паразитная емкость, которая обычно оценивается как 2,5 пФ на печатной плате. Это дает C = 7 пФ. Я использовал ближайшее доступное значение в 6 пФ.
Микроконтроллер
Это микроконтроллер AVR128DA48 в корпусе TQFP-48, но печатная плата подойдет и с рядом других 48-контактных микроконтроллеров. Подойдет AVR128DB48, так и версии с меньшей памятью этих двух устройств, вплоть до AVR32DA48 и AVR32DB48. Однако вы сэкономите всего несколько центов, выбрав версии с меньшим объемом памяти, поэтому я не вижу в этом смысла.
ATmega4809 и его младшие братья и сестры, вплоть до ATmega809, совместимы по выводам с микросхемами DA и DB в одних и тех же корпусах, и поэтому могут также использоваться на этой плате. Единственное ограничение — контакты, которые я использовал для I2C, PF2 и PF3, поддерживают только ведомый I2C на ATmega4809.
Источник питания
Есть место для 20-миллиметрового держателя, подходящего для батарейки CR2032 или аналогичной ей. Обратите внимание, что у некоторых подобных батареек отрицательная клемма вогнута и не имеет хорошего контакта с контактной площадкой на печатной плате. В этом случае небольшое количество припоя на контакте печатной платы должно обеспечить дополнительную толщину.
В качестве альтернативы, если вы хотите запитать часы от солнечного элемента 3 В, есть отверстия, чтобы вы могли установить суперконденсатор вместо плоского элемента. Я использовал PowerStor 0.47Ф 5В.
На краю платы имеются клеммы для подключения диода Шоттки, последовательно соединенным с солнечным элементом, чтобы предотвратить разряд суперконденсатора, когда нет солнца. Я использовал солнечную батарею 3В 60x48mm от Pimoroni.
I2C интерфейс
На печатной плате также имеется 4-контактный разъем JST PH, обеспечивающий интерфейс I2C, совместимый с системой Adafruit STEMMA или системой Grove. Интерфейс I2C подключен к PF2 (SDA1) и PF3 (SCL1).
Потребляемая мощность
Я приложил немного усилий, чтобы снизить энергопотребление.Процессор проводит большую часть времени в спящем режиме с отключением питания для экономии энергии и пробуждается прерыванием 64 Гц от периферийного устройства часов реального времени. Я измерил среднее энергопотребление при 3,3 В для четырех разных тактовых частот:
Обычно можно ожидать увеличения энергопотребления с увеличением тактовой частоты процессора, поэтому на первый взгляд эти цифры озадачивают. Это объясняется тем, что при более высоких тактовых частотах время, необходимое для выполнения процедуры обслуживания прерывания короче, что позволяет процессору проводить большую часть времени в режиме сна.
Внешний кварцевый генератор 32,768 кГц (ABS07-120-32.768KHZ-T) имеет режим пониженного энергопотребления, и его выбор снизил среднее энергопотребление с тактовой частотой 24 МГц с 9,5 мкА до 7,3 мкА.
Типичная емкость батарейки CR2032 составляет 225 мАч, поэтому при потреблении 7,3 мкА ожидаемое время автономной работы часов составляет 225/ 0,0073/24/365 или около 3,5 лет.
С суперконденсатором 0,47Ф вы можете рассчитывать на ток 0,47А в течение 1 секунды. Это дает ожидаемый срок 0,47/7.3×10-6/60/60 или около 18 часов, что подтверждено тестированием. Этого должно быть достаточно, чтобы часы продолжали работать в течение ночи с подходящим солнечным элементом, обеспечивающим питание в дневное время.
Установка времени
Кнопки MINS и HRS позволяют установить часы и минуты. Удерживая кнопку нажатой, вы переключаете минуты или часы. Кроме того нажатие на кнопку MINS сбрасывает секунды на ноль, это сделано для того, чтобы вы могли установить часы с точностью до секунды.
Компиляция и загрузка программы с помощью Arduino IDE
Скомпилируйте код с помощью Dx Core Spence Konde’s на GitHub. Выберите опцию AVR DA-series (без загрузчика) под заголовком DxCore в меню Плата. Убедитесь, что параметры установлены следующим образом (игнорируйте любые другие параметры):
- Чип: AVR128DA48
- Тактовая частота : 24 MHz internal
- Программатор: jtag2updi (megaTinyCore)
Затем загрузите программу в AVR128DA48 с помощью UPDI программатора. DxCore теперь поддерживает следующие два варианта:
- Создайте программатор UPDI из Arduino Uno или другой платы на базе ATmega328P, как описано в разделе «Создание программатора UPDI» (https://github.com/SpenceKonde/AVR-Guidance/blob/master/UPDI/jtag2updi.md) , и установите для параметра Программатор: jtag2updi.
- Используйте плату USB для последовательного порта. Подключите TX к контакту UPDI через резистор 4,7 кОм, подключите RX напрямую к контакту UPDI и установите для параметра Программатор: Serial port and 4.7k (pyupdi style)
Скачать файлы проекта (18,5 KiB, скачано: 251)
