Проблема тестирования свежепроложенной локальной сети актуальна всегда. Когда-то мне в руки попала железка под названием «Rapport II», которая, вообще говоря, тестер для систем CCTV, но витую пару прозванивать умеет тоже. Железка та давно уже умерла, а вот впечатление осталось: при тестировании витой пары она показывала не просто переполюсовку и распарку, но точную схему обжима! Например, для кроссовера это выглядело 1 → 3, 2 → 6, 3 → 1, и так далее. Но заплатить порядка 800 нерусских рублей за устройство, в котором я реально буду использовать всего одну функцию? Увольте! Как же это работает, может, проще сделать самому? Гугл в руки, и… сплошное разочарование. Вывод поиска состоит на 80% из мигалок светодиодами на сдвиговом регистре / AVR / PIC / свой вариант, и на 20% из глубокомысленных обсуждений форумных гуру на темы «купите %название_крутой_железки_за_100499.99_вечнозеленых% и не парьтесь». Посему, хочу предложить хабрасообществу свое решение данной проблемы в стиле DIY. Кого заинтересовало — прошу под кат (осторожно, некоторое количество фото!).
Аппаратная часть
Принцип работы: ответная часть представляет из себя набор сопротивлений различных номиналов. Измерим их. Зная их номиналы и распайку ответной части, мы можем точно выяснить, как кроссирован кабель. Ниже представлена схема устройства (все иллюстрации кликабельны). Конкретные номиналы сопротивлений выбраны скорее с учетом наличия в магазине, чем осознанно, хотя получился кусочек ряда Фибоначчи.
Рис. 1. Схема тестера
Рис. 2. Схема ответной части
Сердцем схемы является микроконтроллер ATMega16. Почему именно он? Спор «AVR vs PIC» есть типичный холивар, поэтому скажу просто: моим произволом пусть будет AVR. А из всей их линейки Mega16 самый дешевый кристалл, имеющий на борту АЦП на 8 каналов. Усложнять схему коммутаторами аналоговых сигналов мне откровенно не хотелось. Немаловажный плюс: эту модель можно купить даже в моем замкадье, где на весь город один магазин электронных комплектующих с ценами по 150-500% от Москвы.
Порт A микроконтроллера — это входы АЦП, на порту B у нас ISP и пара служебных функций, порт C используем для формирования тестовых сигналов, ну а порт D — для общения с пользователем посредством HD44780-совместимого дисплея.
Питаем схему от батарейки типа «Крона», через стабилизатор LP2950, DA1 по схеме. Почему не ШИМ, а обычный линейный стабилизатор, пусть и low-dropout? Ток потребления невелик, на одной батарейке я провел все тестирование и отладку схемы, запустил уже пару реальных объектов по полсотни портов — пока не разрядилась. А вот высокочастотные помехи, которые есть спутник любого ШИМа, могут снизить точность работы АЦП. Усложнять схему, опять же, не хочется. Почему именно LP2950? Он был в магазине.
Входные цепи защитим с помощью супрессоров VD1.1 — VD1.8, я взял 1,5КЕ6,8СА. От попадания в 220В они, конечно, не спасут, а вот 60В с какой-нибудь телефонной линии погасить вполне смогут.
Цепочка VD2 — R4 служит для обнаружения разряда батареи. На стабилитроне падает 5,1В, Таким образом, когда напряжение батареи упадет ниже 6В, на PB2 появится лог. 0. Тут по уму нужен бы триггер Шмитта, но не нашлось.
Информацию выводим с помощью HD44780-совместимого дисплея, мне попался WH-1604A-YYH-CT#. Схема подключения типовая и пояснений не требует. Стоит сказать только о номинале сопротивления R5, задающего яркость подсветки. Чем больше номинал, тем дольше будет жить батарейка — вся остальная схема потребляет менее 5 мА, основной потребитель именно подсветка дисплея. Но если переусердствовать, в темноте ничего не увидишь на экране. Я остановился на 100 Ом.
Программная часть
Для написания программы я использовал среду AVR Studio 4, язык C. Ниже я опишу алгоритм работы, а вот код не покажу, и тому есть причины. Во-первых, он несколько ужасен (картинка с лошадью, блюющей радугой). Во-вторых, раз уж это DIY, то реализацию ниже описанных алгоритмов не грех и самому написать — а то что же это за DIY такое? Ну а в-третьих, если писать не хочется, то в приложениях откомпилированный .hex присутствует.
Описывать стандартные процедуры типа работы с АЦП, реализации обмена с HD44780-совместимым дисплеем и тому подобные очевидные вещи смысла не вижу. Все давно сказано до меня.
Работа тестера делится на несколько этапов, которые повторяются циклически.
Этап 1. Начальные проверки
- проверим, не подключено ли к линии какое-либо активное оборудование. Все управляющие линии (порт C, напомню) переводим в Hi-Z состояние, измеряем напряжение на всех линиях. Они должны быть околонулевыми. В противном случае мы понимаем, что с другой стороны провода подключено что угодно, но не наша ответная часть, и дальше продолжать смысла не имеет. Зато имеет смысл сообщить пользователю, что «на линии есть напряжение!».
- проверим уровень сигнала на PB2. Если там 0, то батарея разряжена. Сообщим о неполадке пользователю, если все ОК — идем далее.
Этап 2. Проверка целостности линий и наличия коротких замыканий
Для каждой из 8 линий проделываем следующее. Подаем на нее +5В с порта C, сохраняя все остальные линии порта в высокоимпедансном состоянии, и измеряем напряжение на остальных линиях. Если на всех линиях околонулевые значения — исследуемая линия оборвана. Если же на какой-то из линий тоже появилось +5В — это КЗ. В норме мы увидим некие промежуточные значения.
Этап 3. Выяснение схемы кроссировки
Вот и подобрались к самому интересному. Отсеяв все заведомо неисправные линии (перебитые и закороченные провода), приступим к измерению сопротивлений оставшихся линий (пусть их количество N, 0 <= N <= 8). Введем обозначения: Rxy — сопротивление между линиями x и y. Rx — номинал сопротивления, подключенного к линии x. Ясно, что Rxy = Rx + Ry
Замеряя сопротивления между линиями, мы получаем систему линейных уравнений. Сравнив полученные значения R1… RN с эталонными, мы выясним схему кроссировки.
Сопротивление вычислить несложно. Подадим на линию X высокий уровень, на линию Y — низкий, а прочие линии порта C оставим в Hi-Z. В цепи (см. рис. 3) падение напряжения на известном нам сопротивлении, образованном параллельным включением R1.Y и R2.Y по схеме составляет U1, а на неизвестном Rxy падает (U2 — U1). Значит, Rxy = (R1 || R2) * (U2 — U1) / U1. Рис. 3. Принцип измерения сопротивления
Если N < 3 — мы бессильны. Мы можем произвести всего одно измерение сопротивления между ними, в то время, как имеем 2 неизвестных — сопротивление, подключенное к каждой из них. Система, в которой число уравнений меньше числа неизвестных, имеет бесконечное множество решений. Придется показать пользователю знаки вопроса на этих линиях — они вроде бы исправны, но выяснить схему кроссировки возможным не представляется.
При N = 3 у нас есть лишь один возможный вариант. Измерив все доступные сопротивления R12, R13, R23, мы получим систему: R1 + R2 = R12 R1 + R3 = R13 R2 + R3 = R23 Легко показать, что: R1 = 1/2 * (R12+ R13 — R23) R2 = R12 — R1 R3 = R13 — R1.
При бо
льших значениях N мы можем составлять систему уравнений множеством способов, проводя замеры различных сопротивлений Rxy. На первый взгляд, разницы, как выбирать, какие сопротивления измерить, нет. Однако, дьявол обитает в мелочах. На примере N = 8 поясню, что я имею в виду. В первой реализации алгоритма я делал измерения так: R1 + R2 = R12 R1 + R3 = R13 … R1 + R8 = R18 R2 + R3 = R23 Сложив два первых уравнения и вычтя последнее, получим то же самое 2R1 = R12 + R13 — R23, а все остальные сопротивления найдем из уравнений 1 — 7, где R1 уже известно.
Проблема кроется в том, что при некоторых видах кроссировки значение R1 оказывалось велико (15 кОм и выше), а погрешность измерения сопротивления с его увеличением возрастает. В итоге, получалось так, что малые относительно R1 сопротивления номиналом 1-2 кОм измерялись с погрешностью в 70-80%! Очевидно, что для обеспечения хорошей точности нам стоит составить систему так, чтобы на месте R1 оказалась другая неизвестная, минимальная из всех. Для этого нам придется выполнить все возможные измерения (хорошо, что их не так много, в худшем случае 28). Фактически, мы получили матрицу 8 х 8, симметричную относительно главной диагонали (ясно, что Rxy = Ryx). Выберем из всех результатов минимальный, пусть это Rij = Ri + Rj. В строке i найдем Rik, такое, что Rik > Rij, но меньше прочих элементов строки. Получим: Ri + Rj = Rij Ri + Rk = Rik Rj + Rk = Rjk Решаем и находим среди Ri, Rj, Rk наименьшее (предположим, им оказалось Ri). оставшиеся неизвестные Rx находим из Rx = Rix — Ri.
Этап 4. Определение точки обрыва, если таковая имеется
Умные и дорогие железки измеряют расстояние до точки обрыва с помощью TDR. Сложно, дорого, круто. У нас возможности куда скромнее, да и не так уж часто требуется знание положения обрыва до сантиметров — обычно понимания в стиле «прямо возле меня», «на том конце», «посередине, где недавно стенку долбили» более чем достаточно. Так что — измерение емкости кабеля.
Переводим все линии порта C, кроме той, которая подключена в той жиле, где есть обрыв, в Hi-Z. Подаем на жилу +5В, заряжая ее. Измерим напряжение на ней, это будет наше начальное U0. Переводим все линии в Hi-Z. Начинается разряд кабеля через резистор R2.X сопротивлением 1 МОм. Выждав 1 мс, измеряем напряжение на этой линии U.
Нельзя забывать, что цепи на плате, разъем и т.д. тоже имеют свою емкость, так что устройство нужно откалибровать на паре кусков кабеля разной длины. У меня получилось при нулевой длине 1710 пФ, и емкость кабеля 35 пФ / м. Практика использования показала, что даже если и врет оно, то не сильно, процентов на 10. Ситуация вида «где ж недожали контакт, в шкафу на патч-панели или в розетке?» решается мгновенно.
Пробники и тестеры
Самодельный прибор для проверки стабилитронов
Далеко не всегда удается определить номинальное напряжение стабилитрона по его маркировке, особенно при разборе неисправной аппаратуры. Здесь приводится описание схемы несложного прибора, с помощью которого можно оперативно определить напряжение стабилизации стабилитрона, а так же, вообще понять …
2 2253 0
Пробник для проверки светодиодов и их линеек
При ремонте светодиодной подсветки экрана ЖК-телевизора требуется специальный блок питания с регулировкой выходного напряжения. Я предлагаю взамен него простой пробник на основе лампы накаливания 230 В, 15 Вт от холодильника. Если включить в электросеть последовательно с такой лампой хоть один …
1 1212 0
Проверка транзисторов с короткими выводами, печатная плата адаптера
Измерять коэффициент передачи тока базы транзисторов цифровыми мультиметрами популярных моделей практически невозможно, если длина выводов этих транзисторов недостаточна, чтобы вставить их в гнёзда розетки прибора. Но сегодня радиолюбители зачастую используют в своих конструкциях именно такие …
0 819 0
Схема самодельного прибора для проверки варисторов и стабилитронов
Принципиальная схема несложного самодельного устройства для проверки стабилитронов и варисторов. Устройство представляет собой усовершенствованный совмещенный вариант конструкций [1, 2]. Кроме проверки варисторов и стабилитронов этот прибор также можно использовать для проверки работоспособности …
1 1634 0
Схема пробника с осциллографическим индикатором 8X8
Принципиальная схема самодельного осциллографического индикатора для простых проверок, содержит дисплей 8X8 светодиодов. Доступные большинству радиолюбителей сервисные и лабораторные осциллографы выпуска 70-80-х годов, обладают высокой точностью и достаточной функциональностью. Но они слишком …
2 2021 0
Искатель скрытой проводки с питанием от заряженного конденсатора
Схема самодельного устройства для поиска скрытой электропроводки сети переменного тока 220 В. От множества аналогичных оно отличается тем, что не требует ни собственного источника питания, ни каких либо других приспособлений и измерительных приборов. При создании этого несложного прибора был …
1 1334 0
Логический пробник на ОУ и светодиодах
Схема самодельного логического пробника, которым можно определять логические уровни, высокоомное состояние и наличие импульсных последовательностей в схемах на ТТЛ и КМОП микросхемах с питанием от 5 до 15V. Индикация на двух светодиодах, — HL1 горит когда высокий логический уровень, HL2 …
1 998 0
Тестер и определитель рабочего напряжения стабилитронов
Схема самодельной приставки к мультиметру для определения исправности и напряжения стабилитронов. Сейчас российскому радиолюбителю доступна элементная база самых разных фирм и стран происхождения. С одной стороны, это хорошо, но с другой, — бывает очень трудно найти нужную, хотя бы краткую …
1 1845 0
Схема пробника, генератора низкой частоты (10 Гц — 10 кГц)
Схема самодельного генератора прямоугольных импульсов низкой частоты, частоту и амплитудукоторых можно регулировать в широких пределах. На рисунке приводится схема такого генератора. Частоту вырабатываемых им импульсов можно плавно регули ровать от 10 Гц до 10 кГц, а амплитуду от логического …
1 1411 0
Тестер для оперативной проверки гальванических элементов
В наше время рынок заполнен самыми разнообразными батарейками: дорогими, дешевыми, хорошими и не очень, свежими и не совсем. Для определенности далее словом “батарейка” будем называть гальванический элемент на 1,5 В типоразмеров от ААА до D, другие типы в этой статье рассматривать …
1 1916 0
1 …