ARDUINO часики с динамической индикацией

Как то так сложилось, что для ардуинки практически не используют большие 7-ми сегментные индикаторы, все больше уже готовые модули, которые не отличаются крупными размерами.

Сей пробел по мере сил я немного осветил ;)

ARDUINO часики с динамической индикацией Arduino, Программирование, Arduino Nano V3, Длиннопост

Схема часов предельно простая - 4-х разрядный 7-ми сегментный дисплей, собранный на суперярких 1,5" дюймовых индикаторах с общим анодом FYS-15011BD-11. В каждом сегменте индикатора стоят по 2 последовательных светодиода.

Аноды идут соответственно на выводы А2-А5 (в скетче они зовутся 16-19), катоды через резисторы 220 Ом. Ток получается мизерный, а яркость в вечернее время даже чрезмерной.

Я сначала на точку поставил тоже 220 Ом, но она светится значительно ярче, потому надо поэкспериментировать с большим номиналом, в схеме уже стоит 470 Ом.

Катоды идут с D2 до D9 - шесть выводом относятся к PORTD и два к PORTB. Скорее всего можно задействовать весть PORTD на вывод, включая 0 и 1 выводы, на плате обозначаются как выводы последовательного порта, индикатор по идее мешать прошивке не будет. Но я тестировал программу с выводом в последовательный порт, поэтому не задействовал их.


В качестве часов реального времени выбрана DS1302 (впрочем я собираюсь все возможные протестировать). На схеме видно что куда подключать.

Для начальной установки точного времени нужно найти и раскомментировать в коде строчку :


// rtc.setTime(12, 00, 0); // Set the time to 12:00:00 (24hr format)


Естественно поставив нужные значения времени в формате часы : минуты : секунды, после первого запуска опять нужно убрать строку под комментарий и еще раз загрузить скетч. В противном случае время будет  при каждом включении часов начинать отсчет с выбранного времени.


Код с использованной библиотекой реального времени https://yadi.sk/d/PirwXVqzB-1nRw

ARDUINO часики с динамической индикацией Arduino, Программирование, Arduino Nano V3, Длиннопост

Вот так оно выглядит вживую.

ARDUINO часики с динамической индикацией Arduino, Программирование, Arduino Nano V3, Длиннопост

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

ARDUINO часики с динамической индикацией Arduino, Программирование, Arduino Nano V3, Длиннопост

А вот такой корпус будет у этих часиком, корпус от советских электромеханических часов Слава, ну точнее не сам корпус, а декоративные элементы.


PS: Только сейчас вспомнил что бывают переходы на летнее/зимнее время и таки придется в следующей версии ставить кнопки для выставления часов. 😉

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

1
Автор поста оценил этот комментарий

Установку времени - поколдуйте через serial. Вполне рабочий вариант.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Я все поделки стараюсь кому-то дарить ;) Потому как у меня ручки шаловливые и запчасти обязательно куда-то понадобятся ;)))

Сомневаюсь что кто-то будет разбираться с подключением к компу...

показать ответы
Автор поста оценил этот комментарий

Я в плане дороговизны. Под часики можно было бы почти любой микроконтроллер дешевле $1 на али найти.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Это очень старый спор, вот скажите ну сэкономите вы что-то около доллара на замере ардуинки на голый контроллер, но к нему нужно будет как минимум городить плату, минимальную обвязку и т.д. Это не говоря уже что голому контроллеру нужен специальный программатор... В общем овчинка, на мой взгляд, выделки не стоит! А учитывая китайские клоны, которые в виде ПРО МИНИ стоят дешевле ATMEGA8 (50-60 центов с доставкой!) или НАНО чуть больше доллара...


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


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

Автор поста оценил этот комментарий

На ds1302 нельзя без кнопок и коррекции хода. У них время плывет ойойой.А выходы адруинки такими семисегментниками вы не боитесь попалить?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Попалить оригинальную атмегу трудно, но можно, правда не в этой схеме.

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

показать ответы
Автор поста оценил этот комментарий

Спасибо за информацию, интересно. У нас не коммерческий проект, копейки можно не экономить.

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

ТМ1637 это управляющая микросхема, вещь хорошая, скорее всего я рано или поздно перейду на что-то подобное, удобно управлять. Но это проставка между собственно индикатором и контроллером. Как те-же регистры. Это только в среде ардуино популярны такие устройства, всякие конструкции коммерческих часов как правило делают как можно более бюджетными, а значит все эти проставки исключаются. Да и в тех же часах на микроконтроллере он просто простаивает практически все время, так что загрузить его хоть чем-то было бы логично.

Вот схема часиков на atmega8 (сначала даже резисторы не ставили!) http://best-chart.ru/samodelnye-elektronnye-chasy-budilniki/...

показать ответы
Автор поста оценил этот комментарий

Ардуину на часики... как-то это из пушки по воробьям.

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

Что вы предлагаете использовать вместо него?

показать ответы
Автор поста оценил этот комментарий

Перерисовывать достаточно раз в секунду. Для этого в Timer1_action() выставлять флаг, например flag_timer = true. А в loop проверять этот флаг

if(flag_timer)

{

flag_timer = false

// далее код перерисовки индикатора

...

}

раскрыть ветку (1)
Автор поста оценил этот комментарий

Это динамическая индикация, так сказать вручную. Перерисовка, чтобы не было заметно глазу, должна быть как минимум 25 раз в секунду! Чтобы не было мерцания каждую миллисекунду загорается один из индикаторов и так все время.

показать ответы
Автор поста оценил этот комментарий

Что то ты явно не так считаешь. От 5 мА даже один сегмент не будет ярко светиться. А ты наверное одновременно можешь сразу несколько сегментов зажигать.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Судя по калькуляторам, на сегмент больше 5 получается. А вот БП с амперметром мне говорит что все меньше чем в 10-ку укладывается (нижний порог у усб ампер/вольтметра)

Впрочем пока разбирался с плохим контактом часов, нашел что напряжение на выходе +5 ардуины (идет на часы) всего 4,6В.


Можно поставить транзисторы в анодные цепи, так многие делают, хотя у самого контроллера есть внутренние резисторы и ограничения по току (сведениям не менее 10 лет и про младшую версию контроллера)

показать ответы
1
Автор поста оценил этот комментарий

I=U/R на выводе мк если замкнуто накоротко будет 20мА.

Падение напряжения сегмента у этого индикатора - почти 5 В, что эквивалентно КЗ.

Динамическая индикация = импульсный режим.

С учетом что тестер проводит измерения примерно 3 раза в секунду, среднее потребление будет маленьким, а вот моментальное, может быть большим.


Учитывая эффекты при переключении, на фронтах сигналов может наблюдаться не слабый переходный процесс... Усугубив паразитной индукцией, и температурным изменением ВАХ светодиодов в индикаторе - скачок на фронтах сигнала может быть значительным...


Для понимания - лучше конечно посмотреть падение напряжения на выводах ардуины при помощи осциллографа.)))

Приложил фотки осциллограм, похожих на случай динамической индикации... Много импульсов, и фронт этих же импульсов...


А буферок все же добавьте с панелькой "кроваткой" для DIP корпуса... Если чтото с индикатором будет не так, то сгорит буфер за 50 рэ, а не ардуина за 600.


(на днях брал в лабазе, срочно надо было)

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Вы видимо совсем редко сталкивались с электроникой фирмы ATMEL. Есть популярная схема часов на ATMEGA8, в которой между индикатором с контроллеров вообще нет светодиодов! И это работает годами, при пониженном напряжении, но работает. Суть в том что как-то атмел призналась что в 8-ках хоть как изгаляйся, но больше 40 из одного порта не поднять... Так что даже закоротив (что мы конечно делать в реале не будем, хотя ардуинки у нас гораздо доступнее буферных мелкосхем) ничего не случится ;)

Впрочем это я читал лет 10 назад, и про 8-ки, 328-х тогда было просто не достать и али не рассылали все бесплатно по миру 😍

Автор поста оценил этот комментарий

Херовая идея подключать сверхяркий 7сегментник к ардуине напрямую.

Между ардуиной и резисторами поставьте хотя бы шинный формирователь типа 74xx245 или 74xx244. А лучше вобще 8 транзисторов в режиме ключа-повторителя.

Ибо суммарно-максимальный ток у вас 22*7 мА, а это для выводов ардуины много... Что сказывается на ее ресурсе.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Откуда вы взяли такое потребление? Напомню индикатор большой, светодиоды последовательно, почти 4В, резистор 220 ом, у меня получается в среднем 5мА на весь индикатор...

показать ответы
Автор поста оценил этот комментарий

UPD: В общем схема предлагаемая ТСом по току "на пределе"

раскрыть ветку (1)
Автор поста оценил этот комментарий

У меня потребление ВСЕМ индикатором не превышает 5 мА ! Что на порядок меньше паспортных параметров. Сам в шоке 😉

показать ответы
1
Автор поста оценил этот комментарий

Я не понял, у тебя индикатор перерисоваеться каждый цикл даже когда время не изменилось. Там решается парой строк

раскрыть ветку (1)
Автор поста оценил этот комментарий

Расскажи как. На регистрах и спец мелкосхемах как сделать знаю, даже вытягивал матрицу из MAX7219 и втыкал свой из этой схемы. Работает! Осталось поиграться чтобы правильно циферки выводило.

показать ответы
DELETED
Автор поста оценил этот комментарий
Можно тогда синхронизацию с гпс/ГЛОНАСС встроить
раскрыть ветку (1)
Автор поста оценил этот комментарий

Ага! А зачем? у меня часы две недели работали рядом с образцовыми и за это время даже на секунду не ушли в сторону! Батарейка служит 10 лет, да за это время индикатор выгореть успеет ;)

Тут весь цимус в простоте и дешевизне.

показать ответы
Автор поста оценил этот комментарий
На ардуино переход на лето/зиму нельзя напрограммить?
раскрыть ветку (1)
Автор поста оценил этот комментарий

Можно все! 😎

Только предполагались часы вообще без кнопок - раз включил и на всю оставшуюся жизнь ;)

показать ответы
3
Автор поста оценил этот комментарий
Тут два пути:
- либо добавить кнопки
- либо отменить переход на летнее время в своей стране.
раскрыть ветку (1)
Автор поста оценил этот комментарий

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


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


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

показать ответы
Автор поста оценил этот комментарий

Не более 40 мА на ногу, но не более 200 мА через чип, т. е. сумарно.

Учитывайте, что сам чип тоже жрет. Причем не мало...по моей практике порядка 10 мА.

// уточнил в даташите на atmega328, с сайта microchip

раскрыть ветку (1)
Автор поста оценил этот комментарий

Блин как все запущено! Молодой человек! запомните Ардуино на чипах фирмы ATMEL, а MicroChip - это совсем из другой оперы!

показать ответы
2
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вам выводов не хватает? У меня еще и свободные для кнопок имеются ;)

А нагрузка, я запитывал через амперметр для мобильного, так тот вообще 0 пишет, менее 10мА... С другой стороны нужно использовать сдвиговые регистры, а это от одной до четырех лишних микросхем. Не спорю дело хорошее и ноги могут пригодится, но в данном случае имхо это самое дешевое и простое решение ;)