Часы на аттини 2313 своими руками

Добавил пользователь Cypher
Обновлено: 04.10.2024

Простые часы с термометром на микроконтроллере AVR ATtiny2313 с выводом информации на семисегментный индикатор. Часы используют для отсчета времени микросхему DS1307 - часы реального времени и источником резервного питания в 3 В. Температура измеряется при помощи датчика температуры DS18B20.

Текущее значение времени и температуры происходит поочередно сначала время а потом температура с нтервалом в 4 секунды. Формат отображения времени ЧЧ.ММ (часы,минуты). Первый ноль не отображается. О ходе отсчета времени сигнализирует мигающая точка.

Точность отображения температуры составляет десятые доли градуса. Погрешность в интевале температуры от -10 до 85 градусов составляет порядка +/- 0.5. В другом диапазоне точность уже +/- 2 градуса.

Температура замеряется 1 раз в минуту. Измеренное значение отправляется в память контроллера в которой может хранится пять послених измеренных значения. Измеренная температура округляется до целого значения. На дисплее имеются специальные символы повашения температуры (стрелка вверх) и понижения температуры (стрелка вниз), которые показывают как изменилась температура повисилась она или понизилась.

Если нажать на кнопке "меньше" то на дисплее сразу отобразится время. Если кнопку "больше" то отобразится температура последнего измеренного значения и начнется новый процесс измеерения температуры и новое значение отобразиться на дисплее в этом случае точность составит десятые доли и в таком формате будет отображатся в течении минуты. Если датчик температуры неисправен или отсутсвует подключение то будет оторажаться только время.

Схема часов с термометром на микроконтроллере

chasy

chasy2

Представленные схемы отличаются только общим выводом индикатора анод и катод. Индикаторы работают в динамической индикации. Динамическая индикация раелизована программно. Каждый семисегментный индикатор включается с интервалом 100 раз за 1 секунду. остальное время выключен.

Прошивка для микроконтроллера

В архиве имеются файлы Proteus и сама прошивка написана на ассемблере. Прошивка может работать для двух вышеприведенных схем, для схемы с индикатором с общим катодом и схемы индикатора с общим анодом. При прошивке микроконтроллера важно выствыить fuse-биты: CKSEL3, CKSEL1, CKSEL0, SUT0, BODLEVEL1, BODLEVEL0.

Для устройства необходимы две печатные платы из одностороннего стеклотекстолита который имеет размеры 50 на 100 мм, на одной плате устанавливаются индикатор с кнопками, а на другой сами часы. Равзодка платы в формате SpringLayout.

Индикатор или дисплей собран на двух семисегментных индикаторах FYD-8021BS-11, каждый имеет 2 разряда и имеют общий анод.

Вместо указаных на схеме вернхних включающих транзисторов платы можно использовать другие к примеру KT361B.

Часто в нашей бытовой технике для приготовления пищи (духовка , СВЧ печь , гриль и т.п.) применяют механические таймеры .

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

Работает он до первой поломки , а если ломаться упорно не хочет — до надоедания от при-

митивности .У меня он не сломался , а стал застревать посередине , и никакая

смазка и т.п .ему не помогала. Вот так и родилась идея сделать его электронный аналог .

Минимум органов управления и аналогичный функционал - требования к проекту.

Исходя из первого требования подошел энкодер , у него нет упора и его не скрутишь.

Вместо тиканья — мигающая точка , вместо шкалы--цифровой индикатор , ну и звонок

меняем на пищалку с генератором . Вместо контакта цепляем реле или симистор .

А раз есть индикатор , то почему бы не сделать еще и часы , естественно , с автономным

ходом . Ну еще максимальная простота — тоже не помешает .

При включении , устройство показывает текущее время .В режим настройки времени входим после 5-ти секундного нажатия и удержания ручки-кнопки энкодера .Миганют минуты и вращением ручки выставляем минуты .Если опять удержать5 секунд , то мигают часы , выставляем часы .Через 15 секунд после отпускания ручки устройство выходит из

режима настройки времени .

Для инициализации таймера надо повернуть ручку по часовой стрелке .При этом на

вращением ручки как и в механическом аналоге .При достижении значения 1 на табло

Через минуту переходит на индикацию времени .Во время сигнала вращение ручки в

сторону уменьшения приводит к прекращению сигнала и переходу на индикацию времени.

Во время работы таймера кратковременное нажатие ручки приводит к переключению

индикации на текущее время и наоборот .

В данной прошивке на один щелчок энкодера происходит 2-х минутное изменение

выдержки времени таймера в ту или другую сторону.

Сколько на щелчок минут или секунд - под конкретное изделие легко подгоняется , даже реакцию на поворот можно сделать нелинейной ,к примеру (от 1 до 5 -по 1 , до15 -по2 , от 15- по 5 и т.д) .Ну это - для желающих .

Схема с добавлениями:

Ну а что получилось посмотрите :

Элемент video не поддерживается вашим браузером. Скачайте видео

Коротко о деталях . Индикатор на 4 цифры с Общим Анодом .Энкодер - Pec-12 , 16 или

его аналог .На выход ставим ключ на транзисторе и реле — если чем-то хотим управлять.

Пищалка на 5 вольт с встроенным генератором .

На время передачи в регистр разряды откл. , так что можно применить и CD4015 и другие I2c регистры без защелки данных (просто не подлючать выход Тини ).
Если делать разъем внутрисхемного программирования( для SMD и не только) , то его подключите напрямую к ТИНИ , а к другие объекты схемы к этим 3-м (кроме RST ) ногам через 1ком. последовательно .

Даже наверное не просто простые, а супер простые. Данный проект на микроконтроллере можно назвать проектом выходного дня, так как на разработку и создание этих часов с нуля ушло 1,25 дня, а учитывая, что у вас будет под рукой готовый код, то вы управитесь быстрее.

Нам понадобятся: Кварцевый резонатор на 16 МГц, микроконтроллер ATTINY2313, 2 кнопки, 2 конденсатора на 22 пф, конденсатор на 220 нф, линейный стабилизатор питания 7805, 4 транзистора КТ817Б, ну и четыре семисегментных светодиодных индикатора, у меня это SA15–11GWA (высота цифр 38 мм) и горстка резисторов. Приведенный список соответствует той конструкции, что на фотографиях. Вы можете использовать иные комплектующие (более крупные индикаторы, другой микроконтроллер и т.д.), и тогда придется пересчитать некоторые сопротивления. В общем простор для творчества большой. Отечественные транзисторы пришлось использовать, поскольку под рукой ничего другого не было, если бы была возможность выбирать, то я бы поставил полевые транзисторы.

Итак, имеющиеся компоненты:
Микроконтроллер обошелся в 41 руб, индикаторы по 52,8 руб за штуку. Всего получается 252,2 руб. Остальное было извлечено из запасов, но в любом случае бюджет бы не превысил бы 300 рублей.

WorkBlog об электронных устройствах, электронных компонентах, электронных устройствах, ремонте техники и электроники, решении задач разработчика. Рекламный доход блога (коли таковой образуется!) будет передан пострадавшим в ДТП мотоциклистам, мотоДТП это больно и страшно.

Берегите себя

Берегите себя

17 июл. 2017 г.

Часы для мотоцикла "Simple": LED + Attiny 2313 + DS1307


Большие корпорации жадные. Очень. Это аксиома. Слышал, что в одной из компаний, производящей накопители, пришлось создать тайный отдел, задачей которого было сэкономить один доллар в конечной стоимости единицы продукта. Они корпели долго, но в итоге справились. Если помните СССР, то там на производстве постоянно вносились "рацухи", которые позволяли высвободить N человеко-часов или сэкономить пять болтов М6 при строительстве комбайна Дон. Так он легче станет на 125 граммов, а в масштабе страны можно будет пуд или два железа сэкономить! Тому кто подал и внедрил - полагалась денежная премия (в доле с начальником, конечно), а самым упоротым настойчивым удавалось получить авторское свидетельство и даже отжать у государства какое-то небольшое бабло.

