USB тестер

Устройство самодельного USB-тестера базируется на микроконтроллере ATmega8. Этот выбор обусловлен тем, что у меня валялось несколько таких микросхем. Так же были мысли использовать ATmega48, но позже от этого варианта было решено отказаться, потому что было жаль тратить контроллер с большим количеством ШИМ выходов на схему, не требующую их применения.

Микроконтроллер работает на частоте в 1МГц, используя либо внутренний RC-генератор, либо внешний кварцевый резонатор (тоже на 1МГц).

Для моих целей было достаточно той точности, которая была при использовании RC-генератора (+/- 5 секунд за 5 минут). Но на печатной плате есть место для кварцевого резонатора.

Отображение данных происходит за счет светодиодного семисегментного 4-хразрядного индикатора. Такой тип индикаторов не блистает экономичностью, но устройству работающему от USB, как мне кажется, экономичность ни к чему. Органов управления прибор не имеет, и сброс осуществляется выключением питания.

Для мониторинга выводятся следующие данные:

  • Напряжение
  • Ток
  • Потр. энергия (А*ч)
  • Время работы

Характеристики устройства:

  • Максимальное измеряемое напряжение: 6,6В
  • Максимальный измеряемый ток: 1,5А (зависит от характеристик шунта)

Я не буду говорить что устройство обладает феноменальной точностью, это не так. АЦП микроконтроллера ATmega8 в принципе не обладает точностью, потому что в младших разрядах находится «мусор». Конечно, для более достоверных результатов стоит заводить микроконтроллер в сон, делать измерение и выполнять программу дальше, но это повлечет за собой задержки в работе программы.

Итак, схема устройства:

В данном устройстве можно применять как индикаторы с общим катодом, так и индикаторы с общим анодом.

Для смены типа индикатора требуется строчку в файле display7seg_lib.h

#define OK

в файле — заменить на

#define OA

Если вам не требуется отображение прошедшего с момента запуска устройства времени, то можно закомментировать данную строчку в файле main.c:

#define DISPTIME

Для более точного измерения токов без использования ОУ было решено снизить напряжение питания до 3.3В. Так же был применен делитель напряжения для измерения напряжения на разъеме USB.

Немного о прошивке

Прошивка писалась под avr-gcc (WinAVR), редактор кода — встроенный в Proteus (проект в версии 8.6).

Каждую секунду срабатывает прерывание по переполнению таймера Т1, и устройство измеряет параметры (напряжение, ток) а так же вычисляет энергию в А*ч. Далее, с помощью таймера Т2 организована смена показаний а возможностями библиотеки для вывода информации — «бегущая строка».

ВНИМАНИЕ! При тактировании от внутреннего RC-генератора показания прибора могут иметь большую погрешность.

Если вы решили отказаться от использования кварцевого резонатора, то фуз-биты можно оставить по-умолчанию. В противном случае, требуется установить CKSEL = 1001, SUT = 00.

Печатная плата выполнена на 2-хстороннем фольгированном материале (гетинакс/текстолит). Самый сложный момент при разводке платы — это посадочное место под микроконтроллер.

На печатной плате, как и на схеме отсутствует один элемент — стабилизатор на 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 кОм, или не устанавливать вообще (но тогда возможны произвольные сбросы микроконтроллера).

Как уже упоминалось выше, индикатор можно заменить на 4-хразрядный с общим анодом, но для этого придется немного переделать печатную плату и внести правки в программу.

Транзисторы можно заменить на отечественные аналоги КТ312, 315, 3102 и т.д. В общем, можно взять любые маломощные транзисторы структуры n-p-n.

Токовый шунт при желании можно взять с иным сопротивлением, но для этого потребуется изменить следующую строку в программе:

#define R 2

Где поменять 2 на ваше сопротивление.

И наконец, немного фото а так же видео сборки и работы:


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

U1
МК AVR 8-битATmega8A-AU1
TQFP-32Q1-Q4
Биполярный транзисторBC5474

Стабилизатор78L331
На схеме не обозначенR1-R4
Резистор1 кОм4
R5
Резистор2 Ом1
Токовый шунтR9-R17
Резистор220 Ом9
R6-R8, R18
Резистор10 кОм4
R6,7 — презиционныеC1, C2
Конденсатор22 пФ2

Конденсатор0.1 мкФ2
Опционально. На вход и выход стабилизатора 78L33X1
Кварцевый резонатор1МГц1

ИндикаторСветодиодный1
ОК, ОА, 4 разряда, 7 сегментовДобавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.