Датчик тока для Ардуино acs712: описание, схемы подключения

Для измерения тока с помощью Arduino воспользуемся датчиком ACS712 от компании Allegro Microsystems. Данный датчик позволяет измерять переменный и постоянный ток в силовой, промышленной и бытовой электронике. Его можно использовать при управлении двигателями, обнаружении и управлении нагрузкой, создании защит от перегрузки по току.

Согласно документации Allegro, данные датчики не предназначены для применения их в автомобилях, для этих целей применяются ACS714.

Датчик тока для Ардуино acs712: описание, схемы подключения

Датчик ACS712 поставляется в корпусе SOIC8 и предназначен для поверхностного монтажа. Выводы IP+ и IP- клеммы для измерения тока. FILTER — вывод для подключения конденсатора. VIOUT — аналоговый выход. VCC — питание датчика 5В. GND — земля.

Датчик тока для Ардуино acs712: описание, схемы подключения

Действие датчика основывается на эффекте Холла. Вблизи точного линейного датчика Холла расположена медная проводящая дорожка (на концах выводы IP+ иIP-).

Толщина медной дорожки обеспечивает выживание устройства при 5-кратном превышении тока. Её сопротивление 1,2 мОм.

Протекающий через эту дорожку ток, генерирует магнитное поле, которое воспринимается схемой Холла и преобразуется в пропорциональное напряжение.

Семейство датчиков ACS712 состоит из 3-х чипов на разные диапазоны измерения тока: 5А (ACS712ELCTR-05B-T ), 20А (ACS712ELCTR-20A-T) и 30Ампер (ACS712ELCTR-30A-T).

Ниже представлены графики на которых видно, какой будет ток в зависимости от напряжения на выходе датчика:

Датчик тока для Ардуино acs712: описание, схемы подключения Датчик тока для Ардуино acs712: описание, схемы подключения Датчик тока для Ардуино acs712: описание, схемы подключения

При питании датчика от 5 вольт, если к его измеряемым клеммам не будет подключена нагрузка, выходное напряжение датчика будет равно 2,5В (рассчитывается по формуле VCC/2, где VCC — напряжение питания датчика) . 2,5В — это базовое напряжение датчика, которое нужно вычитать из измеренного напряжения.

Чувствительность датчиков (Sens) изменяется в зависимости от диапазона измерения силы тока микросхемы и зависит от напряжения питания. С увеличением диапазона — уменьшается чувствительность. На графиках ниже представлены графики чувствительности в зависимости от диапазона измеряемого тока:

Датчик тока для Ардуино acs712: описание, схемы подключения

ACS712ELCTR-05B-T имеет чувствительность 185 мВ/А

Датчик тока для Ардуино acs712: описание, схемы подключения

ACS712ELCTR-20A-T чувствительность 100 мВ/А

Датчик тока для Ардуино acs712: описание, схемы подключения

ACS712ELCTR-30A-T чувствительность 66 мВ/А

Датчик обладает низкой погрешностью ±1% , при температуре от 25 до 150°С. Это достигается благодаря его калибровке на стадии производства. В процессе этой операции измеряется погрешность чувствительности и выходное напряжение в рабочей точке. Эти параметры измеряются при комнатной температуре и температуре в диапазоне 85…150°С. Данные заносятся в специальную память.

Среди прочих характеристик: — Работа в диапазоне температур -40…85°C.- Полоса пропускания 80 кГц.

— Почти нулевой магнитный гистерезис.

Подключение датчика ACS712 к Arduino.

Для подключения датчика к Arduino удобнее использовать готовый модуль.

Датчик тока для Ардуино acs712: описание, схемы подключения

Внешний вид с 2-х сторон.

Датчик тока для Ардуино acs712: описание, схемы подключения

Принципиальная схема модуля. К разъёму Р1 подключается измеряемая цепь, к разъёму Р2 — микроконтроллер (в примере Ардуино). Измеряемая цепь изолирована от выводов микроконтроллера.

Среднеквадратичное минимальное напряжение изоляции между контактами 1 — 4 и 5 — 8 — 2,1 кВ. Светодтод D1 сигнализирует о питающем напряжении на датчике.

Считаю это бесполезной функцией, поскольку в готовых проектах подобные датчики спрятаны в каких то коробках и не находятся на видном месте.

Для подключения к Arduino используется 3 вывода:

ACS712 Arduino
VCC +5В
GND GND
OUT К любому аналоговому выводу, например А2

Скетч №1. Считываем значение с аналогового выхода ACS712:

Как уже упоминал выше, при нулевом значении тока на клеммах датчика, напряжение на его аналоговом выходе VIOUT равняется половине напряжения питания датчика (2,5В). В первом примере ничего не будем подключать к клеммам, что бы создать нагрузку в 0Ампер.

