Как собрать электронные часы на микроконтроллере ATmega8. Какие компоненты потребуются для создания часов с LED-индикацией. Как запрограммировать ATmega8 для работы в качестве часов. Какие особенности нужно учесть при разработке схемы и программы.
Компоненты для сборки электронных часов на ATmega8
Для создания электронных часов на базе микроконтроллера ATmega8 потребуются следующие основные компоненты:
- Микроконтроллер ATmega8
- Четырехразрядный семисегментный LED-индикатор с общим анодом
- Кварцевый резонатор на 32768 Гц
- Резисторы ограничения тока для сегментов индикатора
- Кнопки для настройки времени
- Макетная плата или печатная плата для монтажа
- Источник питания 5В
Дополнительно могут потребоваться конденсаторы, диоды и транзисторы в зависимости от конкретной схемы. Важно подобрать LED-индикатор с подходящим током потребления сегментов.
Схема подключения компонентов часов
Базовая схема подключения компонентов часов выглядит следующим образом:
- Кварцевый резонатор подключается к выводам XTAL1 и XTAL2 микроконтроллера
- Общий анод индикатора — к питанию +5В через резистор
- Катоды сегментов — к портам микроконтроллера через токоограничивающие резисторы
- Кнопки настройки — к свободным портам с подтягивающими резисторами
При разработке схемы важно учесть ограничение по току портов микроконтроллера и правильно рассчитать токоограничивающие резисторы для LED-сегментов. Типовое значение — 220-330 Ом.
Программирование микроконтроллера ATmega8
Для программирования ATmega8 в качестве часов потребуется выполнить следующие основные шаги:
- Настроить тактирование от внешнего кварцевого резонатора
- Инициализировать таймер для отсчета времени
- Реализовать функции вывода цифр на индикатор
- Добавить обработку нажатий кнопок для настройки
- Реализовать логику работы часов и будильника
Программа должна постоянно обновлять показания на индикаторе и проверять нажатия кнопок. Важно правильно настроить прерывания таймера для точного отсчета времени.
Особенности разработки программы для часов
При создании программы для электронных часов на ATmega8 следует учесть несколько важных моментов:
- Использовать прерывания таймера для точного отсчета времени
- Реализовать динамическую индикацию для экономии портов
- Добавить защиту от дребезга контактов кнопок
- Предусмотреть энергосберегающие режимы работы
- Использовать энергонезависимую память для хранения настроек
Грамотная оптимизация кода позволит снизить энергопотребление и повысить точность хода часов. Важно также продумать удобный интерфейс настройки времени и будильника.
Монтаж и отладка электронных часов
После разработки схемы и программы необходимо выполнить монтаж компонентов и отладку устройства:
- Собрать схему на макетной плате
- Запрограммировать микроконтроллер
- Проверить работу индикации и кнопок
- Настроить точность хода часов
- При необходимости доработать схему и прошивку
На этапе отладки важно обеспечить стабильное питание устройства. Для повышения точности можно использовать внешний высокоточный генератор вместо кварцевого резонатора. После отладки макета можно перенести схему на печатную плату.
Варианты улучшения базовой схемы часов
Базовую схему электронных часов на ATmega8 можно улучшить и дополнить различными функциями:
- Добавить датчик температуры для отображения температуры
- Реализовать управление яркостью индикатора
- Добавить звуковую сигнализацию будильника
- Использовать внешнюю энергонезависимую память
- Реализовать интерфейс подключения к компьютеру
Микроконтроллер ATmega8 обладает достаточными ресурсами для реализации дополнительных функций. При этом важно учитывать ограничения по памяти и вычислительной мощности.
Типичные ошибки при создании часов на микроконтроллере
При разработке электронных часов на базе ATmega8 следует избегать некоторых распространенных ошибок:
- Неправильный расчет токоограничивающих резисторов
- Отсутствие защиты от дребезга контактов кнопок
- Неоптимальное использование ресурсов микроконтроллера
- Отсутствие энергосберегающих режимов
- Недостаточная защита от помех в цепях питания
Внимательный подход к разработке схемы и программы позволит создать надежные и функциональные электронные часы на базе микроконтроллера ATmega8. Важно также обеспечить удобство использования и настройки устройства.
Часы на Atmega8 и семисегментном индикаторе
Главная » Бытовая электроника » Часы на Atmega8 и семисегментном индикаторе
Данные электронные часы, построенные на микроконтроллере Atmega8, оснащены легко читаемым светодиодным дисплеем, будильником с функцией повтора, функцией восстановления работы после отключения питания.
Характеристики часов
- формат отображения времени: часы, минуты;
- будильник с функцией повтора;
- простое управление с помощью 2 кнопок;
- поддержка работы от батарейки;
- напряжение питания: 7…12В / 0,2 A;
- размеры двух печатных плат: 60×21 мм, 58×44 мм.
Принципиальная схема часов показана на рисунке ниже. Схема часов должна быть запитана постоянным напряжением в диапазоне 7…12В. Это может быть любой блок питания с нагрузкой по току не менее 200 мА.
Диод VD1 (1N4007) защищает схему от неправильной полярности подключения входного питания.
Внешнее входное напряжение подается на стабилизатор DA1 (7805), а конденсаторы C3…C7 выполняют роль фильтра питания.Работой часов управляет микроконтроллер Atmega8, а в качестве часов реального времени применена микросхема типа PCF8583. Связь PCF8583 с микроконтроллером осуществляется через I2C интерфейс.
В качестве дисплея используется модульный четырехзначный семисегментный дисплей с общим анодом. Дисплей подключается непосредственно к выводам микроконтроллера через ограничительные резисторы R1…R12.
К разъему CON5 платы можно подключить зуммер с генератором, который будет выступать в качестве звукового сигнала будильника. К клеммам SA1 и SA2 печатной платы подключаются кнопки, которые служат для ввода настроек и обслуживания часов.
Настройка времени и будильника
При нажатии кнопки SA1 попадаем в меню часов «Set1», где у нас есть возможность установки текущего времени, а еще одно короткое нажатие кнопки SA1 переводит нас в меню установки времени будильника «Set2».
Для выбора и изменения настроек служит кнопка SA2. После выбора как в режиме настройки времени, как и в режиме установки будильника на дисплее начнет мигать первая цифра, после чего можно установить десятки часов с помощью кнопки SA2.
Очередное нажатие SA1 вызовет мигание второй цифры и с помощью SA2 можно установить единицы часов. Последующие два нажатия SA1 позволят установить десятки минут и единицы минут. Во время установки часов и минут устанавливается всегда только одна цифра. Пятое нажатие SA1 возвращает часы к нормальной работе. Также продолжительное время отсутствия нажатия кнопок завершает процедуры установки.
Во время работы часов длительное нажатие кнопки SA2 производит включение/выключение будильника. В момент активации будильника, на несколько секунд отображается время его запуска. Состояние будильника сигнализирует точка, размещена в четвертом разряде. Если будильник активен, этот индикатор горит.
Блок питания 0…30В/3A
Набор для сборки регулируемого блока питания. ..
Подробнее
После включения сигнала будильника нажатием любой кнопки можно выключить его на время порядка 5 минут, при этом активируется функция повтора. Этот факт отмечается миганием точки на четвертом разряде индикатора. По истечении 5 минут сигнал будильника будет запущен снова. Снова нажатием любой кнопки, его можно отложить еще на 5 минут, и т. д.
Полное отключение сигнала будильника происходит после длительного нажатия клавиши SA2, или около полутора минутного отсутствия реакции со стороны пользователя.
Работа часов протестирована в Proteus:
Если в ходе эксплуатации часов, окажется, что часы значительно отстают или спешит, можно попробовать уменьшить или увеличить значение конденсатора C1.
Скачать рисунок печатной платы, прошивку, модель в Proteus (34,7 KiB, скачано: 3 805)
Инвертор 12 В/ 220 В
Инвертор с чистой синусоидой, может обеспечивать питание переменно…
Подробнее
Categories Бытовая электроника Tags Atmega8, proteus, Часы
Отправить сообщение об ошибке.
Ненормативная схемотехника: ATmega8 – кто сказал, что выше головы не прыгнешь? | Lifestyle
Вот уж несколько лет, как я увлёкся микроконтроллерами, а именно семейством AVR. Ещё на этапе освоения Ардуино (в этот момент часть аудитории поплевались и ушли читать другие статьи) я пытался выдавить из неё больше, чем задумано. Меня всегда больше интересовали нестандартные решения обычных задач. Сейчас я знаю об AVR намного больше, чем ещё пару лет назад, и всё больше убеждаюсь, что знаю очень мало.
С чего начинает среднестатистический начинающий электронщик? Правильно, с часов! Как только научился пользоваться голыми контроллерами, а не платами Ардуино, захотел сделать часы на Атмеге, голой Атмеге без кучи ключей и буферных микросхем. И обязательно со статической индикацией, а не с динамической (ну не люблю я её). Собственно, статическая индикация программно гораздо проще, а ведь мы простых путей не ищем. Но зато возникают другие проблемы, которые несколько раз меня останавливали в самом начале пути. Понятно, что если взять Атмегу пожирней, задействовать в ней половину ножек и полпроцента памяти, задача упрощается донельзя, собственно, такие настольные часы на ATmega128 работают у меня на столе пару лет.
Но это не наш метод. Я с самого начала хотел именно ATmega8, как самую доступную и самую дешёвую (в том числе в дип-корпусе). Всё то же самое можно и на ATmega48, но её попробуй ещё найди, разве что у Вас в ящике стола валяется их много с незапамятных времён.
Посмотрим на картинку, известную всем, кто недавно интересуется AVR.
Глядя на неё, легко посчитать, что мы можем задействовать на часовой индикатор 20 ножек, ещё на двух у нас будет кварц (куда от него денешься, внутреннее тактирование не прокатит, нам ведь от часов нужна точность какая-никакая). Ну и сброс. На четыре семисегментных индикатора нужно 28 ног, ну даже 27, ведь десятки часов можно отображать цифрами 1 и 2, а ноль не отображать. Ещё когда идея только зарождалась, я это количество сократил до 22 ножек, ведь для отображения десятков часов можно обойтись цифрой 1, и оба её сегмента зажигать от одной ноги контроллера. Но как ни крути, пары ног мне всё же не хватало, даже при том что я давно знал о возможности использования как ввода-вывода ножки Reset, но так ещё ни разу и не попробовал (если не считать ATtiny13, её не так жалко было), ведь параллельного программатора у меня нет, а любая отладка – это минимум несколько итераций прошивки, вряд ли всё идеально выйдет с первого раза. Так и лежал этот замысел в закромах мозга, и ждал своего времени, пока как-то мне не пришла в голову ещё одна интересная идея.
Посмотрел я однажды на светодиодную ленту (120 светодиодов на метр) и понял, что можно легко и просто сделать электронные часы любого размера с её использованием. Просто нарезаем сегменты желаемой длины и наклеиваем их на подходящее основание, для больших размеров сегмент может складываться из двух и более лент по ширине. В моём случае отрезаем сегменты по шесть светиков, таким образом длина сегмента составляет 50 мм, высота цифры 100, для моей задумки офисных часов вполне достаточно.
Но вот незадача, напряжение питания ленты 12 вольт, а AVR хочет не больше 5 вольт (люди утверждают, что и 8 вольт выдерживают, но я проверять пока не буду, да и не поможет). То есть нужно ставить 22 ключа для включения всех сегментов. Если применить драйвер ULN2003, хватит (почти) трёх штук, это копейки, но, как я писал выше, это не наш метод, хотя этот вариант можно приберечь для часов побольше. Ну никак это не вписывается в концепцию «голая Атмега».
И вот тут-то начинается самое интересное. Напряжение питания ленты 12 вольт, первые признаки жизни белые светодиоды (три штуки последовательно) начинают подавать при более чем 7.5 вольт, и, что очень важно, до этого напряжения ток через ленту практически равен нулю (можете проверить). На ножке контроллера, работающей в режиме выхода, может быть уровень 0 вольт или 5 вольт (третий вариант рассмотрим позже), и если подключить сегмент анодом к +12 вольт, а катодом к выходу контроллера, напряжение на сегменте будет равняться соответственно 12 вольт (светит) или 7 вольт (не светит). Даже если бы через погасший сегмент протекал мизерный ток, он ушёл бы к плюсу питания контроллера через защитный диод, которые в AVR гораздо более выносливые, чем нас пугали в обучающих статьях. Третий вариант – ножка в режиме входа, напряжение на сегменте 7 вольт благодаря защитному диоду, стало быть сегмент не светит. Конечно, как только я обдумал всё это в теории, сразу же проверил на практике, залив в контроллер простой «блинк» для одной из ног.
А так как сейчас в силу некоторых обстоятельств мои возможности для экспериментов слегка ограничены, напряжение питания для сегмента случайно оказалось более 18 вольт, и сегмент гас не полностью, так что я успел разочаровано подумать, что подпалил выход. Когда уменьшил напряжение (на тот момент даже нечем было померить), всё стало на свои места, так что, благодаря нелепой случайности, теперь я точно знаю, что для схемы не смертельно небольшое повышение напряжения выше 12 вольт. С напряжением определились, а что с током? На моей ленте (и скорей всего на вашей тоже) стоят резисторы по 150 ом, ток через сегмент не более 20 мА, только сегмент в данном случае – это три светика, а каждый сегмент моих часов состоят из двух сегментов ленты, так что 40 мА. Вроде даже вписываемся в даташит, но на 20 выходов это уже 800 мА, что намного выше дозволенных 200 мА на корпус. Ток через ленту очень зависит от напряжения на ней, и нелинейно падает даже при небольшом снижении, что является большим минусом при обычном использовании ленты, и плюсом в данном случае, ведь реальное напряжение на сегментах равно 12 вольт минус падение на ключе (около 0.6 вольт), а ещё при желании можно снизить напряжение питания, понизив тем самым яркость часов. Так что страшные 800 мА несложно снизить раза в два. В любом случае, я был уверен, что это не станет проблемой, да и приобретённый опыт ценнее, чем возможность потери одной Атмеги. Вот так просто ATmega8 коммутирует индикатор с напряжением в два с лишним раза выше, чем её собственное напряжение питания. Именно это я имел ввиду в заголовке статьи. Хотя способ совсем не нов, по такому же принципу работает советская микросхема К155ИД1 – высоковольтный дешифратор управления газоразрядными индикаторами, где сравнительно низковольтные выходы (до 60 вольт) коммутировали индикаторы с напряжением зажигания 150 вольт и выше.
Дальнейшие эксперименты я продолжил с обычным четырёхсимвольным семисегментным индикатором с общими анодами и раздельными катодами, как раз припасён был для такого случая.
Аноды к +5 вольт через один на всех резистор, для отладки прошивки этого за глаза. Первоначально я остановился на варианте использования в качестве двух недостающих ног пинов подключения кварца (итого 22 выхода), а тактировать контроллер от внешнего генератора минутных импульсов через (внимание!)…
… вход сброса. Это ещё один занимательный лайфхак, который описан здесь Как сохранять переменные arduino, при reset.
Можете попробовать залить в Ардуино простой код и посмотреть результат работы в «Мониторе порта», периодически сбрасывая её кнопкой или с клавиатуры:
пробник
Не буду приводить свой код, дабы не подвергаться критике лишний раз (я не самый лучший
программист), но если в двух словах, можно создать глобальную переменную, которая сохраняется при перезагрузке контроллера. Раз в минуту под воздействием внешнего импульса сброса Атмега перезагружается, и начинает заново отрабатывать прошивку: считывает переменную, преобразует её в показания часов и минут, выводит на индикатор, увеличивает переменную на одну минуту. Дальше опять сброс, и всё по новой. Пришлось порыться в интернете и опробовать два вида программного сброса, ведь внешнего генератора у меня пока не было, а жмакать сброс всё время вручную не сильно удобно.
пример функции
Что интересно, эта переменная может сохраняться даже после отключения питания (не всегда). И это не EEPROM, если кто подумал. По мере отладки я пришёл к использованию нескольких таких переменных.
Кто-то скажет: какой внешний генератор, а как же концепция голой Атмеги? На момент опытов я был уверен, что в качестве генератора выступит некая козявка размером с рисинку и ценой в пару копеек. Но когда всё заработало в теории и пришло время с козявкой определиться, меня ждал облом. Единственное, что меня могло бы устроить, это старая добрая К176ИЕ12, кто бы мог подумать! На дворе двадцать первый век, а в природе нет простого доступного аппаратного генератора минутных импульсов.
Не беда, подумал я. Можно и раз в секунду. Немного переписал код, проверил работу, отлично. Но опять же, для внешнего генератора я нашёл только DS1307 (и её аналоги). Да, стоит копейки, для обвязки достаточно кварца (и ещё несколько необязательных элементов). Вот только чтобы она генерировала секундные импульсы, ей нужно подать команду по шине I2C. Чем подать? И какую? (Теперь я уже знаю, но на тот момент не было с чем пробовать). Короче, не подходит. Ладно, последняя надежда. Некоторые западные часы 90-х тактировались частотой сети 50 гц. Возможно, сейчас у нас частота стабильней, чем была 30 лет назад. Попробовал сымитировать – работает. Если бы воплотил в жизнь, было бы оригинально – контроллер, перезагружающийся 100 раз в секунду. Но я пока отмёл этот вариант и стал искать другие.
Итак, я мог использовать 22 выхода (что мне достаточно) и пин сброса в качестве входа. Но не срослось… Вернёмся к варианту с кварцем. Минус две ноги на кварц – получаем 20, даже если ножку сброса сделать портом ввода-вывода, получим 21, всё равно не хватает одного, хоть ты тресни! Но недавно я нашёл способ, о котором задумывался ещё два года назад, что-то не получилось тогда. У нас есть пин AREF для опорного напряжения, относительно которого происходят аналоговые измерения. И на этот пин мы можем программно подать напряжение питания в качестве опорного или встроенное опорное напряжение 2.56 (для ATmega8). Проверил, измерил, действительно можно получить на ножке AREF напряжение 0 вольт, 2.56 вольт, или 5 вольт.
превращаем AREF в ещё один выход
Нюанс: это если замерять относительно общего провода. Если мерить относительно +5 вольт, во всех трёх случаях получаем ноль. То есть нагрузку можно подключить между AREF и общим. Экспериментально установил, что можно получить ток до 20 мА при 2.56 вольт на ноге и до 40 мА при 5 вольт на ноге, этого вполне достаточно, чтоб зажечь светодиод, к примеру. Вот он, заветный двадцать второй выход! Конечно, напрямую управлять двенадцативольтовым сегментом не получится, нужен транзистор. Под руку попался легендарный КТ315, сколько лет я к нему не прикасался, как по мне, это одно из лучших произведений советской электроники, наряду с микрухой К155ЛА3. Когда-то я КТ315 и КТ361 даже в качестве ключей импульсного трансформатора питания применял, при напряжении порядка 60 вольт, и неоднократно. Здесь же нагрузка для него плёвая, и я принципиально даже резистор в базу не поставлю (20 мА вполне себе допустимый ток базы).
Ну что ж, думал я, 22 выхода есть, отлажу код с 21 выходом, а 22-й на ножке сброса оставлю напоследок, когда всё остальное уже заработало. Ещё ведь и кнопки установки времени нужно куда-то приткнуть, а ног не осталось вовсе. Если б Атмега была в SMD-корпусе, можно было бы воспользоваться входами А6 и А7, выходами они всё равно не умеют. Но у меня корпус DIP, так что такой роскоши позволить себе не могу. Зато ведь можно выходы сделать входами, правда, в это время придётся погасить индикацию, но для опроса кнопок достаточно нескольких миллисекунд, никто и не заметит (как я ошибался!). Значит, перевожу ножки кнопок в режим входов, подтягиваем программно к питанию, и ждём пару миллисекунд. Если в это время какая-то из кнопок замкнута на минус, ждём ещё 20 миллисекунд, убеждаемся, что кнопка всё ещё нажата, и производим соответствующее действие в программе. Кнопки: «минуты плюс», «минуты минус», «часы плюс», «коррекция плюс». Коррекция – подстройка значения секунд раз в сутки в зависимости от суточного ухода показаний. Всё заработало почти с первого раза. Нюанс: при замкнутой кнопке сегмент, подключенный к той же ножке, оказывается включён, такой вот побочный эффект, что поделать. Поэтому кнопки изменения минут подключаю к выводам контроллера, которые управляют сегментами единиц часов, а кнопки изменения часов подключаю к выводам контроллера, которые управляют сегментами единиц минут. Выставляя минуты, совсем не обращаешь внимания, что с показаниями часов что-то не так, и наоборот.
Ну вот всё и получилось в макете с семисегментными индикаторами. Но параллельно я пытался накопать информации по поводу применения ноги сброса в качестве порта ввода-вывода. А там всё довольно туманно и неопределённо. Основное, что об этом пишут: 1 – выход с открытым коллектором (не точно), 2 – выход чрезвычайно слаботочный (тоже не наверняка). Даже если использовать внешний транзистор, нужно точно знать, открытый коллектор (сток) или нет, ведь тогда состояние выхода нужно инвертировать. А перепрошить я уже не смогу. В общем, опять двадцать пять! Вернее, двадцать один. Двадцать один гарантированный выход вместо 22. Опять одного не хватает. Опять я мечусь в поисках решения.
Возвращаюсь к AREF. Я могу получить три разных уровня на нём. Значит можно зажечь один сегмент, или два одновременно, или ни одного. Я обратился к своей же прошлой публикации (как давно это было!):Ненормативная схемотехника: семисегментный индикатор на ATtiny13.
Чтобы попробовать использовать решение с совместным включением двух сегментов. Перебирая возможные пары сегментов, и осознавая, что подобное усложнение портит всю картину, я внезапно додумался, что для цифры десятков минут поле поиска значительно сужается – цифра ведь может быть только от 0 до 5. И тут пришло озарение:
во всех этих цифрах сегменты А и D или вместе светятся, или вместе погашены! Не нужно никаких трёх состояний, достаточно просто соединить сегменты А и D вместе и подключить к одному выходу. И теперь 21 выхода хватит всем. Довожу код, проверяю на макетке с семисегментным индикатором, бинго!
Всё, пора делать финальный вариант. Нарезаю светодиодную ленту, наклеиваю сегменты на подходящее основание, которым оказался кусок пластиковой вагонки (примерно 150х350 для цифр высотой 100). К каждому сегменту нужно подвести +12 вольт и проводник от соответствующего выхода контроллера.
В качестве монтажного провода применил для +12 тонкую проволочку без изоляции, вынутую из обычного гибкого провода, подпаиваю к плюсу каждого сегмента, продеваю через проколотое отверстие на другую сторону основания и спаиваю их все вместе, а для остальных проводников обмоточный провод в лаковой изоляции, продеваю их через те же отверстия и подпаиваю к панельке контроллера. На каждую цифру получилось по три отверстия в местах, где сходятся сегменты, в одно отверстие выходит один провод на +12, и два или три провода в изоляции. Также к контроллеру подведены четыре провода от кнопок, кнопки замыкаются на минус, подтяжка внутренняя. Я при проверке обходился без кнопок, просто касался провода проводом.
Сегменты цифр разведены по контроллеру именно в таком порядке для упрощения кода.
Первая цифра (единица, напоминаю) состоит из цельного куска ленты длиной 10 см. Подключаю 5 вольт питания контроллера и 12 вольт питания индикации, включаю. Вот он, торжественный момент, всё красиво светится, часики работают. Кстати, на КДПВ в начале статьи в качестве светофильтра на индикаторах лежит лист обычной бумаги для принтера, яркости хватает с избытком.
Мне не очень нравится американская система отображения времени, когда часы дважды в сутки считают до двенадцати. Я применил свою: с нуля часов до 19, и затем 8, 9, 10, 11. А с учётом того, что часы офисные, в 8 вечера их редко кто увидит.
В такие моменты ощущаешь некоторое разочарование, что прям вот так сразу заработало, даже как-то неинтересно. Поначалу я упорно не хотел замечать некое мерцание индикаторов, пока мне на него не указали коллеги. В макете этого мерцания не было видно совсем, а тут прям бросается в глаза. Выше я писал, что при опросе кнопок после перевода ножек в режим ввода сделана пауза в пару миллисекунд, без этой паузы остаточный потенциал на ножке воспринимался как нажатие. Так вот этих двух миллисекунд, в течение которых индикаторы потушены, оказалось достаточно для мерцания индикации. И это при том, что опрос происходит два раза в секунду. То есть глаз замечает двухмиллисекундную паузу дважды в секунду, чего я никак не ожидал. Было подозрение, что вследствие переходных процессов контроллер каждый раз перепроверяет, действительно ли нажаты кнопки (а это по 20 мсек на каждую). Я внёс некоторые изменения в код, временно отключив все лишние функции, но подозрения не подтвердились. В результате помогли следующие изменения: для опроса кнопок перевожу те выходы, которые задействованы под кнопки, в высокий уровень, тем самым погасив соответствующие сегменты, только после этого перевожу те же ножки в режим входа. Таким образом от паузы в 2 мсек можно избавиться совсем, но я оставил на всякий случай 300 микросекунд, проблема исчезла полностью.
Что мы имеем в итоге? Ножка сброса контроллера работает по прямому назначению и используется только при заливке прошивки, ножки кварца подключены к кварцу, как и положено. Двадцать ног работают как порты ввода-вывода, и нога AREF управляет ключевым транзистором, как раз на него и навешена цифра десятков часов (1). Ещё четыре ножки питания, никто не отлынивает, все ноги задействованы. По поводу кварца: я всерьёз рассматривал вариант применения часового кварцевого резонатора на 32768 Гц (считал его более точным), но отказался от идеи, побороздив интернет. Оказывается, запустить Атмегу с часовым кварцем не так-то просто и нет никаких гарантий работоспособности, а плюсов от применения не особо. Экономичность нас не интересует в данном случае, основное потребление – индикация. С точностью тоже всё неопределённо. А суточный уход вполне компенсируется программно. Зато большим плюсом является простота подключения, кварц на 8 или 16 МГц без проблем работает даже без конденсаторов. В результате вся схема состоит (если не считать индикаторы и питание) из Атмеги, кварцевого резонатора, и транзистора, припаянных прямо к панельке. Питание контроллера обеспечивается малогабаритным стабилизатором из серии 7805, ток через него мизерный, но на всякий случай я припаял его теплоотводом к кусочку оцинковки примерно 30х30 мм. В целом же часы питаются от внешнего блока питания на 12 вольт, который, по сути, дороже всех комплектующих. Фактический ток потребления часов 560 мА при показаниях часов 18-08 (это максимальное количество сегментов, которые можно засветить одновременно), получается около 28 мА на сегмент. Это при напряжении питания часов 11.7 вольт, ещё 0.3 вольта падает на диоде, включенном для защиты от неправильного подключения и чтоб немного снизить напряжение и ток соответственно. Падение на выходных ключах Атмеги около 0.56 вольт. Все токовые режимы превышены, но Атмега справляется, честь и хвала творцам! Запаса яркости избыточно, напряжение питания можно ещё снижать. Если тактировать Атмегу от внутреннего генератора, то можно ножки кварца отдать индикатору, а время считывать по I2C с DS1307. Опять же будут заняты все ноги, но зато питание часов можно будет отключать хоть на неделю, а время продолжит тикать. Хотя точность DS1307 совсем не радует, и по моему опыту, и по отзывам в интернете. Зато на ней есть дополнительный выход с открытым коллектором, которому можно дать команду мигать с частотой 1 Гц, и навесить на него разделительную точку. В моих часах разделительных точек пока нет, можно разрезать ту же ленту на отдельные светодиоды и подключить постоянно к напряжению питания. Мигать не будет, но я думаю над этим. Может, кто подскажет, как выжать ещё каплю из Атмеги?
И, напоследок, код для тех, кто захочет повторить. Компилировал и прошивал в ArduinoIDE. Я не программер, так что примите как есть, если кто предложит лучше, с удовольствием выложу.
Особо чувствительным не смотреть
Я предупреждал
Семисегментный дисплей | Хакадей
9 января 2023 г. Мэтью Карлсон
Часто с более «современными» сложными протоколами, включающими рукопожатие, обмен токенами и все другие сопутствующие им обручи и свистки, мы забываем, насколько полезным и мощным может быть последовательный интерфейс. В качестве прекрасной дани этому [Davide Gironi] создал простой 16-разрядный последовательный дисплей с питанием от AVR.
Он может отображать два числа, и все. МАКС7219управляет дисплеем, а мозги — ATmega8. Отправить новые значения очень просто: начальный байт, CRC, данные для отображения и конечный байт. CP2102 предоставляет интерфейс UART-USB для подключения к хосту. EEPROM помогает запоминать последние показанные числа. Он поддерживает положительные, отрицательные числа и числа с плавающей запятой.
Это прекрасный пример того, как делать что-то одно и делать это хорошо. Дизайн прост и позволяет использовать его для чего угодно. Вы можете показать текущую рыночную цену, время прибытия следующих двух поездов или что-то еще, что вы можете придумать. [Davide] включил схему, код и напечатанный на 3D-принтере корпус.
Возможно, эту идею можно было бы совместить с продуманным дизайном одномоторного семисегментного индикатора.
Продолжить чтение «Простой последовательный дисплей» →
Posted in МикроконтроллерыTagged atmega8, серийный, семисегментный дисплейТурбо-кнопка ПК и светодиодный дисплей тактовой частоты были обычными функциями первых персональных компьютеров. Желая добавить немного ретро-шика своей современной боевой станции, [Мэттью Фрост] собрал очаровательную и функциональную дань уважения панели управления с турбо-кнопкой.
Раньше эта автомобильная номенклатура подразумевала повышение производительности при активации. Вместо этого «турбо-режим» заставит ваш процессор x86 работать на номинальной частоте. Отключение «турбо» приводило к снижению частоты ЦП, часто вплоть до 4,77 МГц. Унаследованные от оригинального IBM PC, некоторые ранние компьютерные программы полагались на эту конкретную тактовую частоту и в противном случае работали бы слишком быстро (или вообще не работали) на более быстром оборудовании. Команды по маркетингу ПК и инженеры перестали включать кнопку турбо и светящиеся цифры тактовой частоты в эпоху Pentium.
В этом современном переосмыслении кнопки Turbo используется микроконтроллер Arduino, семисегментный дисплей и тактильные переключатели, чтобы имитировать внешний вид оригинального оборудования. Вместо того, чтобы напрямую регулировать тактовую частоту процессора, используйте турбо-переключения между сбалансированными и высокопроизводительными планами электропитания Windows. Семисегментный дисплей измеряет эту тактовую частоту в ГГц с точностью до двух знаков после запятой. Мы признаем, что очень приятно видеть, что эти цифры на дюйм выше при переключении на турбо.
Читать далее «Кнопка «Турбо» отдает дань уважения ранним персональным компьютерам» →
Posted in Arduino Hacks, RetrocomputingTagged ретрокомпьютинг, семисегментный дисплей, турбо-кнопка10 марта 2022 г., Робин Кири
Большие механические семисегментные дисплеи имеют определенное присутствие, которое вы просто не получите в электронных экранах. Частично это происходит из-за довольно приятного звука «щелк-щелк-щелк», который они издают при каждом переходе. К сожалению, такой шум быстро становится раздражающим в вашей гостиной; Поэтому [Дэвид МакДейд] разработал бесшумные электромеханические семисегментные часы, которые имеют все признаки механического дисплея без сопровождающего звука.
Как описывает [Дэвид] в очень подробном сообщении в блоге, ключом к этой бесшумной работе является использование шаговых двигателей вместо сервоприводов и управление ими с помощью драйвера шагового двигателя TMC2208. Этот чип имеет уникальный метод регулирования тока, который не вызывает механических вибраций внутри двигателя. Недостатком по сравнению с сервоприводами является количество необходимых управляющих проводов: с четырьмя проводами, идущими к каждому двигателю, прокладка кабелей становится проблемой, когда вы пытаетесь собрать четыре семисегментных дисплея.
Читать далее «Бесшумные шаговые двигатели делают электромеханические часы подходящими для гостиной» →
Posted in Часы хакиTagged электромеханические часы, семисегментный дисплей, шаговый двигатель11 ноября 2021 г., Адам Зелуф
Компьютеры, от самых простых до самых сложных, не очень полезны, если они не могут обеспечить обратную связь с пользователем. Независимо от того, принимает ли этот интерфейс форму монитора, динамика или простого светодиода, почти всегда есть какой-то выход. Одним из самых распространенных является вездесущий семисегментный дисплей. Они маленькие, их легко использовать и, что, пожалуй, самое главное, они дешевы.
Хотя дисплеи сами по себе относительно компактны, для них часто требуется какая-то схема драйвера — что-то, что преобразует цифру в напряжение на правильных контактах. Эти драйверы могут занимать ценное место, особенно на макетной плате, и иногда могут усложнять использование семисегментных дисплеев. К счастью, у [Джона Лонергана] есть отличное решение: платы драйверов, полностью расположенные под дисплеями. Его проект двойного семисегментного шестнадцатеричного дисплея родился по необходимости — он был нужен ему для макетного процессора SPAM-1, который становился слишком громоздким. Каждый модуль представляет собой два семисегментных дисплея на небольшой печатной плате. Под дисплеями находится 8-битный микроконтроллер PIC, который действует как драйвер для обоих дисплеев.
При работе над электронным дизайном так легко ограничиться двухмерным мышлением — даже при проектировании многослойных печатных плат часто кажется, что вы работаете с несколькими отдельными двухмерными областями, а не с одной трехмерной. Концепция штабелирования компонентов для экономии места, хотя и довольно проста в реализации, является отличным примером решения проблем, которое мы любим видеть здесь, в Hackaday. Конечно, если вам нравится идея проектирования схем в 3D, вы должны проверить некоторые из этих невероятных скульптурных схем, которые мы показывали в прошлом.
Читать далее «Трехмерная конструкция позволяет создавать компактные семисегментные шестигранные дисплеи» →
Posted in аппаратное обеспечение, RetrocomputingTagged процессор, микроконтроллер, рис, семисегментный дисплей20 апреля 2021 г., Левин Дэй
Когда мы думаем о 7-сегментных дисплеях как о вездесущих светодиодных устройствах, которые стали популярными в 1970-х годах. Однако числа существуют гораздо дольше, и люди уже давно хотят знать, что это за числа. Таким образом, до появления светодиодов использовались различные технологии, например, эти великолепные 7-сегментные дисплеи с лампами накаливания, продемонстрированные [Фрэн Бланш].
Дисплеи просты по своей концепции, но мы представляем, что их исполнение немного разочаровывает. Электроника была жестче в те дни, когда для ламп требовалось огромное напряжение, и даже простой цифровой дисплей потреблял большой ток. Созданные в соответствии со спецификациями промышленного класса, они оснащены большим корпусом с радиатором и прочными позолоченными разъемами. [Фрэн] предполагает, что из-за вероятного военного применения такого оборудования нити накала в лампах, вероятно, были построены таким образом, чтобы служить практически бесконечно. Свечение отдельных сегментов имеет уникальный вид по сравнению с их светодиодными собратьями; без горячих точек и обычной конической формы на каждом сегменте. Вместо этого цифры приятно гладкие для знакомой, но не совсем эстетической.
[Фрэн] демонстрирует работу дисплея с декодером CD4511B BCD-в-7-сегментов, подключенным к группе мощных транзисторов 3904, чтобы чип работал с лампами накаливания вместо светодиодов. Это немного суетливо, но дисплеи отлично работают с отсортированным оборудованием.
Нам бы очень хотелось, чтобы они использовались на очень тяжелых нелепых часах; в конце концов, никси — не единственная игра в городе. Если вам случится сделать один, обязательно сообщите нам об этом. Видео после перерыва.
Читать далее «7-сегментные дисплеи с лампами накаливания — это круто» →
Posted in Разное HacksTagged 7-сегментный дисплей, лампа накаливания, семисегментный дисплей10 февраля 2020 г. Том Нарди
Семисегментные дисплеи, являющиеся основным продуктом потребительских устройств на протяжении десятилетий, являются, возможно, одними из самых узнаваемых электронных компонентов. Поэтому, вероятно, неудивительно, что они дешевы и их легко найти для наших собственных проектов. Но это не значит, что нет места для личной интерпретации.
[MacCraiger] хотел построить настенные часы с классическим семисегментным светодиодом, но его идея заключалась в том, чтобы сделать их немного на больше, чем в среднем. Со светодиодными лентами RGB, заменяющими отдельные светодиоды, масштабирование концепции на самом деле не является проблемой на техническом уровне; сложная часть заключается в рассеивании такого количества светодиодов и достижении упорядоченного вида настоящего семисегментного дисплея.
Все эти сегменты, идеально вырезанные из листа фанеры, изготовлены на фрезерном станке с ЧПУ. После того, как прямоугольники были вырезаны, [МакКрейгер] должен был заполнить их чем-то, что могло бы смягчить свет, исходящий от светодиодов, установленных позади них. Он решил разбить кучу стеклянных бутылок на маленькие кусочки, положить их внутрь сегментов, а затем запечатать слоем прозрачной эпоксидной смолы. Окончательный вид уникален, как будто сегменты представляют собой глыбы льда.
На первый взгляд использование Raspberry Pi Zero для управления светодиодными лентами может показаться излишним, но, как оказалось, [MacCraiger] на самом деле добавил немало дополнительных функций. Пуристы могут сказать, что это все еще можно было бы сделать с ESP8266, но возможность запускать некоторые скрипты Python на компьютере с Linux внутри ваших часов, безусловно, имеет свою привлекательность.
Важной особенностью является совместимость с Amazon Alexa. Как только он скажет цифровому домашнему помощнику установить будильник, часы переключатся на дисплей обратного отсчета с цифрами, которые меняют цвет, когда таймер приближается к нулю. Он также написал код, который медленно меняет цвет цифр в сторону красного по ходу месяца — отличный способ с первого взгляда визуализировать, насколько вы близки к тому, чтобы пропустить дедлайн в конце месяца.
В последнее время мы наблюдаем кое-что вроде пробега на пользовательских многосегментных дисплеях. Буквально в прошлом месяце мы видели часы, в которых использовались невероятные 25-сегментные светодиодные дисплеи, дополненные собственным уникальным взглядом на диффузоры, заполненные эпоксидной смолой.
Читать далее «Огромный семисегментный дисплей из битого стекла» →
Posted in Часы хаки, Светодиодные хакиTagged часы, диффузор, эпоксидная смола, светодиодная лента RGB, семисегментный дисплей, настенные часы30 июля 2019 г. Том Нарди
Когда [Патрик Хикки] потратил приличную сумму на eBay, чтобы купить пару семисегментных дисплеев, которые использовались в Центре управления запуском в Космическом центре Кеннеди во время программы «Аполлон», он мог просто поставить их на полку. Это определенно то, что сделало бы большинство людей. Вместо этого он решил изучить и задокументировать их дизайн в надежде в конечном итоге создать 3D-копии этих уникальных частей истории НАСА.
Теперь, когда нас отделяет полвека от высадки на Луну, как никогда важно сохранить невероятную технологию, которую НАСА использовало во время величайшего приключения человечества. Легальное оборудование эпохи Аполлона довольно редко встречается на открытом рынке и, конечно, недешево. Как объясняет [Патрик] на странице этого проекта на Hackaday.io, возможность 3D-печати точных копий этих дисплеев, пожалуй, лучший способ гарантировать, что они не будут потеряны для истории.
Но более того, он также хочет, чтобы другие могли увидеть их в действии и, возможно, даже использовать в своих проектах. Таким образом, это означает создание современной электроники, которая заменит аппаратное обеспечение эпохи 60-х, которое изначально приводило их в действие.
Поскольку [Патрик] не имеет доступа к какому-либо источнику света (вероятно, лампе накаливания), который изначально использовался в этих дисплеях, его электроника строго функциональна, а не является попыткой воссоздать историческую картину. Но мы должны сказать, что эффект выглядит фантастически, несмотря ни на что.
В настоящее время [Патрик] вкладывает большую часть своих усилий в меньший из двух дисплеев, который он называет «Тип А». Кусок фрезерованного алюминия со встроенными ребрами охлаждения имеет относительно простую форму, которую можно воспроизвести с помощью 3D-сканирования или даже с помощью пары штангенциркулей. Он также собрал доказательство концепции того, как он намеревается освещать дисплей 5-миллиметровыми светодиодами на тщательно обрезанном фрагменте макетной платы, которую он планирует в конечном итоге усовершенствовать, чтобы уменьшить количество используемых проводов.
Один аспект, в котором он до сих пор не уверен, это как лучше воспроизвести переднюю маску. Похоже, он сделан из травленого металла со встроенным диффузором из стекловолокна, и, хотя он уже придумал несколько возможных способов создания аналогичной передней панели для своей 3D-печатной версии, он, безусловно, открыт для предложений сообщества.
Это не первый раз, когда мы видим, как целеустремленный человек использует 3D-печать для воссоздания редкого и дорогого предмета. В то время как пуристы скажут, что версия из экструдированного пластика не сравнится с настоящей вещью, мы думаем, что это, безусловно, лучше, чем позволить таким технологиям уйти в безвестность.
Posted in LED Hacks, SpaceTagged 3D-печать, аполлон, Космический центр Кеннеди, сохранение, семисегментный дисплей404 — СТРАНИЦА НЕ НАЙДЕНА
Почему я вижу эту страницу?
404 означает, что файл не найден. Если вы уже загрузили файл, имя может быть написано с ошибкой или файл находится в другой папке.
Другие возможные причиныВы можете получить ошибку 404 для изображений, поскольку у вас включена защита от горячих ссылок, а домен отсутствует в списке авторизованных доменов.
Если вы перейдете по временному URL-адресу (http://ip/~username/) и получите эту ошибку, возможно, проблема связана с набором правил, хранящимся в файле .htaccess. Вы можете попробовать переименовать этот файл в .htaccess-backup и обновить сайт, чтобы посмотреть, решит ли это проблему.
Также возможно, что вы непреднамеренно удалили корневую папку документа или вам может потребоваться повторное создание вашей учетной записи. В любом случае, пожалуйста, немедленно свяжитесь с вашим веб-хостингом.
Вы используете WordPress? См. Раздел об ошибках 404 после перехода по ссылке в WordPress.
Как найти правильное написание и папку
Отсутствующие или поврежденные файлыКогда вы получаете ошибку 404, обязательно проверьте URL-адрес, который вы пытаетесь использовать в своем браузере. Это сообщает серверу, какой ресурс он должен использовать попытка запроса.
http://example.com/example/Example/help.html
В этом примере файл должен находиться в папке public_html/example/Example/
Обратите внимание, что в этом примере важен CaSe . На платформах, которые обеспечивают чувствительность к регистру 9Пример 0119 e и пример E не совпадают.
Для дополнительных доменов файл должен находиться в папке public_html/addondomain.com/example/Example/, а имена чувствительны к регистру.
Неработающее изображениеЕсли на вашем сайте отсутствует изображение, вы можете увидеть на своей странице поле с красным размером X , где отсутствует изображение. Щелкните правой кнопкой мыши на X и выберите «Свойства». Свойства сообщат вам путь и имя файла, который не может быть найден.
Это зависит от браузера. Если вы не видите на своей странице поле с красным X , попробуйте щелкнуть правой кнопкой мыши на странице, затем выберите «Просмотреть информацию о странице» и перейдите на вкладку «Мультимедиа».
http://example.com/cgi-sys/images/banner.PNG
В этом примере файл изображения должен находиться в папке public_html/cgi-sys/images/ пример. На платформах с учетом регистра PNG и png не совпадают.
404 Ошибки после перехода по ссылкам WordPress
При работе с WordPress часто могут возникать ошибки 404 Page Not Found, когда была активирована новая тема или когда были изменены правила перезаписи в файле .htaccess.
Когда вы сталкиваетесь с ошибкой 404 в WordPress, у вас есть два варианта ее исправления.
Вариант 1. Исправьте постоянные ссылки- Войдите в WordPress.
- В меню навигации слева в WordPress нажмите Настройки > Постоянные ссылки (Обратите внимание на текущую настройку. Если вы используете пользовательскую структуру, скопируйте или сохраните ее где-нибудь.)
- Выберите По умолчанию .
- Нажмите Сохранить настройки .
- Верните настройки к предыдущей конфигурации (до того, как вы выбрали «По умолчанию»). Верните пользовательскую структуру, если она у вас была.
- Нажмите Сохранить настройки . 9index.php$ — [L]
- Отредактируйте файл на своем компьютере и загрузите его на сервер через FTP
- Использовать режим редактирования программы FTP
- Используйте SSH и текстовый редактор
- Используйте файловый менеджер в cPanel
- Войдите в cPanel.
- В разделе «Файлы» щелкните значок «Диспетчер файлов ».
- Установите флажок для Корень документа для и выберите доменное имя, к которому вы хотите получить доступ, из раскрывающегося меню.
- Убедитесь, что установлен флажок Показать скрытые файлы (точечные файлы) «.
- Нажмите Перейти . Файловый менеджер откроется в новой вкладке или окне.
- Найдите файл .htaccess в списке файлов. Возможно, вам придется прокрутить, чтобы найти его.
- Щелкните правой кнопкой мыши файл .htaccess и выберите Редактировать код в меню. Кроме того, вы можете щелкнуть значок файла .htaccess, а затем 9Значок 0119 Code Editor вверху страницы.
- Может появиться диалоговое окно с вопросом о кодировании.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Конец WordPress
Если ваш блог показывает неправильное доменное имя в ссылках, перенаправляет на другой сайт или отсутствуют изображения и стиль, все это обычно связано с одной и той же проблемой: в вашем блоге WordPress настроено неправильное доменное имя.
Как изменить файл .htaccess
Файл .htaccess содержит директивы (инструкции), которые сообщают серверу, как вести себя в определенных сценариях, и напрямую влияют на работу вашего веб-сайта.
Перенаправление и перезапись URL-адресов — это две очень распространенные директивы, которые можно найти в файле . htaccess, и многие скрипты, такие как WordPress, Drupal, Joomla и Magento, добавляют директивы в .htaccess, чтобы эти скрипты могли работать.
Возможно, вам потребуется отредактировать файл .htaccess в какой-то момент по разным причинам. В этом разделе рассказывается, как редактировать файл в cPanel, но не о том, что нужно изменить. статьи и ресурсы для этой информации.)
Существует множество способов редактирования файла .htaccessСамый простой способ отредактировать файл .htaccess для большинства людей — через диспетчер файлов в cPanel.
Как редактировать файлы .htaccess в файловом менеджере cPanelПрежде чем что-либо делать, рекомендуется сделать резервную копию вашего веб-сайта, чтобы вы могли вернуться к предыдущей версии, если что-то пойдет не так.
Откройте файловый менеджер