Индикаторные модули SA40-2003-V1. Как это устроено
Упоминания об этих модулях в интернете мне не попадалось.
Вместе с тем они выглядят явно серийными изделиями, и такое кому-то может и встретиться.
Под катом — разборка и немного реверсинга.
Итак, спереди они выглядят обычными семисегментными индикаторами:
Ну да, немаленькие.
А вот сзади уже всё не так однозначно.
Покрупнее:
Берём в руки паяльник, моток оплётки и снимаем плату с индикатора:
Плата односторонняя.
На ней распаяны микросхемы 74AC164(поменьше) и ULN2003А. Ещё тут есть пачка 100-омных резисторов и единственный керамический конденсатор, висящий на линии питания одной из микросхем.
Восстановленная принципиальная схема модуля:
74AC164 — это 8-битный сдвиговый регистр, позволяющий управлять 8 светодиодами всего по двум проводам(сигнал сброса не обязателен — без него вполне можно обойтись, и в этих модулях он даже не выведен на внешний контакт):
Микросхемы можно складывать стопкой, в смысле — соединять последовательно, при этом не занимая на контроллере дополнительные выводы, что очень полезно при использовании контроллеров типа ATtiny и прочей мелочёвки. При использовании RC-цепочки можно вообще обойтись одним выводом МК на всю индикаторную линейку.
ULN2003A — это набор сравнительно высоковольтных ключей для управления внешними нагрузками. Отдельно взятый ключ имеет следующую схему:
Для управления индуктивными нагрузками(например, реле) её вывод 9 должен быть соединен с плюсом питания, при управлении светодиодами это не нужно, и поэтому он оставлен болтаться в воздухе.
Зачем тут вообще дополнительные ключи, если 74AC164 способна управлять светодиодами напрямую?
В больших индикаторах каждый сегмент подсвечивается не одним светодиодом, а целой гирляндой:
Из-за этого в модуле пришлось использовать две линии питания: LVCC(5 вольт) для питания сдвигового регистра и HVCC(8 вольт) для питания самого индикатора. Кстати, рабочий ток одного сегмента — 15 мА(см. даташит на индикатор).
Расположение внешних контактов модуля:
Программа:
// Управление семисегментными индикаторами через регистр сдвига 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 — можно как раз собрать на них часы:)
- Микрофон Fifine a6v. Запись голоса без плясок с бубном
- Мега док-станция 15-в-1 ORICO CDH-15H: что внутри?
- Кроссовки HOKA ANACAPA LOW GTX
- Чернила Akkerman 24 Zuiderpark Blue-Green. Изящество как оно есть.
- ПЛИТА ГАЗОВАЯ "УМНИЦА" ПГЧ-3А 10кВт
- Шикарная электронная книга на 6 дюймов ONYX BOOX Faust 5
- Велофара Gaciron Mars 800. Квадратиш, практиш, гутЪ.
- Huawei Ultrathin Keyboard cd34 - компактная премиум клавиатура
- Обзор цифрового мультиметра FNIRSI S1. Слишком просто для мультиметра
- История покупки кольца из Карбида Вольфрама на Aliexpress

