Как сделать usb тестер своими руками
Устройство самодельного USB-тестера базируется на микроконтроллере ATmega8. Этот выбор обусловлен тем, что у меня валялось несколько таких микросхем. Так же были мысли использовать ATmega48, но позже от этого варианта было решено отказаться, так как было жаль тратить контроллер с большим количеством ШИМ выходов на схему, не требующую их применения.
Микроконтроллер работает на частоте в 1МГц, используя либо внутренний RC-генератор, либо внешний кварцевый резонатор (тоже на 1МГц).
Для моих целей было достаточно той точности, которая была при использовании RC-генератора (+/- 5 секунд за 5 минут). Но на печатной плате есть место для кварцевого резонатора.
Отображение данных происходит за счет светодиодного семисегментного четырехразрядного индикатора. Такой тип индикаторов не блистает экономичностью, но устройству работающему от USB, как мне кажется, экономичность ни к чему. Органов управления прибор не имеет, и сброс осуществляется выключением питания.
Для мониторинга выводятся следующие данные:
- Напряжение
- Ток
- Потр. энергия (А*ч)
- Время работы
- Максимальное измеряемое напряжение: 6,6В
- Максимальный измеряемый ток: 1,5А (зависит от характеристик шунта)
Я не буду говорить что устройство обладает феноменальной точностью, это не так. АЦП микроконтроллера ATmega8 в принципе не обладает точностью, так как в младших разрядах находится "мусор". Конечно, для более достоверных результатов стоит заводить микроконтроллер в сон, делать измерение и выполнять программу дальше, но это повлечет за собой задержки в работе программы.
Итак, схема устройства:
В данном устройстве можно применять как индикаторы с общим катодом, так и индикаторы с общим анодом.
Для смены типа индикатора требуется строчку в файле display7seg_lib.h
в файле -- заменить на
Если вам не требуется отображение прошедшего с момента запуска устройства времени, то можно закомментировать данную строчку в файле main.c:
Для более точного измерения токов без использования ОУ было решено снизить напряжение питания до 3.3В. Так же был применен делитель напряжения для измерения напряжения на разъеме USB.
Немного о прошивке
Прошивка писалась под avr-gcc (WinAVR), редактор кода - встроенный в Proteus (проект в версии 8.6).
Каждую секунду срабатывает прерывание по переполнению таймера Т1, и устройство измеряет параметры (напряжение, ток) а так же вычисляет энергию в А*ч. Далее, с помощью таймера Т2 организована смена показаний а возможностями библиотеки для вывода информации - "бегущая строка".
ВНИМАНИЕ! При тактировании от внутреннего RC-генератора показания прибора могут иметь большую погрешность.
Если вы решили отказаться от использования кварцевого резонатора, то фуз-биты можно оставить по-умолчанию. В противном случае, требуется установить CKSEL = 1001, SUT = 00.
Печатная плата выполнена на двухстороннем фольгированном материале (гетинакс/текстолит). Самый сложный момент при разводке платы - это посадочное место под микроконтроллер.
На печатной плате, как и на схеме отсутствует один элемент - стабилизатор на 3.3В, 78L33. Он устанавливается следующим образом:
Так же, к выводы 1 и 3 на время программирования закорачиваются перемычкой. Это сделано для того, что бы не подпалить контроллер питающийся от 3.3В подачей 5 вольт на порт.
О замене деталей
Резисторы R1 - R4 можно безболезненно взять с сопротивлением 1 - 4.7 кОм , R6 и R7 необходимо использовать прецизионные (в моем случае были использованы с допуском +/- 1%) и обязательно с одинаковым сопротивлением. R10 - R17 можно заменить на резисторы мощностью 0,125 - 0,25Вт и сопротивлением 180 - 360 Ом. R8 используется для предотвращения появления "магических чисел" при отключенной нагрузке, соответственно его сопротивление должно быть в диапазоне 10 - 100 кОм. Резистор R18 можно взять на 10 - 100 кОм, или не устанавливать вообще (но тогда возможны произвольные сбросы микроконтроллера).
Как уже упоминалось выше, индикатор можно заменить на четырехразрядный с общим анодом, но для этого придется немного переделать печатную плату и внести правки в программу.
Транзисторы можно заменить на отечественные аналоги КТ312, 315, 3102 и т.д. В общем, можно взять любые маломощные транзисторы структуры n-p-n.
Токовый шунт при желании можно взять с иным сопротивлением, но для этого потребуется изменить следующую строку в программе:
Где поменять 2 на ваше сопротивление.
И наконец, немного фото а так же видео сборки и работы:
Существует много разновидностей так называемых USB тестеров, которые используются для контроля напряжения и тока, протекающего через USB устройство. Они могут использоваться для проверки кабеля, зарядного устройства, быстрого измерения потребляемого тока, тока заряда. Подобного рода измерители пользуются популярностью из-за их функциональности и низкой стоимости. Кстати, по второй причине теряется всякий смысл самостоятельной сборке подобного устройства. Но конструкция прибора, о котором пойдет речь в статье, заслуживает внимания из-за интересной аппаратной и программной реализации (Рисунок 1).
Рисунок 1. | USB тестер позволяет измерять напряжение до 22 В и ток до 5 А. |
В статье мы рассмотрим конструкцию подобного модуля USB тестера, который выполнен на микроконтроллере (МК) и драйвере семисегментного индикатора и обладает рядом преимуществ:
В основе схемы МК Microchip семейства AVR ATtiny13A, драйвер семисегментного индикатора TM1637, резистивный шунт сопротивлением 0.033 Ом и 4-разрядный семисегментный индикатор с общим анодом. Внутреннего источника опорного напряжения МК с выходным напряжением 1.1 В вполне достаточно для приемлемой точности прибора.
Принципиальная схема прибора изображена на Рисунке 3. Обратите внимание, напряжение питания МК и драйвера семисегментного индикатора 3.3 В: установлен линейный регулятор напряжения серии LM1117MP-3.3. Датчик тока – резистивный шунт R1 установлен в разрыв «минуса» питания USB разъема P2. Делитель напряжения образуют резисторы R2 и R3. Для данных номиналов резисторов делителя (3.9 кОм и 1 кОм) диапазон измерения напряжения составляет 0-5 В.
Рисунок 3. | Принципиальная схема USB тестера на МК ATtiny13A. |
Микросхема драйвера 4-разрядного семисегментного индикатора TM1637 считается достаточно распространенной и надежной, применяется в платах расширения Arduino. Подключается к микроконтроллеру по двухпроводному последовательному интерфейсу (CLK, DIO). Помимо реализации динамической индикации, драйвер поддерживает управление яркостью индикатора.
В режиме одновременной индикации напряжения и потребляемого тока следует учитывать, что индикатор четырехразрядный, и такой режим не очень хорошо подходит для значений выше 9 В.
Принципиальная схема и проект печатной платы разрабатывались в Proteus; проект доступен для скачивания в разделе загрузок. Печатная плата двухсторонняя, что позволяет минимизировать размеры прибора. Вид печатной платы со стороны установки МК и микросхемы драйвера индикатора показан на Рисунке 4.
Рисунок 4. | USB тестера на МК ATtiny13A: вид печатной платы со стороны установки МК. |
С целью уменьшения объема программного кода пришлось избавиться от вычислений с плавающей точкой. Несмотря на то, что значение резистивного делителя напряжения и значения, отображаемые на дисплее, с десятичной точкой, в программном коде значения рассчитываются как мА и мВ, затем десятичная точка отображается в нужном месте на индикаторе.
Исходный код программы микроконтроллера понятен и снабжен комментариями. Библиотека драйвера семисегментного индикатора была оптимизирована по причине ограниченного объема Flash-памяти МК. В частности, в исходном коде библиотеки отключены (закомментированы) многие дополнительные символы, которые могут отображаться на семисегментном индикаторе. Если вы планируете использовать библиотеку для других проектов, то просто раскомментируйте нужные строки. Также в библиотеке можно задать уровень яркости индикатора (перед компиляцией проекта). Также и заголовочный файл библиотеки драйвера индикатора может быть адаптирован под другие микроконтроллеры. Для разработки программного кода использовалась среда разработки Atmel Studio 7.
Представляем очень простой нагрузочный амперметр для проверки портов usb в смартфонах, ноутбуках и других подобных устройствах. Конструкция до смешного проста, она основана на базе МК Attiny13 и содержит всего несколько радиоэлементов, необходимых для работы прибора. Измеритель показывает результаты измерения тока на линейке, состоящей из 10 светодиодов.
Измерение осуществляется через резистор 0,1 Ом по отрицательной шине питания. Также был применен программный фильтр нижних частот, который сглаживает результат измерения до целого значения ступени. Показание тока от 0 мА до 1000 мА в режиме линейки, и от 1000 мА до 2000 мА в режиме точки.
Принципиальная схема А/В USB метра
Управляющая программа
Измеритель выполнен в виде отдельного модуля на двусторонней печатной плате и не имеет корпуса, его можно упаковать куда угодно.
Полезное: Домашний усилитель звука на микросхемах TDA7294 и TDA8425Питание подается через разъем micro-usb, что дает возможность подключения различных зарядных устройств, power-bank и так далее, для делания вывода об эффективности нагрузки, требуемой для данного устройства. На выходе установлен разъем usb-a, что дает возможность подключения usb-кабелей различного типа (apple, micro-usb, mini-usb, старые типы).
Итого, в этом проекте мы получаем простой инструмент не только для измерения тока, но меняя степень входной чувствительности можем получить датчики на другие значения, например, электромагнитного поля, силы радиосигнала, или обычного индикатора VU и многое другое.
В комментариях под их видео, один из зрителей сказал, что можно без проблем сделать нечто подобное из обычного свистка для прошивки STM,
который в Китае стоит 200 рублей,
цена же тестера от АСЦ 3500 рублей, мотивируется тем, что это личная разработка, которая почти год разрабатывалась и много сил и времени было на нее потрачено, а так же было заказано производство, что как бы тоже денег да и стоит, давайте разберемся :)
Вот видео того человека, в котором он повторил девайс на свистке от стм, причем не спустя год, а в тот же день, что выпустила видео АСЦ.
Повторил без проверки на кз, но этапы инициализации показывает, а проверку на кз и разницу в сопротивлении шин данных, добавить туда не сильно сложно, опишу этот процесс немного позже.
Я и сам когда-то рассматривал изготовление подобного устройства, правда еще и для тв, по моей затеи там был бы дополнительный выход HDMI, который точно так же проверял бы замыкание дата и клок линий порта. Поэтому уже имею небольшой опыт разработки подобных устройств, и вот краткое тз, которому должно соответствовать подобное устройство.
1. Размеры платы не должны мешать втыкать оборудование в соседние порты USB
2. Должен быть аккумулятор, чтобы можно было проводить диагностику на обесточенных устройствах (касаемо проверки на КЗ и разность сопротивлений дата линий)
2а. Этот аккумулятор должен заряжаться при подключении к запитанному порту USB
3. При подключении к порту USB, у которого нет питания, происходит проверка сопротивлений шин данных, результаты выводятся либо на светодиод, последовательностью миганий, либо их ускорением, либо на oled Экранчик, тут как творец захочет :)
4. При подключении к порту USB, у которого есть питание +5v, устройство переключается в режим проверки прохождения инициализации, и одновременно заряжает встроенный аккумулятор, таким образом мы убираем сложность в определении сопротивлений работающих дата линий, в прочем, USB тестер от АСЦ, видимо сделан по той же схеме, так как в видео именно так и было показано, сначала в мертвый бук воткнули, потом в живой. С другой стороны, эта сложность и не нужна, я не встречал буков, которые подают питание на USB порты в выключенном состоянии по причине излишнего разряда аккумулятора.
5. Проверка на прохождение инициализации происходит путем эмуляции клавиатуры, а точнее нажатия кнопки CapsLock, и последующей проверки статуса CapsLock, включен или нет, если эти состояния меняются, значит инициализация пройдена и устройство включилось. В видео АСЦ, кстати, об этом умолчали, но преподнесли как фичу, что при подключении к рабочему компьютеру, в отличии от тестера от nbzip, который каким-то образом влияет на мышку, прерывая частично ее работу, с подключенным тестером от АСЦ компьютером можно спокойно пользовать и заряжать его от порта USB, только вот мигающий капс лок, даст вам печатать в тАкОм СтИле, что как бы не удобно? Хотя фича, почему бы и нет :D
Как видим, исходя из ТЗ, понятно что подобное устройство не может стоить 3500 рублей, с учётом заказа плат с монтажем с JLC PCB и использования корпуса в виде термоусадки, как в оригинале от АСЦ. Год разработки нууу, если изначально выучить язык, потом понять как работает схемотехника, и засчитывать это время, то да. Ну и еще накосячить с тз изначально, сделать 4-5 ревизий, которые по некоторым параметрам не подходят и т.д. но должно ли финальное устройство включать эту стоимость? На примере человека, который повторил часть функционала за несколько часов, можно сказать, что год разработки это много.
Еще хочу добавить, что 3500 для рабочего устройства, помогающего в работе не цена, у меня жало для паяльника столько стоит, и уж точно не мне рассуждать о стоимости устройства, если оно действительно того стоит.
Продолжим повествование: Через некоторое время, АСЦ написал комментарий под видео этого человека, примерно следующего характера —
Все хорошо, вы молодец, но чем больше подобных людей будут повторять наши самоделки, которые вышли в продажу, тем меньше мы их будем делать…
Под этим комментарием, я им сказал, что самоделки нужно делать такого уровня, который нельзя повторить за час, — допустим программатор Вертьянова, либо продавать по той цене, чтобы остальным не было смысла их повторять, в этом случае, я считаю что это 1500 рублей, с учетом заказа с JLC PCB где 5 плат размера 100 на 100мм, в которые можно включить минимум 8 таких тестеров, а это порядка 40 готовых печаток, обойдутся в 8 долларов + 8 долларов доставка ( но доставка не сильно дорожает при увеличении партии).
Асц пишет мне ответ
Пользователь Ассоциация Сервисных Центров оставил комментарий: "Мне пох, на обиды и прочее. Тестеров продано уже много и остался последний остаток в 300 штук. Тестер это измерительный прибор, рабочий инструмент и не может стоить как доширак. Не нравится, не пок. " 14 минут назад
Доширак по 1500 рублей, ну да, курс доллара и т.п., измерительный прибор, в чем его сложность? В чем проблема сделать эти замеры, чем он отличается от других подобных устройств? После чего удалят всю ветку комментариев, что мне конечно не понравилось, столько печатал XD
И казалось бы, какое кому дело? Ну продают они тестер этот, действительно штука хорошая и полезная, действительно помогает в работе, ну и каждый сам решает покупать его или нет, но вот морально давить на тех людей, которые бесплатно выкладывают исходники собственных наработок по той же тематике, это плохое поведение, я считаю.
В связи с этим буду освещать развитие проекта от KARMA ELECTRONICS, и как только допилит проверку на кз в этом свистке за 200 рублей, выложу у себя на странице, а пока можете повторить его тестер инициализации, ссылки на видео выше, в его описании ссылка на архив с прошивкой.
Читайте также: