Первой пришла в голову мысль сделать простейший "прозвонщик": каждый контакт разъема, установленного на одном конце кабеля, соединить через резистор 330...510 Ом с источником напряжения 5 В, а на другом - со светодиодом. К сожалению, таким способом проверяется лишь целостность проводов. Можно и не заметить, что соседние провода соединены между собой.
Рис. 1
Было решено усложнить алгоритм проверки и сделать прибор на микроконтроллере. На рис. 1 показана схема такого прибора. В нем применен бывший под рукой микроконтроллер ATtiny13. Его можно заменить другим, но для этого прибор, возможно, придется немного переделать. Например, в микроконтроллерах ATtinyl 1, ATtiny 12, ATtiny15L линия РВ5 не может работать как выход, ее придется сконфигурировать как вход, а линию РВЗ или РВ4 - как выход сигнала гашения индикатора. Кроме микроконтроллера, потребовалось всего два сдвиговых регистра, транзистор и две линейные светодиодные шкалы, показывающие код ошибки. Рассмотрим подробнее особенности порта ввода-вывода микроконтроллера ATtiny13. Его линии РЕЮ- РВ5 могут передавать сигналы в обе стороны. Каждую из них конфигурируют отдельно с помощью регистра DDRB. Например, если записать в три младших разряда DDRB[0]-DDRB[2] единицы, а в остальные разряды - нули, то линии РВО-РВ2 станут выходами, а РВЗ- РВ5 - входами.
Для управления портом имеются еще два регистра - PINB и PORTB. Первый из них служит для
ввода информации в микроконтроллер. В его разрядах отображаются единицами и нулями фактические, действующие в данный момент логические уровни напряжения на выводах микроконтроллера. Не имеет значения, поступило ли это напряжение от внешнего источника или от выходного буфера самой микросхемы. Регистр PORTB служит для вывода информации из микроконтроллера. Если линия порта сконфигурирована как выходная, на ней будет установлен уровень напряжения, аналогичный значению, записанному в соответствующий разряд этого регистра.
Поскольку рассматриваемый микроконтроллер имеет всего шесть линий ввода-вывода, а проверять нужно кабели вплоть до 14-проводных, да еще и выводить результаты проверки на индикатор, пришлось дополнить его двумя микросхемами - сдвиговыми регистрами.
Такой регистр представляет собой набор D-триггеров, выход каждого из которых соединен с входом следующего. Основное назначение - преобразование последовательного кода в параллельный. При смене низкого уровня напряжения на тактирующем входе С высоким происходит сдвиг хранящейся в регистре информации на один разряд (D-триггер) в сторону старшего, а в освободившийся младший разряд заносится состояние информационного входа. У использованной микросхемы сдвигового регистра 74LS164 два информационных входа D объединены функцией И. Чтобы использовать только один из них, на второй подан постоянный высокий уровень (+5 В).
Для записи в сдвиговый регистр семиразрядного двоичного кода (именно это требуется для работы устройства) необходимо прежде всего разрешить работу регистра, установив на входе R высокий, а на входе С - низкий уровень, и подать на информационный вход значение старшего (D6) разряда выводимого кода. После чего сформировать на входе С тактовый импульс (установить высокий, а затем вновь низкий уровень). В результате значение разряда D6 будет записано в младший разряд регистра и выведено на его выход 1 (выв. 3).
Далее на информационный вход подают значение разряда D5 и вновь формируют тактовый импульс. Значение D6 будет перенесено в следующий разряд регистра и появится на выходе 2 (выв. 4). Значение D5 будет выведено на выход 1. Каждый новый тактовый импульс сдвигает код в регистре еще на один разряд, и после седьмого импульса он займет положенное место: на выходе 1 - DO, на выходе 7 (выв. 12) - D6. Временные диаграммы на рис. 2 иллюстрируют, как сдвиговый регистр преобразует последовательный код 1011001 в такой же параллельный.
Рис. 2
Чтобы увеличить разрядность сдвигового регистра до 14 (максимального числа проводов в кабеле), два восьмиразрядных регистра 74НС164 (DD1 и DD2) соединены последовательно, в каждом из них использовано по семь разрядов. Полное преобразование кода происходит за 14 тактовых импульсов.
При разработке схемы и программы прибора было принято следующее распределение линий порта микроконтроллера по выполняемым функциям:
РВО - выход тактирования сдвигового регистра;
РВ1 - выход начальной установки сдвигового регистра;
РВ2 - выход параллельного кода, загружаемого в регистр;
РВЗ - вход с четных проводов;
РВ4 - вход с нечетных проводов;
РВ5 - выход включения индикатора.
В зависимости от числа проводов в проверяемом кабеле им соединяют 14-контактные разъемы ХР1 и ХРЗ либо 10-контактные ХР2 и ХР4. Индикаторы HL1 и HL2 подключены к тем же выходам сдвиговых регистров, что и провода проверяемых кабелей. Чтобы избежать мерцания индикаторов, их необходимо на время выполнения микроконтроллером процедуры проверки выключать, а включать лишь после того, как в регистры будет загружен код, отображающий ее результат. Это выполняется с помощью транзистора VT1, управляемого сигналом микроконтроллера.
При проверке кабеля необходимо "прозвонить" каждый его провод и убедиться, что он не соединен с одним из соседних. Других дефектов в плоских кабелях не встречается.
Процедура проверки начинается с записи единицы во внешний сдвиговый регистр. В результате на первом контакте разъема ХР1 устанавливается высокий уровень. Если подключенный к нему и к первому контакту разъема ХРЗ провод кабеля исправен, то на вход РВ4 микроконтроллера поступит напряжение высокого уровня, а на входе РВЗ оно останется низким.
При выполнении этого условия в младший разряд переменной n_err программа запишет 0, в противном случае - 1. Далее формируется еще один тактовый импульс и проверяется второй провод. Так как его номер четный, результат записывается в переменную ch_err. Для проверки всех четырнадцати проводов процедура повторяется семь раз, причем перед проверкой очередной пары проводов значения переменных n_err и ch_err сдвигаются на один двоичный разряд.
По окончании проверки полученные значения переменных n_err и ch_err загружаются во внешний сдвиговый регистр и включаются индикаторы. После паузы проверка повторяется. Проверка десятипроводного кабеля, подключенного к разъемам ХР2 и ХР4, происходит аналогично, но на индикаторе четыре провода (по два с каждой стороны) показываются как отсутствующие.
Если используется внутренний тактовый генератор микроконтроллера частотой 4,8 МГц, проверка кабеля (до включения индикатора) занимает около 70 мкс и повторяется с периодом около 240 мкс. Поэтому кажется, что индикаторы включены постоянно. Диоды VD1-VD14 нужны для того, чтобы развязать между собой выходы регистров.
Внешний вид "прозвонщика", собранного на макетной плате, показан на рис. 3. Светодиодные сборки (шкалы) GNA-R102510ZS-11 можно заменить нужным числом единичных светодио-дов; транзистор КТ3156 - любым из серий КТ315, КТ3102 или другим маломощным транзистором структуры п-р-п с допустимым током коллектора не менее 100 мА. Вместо микросхем 74НС164 могут быть установлены 74LS164 или отечественные К555ИР8. Микроконтроллер ATtiny13-10PU допустимо заменить на ATtiny13-10PI, ATtiny13-20PU, ATtiny13-20PI.
Программа микроконтроллера написана на языке ассемблера в среде AVR Studio. Ее коды для загрузки в программную память микроконтроллера приведены в табл. 1. Конфигурация микроконтроллера должна соответствовать указанной в табл. 2. Нулевое значение разряда RSTDISBL необходимо для работы вывода 1 микроконтроллера как линии порта, а не как входа сигнала начальной установки. Это, к сожалению, делает микроконтроллер недоступным для программирования по интерфейсу SPI. Поэтому приходится применять "высоковольтный" способ программирования. Его обеспечивают большинство универсальных программаторов.
Скорость проверки и частоту повторения ее циклов можно увеличить вдвое, если повысить тактовую частоту микроконтроллера с 4,8 до 9,6 МГц. Для этого достаточно установить значение конфигурационного разряда CKSEL1 равным 1, a CKSEL0 - 0.
Устройство не требует налаживания и сразу после правильной сборки готово к работе.
Программа микроконтроллера "прозвонщика" здесь