Датчик тока ACS712: принцип работы и подключение к Arduino

Чем датчик тока на эффекте Холла лучше шунта, какие бывают версии ACS712 и как измерять постоянный и переменный ток с помощью Arduino.
Почему не шунт
Контроль тока нужен во множестве устройств: в схемах защиты от перегрузки, зарядных устройствах, импульсных блоках питания, программируемых источниках тока. Самый простой способ измерения — шунт, то есть резистор малого сопротивления между нагрузкой и общим проводом: падение напряжения на нём пропорционально току. Реализовать это легко, но точность невысока, потому что сопротивление шунта меняется с температурой. Кроме того, шунт не даёт гальванической развязки между нагрузкой и измерительной частью, а она важна, когда нагрузка питается высоким напряжением.
Эффект Холла и устройство ACS712
ACS712 работает на эффекте Холла. Суть его в том, что на краях проводника с током, помещённого в магнитное поле, возникает ЭДС, направленная перпендикулярно и току, и полю.

Внутри датчика находятся медный проводник и элемент Холла. Измеряемый ток проходит по проводнику и создаёт магнитное поле, линейно зависящее от силы тока; элемент Холла преобразует поле в пропорциональное напряжение. Точности способствует то, что проводник расположен вплотную к чувствительному элементу, а микросхема выполнена по технологии BiCMOS с низким смещением и заводской настройкой.
Выходное напряжение зависит от тока линейно. При нулевом токе на выходе присутствует половина напряжения питания, то есть 2,5 В при питании 5 В. Под нагрузкой напряжение смещается к нулю или к напряжению питания — в зависимости от направления тока. У версии на 5 А диапазон измерения составляет от −5 до +5 А при чувствительности 185 мВ/А. Датчик подходит и для постоянного, и для переменного тока.
Характеристики
| Род тока | постоянный и переменный |
| Чувствительность ACS712 5 А | 185 мВ/А |
| Чувствительность ACS712 20 А | 100 мВ/А |
| Чувствительность ACS712 30 А | 66 мВ/А |
| Чувствительность ACS713 20 А | 185 мВ/А |
| Чувствительность ACS713 30 А | 133 мВ/А |
| Напряжение питания | +5 В |
| Ток потребления | не более 11 мА |
| Сопротивление токовой шины | 1,2 мОм |
| Температура эксплуатации | −40…+85 °C |
| Размер | 31×13 мм |
Подключение
К плате Arduino модуль подключается тремя проводами: VCC — питание (опорное напряжение 5 В), GND — земля, OUT — сигнальный выход, который заводят на аналоговый вход контроллера. Силовая часть включается в разрыв цепи между источником питания и нагрузкой; для этого на модуле предусмотрены винтовые колодки.

Измерение тока в скетче
Чтобы не пересчитывать показания АЦП вручную, можно взять библиотеку TroykaCurrent — она сама преобразует значение аналогового выхода датчика в величину тока. В скетче выход OUT подключён к A0, создаётся объект датчика на этом выводе, и раз в секунду в последовательный порт (скорость 9600) выводится результат. Для постоянного тока используется метод readCurrentDC(), для переменного — readCurrentAC(); в остальном оба скетча одинаковы.
В качестве проверки измеряли ток нагрузок, питающихся от источника 12 В: хоппера выдачи монет и двигателя вендингового аппарата.


Частые вопросы
Если при подключённой нагрузке ток не измеряется, проверяют правильность включения датчика и достаточность внешнего питания нагрузки. Отрицательное значение тока означает лишь обратное направление: достаточно поменять местами провода на клеммах датчика.