Захотив собрать бинарные часы, я так и не нашел в Интернете приемлемой готовой конструкции.
У большинства часов был серьезный недостаток – при отключении питания сбивались настройки времени.
По счастливой случайности, незадолго до этого я начал осваивать язык Си и микроконтроллеры AVR. Итак, было решено подкрепить полученные знания практическим опытом, а заодно и изобрести велосипед. Еще мне очень нравятся зеленые мигающие светодиоды.
Схема
РТК
Прекрасно решена проблема сохранения текущих настроек часы реального времени (РТК).Мой выбор пал на микросхему DS1307 .
По словам производителя, при отключении питания он может сохранять время и дату в течение 10 лет, потребляя энергию только литиевой батарейки CR2032. То есть часы продолжают идти, сохраняя приемлемую точность.
Время не потеряно; когда мы снова включаем часы, мы получаем на циферблате реальное время, а не время в момент их выключения.
Микросхема связывается с микроконтроллером по «квадратной шине» I. 2 C, сообщая точное время и принимая его новые значения.
Сердце устройства
Выбор микроконтроллера Мега32а было продиктовано следующими факторами: • Достаточное количество портов, чтобы избежать использования динамического дисплея, который мне не нравится, в первую очередь потому, что он раздражает глаза (в любом случае моргание с высокой частотой неестественно).Я познакомился с ним, играя с микроконтроллерами PIC на языке Proton PICBasic, и если есть возможность не использовать динамический дисплей, я бы предпочёл это сделать.
• Сравнительно невысокая стоимость 130 рублей (Мега16а, например, стоит столько же), а со скидкой вообще 104 рубля.
• Прозрачный корпус QPF-44 с удобной распиновкой.
Порт «А» отображает секунды, порт «В» отображает минуты, а порт «С» отображает часы.
Очень удобно, что можно без каких-либо изменений назначить на порты значения времени, взятые с DS1307. Кнопки подключены к порту «D» (контакты 3 – 7), контакты 0 и 1 работают как линия синхронизации (SCL) и линия последовательных данных (SDA) соответственно.
Микросхема RTC настроена так, что на своей седьмой ноге выдает импульсы частотой 1 герц.
Эта ножка подключается к 3-му контакту порта «D».
Сам этот порт настроен как вход, и на всякий случай включены внутренние подтяжки к плюсу питания, продублированные SMD резисторами снаружи.
Такие действия полностью защищают от любых неожиданностей.
светодиоды
Я выбрал светодиоды в матовом корпусе с низкой светосилой.
Сначала были протестированы яркие диоды в прозрачном корпусе, но даже при токе 3 мА они светились слишком ярко и неравномерно, что снова вызывало дискомфорт. При падении напряжения на диоде 2 Вольта, напряжении питания 5 Вольт и резисторе сопротивлением 1 кОм величина тока, протекающего через диод, будет равна (5 – 2)/1000 = 3 мА.
Это значение подобрано опытным путем, и яркость свечения идеальна для тусклого помещения.
Если вы планируете устанавливать часы под прямыми солнечными лучами, то номинал резисторов следует уменьшить, до 200 Ом, для более яркого свечения (спасибо Кэпу).
Кнопки
На отдельной плате с кнопками есть «предохранитель» (он защитит нас от случайного выстрела в голову), в виде еще одной кнопки Бт6. Время можно отредактировать, сначала удерживая его.
Программное обеспечение
Код написан в среде CodeVisionAvr. Программа начинается с настройки периферии микроконтроллера.• Настройте порты (A,B,C – выход, D – вход) • На всякий случай предусмотрена пауза в 300 мс, чтобы DS1307 успел «прийти в себя» • Инициализировать «квадратную шину» • Мы настраиваем микросхему RTC так, чтобы она каждую секунду выдавала прямоугольные импульсы на вывод SQW/OUT. • Проверьте, нажата ли кнопка CLR. Если да, то сбросьте все значения на 0 • Включить глобальные прерывания.
Да, несколько слов о них.
Внешние прерывания INT0 на PD2 мы используем по спадающему фронту, т.е.
каждую секунду программа будет обращаться к обработчику прерываний, в котором мы считываем значения времени из DS1307 и отображаем их на светодиодных индикаторах.
• Заходим в бесконечный цикл, где опрашиваем кнопки • Если кнопка нажата, добавьте (вычтите) час (минуту) и отправьте новое значение через I2C. • При этом проверяем, укладываются ли новые значения времени в 24-часовой и 60-минутный диапазоны.
Печатная плата
Плата изготовлена по технологии Великой Космической Лазерной Гладки на одностороннем текстолите.При изготовлении верхней доски использовалась обычная бумага (неудачный эксперимент).
Существует множество вариаций этой технологии.
На мой взгляд, этот лучший: 1. Вырезаем кусок печатной платы нужного размера.
2. Шлифуем торцы, избавляясь от вредных заусенцев.
3. Смажьте будущую доску чистящим порошком или зубной пастой и потрите ее жесткой стороной губки до блеска.
4. Опускаем нашу заготовку на пару десятков секунд в слабый раствор теплого хлорного железа до появления однородной матовой поверхности бордово-коричневого цвета.
При извлечении из раствора жидкость должна полностью смочить поверхность.
5. Смойте какашки и аккуратно высушите, не касаясь поверхности пальцами или чем-либо еще жирным.
Сразу положите его на чистую бумагу медной стороной вниз, чтобы избежать пыли и волос.
6. Распечатайте зеркальный рисунок на тонкой (!) глянцевой бумаге, можно вырезать его, например, из журнала.
Руками рисунок не трогаем.
Аккуратно вырежьте и положите выкройку вниз.
7. Прикладываем его к подготовленному куску текстолита, проглаживаем через 1-2 слоя чистой бумаги, выставив утюг на максимальную температуру.
10 секунд должно хватить, потому что если переусердствовать, дорожки сплющятся и натекут друг на друга.
Тонер должен полностью прилипнуть к меди.
8. Замочить под проточной теплой водой, можно оставить в воде на 10 минут. Аккуратно оторвите и соскребите бумагу.
В этом мне помогает старая зубная щетка.
Оставшиеся кусочки бумаги удалите иголкой.
Тонер остается на печатной плате.
9. Нагрейте на водяной бане крепкий раствор хлорного железа, бросьте в него нашу доску и плескайтесь несколько минут (по правилу Вант-Гоффа, при повышении температуры на 10 градусов скорость реакции увеличивается в 2 раза).
Медь исчезает прямо на глазах.
Можно не греть, но придется дольше ждать.
10. Как только исчезнет вся ненужная медь, выключите газ, вытащите (например, пинцетом) плату, попробуйте отмыть пластину и пальцы от хлорного железа.
Смываем его с доски проточной водой.
11. Возьмите ацетон (жидкость для снятия лака) и сотрите тонер.
Можно попробовать соскрести его наждачной бумагой или губкой.
12. Просверлите отверстия.
13. Давайте схитрить.
В качестве флюса использую ЛТИ, и вам советую, однако после лужения и пайки этот флюс необходимо смыть (тем же ацетоном, а еще лучше смесью спирта и бензина 1:1), т. к.
ЛТИшка имеет некоторые проводимость.
Все работы необходимо проводить в проветриваемом помещении, в выделяется много вредных испарений.
Платы соединяются между собой с помощью разъемов PBS и PLD. Первые подключаются к верхней плате с помощью тонкого монтажного провода; его можно вытащить, например, из старого LPT-кабеля или переходника.
Вторые припаяны к нижней плате, а выводы, ведущие к клавиатуре, загнуты (см.
фото).
В комплект входят печатные платы формата SprintLayout5.0. На фотографиях есть пара ошибок, но в прикрепленных файлах они уже исправлены.
Прошивка микроконтроллера
Для этого был собран программатор USBasp , что можно увидеть на фото выше.Это довольно приятная вещь, удобная в использовании и ее можно носить с собой в кармане круглый год (надеюсь, никто этого делать не будет).
Для прошивки мега32 придется установить перемычку «Slow SCK».
Предохранители: • Низкий предохранитель = 0xC4 • Высокий предохранитель = 0xD9 Наш микроконтроллер тактируется от внутреннего RC-генератора частотой 8 МГц.
Пришлось отключить интерфейс JTAG на PortC, иначе некоторые светодиоды не загорались.
На плате имеется разъем ISP10 для быстрой прошивки/отладки.
Передняя панель
Изготовлен из алюминиевой пластины шириной 40 мм и толщиной 1,5 мм.В нем просверлено 18 отверстий диаметром 5 мм и 4 отверстия диаметром 3 мм для крепления стоек.
Сначала шаблон был распечатан и наклеен на пластину.
Далее сверлом 1,5 мм сверлились пилотные отверстия, после чего сверлами необходимых диаметров сверлились основные отверстия.
В завершение пластину загнули, отшлифовали мелкой наждачкой и отполировали пастой ГОИ.
Шаблон включен во вложенные файлы в виде файла Layout5.0.
Красный светодиод в левом верхнем углу
Повторяет импульсы, генерируемые DS1307 на 7-й ноге, т.е.мигает каждую секунду.
Небольшой p-канальный МОП-транзистор работает в режиме переключения, открываясь и закрываясь во времени импульсами.
Сначала я хотел сделать подсветку (типа Ambilight), для чего построил КМОП-инвертор на комплементарной паре транзисторов (чтобы быть уверенным).
Но мне это не понравилось.
Для одного светодиода достаточно одного транзистора; вы даже можете использовать тип pnp bc857. Я использовал МОП-транзистор с открытой рамой irlml6402 или irlml6302.
Файлы
Исходники, шестнадцатеричный файл, печатные платы, схемы, схема протеуса и предохранители включены в этот образ в виде архива.Файлохранилищам я не доверяю, своего сервера у меня пока нет, поэтому, на мой дилетантский взгляд, самым надежным местом для хранения будет Хабр.
Пользователи Windows могут получить доступ к файлам, открыв сохраненное изображение с помощью WinRar. Да, это картинка.
видео
Заключение
Можно использовать любой источник питания, способный выдавать напряжение 5 Вольт при токе 70 мА.USB-порт для этого вполне подойдет. Главное, чтобы питание было «чистым» и не превышало 5 Вольт. Запитав часы от DC-DC преобразователя на микросхеме mc34063 с уровнем шума ~50 мВ, я заметил глюки при установке времени.
Теперь устройство питается от висящего рядом выключателя.
Он выдает строго 5 вольт. С хорошей стороны еще надо сделать надежную защиту в виде диода, и какой-нибудь линейный стабилизатор на 3,3 - 5 вольт. Отсутствие в часах функций будильника и отображения даты вполне оправдано: обе они присутствуют в телефоне, а это значит, что с большой долей вероятности никто не будет ими пользоваться в бинарных часах (спасибо дяде Оккаму за этот вывод) .
Используемые материалы
Лебедев М.Б.
CodeVisionAVR: руководство для новичков avrdevices.ru/chasi-realynogo-vremeni-ds1307 Теги: #Сделай сам или Сделай сам #ds1307 #бинарные часы #бинарные часы #BCD #mega32
-
«Система Палочек Не Сработает».
19 Oct, 24 -
Виджеты Для Сторонних Сайтов
19 Oct, 24