Для изготовления печатных плат я, как и многие другие, использую метод фоторезистивной пленки. Этот метод требует относительно точного отсчета времени засветки. Если пленку светить слишком долго, то могут быть засвечены ненужные участки, что приведет к возникновению паразитных связей между проводниками после травления платы. Если не до светить пленку, то мы получим плату с тоненькими либо поврежденными дорожками. Оба варианта приведут в итоге к неправильной либо полной неработоспособности устройства.
Поэтому было принято решение “нарисовать” свой вариант (с блэк джеком и шлюхами) хронометра для засветки(и не только) пленки фоторезиста. Забегая вперед, скажу, данное устройство многофункционально, и может быть использовано не только для указанных целей. Оно будет многофункциональным, так как может коммутировать нагрузку с током до 2.5А.
Техническое задание на разработку таймера на ATtiny2313
Требуется реализовать систему временного управления нагрузкой, удовлетворяющая следующим требованиям:
- Рабочее напряжение, В: 12
- Ток потребления в рабочем состоянии, не более, мА: 50
- Максимальный коммутируемый ток нагрузки, А: 3
- Режим коммутации нагрузки: NO/NC
- Возможность выдачи на внешнее устройство питания: 12В/400мА
- Максимальное время отсчета, ч: 48(47:59:59)
- Управление устройством: 1 инкрементальный энкодер с кнопкой
- Отображение информации: Дисплей совместимый HD44780 2×8
- Сохранение/загрузка значения отсчета в энергонезависимой памяти
- Возможность приостановки отсчета(отключения нагрузки, пауза)
- Визуальная и звуковая индикация окончания отсчета
Разработка таймера на ATtiny2313
Для выполнения поставленной задачи, было принято решение использовать микроконтроллера производства Atmel – ATtiny2313A. Он, на мой взгляд, наиболее подходит для реализации устройства, достаточен в части периферии и легок в написании кода прошивки.
Схема устройства получилась следующей:
Ключевым элементом устройства, его “мозгами”, является микроконтроллер DD1 – ATtiny2313A. Тактование его осуществляется от внешнего кварца на 8МГц. К контроллеру через порты ввода вывода подключена основная периферия:
- Инкрементальный энкодер
- Зуммер
- Дисплей
- Управление реле
- Световая индикация
Питание логической части осуществляется через интегральный стабилизатор напряжения – LM78M05, с выходом на 5В/500мА. В устройстве предусмотрена защита “от дурака” в виде диода Шоттки VD1. Его назначение – предотвратить повреждение компонентов схемы при неправильном подключении источника питания.
Схема работает следующим образом. После подключения устройства к источнику питания, на выходе интегрального стабилизатора DA1 появляется напряжение 5В, которое запитывает сам микроконтроллер DD1 и дисплей. Для нормального функционирования экрана, ему требуется время на внутреннюю инициализацию – ~20мс. После чего он готов получать команды управления и выводить информацию. Контроллер занимается инициализацией своей периферии, после чего ожидает готовности дисплея и инициализирует его. По окончании инициализации, микроконтроллер запускает внутреннюю RTOS, и ожидает команд пользователя.
Готовое к работе устройства выглядит так:
Длинным нажатием на кнопку энкодера, переходим в режим установки значений отсчета, характеризующийся мигающим курсором в позиции секунд:
Если в этом режиме нажать и удерживать кнопку энкодера(более 1.5 секунд), то будет произведено извлечение ранее сохраненного(если не сохранялось, то нули) в энергонезависимую память значения времени отсчета. Кратковренные же нажатия на кнопку, приводят к переходу между позициями установки времени в такой последовательности: Секунды -> Минуты -> Часы -> Экран отсчета.
Находясь в режиме установки времени в позиции часов, длительное(более 1.5 секунд) нажатие кнопки энкодера, приводит к сохранению выставленного значения времени отсчета в энергонезависимую память.
Далее, кратковременно нажав кнопку энкодера, мы переходим на экран отсчета.
Еще одно кратковременное нажатие кнопки запускает отсчет таймера, которое отображается на дисплее и дополнительно с помощью сдвоенного светодиода HL2. Зеленое его свечение показывает, что в данный момент включена нагрузка(произошла коммутация реле), а также каждую секунду происходит моргание красного диода – идет отсчет времени.
По окончании времени отсчета, устройство отключает нагрузку(размыкает реле) и издает 3 звуковых сигнала через зуммер. Далее можно повторить цикл ввода времени отсчета и начать новый отсчет. Также существует возможность приостановить отсчет кратковременно нажав на кнопку и также продолжить с места остановки.
Конструкция устройства
Конструктивно устройство представляет из себя пластиковый, напечатанный на 3D принтере бокс размерами 95x50x33(ШxВxГ).
Элементы управления находятся на левой, правой и фронтальных частях бокса:
Подключение нагрузки осуществляется к винтовым клеммным колодкам, расположенным с правой стороны(3 пиновая колодка), в соответствии с рисунком.
Питание на внешнее устройство 12В/400мА, может быть подано со второй винтовой клеммной колодки(2 пиновая).
В моем случае подключение выглядит вот так:
Модель сборки устройства:
Печатная плата
Печатная плата была реализована вместе с проектированием корпуса устройства. Опытный образец был произведен в домашних условиях(ревизия платы 2.0), но также финальная версия платы(ревизия 2.1) была подготовлена и изготовлена на производстве (PCBway.com). Конструктивно печатная плата имеет двухсторонний монтаж, не содержит перемычек(ревизия 2.1):
Полностью собранная плата выглядит вот так:
И целиком собранное устройство:
Эпилог
На выходе мы получили устройство, полностью соответствующее нашим техническим требованиям, с потреблением около 25мА без внешней нагрузки. Погрешность хода составляет примерно 1-2 секунды на 10 часов, все зависит от кварца.
Файлы проекта
Все необходимые файлы проекта, включая 3D модель корпуса можно найти в репозитории GitHub.