Перейти к содержанию

Почему ACS712 показывает ток без нагрузки?

Обновлено Редакция GAW

ACS712 — датчик на эффекте Холла: при нулевом токе выход равен половине питания, VCC × 0,5, и смещается на 185 мВ/А у исполнения на 5 А (Allegro ACS712-DS, с. 5–6). Ноль и чувствительность пропорциональны питанию — это ратиометрическое измерение.

Откуда берётся «ток» без нагрузки

Наш расчёт для ACS712ELCTR-05B (185 мВ/А):

ПричинаСдвиг выходаВ пересчёте на ток
Питание 4,90 В вместо 5,00 В, АЦП с отдельным опорным, программа вычитает 2,500 В−50 мВ−0,27 А
Питание 5 В ± 5 %, от 4,75 до 5,25 В, АЦП с отдельным опорным±125 мВ±0,68 А
Шум, размах при CF = 47 нФ21 мВ0,11 А
Дрейф нуля при охлаждении на 20 °Cоколо 5 мВоколо 0,03 А
I=Uвых−U0SensI = \frac{U_\text{вых} - U_0}{\text{Sens}}

где U0 — измеренный ноль, а не константа 2,5 В. Если АЦП Arduino Uno работает с опорой AVCC от того же питания 5 В, изменения питания сдвигают ноль и шкалу АЦП одинаково и сокращаются. С внешним точным опорным напряжением или у ESP32 со своим опорным они войдут в ошибку целиком.

Как сделать правильно

  1. При старте, с выключенной нагрузкой, усреднить несколько сотен отсчётов и запомнить их как ноль.
  2. Считать ток от этого нуля, а не от 2,5 В.
  3. Шум уменьшить конденсатором на выводе FILTER — с внутренним резистором 1,7 кОм он образует RC-фильтр, частоту которого считает калькулятор RC-фильтра, — или программным усреднением.

Почему ACS712 вообще плохо подходит для малых токов и чем его заменить — в статье «Измерение тока».

Похожие вопросы

Ноль скачет на ±2–3 отсчёта АЦП. Это неисправность?

Нет, это шум. У ACS712-05B размах шума — 21 мВ даже с конденсатором 47 нФ на выводе FILTER, а шаг 10-битного АЦП Arduino при опоре 5 В — около 4,9 мВ (наш расчёт). Значит, разброс в несколько отсчётов нормален; его уменьшают усреднением или конденсатором на FILTER.

Влияет ли на ноль магнит или провод рядом?

Да: датчик Холла меряет магнитное поле, и чужое поле от магнита, дросселя или соседнего провода с большим током сдвигает выход так же, как измеряемый ток (наш вывод из принципа работы). Датчик располагают подальше от таких источников.

Как измерить ноль, если нагрузку нельзя выключить?

Тогда ноль калибруют один раз на столе — при той же температуре и том же питании — и сохраняют в памяти. Но питание и температура в работе будут другими, поэтому лучше предусмотреть способ отключать нагрузку на время калибровки.

Источники

  1. Allegro MicroSystems. ACS712: Fully Integrated, Hall-Effect-Based Linear Current Sensor IC with 2.4 kVRMS Isolation (ACS712-DS, Rev. 22, 2024) — с. 5: питание 4,5–5,5 В, выход при нулевом токе VCC × 0,5; с. 6: ACS712ELCTR-05B — 185 мВ/А (180–190), шум 21 мВ размах при CF = 47 нФ, дрейф нуля −0,26 мВ/°C ниже 25 °C; определения: VIOUT(Q) номинально VCC/2, электрическое смещение VOE — отклонение от VCC/2, в амперах — VOE / Sens; с. 10: пропорциональность нуля и чувствительности питанию
  2. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P megaAVR Data Sheet (DS40002061B) — 10-битный АЦП с опорным напряжением AVCC — пересчёт шага АЦП в ток для Arduino Uno

Нашли ошибку?