int analogPin = 2;int Value = 0;void setup(){Serial.begin(9600);Value = analogRead(analogPin);}void loop(){Serial.print(«Value = » );Serial.println(Value);delay(1000);}

В первой строке скетча прописываем аналоговый пин, к которому подключаем датчик,в примере 2 (A2).

В строке «Value = analogRead(analogPin);» с помощью функции «analogRead» считываем значение с аналогового пина в переменную «Value«. Далее, с помощью «Serial.

println» выводим содержимое переменной на дисплей, которое можно посмотреть в мониторе последовательного порта Arduino IDE.

Результатом выполнения скетча будет повторяющаяся запись со значением 512. Что такое 512?

Вспоминаем, что каждый из 6 каналов аналого-цифрового преобразователя Arduino — 10 битный, это значит, что входное напряжение от 0 до 5В, преобразовывается в значения от 0 до 1023. 2,5В будет соответствовать значению 512.

Скетч №2. Вычисляем постоянный ток с помощью ACS712:

В данном примере подключим лампочку на 12 вольт к аккумулятору. Датчик подключается в разрыв цепи питания, между нагрузкой и источником питания.

Для измерения тока в цепи, датчик подключается в разрыв цепи, между нагрузкой и источником питания. В примере, нагрузка — лампочка на 220В.

В завершению сказанному следует отметить что датчики ACS712 в 2017 году были выведены из эксплуатации Allegro Microsystems и взамен предлагаются новые чипы семейства ACS723.

Датчик тока для Ардуино ACS712

Датчик тока для Ардуино acs712: описание, схемы подключения

При конструировании различных систем измерения и контроля может потребоваться измерить ток, протекающий по проводнику. Встроенными средствами аппаратной платформы Arduino низкое постоянное напряжение можно измерить без каких-либо проблем, а вот ток так просто измерить не получится. Одним из специальных датчиков, предназначенных решить данную проблему, является датчик тока ACS712, эти датчики бывают рассчитаны на различные максимальные значения измеряемого тока, в данном случае автор использовал датчик на 20А. Физически работа этого устройства основана на эффекте Холла. Данный эффект заключается в том, что носители электрического тока при движении вдоль проводника, помещенного в поперечное магнитное поле испытывают на себе действие силы Лоренца и отклоняются в сторону. Из за этого на боковых, по отношению к направлению тока, сторонах проводника возникает разность потенциалов, которую можно измерить [1-2]. Датчик приобретен здесь всего за 100 рублей:

Датчик тока для Ардуино acs712: описание, схемы подключения

Устройство поставляется в антистатическом пакете

Датчик тока для Ардуино acs712: описание, схемы подключения

На печатной плате устройства хорошо видна клеммная колодка для подключения контролируемой цепи.

Датчик тока для Ардуино acs712: описание, схемы подключения

Габариты платы датчика 31 х 13 х 12 мм, масса 3,1 г.

Подключение датчика ACS712

На плате расположен 3-х контактный разъем.

  • Vcc – контакт для подачи питающего напряжения +5В,
  • OUT – контакт для снятия результатов измерения,
  • GND – общий провод.

На плате датчика имеется красный светодиод – индикатор питания. Сопротивление токовой шины 1,2 мОм [3-5], напряжение питания 5 В, ток потребления составляет около 12 мА.

Тестирование токового датчика

Автор обзора приобрел версию датчика рассчитанную на ток до 20 А, и это в целом было ошибкой.

В радиолюбительской практике все же довольно редко приходится иметь дело с подобными значениями силы тока, так что более рациональным было бы приобретение версии рассчитанной на 5 А, так как у нее разрешение 185 мВ/А, против 100 мВ/А у 20А версии. Тем не менее, и данную версию можно использовать, но точность у нее ниже при измерении токов порядка 1 А.

Для тестирования можно использовать программу AnalogInput2 [6], на ее основе не сложно написать код для измерения значения силы тока, протекающей через датчик и вывода этих данных в удобном виде в монитор последовательного порта. При отсутствии тока на выходе датчика присутствует напряжение примерно в половину от напряжения питания, так, что встроенный АЦП Arduino вернет значение около 512.

В опытах по тестированию данного модуля использован блок питания, дающий напряжение 5 В, который согласно маркировке рассчитан на максимальный ток 2 А. При подключении одного резистора сопротивлением 10 Ом, ток через датчик составляет примерно 0,47 А.

Датчик тока для Ардуино acs712: описание, схемы подключения

При этом АЦП возвращает значение около 504.

Датчик тока для Ардуино acs712: описание, схемы подключения

При подключении параллельно первому резистору второго резистора с аналогичным сопротивлением, общее сопротивление потребителя составит 5 Ом, при этом амперметр показывает значение силы тока около 0,9 А.

Читайте также:  Трансивер это: что такое, виды, как устроен для чего используется

Датчик тока для Ардуино acs712: описание, схемы подключения

При этом АЦП возвращает значение около 496.

Датчик тока для Ардуино acs712: описание, схемы подключения

Как известно встроенный АЦП Arduino UNO является 10 разрядным, т.е. диапазону напряжений от 0 до 5 В ставится в соответствие двоичное число от 0 до 1023. Таким образом, разрешение АЦП составляет примерно 0,0049 В.

Как следует из приведенных выше данных току в 0,47 А соответствует напряжение 2,46 В, а току 0,9 А – 2,42 В, т.е изменению тока на 0,43 А соответствует изменение напряжения на 40 мВ, что вполне соответствует заявленным продавцом 100 мВ/А.

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

Ссылки по теме

  1. radioprog.ru/post/99
  2. elenergi.ru/effekt-xolla.html
  3. arduino.ru/forum/programmirovanie/datchik-toka-acs712
  4. www.drive2.ru/b/456815746333278890/
  5. 3d-diy.ru/wiki/arduino-datchiki/datchik-toka-acs712/
  6. robocraft.ru/blog/arduino/59.html

Файлы проекта тут. Обзор сделал специально для сайта «2 Схемы» — Denev.

НАЖМИТЕ ТУТ И ОТКРОЙТЕ КОММЕНТАРИИ

Использование датчика тока ACS712. Часть 1 — Теория — ACS712

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

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

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

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

Датчик тока для Ардуино acs712: описание, схемы подключения
Рисунок 1. Модуль датчика тока ACS712.

Основные недостатки измерения тока с помощью резистивного шунта:

  • нагрузка не имеет прямой связи с «землей»;
  • нелинейность измерений, обусловленная температурным дрейфом сопротивления резистора;
  • отсутствие гальванической развязки между нагрузкой и схемой измерения.

В статье мы рассмотрим экономичный и прецизионный интегральный датчик тока Allegro ACS712, принцип его работы, основанный на эффекте Холла, характеристики и способ подключения к микроконтроллеру для измерения постоянного тока. Статья разделена на две части: первая посвящена устройству и характеристикам датчика, вторая – интерфейсу с микроконтроллером и работе с датчиком.

Датчик тока ACS712 основан на принципе, открытом в 1879 году Эдвином Холлом (Edwin Hall), и названным его именем.

Эффект Холла состоит в следующем: если проводник с током помещен в магнитное поле, то на его краях возникает ЭДС, направленная перпендикулярно, как к направлению тока, так и к направлению магнитного поля. Эффект иллюстрируется Рисунком 2.

Через тонкую пластину полупроводникового материала, называемую элементом Холла, протекает ток I. При наличии магнитного поля на движущиеся носители заряда (электроны) действует сила Лоренца, искривляющая траекторию движения электронов, что приводит к перераспределению объемных зарядов в элементе Холла.

Вследствие этого на краях пластины, параллельных направлению протекания тока, возникает ЭДС, называемая ЭДС Холла. Эта ЭДС пропорциональна векторному произведению индукции B на плотность тока I и имеет типовое значение порядка нескольких микровольт.

Датчик тока для Ардуино acs712: описание, схемы подключения
Рисунок 2. Эффект Холла.

Микросхема ACS712 выпускается в миниатюрном 8-выводном корпусе SOIC для поверхностного монтажа (Рисунок 3). Она состоит из прецизионного линейного датчика Холла с малым напряжением смещения и медного проводника, проходящего у поверхности чипа и выполняющего роль сигнального пути для тока (Рисунок 4).

Протекающий через этот проводник ток, создает магнитное поле, воспринимаемое встроенным в кристалл элементом Холла. Сила магнитного поля линейно зависит от проходящего тока.

Встроенный формирователь сигнала фильтрует создаваемое чувствительным элементом напряжение и усиливает его до уровня, который может быть измерен с помощью АЦП микроконтроллера.

Датчик тока для Ардуино acs712: описание, схемы подключения
Рисунок 3. Микросхема ACS712 в корпусе SOIC.
Датчик тока для Ардуино acs712: описание, схемы подключения
Рисунок 4. Внутренняя конструкция датчика тока ACS712. Виден U-образный медный проводник проходящий вокруг элемента Холла.

На Рисунке 5 показано расположение выводов ACS712 и типовая схема его включения. Выводы 1, 2 и 3,4 образуют проводящий путь для измеряемого тока с внутренним сопротивлением порядка 1.2 мОм, что определяет очень малые потери мощности.

Его толщина выбрана такой, чтобы прибор выдерживал силу тока в пять раз превышающую максимально допустимое значение. Контакты силового проводника электрически изолированы от выводов датчика (выводы 5 – 8). Расчетная прочность изоляции составляет 2.

1 кВ с.к.з.

Датчик тока для Ардуино acs712: описание, схемы подключения
Рисунок 5. Расположение выводов интегрального датчика ACS712 и типовая схема включения.

В низкочастотных приложениях часто требуется включить на выходе устройства простой RC фильтр, чтобы улучшить отношение сигнал-шум. ACS712 содержит внутренний резистор RF, соединяющий выход встроенного усилителя сигнала со входом выходной буферной схемы (см. Рисунок 6).

Один из выводов резистора доступен на выводе 6 микросхемы, к которому подключается внешний конденсатор CF.

Следует отметить, что использование конденсатора фильтра приводит к увеличению времени нарастания выходного сигнала датчика и, следовательно, ограничивает полосу пропускания входного сигнала.

Максимальная полоса пропускания составляет 80 кГц при емкости фильтрующего конденсатора равной нулю. С ростом емкости CF полоса пропускания уменьшается. Для снижения уровеня шума при номинальных условиях рекомендуется устанавливать конденсатор CF емкостью 1 нФ.

Датчик тока для Ардуино acs712: описание, схемы подключения 
Рисунок 6. Функциональная схема датчика тока ACS712.

Чувствительность и выходное напряжение ACS712

Выходное напряжение датчика пропорционально току, протекающему через проводящий путь (от выводов 1 и 2 к выводам 3 и 4). Выпускается три варианта токового датчика для разных диапазонов измерения:

  • ±5 А (ACS712-05B),
  • ±20 А (ACS712-20B),
  • ±30 А (ACS712-30A)

Соответствующие уровни чувствительности составляют 185 мВ/А, 100 мА/В и 66 мВ/A. При нулевом токе, протекающем через датчик, выходное напряжение равно половине напряжения питания (Vcc/2). Необходимо заметить, что выходное напряжение при нулевом токе и чувствительность ACS712 пропорциональны напряжению питания. Это особенно полезно при использовании датчика совместно с АЦП.

Точность любого АЦП зависит от стабильности источника опорного напряжения. В большинстве схем на микроконтроллерах в качестве опорного используется напряжение питания.

Поэтому при нестабильном напряжении питания измерения не могут быть точными.

Однако если опорным напряжением АЦП сделать напряжение питания датчика ACS712, его выходное напряжение будет компенсировать любые ошибки аналого-цифрового преобразования, обусловленные флуктуациями опорного напряжения.

Рассмотрим эту ситуацию на конкретном примере. Допустим, что для опорного напряжения АЦП и питания датчика ACS712 используется общий источник Vcc = 5.0 В. При нулевом токе через датчик его выходное напряжение составит Vcc/2 = 2.5 В.

Если АЦП 10-разрядный (0…1023), то преобразованному выходному напряжению датчика будет соответствовать число 512. Теперь предположим, что вследствие дрейфа напряжение источника питания установилось на уровне 4.5 В. Соответственно, на выходе датчика будет 4.5 В/2 = 2.

25 В, но результатом преобразования, все равно, будет число 512, так как опорное напряжение АЦП тоже снизилось до 4.5 В. Точно также, и чувствительность датчика снизится в 4.5/5 = 0.9 раз, составив 166.5 мВ/А вместо 185 мВ/А.

Как видите, любые колебания опорного напряжения не будут источником ошибок при аналого-цифровом преобразовании выходного напряжения датчика ACS712.

На Рисунке 7 представлены номинальные передаточные характеристики датчика ACS712-05B при напряжении питания 5.0 В. Дрейф выходного напряжения в рабочем диапазоне температур минимален благодаря инновационной технологии стабилизации.

Датчик тока для Ардуино acs712: описание, схемы подключения
Рисунок 7. Зависимость выходного напряжения ACS712-05B от измеряемого тока при напряжении питания 5.0 В и различных рабочих температурах.

Часть 2 — Подключение датчика к микроконтроллеру и работа с ним

Датчик тока ACS712: описание, подключение, схема, характеристики | ВИКИ

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

Читайте также:  Подключение термопары к Ардуино: особенности, схема, скетч

Содержание:

  • Обзор
  • Технические характеристики модуля
  • Подключение
  • Пример использования
  • Часто задаваемые вопросы FAQ

