Защита INA226 от обратной полярности

«Один раз поспешишь — будешь перепаивать самую мелкую микросхему» — такая примета получилась в процессе отладки устройства в котором напряжение и ток измеряются посредством микросхемы INA226.

В очередной раз подключал провода и перепутал полярность на входе VBUS микросхемы. В итоге на вход её АЦП попало около -5 В что моментально поджарило его. Вначале INA226 вообще не опознавалась на шине I2C, но спустя какое-то время определилась и стала показывать 88 В при отсутствии какого-либо напряжения на входе VBUS.

Съездил в магазин радиодеталей и купил микросхему на замену. Новая микросхема похожа на оригинальную и не относится к «копеечным» — по текущему курсу её стоимость больше 2$. Так что жечь её ещё раз не было никакого желания, а ошибки неизбежны — вопрос только когда это произойдёт следующий раз.

Снять микросхему с платы паяльным феном было легко

nslqoly37nx0dq2-wv5rj_x9ayg.jpeg

а вот правильно впаять обратно корпус msop-10 (3 мм * 5 мм) у меня получилось только со второго раза. Удовольствия при этом я не испытал, т.к. проверять правильность монтажа приходится камерой смартфона на максимальном увеличении (не было у меня ни микроскопа, ни даже приличной лупы). Решил дополнить схему устройства защитой от подачи обратной полярности на вход INA226 чтобы в случае ошибки не проходить этот квест заново.

Согласно документации на INA226, её абсолютный максимум напряжения на входе VBUS от -0,3 В до 40 В. Набросал в LTspice простую схему защиты

yzs569izm4uqjkwrvbvswr3ixrc.png

От обратной полярности защищает диод шоттки 1N5819. В случае неправильного подключения он открывается и ограничивает напряжение на входе АЦП.

Измерил падение напряжения на диоде при различном токе через него — получается если прямой ток не превышает 50 мА, то падение напряжения на нём меньше 0,3 В. Возникает соблазн использовать номинал резистора R1 побольше чтобы ограничить ток через диод, но тогда на нём будет значительное падение напряжения при правильном подключении из-за обратного тока — при 30 В обратный ток через диод D1 около 3 мкА. Мощность резистора R1 должна быть больше 2 Вт чтобы выдержать падение напряжения при обратном включении.

От перенапряжения защищает стабилитрон 1N4753A с напряжением стабилизации 36 В. Чтобы проверить эту защиту понадобилось соединить несколько блоков питания последовательно для получения напряжения выше 36 В. При подаче напряжения 40 В на вход схемы защиты, на входе АЦП напряжение около 34 В.

Результатом стала погрешность измерений напряжения из-за падения напряжения на сопротивлении R1 при протекании через него тока. Этот ток складывается из обратных токов диода шоттки D1 и стабилитрона D2, а также тока через вход АЦП INA226 (он незначительный, но не равен нулю).

Если сравнить показания напряжения INA226 с показаниями точного мультиметра (в моём случае это Agilent U3402A с заявленной точностью по постоянному напряжению ± 0,012% + 5), то получается заметная погрешность

qq17uxv7w0ciptatmehywttardw.png

В первой колонке напряжение измеренное с помощью Agilent U3402A, во второй колонке — измерения напряжения INA226 и в третьей колонке — погрешность измерения если принять показания U3402A за эталон.

Ошибка в 0.14% — это много или мало? Например заявленная погрешность для мультиметра Zoyi ZT301 ±(0.5%+3). Т.е. полученная погрешность сравнима с китайским мультиметром, но хочется попробовать компенсировать эту погрешность программно.

Идея такова — если мы знаем какой ток протекает через сопротивление R1, то можем вычислить падение напряжения на нём. И это вычисленное напряжение добавить к показаниям напряжения INA226.

Для проверки этой гипотезы подключаю в разрыв цепи измерения напряжения мультиметр U3402A в режиме амперметра и подаю напряжение от 1 В до 31 В с регулируемого лабораторного блока питания. Параллельно выходу блока питания подключён второй мультиметр ZT301 для контроля напряжения.

6anfil1vrantfqc9at1d3folpyk.pngmg6accf3pxw1jvm2khl5e8qlydk.png

График выглядит практически линейным — это очень хорошо. Посчитал среднее увеличение тока на каждый вольт измеряемого напряжения и получилось примерно 1,6 мкА на вольт. Сопротивление резистора R1 989 Ом, а следовательно падение напряжения на нём составит V * 1,6×10^-6×989 где V — это показания напряжения с INA226. Следовательно напряжение на входе тестера будет

V + V * 1,6×10^-6×989

Полученная формула выглядит как уравнение прямой (y = kx + b, где x = V, k = 1,610^-6989 и b = V). Добавляю эту формулу в таблицу с исходными данными и получаю максимальное значение ошибки 0,08%.

awv71oabdvtj7xukltzs7mp--b8.png

Попробовал подбирать значение тока через резистор R1 чтобы получить наименьшее значение ошибки на всём диапазоне входного напряжения.

atbusoewyhtmbtvnpfmds5lvbak.png

Если открыть таблицу, то видно что 1,6 мкА не лучшее значение, а наименьшую погрешность на всём диапазоне будет обеспечивать 1,1 мкА, при это максимальная ошибка не превышает 0,03% если сравнивать с показаниями Agilent U3402A.

Добавил компенсацию в прошивку устройства и ещё раз прогнал по всему диапазону напряжений — максимальная разница с показаниями мультиметра U3402A составила несколько милливольт вместо десятков милливольт.

В итоге получилось защитить вход АЦП INA226 от обратной полярности и при этом не потерять в точности измерений.

© Habrahabr.ru