Но я отвлекся. Инженеры Yamaha (Ямаха кабусики гайся, епрст!) создали прекрасный легкий мотоцикл YBR125. Этот драндулет нетороплив и вечен, (но при этом и своенравен!) как воды Тэнрю-гава. При попутном ветре и тощей жопе наездника он вполне может разогнаться до 100 км/ч! Оснастили инженеры этот дришпак двигателем, колесами, тормозами, спидометром и даже рулем, но пожадничали на часы. Раз ты такой не быстрый, значит и не спешишь, а раз не спешишь, тогда зачем тебе вообще часы? Да и вряд ли ты на ЭТОМ поедешь в закат, а в городе и на столбах часы есть.

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


Заготовка
Именно он попался мне на глаза первым и он стал первым камнем в фундаменте будущих часов. В переходнике есть место для монтажа микроконтроллера в корпусе SO20 и разводка его ножек на две ряда штырей с шагом 2,54 мм для имитации корпуса DIP20 плюс место для нескольких блокировочных конденсаторов по питанию. В отверстия для штырьков очень хорошо встал четырехразрядный сверхъяркий LED-индикатор (c общим анодом). Других четырехразрядных индикаторов у меня нет.

Имея базу, стал размышлять дальше, накидывая в блокноте идейки и очертания будущего ТЗ. Питание 12-15В. Контроллер ATTiny 2313 в SO20 - некоторые подозрительные экземпляры, отбракованные мной с рабочих приборов по признаку глюкавости, вполне исправно дергают ногами в моих игрушках. И тактовую частоту в 12 мГц вполне держат, пробовал. Видно, те сбои зависят от полноты использования флэша или EEPROM.

Автономным часам нужна крепкая память - отсюда появилась необходимость пригласить в конструкцию микросхему RTC - RealTimeClock. Собственно она и есть Главная Хранительница Времени, а процессор лишь иногда обращается к ней по шине i2c с вопросом "Который час, ваше Высочество?", и получив цифры, спешит выплюнуть их на дисплей. Из имеющихся RTC доступной оказалась DS1307. Я уже баловался с ней в составе Ардуино, ее присутствие здорово облегчает код часов, можно выкинуть из программы все таймеры, формирующие тактовый сигнал и не заморачиваться на прерывания и кварцевание тиньки. Точное время (а еще и дату и даже год) RTC хранит в регистрах своей памяти, так что если отключить основную жрущую часть схемы (процессор и светодиоды), часы будут "тикать" в мозгах микрухи.

И так немаленькая блямба, с держателем B или D разрастается до совершенно недопустимых величин, а я все же хотел остаться в габаритах базового "бывшего переходника". А без держателя таблетку ставить не стал, ибо ненадежно.


Удалось спереть найти батарейку CR1225, она заметно поменьше и отлично входит в габарит корпуса вместе с держателем. Да, емкость меньше, всего 50 мА·ч, против 225 мА·ч, но даже если ее хватит только на год, я удовлетворюсь. Подпитка памяти микросхемы DS1307 требует наноампер, так что срок службы "таблетки" скорее сведется к саморазряду.

Писать с нуля программу часов в 2017 году занятие для упоротых одержимых. А я ленив и рационален, как яйцеварка. Нет, я конечно могу (самообразования для) поковырять чужой код или посношаться с таймерами и предделителями. Но в данном случае сношения излишни. Старина Гугл по запросу %часы% %конфигурация "железа"% четко выдает подходящие мне конструкции пачками, только выбирай. А я еще и не брезглив.

Алгоритм работы прошивок с коррекцией:
Нажатие только кнопки +часы - меняет значение "часы"
Нажатие только кнопки +минуты - меняет значение "минуты"
Одновременное нажатие двух кнопок- меняет значение корректировки секунд в сутки, границы значения -9. +9. Корректировка производится в 22:00 ежедневно.
В архиве 6 видов прошивок.1. Общий анод без коррекции
2. Общий катод без коррекции
3. Общий анод, разделитель между 2 и 3 сегментом (одна точка)
4. Общий анод, разделитель между 2 и 3 сегментом, 3 и 4 сегментом (две точки)
5. Общий катод, разделитель между 2 и 3 сегментом (одна точка)
6. Общий катод, разделитель между 2 и 3 сегментом, 3 и 4 сегментом (две точки)

Недостатки у схемы, конечно же, есть: 1 - общие аноды подключены напрямую к процессору без внешних ключей (перегружаются четыре ноги проца), 2 - установка времени через целых две кнопки, олдскульно, но вполне достаточно одной, 3 - нет функции даты, а ее, с учетом возможностей RTC, довольно легко организовать программно (но при этом сильно нагромоздится управление, что нехорошо!), 4 - 7805 это самый мой страшный сон, греется, а с учетом внешнего питания 14-15В оно еще и сильно греется, 5 - нет "железных" подтяжек на VCC с портов кнопок. В общем, часы делал любитель с уклоном в программизм. Тем не менее, конструкция выглядела работоспособной и удовлетворяла моим требованиям.

Прошил я прошивкой №3 "ОА с коррекцией" тиньку и отложил ее в сторону. После чего запаял индикатор, и, перерезая лишние соединения ножиком, и, наводя новые проводом МГТФ-0,07, привел "переходник" к схеме часов, соединив нужные ноги тиньки с нужными ногами индикатора, не забывая ставить резисторы типоразмера SMD 0603 на катоды сегментов. Сделав это, накинул процессор на место.

Понадобилась еще одна плата. На ней я разместил стабилизатор LM2940 (та же кренка, но LDO, ставить ее было удобнее из-за корпуса ТО263), RTC DS1307, ее кварц и батарейку.

Эту плату вырезал по размеру переходника из стеклотекстолита и вырезал нужные соединения ножиком. Соединив платы электрически, залил их лаком и слепил на двухсторонний скотч, обработав стык герметиком. Да, кнопки.

Перед загермечиванием конструкции, взял пару SMD кнопок, вырезал под них переходную платку, и поставил рядом с индикатором, уперев кнопки в его торец, чтобы они не проминались от нажатия. Припаял эту платку на штыри и, подключив, пролил эпоксидкой, стараясь не залить сами кнопки.

Заработали часы сразу и без вопросов. Установка часов реализована хорошо, дается секунда или две, чтобы войти в режим коррекции, защита от случайного нажатия отличная. Режим компенсации ухода вызывается по нажатию двух кнопок одновременно и дает поставить величину ухода в секундах, именно на эту цифру будет изменяться показания часов каждые 22:00, при условии что процессор в это время будет запитан от бортсети, что вовсе необязательно.

Осталось сделать корпус. Доделать. Взял две пластмассовые заготовки от половин корпуса нашего рабочего приборчика, обрезал их до нужного размера, в верхней половине прорезал окно под индикатор, вклеил туда стеклышко из матового поликарбоната.

Из остатков крышки какого-то ноута выпилил торцы корпуса, слева вывел провод питания, справа - толкатели кнопок. Бутерброд из плат вклеил на двухсторонний скотч в нижнюю половину, выровнял верхнюю и на эпоксидку наклеил торцы корпуса. Несмотря на тщательную подготовку поверхностей, адгезия смолы к пластику вызывает у меня недоумение. Щели между верхней и нижней половинами корпуса залил, опять же, герметиком (этот липнет ко всему и засыхает намертво). А, еще момент. Крепление на руль сделано из клипсы для водопроводной пластиковой трубы, ПП-труба 20 мм, а руль 22 мм - защелкиваются часы на руле прочно, не шевелятся даже.

Питание на часы должно подаваться по задумке с кнопки габаритов, но я не выдержал, сделал им временную запитку от АКБ через выключатель, заодно поставив рядом модуль вольтметра с алиэкспресса (были у меня вопросы к состоянию АКБ и генератора). Массу взял все там же, с руля, подсунув латунный лепесток в клипсу на руле.


одна цифра потому что выдержка короткая, а индикация динамическая

Что же, теперь я с часами. Стоило ли столько ковыряться, спросите вы? Да, повозиться пришлось, больше всего сил ушло чтобы сделать монолитный и, наверное, герметичный "батончик" и еще больше времени, чтобы оформить все сделанное в виде поста, который вы сейчас прочли. У китайцев, наверняка, такие часы продаются в готовом виде, но разве это путь самурая? Терпение и смирение - вот наши главные помощники, а дорога в тысячу ли всегда начинается с первого шага.

Читайте также: