LAN тестер. Полезное устройство своими руками


Начну с того, что данная статья — опыт повторения устройства, впервые опубликованного на ресурсе Хабрахабр.

(К сожалению, мне не удалось связаться с автором устройства. Были и вопросы, и пожелания, и вообще хотелось помочь дальнейшему развитию проекта. Я честно прошел регистрацию, ответил на кучу разных вопросов и все равно, мой статус — READ ONLY :( Весьма странное отношение со стороны администрации ресурса. Ну да ладно, учитывая, тот факт, что разработчик любезно предоставил все информацию по тестеру (включая исходники), он не будет в большой обиде на мой опус).

Итак, автор все очень подробно и дотошно описал. Так, сказать, бери и делай. Но, печатная плата сделана в программе DipTrace, вроде как проблема и не вселенского масштаба, но, как правило, все DIY-разработчики (по крайне мере, на постсоветском пространстве) стараются использовать Sprintlayout.

Кстати, у автора в схеме есть небольшая опечатка, которая меня немного сбила с толку при проверке…
Вот исправленная схема:


Итак, список необходимых для повторения деталей:

Atmega16 (DIP) + колодка
Кварц 8Mhz
стабилизатор на 5В 78M05 (smd)
супрессор 1,5КЕ6,8СА — 8шт
HD44780-совм. дисплей (WH-1604A-YYH-CT#) — 4 строчный
стабилитрон 5.1В — 1шт
разьем LAN — 2шт
ОПЦИОНАЛЬНО: разъем для подключения батарейки «Крона»
колодка 2х5 + ответная часть
колодка 2х10 + ответная часть
конденсатор 22pF — 2шт
конденсатор 100n — 1шт
резистор 1М (0,25Вт) -8шт
(резисторы smd все типоразмера 1206)
8.2kOm (smd) — 9шт
100 Om (smd) — 1шт
1k (smd) — 1шт
2k (smd) — 1шт
3k (smd) — 1шт
5.1k (smd) — 1шт
10k (smd) — 3шт
15k (smd) — 1шт
22k (smd) — 1шт
51k (smd) — 1шт
подстроечный резистор 10кОм
пластиковый корпус 125х70х35


Слегка подкорректированная печатная плата в программе Sprintlayout:


Процесс ЛУТ-а, травления и запайки не представляет ничего нового и интересного:


Вид сверху:


Теперь остановимся на прошивке. Прошивка фьюзов, лично для меня, ОЧЕНЬ туманное дело.
У автора в командной строке для avreal32 указанно следующее:
-fckopt=0,cksel=f,sut=1,ocden=0,jtagen=1


Ага, засада. Имеющийся у меня программатор USBTinyISP программой AVREAL32 не поддерживается :( Обидно. Ладно, попробуем пересчитать фьюзы…
Тут хороший калькулятор фьюзов.
Получаем:
hfuse=0xD9 и lfuse=0xdf
.

Прошивая первый раз, я не учел необходимость отключения JTAG :( и после прошивки получил следующее сообщение на экране:


Ну, вроде как все хорошо… Разобрались.
Наша строчка для запуска прошивки должна выглядеть так:
avrdude.exe -p atmega16 -c usbtiny -U flash:w:lan_tester.hex -U hfuse:w:0xD9:m -U lfuse:w:0xdf:m


Прошиваем микроконтроллер с помощью AVRDUDE и программатора USBTinyISP:


avrdude.exe -p atmega16 -c usbtiny -U flash:w:lan_tester.hex -U hfuse:w:0xD9:m -U lfuse:w:0xdf:m


После «правильной» прошивки, запускаем устройство и радостно наблюдаем следующий текст на экране:


На скорую руку делаем «подобие» ответной части (очень уж хотелось потестировать устройство):


Результаты тестирования:
Подключаем обычный патч-корд


Кусок обкусанного патч-корда с 2-мя парами закороченных жил:


Все, очень даже неплохо. Мысленно благодарю автора (некий Potok, он же Иванов Георгий Александрович из города Астрахань)!!

Для питания, я использовал два последовательно соединенных аккумулятора от мобильных телефонов. Сначала планировал сделать разъем USB для их подзарядки… Но потом, отказался от этой идеи. Т.е., в случае необходимости зарядки, придется разбирать корпус и по отдельности заряжать аккумуляторы :( Надеюсь, что это нужно будет делать КРАЙНЕ-КРАЙНЕ редко :)

А вот тут самое длительное дело: размещение всего хозяйства в корпус:




Внешний вид:

На фото уже «нормально» сделанная заглушка. Я ее прикрепил на шнурочке (чтобы не потерялась).

еще ракурс:


Приятный момент. Судя по чтению комментариев к статье автора (я же могу только читать :(( ), он озадачился написанием новой прошивки, с новыми возможностями. Так, что разъем на плате под ISP — очень даже важен. Поживем — увидим!

Традиционно, все необходимое, для повторения сложено в один архив. Забирайте тут.
Исходный материал автора сложен в каталог: !!!_Original version
  • +1
  • 22 октября 2013, 15:48
  • Ghost_D

Комментарии (45)

RSS свернуть / развернуть
+
0
Хорошая вешь. А расстояние до обрыва от правильно показывает? и как узнать с какого коннектора считать обрыв?
avatar

seouz

  • 23 октября 2013, 06:31
+
0
Если Вас не затруднит, то укажите как выставить fuse в CodeVisionAVR.
avatar

maverick5334

  • 31 октября 2013, 14:15
+
0
учитывая, тот факт, что разработчик любезно предоставил все информацию по тестеру (включая исходники), он не будет в большой обиде на мой опус)

Не буду. Более того, приятно удивлен. Благодарю за указание на ошибку в схеме.
Батарею (крона) не менял уже полгода при достаточно активной эксплуатации, пока не садится.
Расстояние до обрыва — ну так процентов 10-15 врет, но не больше.
Кстати, случайно найдя этот пост, и задался целью погуглить — может быть, кто-то еще задался целью сделать себе такую железку? как выясняется, более того: вот тут человек даже допилил схему, нашел еще пару моих ошибок и развил функционал.
avatar

Potok

  • 5 ноября 2013, 18:00
+
0
Доброго времени суток!
Собрал устройство по оригинальной схеме с хабра. Работает все, кроме определения длины/расстояния до обрыва.
У вас кабель при измерении расстояния был обжат только с одного конца и подключался без терминатора?
И еще вопрос к автору оригинального проекта (если он вдруг сюда еще раз заглянет) — в коде есть несколько «magic numbers». Это например массив R — есть возможность расшифровать значения? Спасибо!
avatar

Zvep

  • 14 ноября 2013, 23:26
+
0
У вас кабель при измерении расстояния был обжат только с одного конца и подключался без терминатора?

С обеих сторон, хотя пробовал и без обжима — все работало. Можно с терминатором, можно без — если есть оборванные жилы, он будет измерять расстояние.
Это например массив R — есть возможность расшифровать значения?

R — это массив номиналов сопротивлений на ответной части, где первая строка — сами номиналы (реально она не используется, оставлена для удобства понимания), вторая строка — допустимый разброс номинала в нижнюю сторону, третья — допустимый разброс в верхнюю сторону.
Как пример: R [0][0] = 15; R [0][1] = 13; R [0][2] = 18; Значит, к контакту №1 на ответке подключено сопротивление на 15 кОм, допускается разброс результата измерения от 13 до 18 кОм.
Есть еще PinOut — это соответствие битов порта A контактам разъема 8P8C, зависит от разводки платы и ни от чего более.
В начале объявлены R1 и R2 — это номиналы сопротивлений R1.x и R2.x по схеме.

А вообще — меня можно найти через george.potok.ivanov@gmail.com, есть вопросы — пишите.
avatar

Potok

  • 28 ноября 2013, 19:29
+
0
Вау!!! Очень рад, что Вы сами посетили этот ресурс. Я уже упоминал, о сложностях с хабром :( Честно говоря, как-то душа была не не месте, что разместил этот опус не поговорив/согласовав заранее с Вами. Но я очень рад, что Вы не в обиде!
А Ваше устройство, которое я повторил, относится к таким вещам — «Сделал, работает и все!». Честно говоря, его функционала пока хватает :) Если появиться новая прошивка, наверное воспользуюсь… Просто ради интереса, а не потому, что ОЧЕНЬ надо!
Еще раз, Вам огромное спасибо!!!
avatar

Ghost_D

  • 29 ноября 2013, 07:26
+
0
приве! повторил этот девайс и столкнулся с проблемой, прошивал поником, дисплей показывает иероглифы, фузы выстовлял как в калькулятори прошивка с попки «original» HEX фоил. помагите исправить ситуацыю
avatar

Fermer12

  • 23 января 2014, 19:19
+
0
Нерусифицированный дисплей. Модифицировать прошивку, дописывать кусок, заливающий в дисплей русский шрифт. Либо переписать надписи на английском, что, как мне думается, проще.
avatar

Potok

  • 8 июня 2014, 18:29
+
0
спасибо за ответ
avatar

Fermer12

  • 16 июня 2014, 17:36
+
0
Наконец то добрался до сборки и я.
Все заработало с пол-пинка, но метраж до обрыва кабеля показывает неправильно.
Например — у меня 21м кабеля, тестер показывает 8м.
Что я сделал не так?
avatar

maverick5334

  • 3 февраля 2014, 21:22
+
0
В процедуре StageThreeCheck (); есть строка:

float L = (-fTime/log (U2 / U1) — 1.71) / 0.032;

Здесь 1.71 — емкость цепей тестера при нулевой длине кабеля, 0.032 — емкость метра кабеля.
Обычно требуется коррекция первой константы. В вашем случае вместо 1.71 будет примерно 1.3.
avatar

Potok

  • 8 июня 2014, 18:33
+
0
Подскажите, как использовать нерусифицированный дисплей? Как модифицировать прошивку?
avatar

stas732

  • 15 февраля 2014, 06:21
+
0
Доброго времени суток! Наконец собрал тестер, но получил такую засаду. Сразу не завелся, пришлось отключить 15 ногу дисплея, с подключенной садит напругу до 3V и начинает греться чип TJ7660 на дисплее. Изначально при отключенном кабеле показывал длину 80м, заменил один супрессор стал показывать меньше 5м. Подключаю пач-корд 2м с заглушкой и начинаются чудеса, показывает целыми только 1,3 и 7 жилы все остальные S, и нет связи, в программировании я не силен, но все вроде сделал верно. Ткните пожалуйста носом куда копать. С уважением.
avatar

Diger

  • 23 февраля 2014, 20:33
+
0
Ты знаешь, у меня тоже было не все гладко :) Тут скорее всего — «наука о контактах». Проверь еще раз плату на предмет «коротышей и непропаев». Супрессоры выполняют защитную функцию, на этапе отладки можно не запаивать вообще :)
avatar

Ghost_D

  • 25 февраля 2014, 07:43
+
0
Ghost_D Большое спасибо, но ( наука о контактах) не прошла. Промыл на 10 раз, проверил на
к.з. и обрывы, не помогло. Была вторая заготовка платы, запаял её. В результате те-же
грабли.1,3,7 норма остальные замыкание(S)и нет связи.Заглушка из оригинальной схемы.
Есть еще какие идеи? С уважением.
avatar

Diger

  • 10 марта 2014, 18:13
+
0
Ну, прямо и не знаю, что с тобой делать. :) Давай разбираться. Весь тестер состоит из нескольких «кусков»: питание, индикатор (надеюсь, с ним проблем нету), и интерфейс для тестирования — тут, как я понимаю, и есть проблемы. Будем считать, что прошивка и фьюзы залиты правильно. Или тоже есть вопросы?
Для организации «тестирования» используется ПОРТ А (это АЦП) и порт С — для формирования запросов.
Алгоритм работы тестера автор описывает так (можно поковырять исходники):
1) — проверка состояния порта А (АЦП) (при этом выводы порта С переводятся в Hi-Z состояние.) CheckLineVoltage. Если на любом из выводов значение более fZero=60 сообщаем о наличии напряжения на линии
2) — Проверка линий на обрыв и КЗ
3) — тестирование ЦЕЛЫХ линий на предмет кроссировки
4) — ну и собственно вычисление расстояния до обрыва (StageThreeCheck).