Измерение и контроль протекающего тока являются принципиальным требованием для широкого круга приложений, включая схемы защиты от перегрузки по току, зарядные устройства, импульсные источники питания, программируемые источники тока и пр. Один из простейших методов измерения тока –использование резистора с малым сопротивлением, – шунта между нагрузкой и общим проводом, падение напряжения на котором пропорционально протекающему току. Несмотря на то, что данный метод очень прост в реализации, точность измерений оставляет желать лучшего, т.к. сопротивление шунта зависит от температуры, которая не является постоянной. Кроме того, такой метод не позволяет организовать гальваническую развязку между нагрузкой и измерителем тока, что очень важно в приложениях, где нагрузка питается высоким напряжением. Датчик тока ACS712 основан на эффекте Холла, суть которого в следующем: если проводник с током помещён в магнитное поле, на его краях возникает ЭДС, направленная перпендикулярно к направлению тока и направлению магнитного поля (рисунок 1).Датчик тока для Ардуино acs712: описание, схемы подключения

Рисунок 1. Эффект Холла.

Датчик тока ACS712  состоит из датчика Холла и медного проводника. Протекающий через медный проводник ток создает магнитное поле, которое воспринимается элементом Холла. Магнитное поле линейно зависит от силы тока. ACS712 датчик построен на эффекте Холла и имеет линейную зависимость измеряемого тока и выходного сигнального напряжения. Уровень выходного напряжения сенсора пропорционально зависит от измеряемого тока. Диапазон измерения от −5 А до 5 A. Чувствительность — 185 мВ/А. При отсутствии тока выходное напряжение будет равняться половине напряжения питания. Датчики ACS712 и ACS713 питаются от +5В и имеют выход по напряжению. При токе равном нулю напряжение на выходе для ACS712 равно 2,5В и отклоняется в или ближе к нулю или ближе к напряжению питания — зависит от направления протекания тока. ACS712 обеспечивает экономное и прецизионное решение для измерения AC и DC тока в промышленных, автомобильных, коммерческих системах и системах связи. Корпус устройства обеспечивает удобную реализацию для пользователя. Устройство состоит из прецизионного линейного датчика тока на базе эффекта Холла с медным проводником на нижней части. Прикладываемый к медному проводнику ток создает, улавливаемое датчиком, магнитное поле, которое преобразуется в пропорциональное напряжение. Точность устройства оптимизирована за счет непосредственной близости от магнитного сигнала к датчику. Напряжение обеспечивается BiCMOS Hall микросхемой с низким смещением и заводскими настройками точности.

Технические характеристики ACS712

  • ACS712 работает с постоянным и переменным током;
  • Чувствительность датчиков:
  • ACS712 5А: 185 мВ/А;
  • ACS712 20А: 100 мВ/А;
  • ACS712 30А: 66 мВ/А;
  • ACS713 20А: 185 мВ/А;
  • ACS713 30А: 133 мВ/А.
  • Напряжение питания +5,0 В;
  • Ток потребления не превышает 11мА;
  • Сопротивление токовой шины 1,2 мОм;
  • Температура эксплуатации -40°C…+85°C;
  • Размер 31мм х 13мм.

Подключение датчик тока ACS712 к плате Arduino

Для подключения ACS712 к плате Arduino используют 3 провода:

  • VCC – питание (опорное напряжение 5В);
  • GND – земля;
  • OUT – сигнальный (подключается к аналоговому выводу контроллера Arduino).

Для измерения тока датчик подключается в разрыв цепи между источником питания и нагрузкой. Схема подключения к плате Arduino показана на рисунке 2.Датчик тока для Ардуино acs712: описание, схемы подключения

Рисунок 2. Подключение датчика тока ACS712 к плате Arduino.

Пример использования

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

В листинге 1 представлен скетч для измерения постоянного тока.

Листинг 1 Загружаем скетч на плату Arduino, подключаем нагрузку к источнику питания 12В и смотрим значение тока при подключении хоппера выдачи монет (рис.

4) и двигателя для вендингового аппарата (рис. 6).

Датчик тока для Ардуино acs712: описание, схемы подключения

Рисунок 3. Подключение хоппера выдачи монет к источнику питания 12В.

Датчик тока для Ардуино acs712: описание, схемы подключения

Рисунок 4. Измерение силы тока при подключении хоппера выдачи монет к источнику питания 12В.

Датчик тока для Ардуино acs712: описание, схемы подключения

 Рисунок 5. Подключение двигателя для вендингового аппарата к источнику питания 12В.

Датчик тока для Ардуино acs712: описание, схемы подключения

Рисунок 6. Измерение силы тока при подключении двигателя для вендингового аппарата к источнику питания 12В.

В листинге 2 представлен скетч для измерения переменного тока.

Листинг 2

1. Нет измерения тока при подключении нагрузки

  • Проверьте правильность подключения датчика тока.
  • Проверьте наличие достаточного внешнего питания сервопривода.

2. Значение тока отрицательноеПоменяйте полярность подключения проводов к клеммам датчика тока.

Как подключить датчик тока к Arduino

Для проекта нам понадобятся:

Датчики тока, как следует из их названия, служат для измерения силы тока. Существуют датчики, которые основаны на различных физических эффектах и имеют различные особенности. В частности, рассматриваемый датчик ACS712 основан на эффекте Холла, датчик INA219 имеет в своём составе аналого-цифровой преобразователь (АЦП), а датчик INA3221 – трёхканальный. Рассмотрим их по порядку.

Содержание:

1Описание датчикатока ACS712

Датчик тока ACS712 – это датчик, который основан на эффекте Холла. Эффект Холла заключается в том, что когда через проводник, помещённый в магнитное поле, протекает электрический ток, в проводнике возникает напряжение. Это напряжение и служит индикатором силы тока: оно линейно зависит от силы тока.

Ещё оно имеет небольшую зависимость от температуры окружающей среды и поддаётся влиянию внешних магнитных полей.

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

Датчик тока для Ардуино acs712: описание, схемы подключенияЗависимость напряжения на выходе датчика ACS712 от силы тока

Модуль с датчиком ACS712 может выглядеть, например, так:

Датчик тока для Ардуино acs712: описание, схемы подключенияМодуль с датчиком тока ACS712 и схема подключения

Датчик ACS712 имеет следующие характеристики:

  • работает с постоянным и переменным током;
  • ток потребления – до 13 мА;
  • температура эксплуатации -40…+85 °C.

Существуют несколько разновидностей датчика ACS712, которые отличаются величиной измеряемого тока. Так, существуют разновидности с максимально измеряемым током 5, 20 и 30 А. Широкий диапазон измеряемых значений тока можно отнести к существенным преимуществам датчика ACS712. Перечисленные модификации имеют чувствительность 185, 100 и 66 мВ/А соответственно.

2Подключение датчика тока ACS712 к Arduino

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

Вывод датчика ACS712Назначение
VCC Питание, 5 В
GND Земля
OUT Аналоговый выход датчика, напряжение на котором линейно зависит от протекающего через датчик тока
IP+ Вывод 1 для подачи измеряемого тока
IP- Вывод 2 для подачи измеряемого тока

Выводы IP+ и IP- как раз и есть тот разрыв цепи, через который нужно пропустить интересующий ток. Если перепутать полярность, то измерения будут с обратным знаком.

Кстати, эта особенность – измерять ток как с положительным, так и отрицательным знаком, позволяет использовать датчик ACS712 для измерений переменного тока.

Таким образом, для подключения датчика ACS712 к плате Arduino используются 3 провода:

Датчик тока для Ардуино acs712: описание, схемы подключенияСхема подключения датчика тока ACS712 к Arduino

Выход сенсора VOUT подключим к любому аналоговому выводу Arduino, например, A0. В качестве нагрузки будем использовать двигатель постоянного тока.

Датчик тока для Ардуино acs712: описание, схемы подключенияМодуль с датчиком тока ACS712 подключён Arduino, нагрузка – двигатель постоянного тока

Либо вместо нагрузки можно использовать мощную лампу накаливания. Либо любую другую нагрузку.

Датчик тока для Ардуино acs712: описание, схемы подключенияМодуль с датчиком тока ACS712 подключён Arduino, нагрузка – 10 Вт лампа накаливания

Питать нагрузку будем от лабораторного источника тока, на котором можно менять напряжение и ток.

3Чтение показаний датчика тока ACS712с помощью Arduino

В скетче будем постоянно читать значение с порта A0 и выводить в монитор последовательных данных. Напомню, АЦП у разных плат Arduino имеет различную разрядность, обычно 10 или 12 бит. Подробнее здесь.

Читайте также:  Датчик детонации ВАЗ 2110: признаки неисправности, где находится, как проверить, замена, 8 клапанов, 16 клапанов

Это означает, что с аналогового порта могут приходить значения от 0 до 210 = 1024 для 10-разрядного АЦП.

Будем считать, что у нас датчик тока, диапазон измерений которого от -5 А до +5 А, а чувствительность 185 мВ/А.

Если на 1 А приходится 185 мВ, это соответствует примерно 38 единицам измерения АЦП: 185·1024/5000 = 37.888, (1) где 5000 – это максимальное значение напряжения, которое способен измерить АЦП Arduino, в милливольтах.

На выходе OUT датчика ACS712 при отсутствии измеряемого тока должна быть половина напряжения питания, т.е. 2.5 В. Так как вся шкала АЦП лежит в диапазоне от 0 до 1024, то при отсутствии измеряемого тока мы должны считывать с аналогового порта Arduino число 512. Это начало шкалы отсчёта. Обозначим его value_zero.

Отклонение тока value_adc от нулевого уровня в большую или меньшую сторону и будет показывать силу тока. Следовательно, чтобы посчитать в амперах значение тока с датчика ACS712, необходимо разницу нулевого уровня и измеренного значения с аналогового порта A0 поделить на 38.

А чтобы получить ток в миллиамперах, следует умножить это значение на 1000: I(mA) = (value_zero − value_adc) / 38·1000 (2)

Датчик тока для Ардуино acs712: описание, схемы подключенияПояснение принципа вычисления силы тока

На практике значение на аналоговом выводе A0 не будет равняться точно 512. Поэтому, чтобы определить начало отсчёта, добавим в скетч примитивную калибровку.

Калибровка будет заключаться в том, что некоторое количество раз прочитаем значение с аналогового порта A0 при отсутствии тока на датчике ACS712, и усредним его.

Естественно, нагрузка на время калибровки должна быть выключена, чтобы ток не протекал через датчик.

Скетч для измерения постоянного тока датчиком ACS712 (разворачивается) const int acs712_pin = A0; int zero; // уровень нуля, относительно которого измеряется ток, обычно VCC/2 void setup() { Serial.begin(9600); calibrate(); } // определим нуль шкалы (до включения нагрузки) void calibrate(){ zero = 0; int repeats = 10; for (int i=0; i 3) × 32000 (мВ) / 8000 = 3292 (мВ).

Здесь 0x19BA это значение в регистре. Его нужно сдвинуть на 3 разряда вправо, т.к. данные о напряжении хранятся, начиная с 3-го разряда. 32000 (мВ) – это предел шкалы измерения (он указан в регистре конфигурации). А 8000 – это предел шкалы измерения в отсчётах. Получается 3292 (мВ) или 3.29 вольта, что мы и видим в выводе скетча в мониторе порта Arduino.‬

Регистр Current Register (адрес 0x04) датчика INA219

Значение тока рассчитывается тоже просто: I = 0x1959 × 0x1000 / 4096 = 6489.

Значение в регистре напряжения шунта 0x1959 умножается на значение регистра калибровки, который в нашем случае равен 0x1000. А затем результат делится на 4096 (что, кстати, то же самое, что 0x1000). То есть ток получается равным 6489.

Но в каких единицах? Чтобы ответить на этот вопрос, необходимо определить параметр Current_LSB: Current_LSB = 0.04096 / 0x1000 / 0.1 (Ом) = 0.0001Здесь 0x1000 – значение регистра калибровки, 0.1 (Ом) – сопротивление шунта, а 0.04096 – просто коэффициент.

Теперь посчитанный ток нужно умножить на число Current_LSB, и получим 0.6489 (А) или 648,90 (мА). Такой ток мы видим и в мониторе.

Регистр Power (адрес 0x03) датчика INA219

Мощность рассчитывается как произведение напряжения на шине и тока: P = Uшины × I = 3292 (мВ) × 648.9 (мА) = 2136 (мВт)

Небольшое расхождение с выводом монитора Arduino связано с ошибкой округления. А именно, если посмотреть на вывод монитора порта, мы увидим, что значение напряжения на шине принято равным 3.29 В, в то время как в регистре записано 3.292 В. Из-за этого рассчитанное значение на 2 милливатта больше, чем показанное в выводе скетча.

7Подключение трёхканального датчика тока и напряжения INA3221 к Arduino

Датчик тока INA3221 практически идентичен датчику INA219. Основное отличие состоит в том, что он имеет 3 измерительных канала вместо одного. Показания с них можно снимать независимо друг от друга. Будем использовать вот такую небольшую плату с датчиком:

Плата с датчиком INA3221

Подключается данный модуль к Arduino всего 4-мя проводами: два для питания, и ещё два – шина I2C.

Вывод модуля INA3221Вывод ArduinoНазначение
SDA A4 Данные шины I2C
SCL A5 Импульсы синхронизации шины I2C
VS +3.3V Питание
GND GND Общий

Подключение датчика INA3221 к Arduino Nano

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

Вывод модуля INA3221Назначение
TC Цифровой выход оповещения о сбое таймингов (timing control alert).
WAR Цифровой выход оповещения о сбоях измерений (warning).
CRI Цифровой выход оповещения о критических сбоях (critical).
PV Цифровой выход оповещения о валидности питающего напряжения (power valid).
VPU Аналоговый вход подтягивающего напряжения для смещения выходных цепей определения валидности питания.
POW Аналоговый вход питания измеряемой нагрузки.
CH1, CH2, CH3 Порты для подключения измеряемых цепей.

Используем библиотеку для работы с датчиком INA3221. Поместим файлы с расширениями *.cpp и *.h в одну директорию, в ней же создадим файл с расширением *.ino и следующим содержимым:

Скетч для чтения показаний датчика INA3221 #include «Wire.h»
#include «SDL_Arduino_INA3221.h»

SDL_Arduino_INA3221 ina3221; // создаём экземпляр класса датчика

// Три канала измерения датчика INA3221
#define CHANNEL_1 1
#define CHANNEL_2 2
#define CHANNEL_3 3

void setup(void)
{
Serial.begin(115200);
Serial.println(«Arduino INA3221 test»);
ina3221.begin();

Serial.print(«ID=0x»);
int id = ina3221.getManufID();
Serial.println(id, HEX);

Serial.println(«Measuring voltage and current with ina3221 …»);
}

void loop(void)
{
Serial.println(«———————————————«);
Serial.println(«Channel: (1) (2) (3) «); // » » — это символ табуляции

// Вывод напряжений по трём каналам:
Serial.print(«Bus voltage, V: «);
float busvoltage1 = ina3221.getBusVoltage_V(CHANNEL_1);
float busvoltage2 = ina3221.getBusVoltage_V(CHANNEL_2);
float busvoltage3 = ina3221.getBusVoltage_V(CHANNEL_3);
Serial.print(busvoltage1); Serial.print(» «);
Serial.print(busvoltage2); Serial.print(» «);
Serial.print(busvoltage3); Serial.println(» «);

// Вывод напряжений на шунте по трём каналам:
Serial.print(«Shunt voltage, mV: «);
float shuntvoltage1 = ina3221.getShuntVoltage_mV(CHANNEL_1);
float shuntvoltage2 = ina3221.getShuntVoltage_mV(CHANNEL_2);
float shuntvoltage3 = ina3221.getShuntVoltage_mV(CHANNEL_3);
Serial.print(shuntvoltage1); Serial.print(» «);
Serial.print(shuntvoltage2); Serial.print(» «);
Serial.print(shuntvoltage3); Serial.println(» «);

// Вывод напряжений нагрузки по трём каналам:
Serial.print(«Load voltage, V: «);
float loadvoltage1 = busvoltage1 + (shuntvoltage1 / 1000);
float loadvoltage2 = busvoltage2 + (shuntvoltage2 / 1000);
float loadvoltage3 = busvoltage3 + (shuntvoltage3 / 1000);
Serial.print(loadvoltage1); Serial.print(» «);
Serial.print(loadvoltage2); Serial.print(» «);
Serial.print(loadvoltage3); Serial.println(» «);

// Вывод тока по трём каналам:
Serial.print(«Current, mA: «);
float current_mA1 = ina3221.getCurrent_mA(CHANNEL_1);
float current_mA2 = ina3221.getCurrent_mA(CHANNEL_2);
float current_mA3 = ina3221.getCurrent_mA(CHANNEL_3);
Serial.print(current_mA1); Serial.print(» «);
Serial.print(current_mA2); Serial.print(» «);
Serial.print(current_mA3); Serial.println(» «);

delay(2000);
}

Загрузим данный скетч в память Arduino. Перед тем как подключать нагрузку, необходимо подать с источника питания напряжение на контакты POW и GND, расположенные с одного из краёв модуля. Это напряжение будет подаваться на нагрузку и оно в данном модуле общее для всех трёх измерительных каналов. Допустимый диапазон напряжений от 0 до 26 вольт. Я сейчас подам 5 В.

Удобно в места подключения нагрузки и питания впаять клеммники для быстрого монтажа.

Теперь можно подключать нагрузку. Давайте нагрузим выходы модуля и посмотрим, что будет выводиться в монитор последовательного порта. Я подключу на канал 1 два параллельных резистора номиналом 4,3 кОм, что в сумме даст сопротивление 2,15 кОм. А на канал 3 – один резистор 4,3 кОм.

Датчик тока INA3221 с нагрузкой

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

Показания датчика тока INA3221 в мониторе COM-порта

Если мы подключим в измеряемую цепь амперметр, то убедимся, что показания цифрового датчика INA3221 довольно точно совпадают с показаниями амперметра.

Показания датчика тока INA3221 в сравнении с амперметром

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Adblock
detector
Для любых предложений по сайту: [email protected]