Делаем USB тестер с функцией самокалибровки

Tirdad Sadri Nejad

Hackster.io

Миниатюрный модуль на микроконтроллере ATtiny13A позволяет измерять напряжение до 22 В и ток до 5 А

Существует много разновидностей так называемых USB тестеров, которые используются для контроля напряжения и тока, протекающего через USB устройство. Они могут использоваться для проверки кабеля, зарядного устройства, быстрого измерения потребляемого тока, тока заряда. Подобного рода измерители пользуются популярностью из-за их функциональности и низкой стоимости.  Кстати, по второй причине теряется всякий смысл самостоятельной сборке подобного устройства. Но конструкция прибора, о котором пойдет речь в статье, заслуживает внимания из-за интересной аппаратной и программной реализации (Рисунок 1).

USB тестер на ATtiny13A с функцией самокалибровки
Рисунок 1. USB тестер позволяет измерять напряжение до 22 В и ток до 5 А.

В статье мы рассмотрим конструкцию подобного модуля USB тестера, который выполнен на микроконтроллере (МК) и драйвере семисегментного индикатора  и обладает рядом преимуществ:

  • Функция самокалибровки: нет необходимости знать точное значение сопротивления резисторов, используемых в делителе напряжения. Вам просто необходимо рассчитать правильный делитель напряжения для диапазона 0 1.1 В (используется встроенный в МК источник опорного напряжения с выходным напряжением Vref= 1.1 В). После этого все, что вам нужно сделать, – это подключить модуль к источнику постоянного тока с выходным напряжением 5 В, удерживая кнопку на плате. Устройство запустится в режиме самокалибровки (символ «С» на индикаторе), самостоятельно рассчитает значение делителя и сохранит это значение в энергонезависимой памяти МК.  В общем случае, самокалибровку необходимо провести один раз.
     
  • Несколько режимов отображения информации на индикаторе: используя кнопку вы сможете переключать режим отображения: напряжение, ток, напряжение и ток. Режим отображения данных также сохраняется в EEPROM МК (Рисунок 2).
     
  • Размер кода 1 Кбайт: несмотря на то, что есть варианты конструкций лучше, чем использование двух микросхем (МК + драйвер индикатора), автору нравится разрабатывать дискретные устройства. Но в данном случае используется МК в 8-выводном корпусе с 1 Кбайт Flash-памяти, и разработана библиотека для драйвера индикатора. Библиотека драйвера является универсальной, и вы сможете использовать ее для любого другого МК, который поддерживает ANSI Си-компилятор. Библиотека доступна в разделе загрузок.
а) USB тестер на ATtiny13A: одновременная индикация напряжения и тока
б) SB тестер на ATtiny13A: индикация напряжения
в) USB тестер на ATtiny13A: индикация тока
Рисунок 2. USB тестер на ATtiny13A: одновременная индикация напряжения и тока (а),  
индикация напряжения (б), индикация потребляемого тока (в).

В основе схемы МК 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 В.

Принципиальная схема USB тестера на мк ATtiny13A.
Рисунок 3. Принципиальная схема USB тестера на МК ATtiny13A.

Микросхема драйвера 4-разрядного семисегментного индикатора TM1637 считается достаточно распространенной и надежной, применяется в платах расширения Arduino. Подключается к микроконтроллеру по двухпроводному последовательному интерфейсу (CLK, DIO). Помимо реализации динамической индикации, драйвер поддерживает управление яркостью индикатора.

В режиме одновременной индикации напряжения и потребляемого тока следует учитывать, что индикатор четырехразрядный, и такой режим не очень хорошо подходит для значений выше 9 В.

Принципиальная схема и проект печатной платы разрабатывались в Proteus; проект доступен для скачивания в разделе загрузок. Печатная плата двухсторонняя, что позволяет минимизировать размеры прибора. Вид печатной платы со стороны установки МК и микросхемы драйвера индикатора показан на Рисунке 4.

USB тестера на мк ATtiny13A: вид печатной платы со стороны установки мк.
Рисунок 4. USB тестера на МК ATtiny13A: вид печатной платы со стороны установки МК.

С целью уменьшения объема программного кода пришлось избавиться от вычислений с плавающей точкой. Несмотря на то, что значение резистивного делителя напряжения и значения, отображаемые на дисплее, с десятичной точкой, в программном коде значения рассчитываются как мА и мВ, затем десятичная точка отображается в нужном месте на индикаторе.

Исходный код программы микроконтроллера понятен и снабжен комментариями. Библиотека драйвера семисегментного индикатора была оптимизирована по причине ограниченного объема Flash-памяти МК. В частности, в исходном коде библиотеки отключены (закомментированы) многие дополнительные символы, которые могут отображаться на семисегментном индикаторе. Если вы планируете использовать библиотеку для других проектов, то просто раскомментируйте нужные строки. Также в библиотеке можно задать уровень яркости индикатора (перед компиляцией проекта). Также и заголовочный файл библиотеки драйвера индикатора может быть адаптирован под другие микроконтроллеры. Для разработки программного кода использовалась среда разработки Atmel Studio 7.

Добавить свое объявление

* заполните обязательные данные

Статистика eFaster:

посетило сегодня 1320
сейчас смотрят 16
представлено поставщиков 579
загружено
позиций
25 067 862