авторский текст: Для этого переводим все линии порта C, кроме той, которая подключена в той жиле, где есть обрыв, в Hi-Z. Подаем на жилу +5В, заряжая ее. Измерим напряжение на ней, это будет наше начальное U0. Переводим все линии в Hi-Z. Начинается разряд кабеля через резистор R2.X сопротивлением 1 МОм. Выждав 1 мс, измеряем напряжение на этой линии U.
В этой процедуре формула выглядит так:
float L = (-fTime/log (U2 / U1) — 1.71) / 0.032;
Нельзя забывать, что цепи на плате, разъем и т.д. тоже имеют свою емкость, так что устройство нужно откалибровать на паре кусков кабеля разной длины. У меня получилось при нулевой длине 1710 пФ, и емкость кабеля 35 пФ / м.

Т.е., можно в исходниках вбить свои значения :)

Так, вот на каком из описанных этапов у тебя возникает проблема?

P.S. Блин, чертяка, заставил смотреть исходники :(
P.S.S. Не требуйте от меня многого. Я только повторил устройство и у меня ВСЕ нормально (почти сразу) заработало. Настоящий автор george.potok.ivanov(собака)gmail.com.

avatar

Ghost_D

  • 11 марта 2014, 10:27
+
0
привет! удалось ли побороть проблему? если да, то как? столкнулся сегодня с РОВНО той же проблемой — 1,3,7, и остальные S. при этом замыкание двух любых(?) жил понимает правильно. правда, плату я делал свою, ибо у меня мега в tqfp.
avatar

uncle_sem

  • 15 сентября 2014, 19:14
+
0
Здравствуйте уважаемый автор. Собрал вашу схему.
Чисто технически все работает. Но при запуске устройства пишет на линии есть напряжение. Прошивал китайским программатором. Прошивку брал из архива. Заранее спасибо.
avatar

kvkirilv

  • 2 апреля 2014, 11:09
+
0
Прежде всего — проверьте фьюзы. Часто забывают отключать jtag, как указал тов. Ghost_D.
avatar

Potok

  • 8 июня 2014, 18:35
+
0
У вашего обычного патч-корда, очень необычная индикация? Почему так?
avatar

penzet

  • 13 апреля 2014, 21:20
+
0
Тестовая ответка ну очень такая тестовая ;)
Думаю, собака в этом зарыта.
avatar

Potok

  • 8 июня 2014, 18:39
+
0
Всем доброго времени суток. Повторял данный прибор, но ни как не мог добиться корректной работы. Завидую людям, у которых все пошло сразу)))… Теперь о проблемах. После сборки и зашивки хексом автора, прибор не полностью распознавал терминатор на конце (некоторые пары видел как "?") и совсем не мерял длину. После самостоятельной компиляции с дисплея не слазила надпись «На линии есть напряжение!». Я и перемывал плату ацетоном, и перепроверял монтаж, но найти причину не удавалось. Пришлось напрячь уважаемого товарища Ghost_D, который любезно согласился предоставить прошитую атмегу со своего рабочего прибора на фото (еще раз огромное Вам спасибо!!!!) Но, результат остался прежний (аналогичный случаю с прошивкой автора). Все дело заключалось в супрессорах, а точнее в их емкости, которая в мое случае составляла 4500 пФ. Решение: При компиляции в Lan_tester.h изменять значения fZero и fMaxValue. У меня они получились 250 и 800 соответственно, на что автор прибора ответил: «fZero — это уровень, ниже которого считается, что на проводе напряжения нет. Фактически, защита от шума, либо от втыкания LAN-тестера в свитч. fMaxValue — это уровень, выше которого считается, что линии закорочены. Как мы понимаем, шум на уровне 5 * 450/1024 = 2.2 В — это совершенно ненормально...». Однако, с моими супрессорами только данные значения переменных делают прибор работоспособным. На что автор посоветовал: «Да, на проблему с супрессорами жаловались многие. Я так считаю, что первоначально надо наладку делать без них. Часто бывает, что они попадаются изначально пробитые.». Если кому пригодится — есть прошивка под дешевый китайский дисплей не поддерживающий русский язык и ссылка на его покупку на Ali. Еще раз оргомное спавибо автору прибора и Ghost_D за терпение и поддержку!!!
avatar

Liustrig

  • 26 мая 2014, 22:32
+
0
Если не сложно выложите пожалуйста прошивку под дешевый китайский дисплей!!!
avatar

gabitov19

  • 19 сентября 2015, 10:33
+
0
Нечасто здесь бываю, но какие вопросы увидел — ответил, хотя местами и некропост, конечно. Мне можно писать на george.potok.ivanov@gmail.com, а также the_unforg@mail.ru. Постараюсь помочь, чем смогу.
avatar

Potok

  • 8 июня 2014, 18:40
+
0
Рад, что вы заглянули… Судя по письмам, ОЧЕНЬ многие собирают данный прибор. Очень оказалось полезная вещь!!! Еще раз спасибо. Может есть новые прошивки? И да, может есть более-менее, «официальная» страница проекта?
avatar

Ghost_D

  • 8 июня 2014, 18:52
+
0
Пока что новых прошивок нет — основная работа бьет ключом, причем, судя по ощущениям, ключ этот примерно 32 на 36 и бьет она строго по голове :)

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

Страницу не заморачивался делать — просто не ожидал такого интереса, если честно. Думаю, также выложу на хабре, когда обновлю устройство, ну и сюда ссылочку кину.
avatar

Potok

  • 10 июня 2014, 20:19
+
0
Сколько будет стоить готовый собранный комплект
если у Вас купить
почтовым переводом в Ростовскую область
avatar

max4545

  • 27 июля 2014, 14:55
+
0
Здравствуй, подскажи пожалуйста, что то я запутался. Нужно плату зеркалить для ЛУТа или нет?
avatar

StreetBoy163

  • 19 ноября 2014, 08:19
+
0
Печатная плата — это как бы вид сквозь слой текстолита. Для переноса на медную сторону — зеркалить не нужно. Т.е., на бумаге все должно выглядеть так, как на картинке. После переноса на медный слой — все переносится именно зеркально.
avatar

Ghost_D

  • 19 ноября 2014, 09:24
+
0
спасибо, плату сделал)))докуплю оставшиеся детали и буду паять
avatar

StreetBoy163

  • 19 ноября 2014, 12:46
+
0
Собрал, прошил, выводит сообщение — Не исправен АЦП. что ты имел ввиду: Прошивая первый раз, я не учел необходимость отключения JTAG? как его отключить? я прошиваю USB ASP через SINA Prog/ фьюзы high:D9 Low:DF
avatar

StreetBoy163

  • 26 ноября 2014, 18:48
+
0
Можно ли приобрести готовый протестированный тестер
Напиши в личку
avatar

ensi77

  • 15 декабря 2014, 21:40
+
0
Изза чего может выдавать сообщение: не исправен ацп? может быть изза того что супрессоры поставил 1.5KE 6.8A?
avatar

StreetBoy163

  • 24 декабря 2014, 17:12
+
0
В чем может быть проблема? входная часть уже досканально просмотрена и прозвонена, КЗ не наблюдается. Единственное отличие от схемы это то что я поставил однонаправленные супрессоры… это может быть причиной? Супрессоры поставил согласно схеме анодом на плюс, катодом на минус… но ведь для защиты нужно ставить как стабилитрон — наоборот, верно?
avatar

StreetBoy163

  • 24 декабря 2014, 18:23
+
0
Все верно, если вы ставите однонаправленный супрессор (в маркировке отсутствует «С») — то его нужно ставить как стабилитрон, т.е. в обратном включении. В схеме нарисовано не совсем корректно :)
avatar

Ghost_D

  • 27 декабря 2014, 19:34
+
0
Да, я уже проверил перепаял и прибор запустился. Но все еще не гладко)))теперь даже когда кабель не подключен пишет, что до обрыва 17метров. А когда кабель с ответной частью подключаю пишет что жилы замкнуты… резисторы на ответной части все как у автора. Может в исходнике нужно что поменять?
avatar

StreetBoy163

  • 27 декабря 2014, 19:41
+
0
И написано: нет связи. когда кабель подключен. С 2х паркой примерно такая картина на дисплее.
Здесь: 12345678
Там: ss?xxsxx
До обрыва примерно 17м
нет связи
avatar

StreetBoy163

  • 27 декабря 2014, 19:43
+
0
Доброго дня! Огромное спасибо автору за интересную разработку тестера. У меня почти все получилось, только вот расстояние не меряет (точнее постоянно прыгает значение). Пробовал менять значения float L = (-fTime/log (U2 / U1) — 1.71) / 0.032 в моем случае получилось 1.2
Пробовал менять значения fZero и fMaxValue — вышло fZero: 200 fMaxValue:900 (если fZero:60 — как у автора — то при длинне кабеля около 5 и более метров показывает «напряжение налинии»)
В общем все перечисленные настройки влияют на корректировку прибора, на значение расстояния все равно прыгают.
При не подключенном терминаторе и длине кабеля 11м показвыает: <5 до 7м (постоянно прыгает в этом промежутке)
При подключенном терминаторе и оборванной одной жилой показывает: 7 — 12м (постоянно прыгает в этом промежутке)
Все остальное: обрыв (кроме расстояния), правильность обжима, короткое — все прекрасно работает.
Может есть какие-то мысли на сей счет, кто сталкивался?
Пробовал настроить без супрессоров — вообще ерунду показывает
avatar

an-2

  • 18 мая 2015, 08:17
+
0
Собрал устр-во. Остался вопрос! Прошивал через программатор ATtiny через SinaProg. Выставил значения фузов: hfuse=0xD9 и lfuse=0xdf. А именно D9 и df, там есть поля для этих значений. На экране пишет «АЦП неисправно». Почему так?! С любыми другими фузами пишет «на линии есть напряжение».
При построении устр-ва использовал супроцессоры: 1.5КЕ6.8А, они односторонние. Может в них проблема?!
С нетерпением жду хоть какой-то совет.
avatar

Sankaboy

  • 9 января 2016, 07:02
+
0
подскажите пожалуйста, собрал данное устройство но есть проблема при подключении гигабитного кабеля выдает сообщение «ацп неисправен», устройство собрано по схеме (переделал под обычные резисторы т.к. smd в моем городе не продаются нигде) и в прошивке поменял сообщения написал латинице чтоб экран не выдавал иероглифы, + была проблема без кабеля тестер думал что длинна -20 метров исправил математически в прошивке, помогите пожалуйста
avatar

tguruslan

  • 27 января 2016, 18:02
+
0
Народ куплю уже готовую все в сборе срочно
avatar

Joker

  • 25 февраля 2016, 21:25
+
0
Доброго времени суток всем=)
А ни кто не пробовал переделывать это на arduino?
avatar

alex199126

  • 18 мая 2016, 21:39
+
0
Доброго всем времени суток!
Я похоже вхожу в круг людей, которые хотят повторить устройство, но имеют кривые руки =) Собрал схему, прошиваю устройство, а мне сообщение что прошивка не помещается в еепром, смотрю… а действительно, атмега16 имеет 16 кб, а прошивка весит 26кБ. Люди добрые просветите незнайку как прошить устройство=)
avatar

andrieskoo

  • 24 мая 2016, 20:15
+
0
Здравствуйте! Можно ли приобрести данное устройство у Вас? Сам опыта сборки плат не имею, прошивать чипы тоже, но такая вещь нужна и она намного лучше чем те которые продают в магазине
avatar

butakov1982

  • 25 мая 2016, 04:35
+
0
Добрый день. Пытаюсь повторить ваше устройсто, но столкнулся с проблемой, после подключения кабеля с ответной частью, на экране появляется надпить «АЦП неисправнн». В чем может быть проблема, в программировании не силен.
avatar

franklin

  • 7 июня 2018, 15:56

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.