Аналоги реле Phoenix Contact, Finder, Omron, ABB, Schneider

Будильник с графическим экраном на ATmega32. Часть 2

Окончание
Начало читайте
здесь:

Часть 1

Программа

Электромеханические реле Hongfa – надежность и качество 19 января 2023

Программа написана по модели конечного автомата. Здесь представлены состояния (номера состояний выбраны случайным образом) :

Состояние 1: Показ изображения при включении
Состояние 2: Главный экран времени/даты
Состояние 50: Главное меню
Состояние 60: Установка времени
Состояние 61: Установка будильника
Состояние 62: Установка времени включения/выключения подсветки
Состояние 63: Установка значений фотодатчика
Состояние 64: Показ информации об этих часах

Программа написана на С с использованием WinAVR со встроенным GNU GCC компилятором (версия 3.4.1). Изучение программы для часов лучше всего начать с файла main.c. Здесь вы найдете главный цикл, и как этот 20 миллисекундный цикл использует флаги и переменные, чтобы программа гармонировала с навыками пользователя. Make-файл включен в секцию загрузок. Заметьте, программа содержит множество комментариев, так что, чтобы найти подробности какой либо операции, просмотрите код построчно или просмотрите все подпрограммы.

EEPROM микроконтроллера хранит в себе время включения будильника, уставку фотодатчика, часы включения и выключения подсветки дисплея. В случае потери напряжения питания, данные извлекаются из EEPROM, и пользователю нет необходимости устанавливать их заново.

Внимание: Я поместил некоторый код в .h файлы, это очень плохой стиль программирования на С.

Аппаратная часть

Схема показана ниже. Вверху справа изображен узел питания, Q1 используется для защиты микросхем от переполюсовки. На левой стороне схемы показано подключение дисплея Optrex. Это 30 контактный разъем для поверхностного монтажа, с расстоянием между контактами 0.5 мм. Его очень тяжело припаять! Микросхема AT24C256 не используется в окончательном варианте схемы. Обратите внимание, в схеме есть несколько ошибок. Во первых, необходимо подключить два резистора 10 кОм для подтягивания линий RD и WR к 5 В. Во вторых, на линии ‘RES’ дисплея должен стоять детектор падения напряжения питания. (Я использовал комбинацию резистора и конденсатора с диодом, чтобы удерживать на линии ‘RES’ низкий уровень в течении нескольких сотен миллисекунд после включения питания).

Будильник с графическим экраном на ATmega32
Кликните для  увеличения

В устройстве есть несколько деталей, не включенных в схему. Аудио сигнал выходит через 13 контактный разъем. 3 пользовательские кнопки и фотодатчик подсоединены к 5 контактному разъему. Для более подробной информации посмотрите комментарии к программе. Аудио зуммер подключен через находящийся вне платы NPN транзистор, чтобы увеличить ток через зуммер свыше значения 20 мА – максимального тока, который способен отдать порт микроконтроллера ATMEGA32.

Для разработки печатной платы я использовал ExpressPCB.

Опыт разработки

Я начинал проектирование, располагая списком возможностей, которые хотел бы видеть в устройстве, несколькими эскизами конечного продукта, нарисованными от руки, и несколькими неряшливыми страницами, изображающими пользовательский интерфейс на бумаге. Начав с этого, я сделал необходимую работу с программой и закончил аппаратную часть. Тестирование заняло еще несколько ночей. В первую ночь я записал 10 проблем, требующих решения. Во вторую ночь их осталось только две.

Что я хотел бы изменить

Было бы очень хорошо иметь батарейный запасной источник питания для часов реального времени. Так как иногда случаются перебои в электроснабжении, такая возможность была бы очень удобной. Наклейку передней панели я напечатал на обычной бумаге для лазерного принтера, заламинировал ее и наклеил на переднюю панель с помощью двустороннего скотча. Стыки двухстороннего скотча можно увидеть под бумагой, если посмотреть с близкого расстояния. Было бы хорошо использовать самоклеющуюся бумагу, тогда под бумагой не было бы видно стыков. Программные доработки, которые я хотел бы сделать – увеличить размер цифр, показывающих время так, чтобы они занимали 7/8 экрана. Так мне будет проще видеть его без очков, и сделать так, чтобы подсветка дисплея светилась еще минуту, после выхода из главного меню ночью. (Так я смогу проверить, включен ли будильник, глядя на главный экран).

Схема графических часов с будильником (PDF формат)
Печатная плата графических часов с будильником (в формате Express PCB 5.1.0)
Наклейка передней панели (PDF формат, листайте документ до низа страницы)
Исходный код программы для графических часов с будильником (WinAVR 3.4.1)

webspace.webring.com

Перевод: [IMG]/i/Image/wand.gif[/IMG] по заказу РадиоЛоцман

На английском языке: Graphical Alarm Clock (Atmel ATmega32). Part 2

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя