Индикаторные модули SA40-2003-V1. Как это устроено

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

Итак, спереди они выглядят обычными семисегментными индикаторами:
Ну да, немаленькие.
А вот сзади уже всё не так однозначно.
Покрупнее:
Берём в руки паяльник, моток оплётки и снимаем плату с индикатора:
Плата односторонняя.
На ней распаяны микросхемы 74AC164(поменьше) и ULN2003А. Ещё тут есть пачка 100-омных резисторов и единственный керамический конденсатор, висящий на линии питания одной из микросхем.
Восстановленная принципиальная схема модуля:
74AC164 — это 8-битный сдвиговый регистр, позволяющий управлять 8 светодиодами всего по двум проводам(сигнал сброса не обязателен — без него вполне можно обойтись, и в этих модулях он даже не выведен на внешний контакт):
Микросхемы можно складывать стопкой, в смысле — соединять последовательно, при этом не занимая на контроллере дополнительные выводы, что очень полезно при использовании контроллеров типа ATtiny и прочей мелочёвки. При использовании RC-цепочки можно вообще обойтись одним выводом МК на всю индикаторную линейку.
ULN2003A — это набор сравнительно высоковольтных ключей для управления внешними нагрузками. Отдельно взятый ключ имеет следующую схему:
Для управления индуктивными нагрузками(например, реле) её вывод 9 должен быть соединен с плюсом питания, при управлении светодиодами это не нужно, и поэтому он оставлен болтаться в воздухе.
Зачем тут вообще дополнительные ключи, если 74AC164 способна управлять светодиодами напрямую?
В больших индикаторах каждый сегмент подсвечивается не одним светодиодом, а целой гирляндой:
Из-за этого в модуле пришлось использовать две линии питания: LVCC(5 вольт) для питания сдвигового регистра и HVCC(8 вольт) для питания самого индикатора. Кстати, рабочий ток одного сегмента — 15 мА(см. даташит на индикатор).
Расположение внешних контактов модуля:

Управление 7-сегментными индикаторами через 74AC164
Пример схемы:
Программа:
// Управление семисегментными индикаторами через регистр сдвига 74HC164(ОА)
#include <avr/io.h>
#include <util/delay.h>
  
// Массив комбинаций сегментов
unsigned char SEGMENTE[] =
{
0x3F, // 0
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F  // 9
};
  
unsigned int volt;
  
// Функция сдвига
void write_byte(unsigned char data)
{
  for(unsigned char i = 0; i < 8 ; i++)
  {
    if((data & 0x80) != 0) // Сравниваем 8-й бит с нулем
    PORTB |= (1 << PB0); // DATA 1
    else
    PORTB &= ~(1 << PB0); // DATA 0
  
    data = data << 1; // Сдвигаем биты
    PORTB |= (1 << PB1); // CLK 1
    PORTB &= ~(1 << PB1); // CLK 0
  }
}
  
int main(void)
{
DDRB |= (1 << PB3)|(1 << PB1)|(1 << PB0);
PORTB = 0x00;
 
ACSR |= (1 << ACD); // Выключаем аналаговый компаратор
DIDR0 |= (1 << ADC1D); // Отключаем неиспользуемые цифровые входы
 
ADMUX |= (1 << MUX0); // Вход ADC1 
ADCSRA |= (1 << ADEN) // Разрешение АЦП
       |(1 << ADPS2)|(1 << ADPS1); // Предделитель на 64
  
while(1)
{
// Расчитаем максимальное входное напряжение на делителе
// Umax = Uin*(R1+R2)/R2
// Umax = 5*(100k+10k)/10k = 55V
// Расчитаем коэффициент делителя напряжения
// K = (R1+R2)/R2
// K = (100k + 10k)/10k = 11
// Расчитаем результат преобразования в мВ
// U = (ADC*Uref*K*100)/1024
 
ADCSRA |= (1 << ADSC); // Начинаем преобразование
while (ADCSRA & (1 << ADSC)){} // Ждем завершения преобразования
volt = ((unsigned long)ADC*5*11*100)/1024;
 
PORTB |= (1 << PB3); // Выключаем индикатор
write_byte(~SEGMENTE[volt%100/10]); // Выводим 1 разряд
write_byte(~((SEGMENTE[volt%1000/100])|0x80)); // Выводим 2 разряд
write_byte(~SEGMENTE[volt%10000/1000]); // Выводим 3 разряд
PORTB &= ~(1 << PB3); // Включаем индикатор
_delay_ms(100);
}
}

Не знаю, почему в модуле применили 74HC164 вместо 74HC595, но железка довольно забавная. Где-то валяется пачка блоков фискальной памяти от кассовых аппаратов на мелких контроллерах вроде ATMega48 — можно как раз собрать на них часы:)
Добавить в избранное +78 +101
+
avatar
+6
Ой. Это преамбула, а сам обзор будет?
+
avatar
  • oleg235
  • 25 марта 2023, 19:49
+10
Это разбор. В DIY блоге.
+
avatar
+14
Ну хуть напишите, как они к вам попали, а то, типа «вот дано, может и вам будет дано»… Такие большие индикаторы интересны, котя с какого-то размера уже проще на адресуемых диодах на-duy-ить.
+
avatar
  • oleg235
  • 25 марта 2023, 19:55
+1
Размотали какую-то древнюю хрень на контроллерах AT89S8253. Фотографий не сохранилось.
+
avatar
+12
Для тех, кто начинает заниматься рукоблудием это будет интересно. Но вот такое ощущение, что не хватает абзаца с фотографией подключенной ардуинки и показания напряжения АЦП на этом индикаторном модуле.

ЗЫ: Плюсанул авансом
+
avatar
-1
Чем-чем заниматься? Грех то какой!
+
avatar
  • tirarex
  • 25 марта 2023, 20:43
0
На самом деле абсолютно бесполезно, всю жизнь их делают на сдвиговых регистрах, и схемы и даже скетчи для ардуин гуглятся за секунды.
+
avatar
+5
Ну тогда по вашей логике достаточно было фотки индикаторов и подписи: «схемы и даже скетчи для ардуин гуглятся за секунды» и все, обзор готов :)
+
avatar
  • tirarex
  • 25 марта 2023, 21:49
+1
Не, по моей логике можно было и не делать. Я вот вчера доп розетоку для ибп сделал, надо ли было ради этого делать обзор? 3 провода припаять, воткнуть розетку, закрутить 5 болтиков. Справится даже ребенок, а те кто задаются вопросом «а как это сделать», лучше пусть не трогают технику.
+
avatar
+3
А кто тогда будет учить подрастающее поколение азам?
Или вы с паяльником в одной руке и отвёрткой в другой родились?
+
avatar
  • tirarex
  • 27 марта 2023, 11:46
0
Подрастающее поколение еще вас поучит, нейронки, качественные онлайн уроки, море доступных статей, книг итд.
+
avatar
  • kvv12
  • 28 марта 2023, 02:27
0
Это все теория… Только руками они делать ничего не могут к сожалению, вернее не хотят даже об этом думать.
+
avatar
  • tirarex
  • 28 марта 2023, 13:43
0
А зачем? Буханки из тролейбусов это удел стариков с бесконечным временем, а что еще делать?
Полно курсов робототехники, есть мейкер спейсы, подросток лучше пойдет работать с интересными готовыми модулями и на них уже учится а не собирать мусор с помоек что бы собрать очередное радиао которое никому не нужно.

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

Кроме того уровень, в советского старика залить знания о прошивке контроллеров уже тяжело, а молодой человек что собирает роботов, уж очень быстро и просто воспринимает логику работы аналоговых схем.
+
avatar
  • oleg235
  • 28 марта 2023, 18:38
+1
молодой человек что собирает роботов, уж очень быстро и просто воспринимает логику работы аналоговых схем
Молодой человек, что собирает роботов из готовых модулей, логику работы аналоговых схем как правило не воспринимает не то что быстро и просто — он её вообще не воспринимает. Потому что навыки заточены под тупое формошлёпство с нулевой оптимизацией.
+
avatar
  • tirarex
  • 29 марта 2023, 11:26
0
Молодой человек, что собирает роботов из готовых модулей, логику работы аналоговых схем как правило не воспринимает не то что быстро и просто — он её вообще не воспринимает. Потому что навыки заточены под тупое формошлёпство с нулевой оптимизацией.
Логика аналоговых схем это не какое то вау и что то мега комплексное*, есть свои черные дыры в виде задержек, наводок, паразитных сопротивлений и емкостей, но это все удел тех кто этим с головой занимается.

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

ps.
Программисты в железо вкатываются как по маслу и такие базовые вещи как собрать что то аналоговое, отрисовать плату, заказать и собрать, зачастую вообще не вызывает проблем, странно преподносить это как какой то дар или опыт зарабатываемый десятилетиями.
+
avatar
  • oleg235
  • 29 марта 2023, 21:49
+1
Кроме того оно и не нужно особо, суть текущего мира в скоростных итерациях продукта
Перевод на русский:
+
avatar
  • kvv12
  • 28 марта 2023, 02:25
0
Меня лично никто не учил радиолюбительству, вообще, но и родители не мешали, не выкидывали железки, платы, приемники и прочий хлам, который я таскал помоек, хотя и ворчали, что захламил свою комнату мусором :) Но стали выписывать ЮТ, Радио, МК, но всё это самообучение, родители далеки были от электроники.
+
avatar
  • kven
  • 25 марта 2023, 20:12
+3
видел похожее от игровых автоматов, которые три цифры выкидывают
+
avatar
  • iraa
  • 25 марта 2023, 21:31
0
На часы три мало.
+
avatar
  • kven
  • 25 марта 2023, 21:39
+2
два по три норм
+
avatar
  • nochkin
  • 25 марта 2023, 20:21
+2
Вообще странный выбор AC164, это да. Может, им понравился побочный эффект перемещения битов на 164 против 595. Может экономия одного пина или просто 595 в тот момент было сложнее/дороже найти. Больше склоняюсь ко второму варианту.
С ULN2003 вроде понятно. Тут им надо было 8 вольт для индикатора, а 74AC вроде как не больше 5-6 может. Да и более универсально если вдруг индикатор будет другим с бОльшим количеством светодиодов в серии с более высоким порогом открытия.
+
avatar
0
Делал часы почти на таких индикаторах, только без регистров. Первая версия была на 514ИД1 и ULN2003. И контроллер микрочиповский. Вторая уже на TPIC6B595DW. Решились все проблемы с ногами и питанием индикаторов в 12В. Контроллер ESP8266
+
avatar
  • nochkin
  • 25 марта 2023, 22:00
0
ИД1? Это были газоразрядные или светодиодные?
TPIC6B595 вроде как почти аналог 74xx595, но с более высоким напряжением и током. То есть, как раз классно подходит для замены связки 74xx595+ULN2003. Но вроде как TPIC будет слабее когда все каналы нагружены.
+
avatar
+1
газоразрядные
Это Вы с 155ИД1 путаете. Светодиодные, конечно.
TPIC будет слабее
Да что там нагрузки? Мелкосхема до 150мА на каждый вывод. А у меня еще и питание на аноды ШИМом.
А так да, ULN помощнее.
+
avatar
  • nochkin
  • 26 марта 2023, 16:17
+1
Это Вы с 155ИД1 путаете. Светодиодные, конечно.
Какое классное замечание. Другая серия и какая разница. На полном серъёзе никогда не обращал внимание в силу своей другой специфики. Спасибо за ликбез.
+
avatar
  • stump
  • 25 марта 2023, 20:59
0
Кто-то грамотный делал исходник. Не китайский радиолюбитель. Помотрел, у этой 74AC164 — по каждому выходу 50 мА, можно все 8 диодов сегмента просто в параллель было запитать, тогда и ключи не нужны. Правда на весь корпус тоже ограничение 50 мА, но кого это может остановить… :-)))
+
avatar
  • alex323
  • 25 марта 2023, 21:15
0
Помотрел, у этой 74AC164 — по каждому выходу 50 мА, можно все 8 диодов сегмента просто в параллель было запитать, тогда и ключи не нужны.
Как вы их в параллель запитаете, если вся цепочка светодиодов внутри индикатора?
+
avatar
  • stump
  • 25 марта 2023, 21:35
0
а были такие немецкие китайские часы с приемником — там большие сегменты были отдельными светодиодами на гетинкасе сделаны и рамочка из пластика с перегородками
+
avatar
  • alex323
  • 25 марта 2023, 21:54
+4
Ну это как в том анекдоте…
— Верно ли, что Рабинович выиграл «Волгу» в лотерею? — Все верно. Только не Рабинович, а Иванов. И не «Волгу», а сто рублей. И не в лотерею, а в карты. И не выиграл, а проиграл. ©
+
avatar
  • ewavr
  • 26 марта 2023, 00:39
0
Не очень хорошая идея — подключать вход следующего каскада к сильно нагруженному выходу.
+
avatar
0
Маркировки на модулях никакой?
+
avatar
  • oleg235
  • 25 марта 2023, 21:34
+2
Маркировка вынесена прямо в заголовок поста:)
+
avatar
  • ploop
  • 25 марта 2023, 21:39
0
Не понял, у 164 вроде нет фиксации состояния, то есть сдвиг будет отображаться? Странные модули. И яркостью не порулить, только внешним колючем на HVCC.
+
avatar
  • oleg235
  • 25 марта 2023, 22:02
0
Не понял, у 164 вроде нет фиксации состояния, то есть сдвиг будет отображаться?
В теории да. На практике можно отключать HVCC на время обновления, а можно и оставить как есть, если обновление редко.
+
avatar
+4
можно и оставить как есть, если обновление редко.
Будет подмигивать — всё равно некрасиво.

А, вообще, не проще ли MAX7219 прикрутить?
+
avatar
0
На частоте порядка 30 МГц (минимально гарантированная частота 74HC164 на 5В) обновление 4х цифр (часы, например) займет 1 мкс. Удачи вам разглядеть процесс :)

Собственно, отсюда и тривиальный способ «рулить яркостью»: банальный ШИМ, чередуем отправку нужной картинки и «все нули», выбрав требуемые задержки между. Как вариант: отправка через аппаратный SPI, обновление по прерыванию от таймера.
При определенной сноровке метод позволяет рулить яркостью каждого сегмента каждого индикатора независимо.
+
avatar
  • ploop
  • 26 марта 2023, 10:14
0
Удачи вам отправить посылку на них на частоте 30 МГц с какой-нибудь тиники :)

Вот именно — при сноровке. При сноровке что угодно можно, но лучше был бы самодостаточный компонент, на который можно хоть руками код набить, хоть на 30 МГц. Тут просто на 595 регистр заменить и всё.
+
avatar
+1
Как много нам открытий чудных дарует даташитов текст… :)
Например, в attiny25/45/85 PLL умножителя периферии позволяет тактировать оную аж на 85 МГц. Устанете вглядываться в мерцание. :)

А применение 595 требует дополнительного провода… ну, удачи вам найти лишнюю ногу в вашей 8-ногой тиньке.

Конечно, при сноровке. Вы предлагаете взять устройство, которое позволяет гибко управлять собой — и ухудшить, ограничить его функции… да еще и ценой лишнего контакта на контроллере. Ради чего? Чтобы тем, кому лениво учиться, было комфортнее? :) Сон разума разработчика неизбежно порождает чудовищ.
+
avatar
  • ploop
  • 27 марта 2023, 01:09
0
Например
А например в других нет, и что?
Устанете вглядываться в мерцание. :)
Будет тупо засветка сегментов. Или ->
А применение 595 требует дополнительного провода… ну, удачи вам найти лишнюю ногу в вашей 8-ногой тиньке.
-> нога так же будет для гашения задействована.
и ухудшить, ограничить его функции…
Вы сейчас что доказываете? Что невозможность применить нормальную статическую индикацию и без стабилизации тока индикаторов есть благо? Искать проблемы и героически их преодолевать? Ну вперёд.
Данные модули были сделаны от безысходности, какие были компоненты, такие и засунули. А не потому, что так круто/хорошо.
+
avatar
-1
Данные модули сделаны правильно, но вы, конечно же, можете продолжать верить во что угодно.
+
avatar
  • ploop
  • 27 марта 2023, 09:14
0
Скажите, чем они правильнее 595го?
+
avatar
0
Как много нам открытий чудных дарует даташитов текст… :)
Например, в attiny25/45/85 PLL умножителя периферии позволяет тактировать оную аж на 85 МГц. Устанете вглядываться в мерцание. :)
Вы бы хотя бы сначала открыли тот самый даташит, в который носом тыкаете. А когда открыли бы, да изучили, обратили бы внимание, что тактировать от PCK (которая может достигать 64 МГц) можно только Timer1.

А тот самый SPI (который в тиньках USI) тактировать можно извне, программно или от Timer0. При этом, судя по всему, максимально возможная частота передачи составляет менее 8 Mbit.

Итого, обновление 4 цифр — 4-6 мкс. Не так, чтобы и много, но если задача обновлять, например, 100 раз в секунду, неприятное слабое «моргание» выключенных сегментов может быть заметно.
ну, удачи вам найти лишнюю ногу в вашей 8-ногой тиньке.
Вопрос с легкостью решается RCD-фильтром сигнала CLK — можно сделать, чтобы сигнал загрузки активировался спустя, например, примерно 100 мкс после последнего импульса сдвига.

Или совсем другой сценарий — выделяем под LOAD отдельный пин, зато на пины DATA и CLK можем еще повесить какие-то функции. Так что тут еще вопрос, что лучше.
+
avatar
0
Схема подключения очень древняя. Главный недостаток — отсутствие регулировки тока через «гирлянды» светодиодов. Я в своих изделиях использую для управления подобными индикаторами STP16CP05. При всей их дороговизне — хорошо и надежно.
+
avatar
  • sae966
  • 25 марта 2023, 22:20
+9
вот в таких часах они применялись, Штук 10 лежит в гараже списанных)
+
avatar
  • PSVik
  • 26 марта 2023, 00:34
+4
А как далеко ваш гараж и как вас уговорить? )
+
avatar
+2
Главное узнать где гараж.
+
avatar
  • sae966
  • 26 марта 2023, 13:13
0
Краснодар
+
avatar
  • Sanchos
  • 26 марта 2023, 12:49
+1
Красивое. Жаль на Авито таких нет.
+
avatar
  • sae966
  • 26 марта 2023, 13:21
+1
Дома такие не поставишь, явно великоваты, основное применение в офисах банков, почты и т.д для посетителей.(собственно откуда они благополучно и были списаны с дефектом БП, что не проблема, проблема оказалось с их размещением, в итоге лежат мертвым грузом, а так да- прикольные)
+
avatar
+4
Какая прелесть — что элементная база что разводка платы без изменений из 80х.
Судя по всему изделие из разряда «работает — не трогай».
+
avatar
+4
Ну так сказано же автором «Размотали какую-то древнюю хрень на контроллерах AT89S8253»
Судя по AT89 этой «разработке» как раз лет 20. С тех пор уже куча копеечных многоканальных LED драйверов со встроенной стабилизацией тока сегмента разработано.
+
avatar
  • kven
  • 26 марта 2023, 10:31
+2
С тех пор уже куча копеечных многоканальных LED драйверов со встроенной стабилизацией тока сегмента разработано.
дайте пожалуйста примеры, а то я подотстал за 20 лет
+
avatar
+3
8 каналов
TLC5916/5917
MAX6970
16 каналов
TB62747
TLC59025
Что-то еще было — лень искать. Ну и вроде китайцы какие-то выпускали для своих светодиодных панелей, но это надо искать.

Ну и куча без стабилизации тока — просто ключи на выходе:
BD8378FV-M
BD8388FV-M
NLSF595
+
avatar
+1
Я для своих часов использовал MBI5024

зы: висят под телевизором
+
avatar
+1
Простой китайский драйвер 16-ти светодиодов с постоянным током: DM13A.
То же самое от TI: TLC5928
Но гораздо проще в бытовом применении — драйвер матрицы 8х8 светодиодов: MAX7219/MAX7221.

На основе последних продается куча готовых плат на али, среди которых как реально квадратная матрица 8х8, так и 8-разрядный 7-сегментный индикатор. Управляется всё это дело по SPI (3 проводка), легко каскадируется и все сложности динамической индикации и регулировки яркости берет на себя. У себя часто в проектах применяю, ибо очень удобно.
+
avatar
0
DIP и резисторы с ножками?
Не 20, больше 30 точно.
+
avatar
  • IN19
  • 26 марта 2023, 09:30
0
Вряд ли такие индикаторы надежны.
У меня в древнем радиометре РГБ07 стоят советские КЛЦ402, там цепочка из двух последовательных СД на сегмент. В отличие от однодиодных АЛС, эти долго не живут, хотя допустимый ток через них не превышен. А поскольку собрано все на дискретных (!) элементах, проще иногда менять сами индикаторы. И аналогов не нашел — раритет, однако. Пробовал уменьшить ток на 30% — все равно дохнут. А больше уже яркость страдает, и так они тускловаты.
+
avatar
  • oleg235
  • 26 марта 2023, 10:06
+2
В современной LCD матрице может быть по 8-10 светодиодов в последовательной цепочке. И ничего, обычно матрицы выходят из строя от механических повреждений.
+
avatar
  • IN19
  • 26 марта 2023, 20:07
0
Так то у современных светодиодов. А у старых светоотдача была гораздо хуже, и для приемлемой яркости и режим работы был близок к предельному. Я потому и говорил, что современных аналогов у КЛЦ402 нет. А все что есть на замену — все с хранения лет по 25-30.
+
avatar
  • oleg235
  • 26 марта 2023, 20:31
+4
Рекомендую сделать финт ушами — взять нерабочие КЛЦ402, спилить у них заднюю часть и наклеить современные яркие SMD светодиоды.