Датчик ACS712 позволяет измерить постоянный и переменный ток, с достаточно большой точностью (погрешность измерения не более 1,5%), так же падение напряжение на датчике тока очень незначительное, так как сопротивление токопроводящей цепи не более 1,2 мОм.
Датчик тока ACS712 выпускается на номиналы в ±5, ±10 и ±30 А, с чувствительностью 185 мВ/А, 100 мВ/А и 66 мВ/А соответственно. Микросхема датчика ACS712 выпускается в миниатюрном 8-выводном корпусе SOIC для поверхностного монтажа. Так же существуют уже готовые модули.
Для измерения тока модуль подключается в разрыв цепи между источником питания и нагрузкой.
Если Вы используете микросхему ACS712 вместо модуля, то используйте следующую схему подключения:
Датчик тока ACS712 состоит из датчика Холла и медного проводника. Протекающий через медный проводник ток создает магнитное поле, которое воспринимается элементом Холла. Магнитное поле линейно зависит от силы тока. Датчик тока ACS712 имеет линейную зависимость измеряемого тока и выходного напряжения. При отсутствии тока выходное напряжение будет равняться половине напряжения питания.
На основе Arduino Uno (Nano) можно собрать простое уст-во для измерения тока с применением модуля ACS712. Как было сказано ранее, выходное напряжение датчика имеет разную чувствительность в зависимости от номинала датчика, также при отсутствии тока напряжение на выходе датчика будет равно половине напряжения питания. Для упрощения написания скетча можно воспользоваться библиотекой https://github.com/muratdemirtas/ACS712-arduino-1.git , которая позволяет использовать датчики всех трех номиналов (5, 10, 30 А), при измерении переменного и постоянного тока.
Библиотека — ACS712.zip
Ниже показан пример скетча для измерения постоянного тока для датчика ACS712_05B на 5А
#include <ACS712.h> ACS712 sensor(ACS712_05B, A0); // тип датчика ACS712_05B, ACS712_20A, ACS712_30A // 5A, 10A, 30A / аналоговый вход А0 void setup() { Serial.begin(9600); sensor.calibrate(); } void loop() { float i = sensor.getCurrentDC(); // измерение Serial.print("I = "); Serial.print(i); Serial.println(" A"); delay(1000); }
Для измерения переменного тока используйте следующий скетч:
#include <ACS712.h> ACS712 sensor(ACS712_05B, A0); // ACS712_05B, ACS712_20A, ACS712_30A // 5A, 10A, 30A / А0 void setup() { Serial.begin(9600); sensor.calibrate(); } void loop() { float i = sensor.getCurrentAC(); // измерение на частоте 50 Гц(по умолчанию) // float i = sensor.getCurrentAC(1000); // измерение на частоте 1000 Гц(до 50000 Гц) Serial.print("I = "); Serial.print(i); Serial.println(" A"); delay(1000); }
Также на основе датчика тока ACS712 можно сделать простой Ваттметр:
#include <ACS712.h> ACS712 sensor(ACS712_05B, A0); // ACS712_05B, ACS712_20A, ACS712_30A // 5A, 10A, 30A / А0 void setup() { Serial.begin(9600); sensor.calibrate(); } void loop() { float u = 230; float i = sensor.getCurrentAC(); // измерение на частоте 50 Гц(по умолчанию) float p = u * i; Serial.print("P = "); Serial.print(p); Serial.println(" Watt"); delay(1000); }
ACS712.pdf
Было-бы интересно построить на базе этого модуля,измеритель
мощности нагрузки переменного тока. С выводов на дисплей показаний входного напряжения
и тока потребляемого нагрузкой.Типа такого,(но попроще, с выводом на 16Х2 дисплей)
https://www.youtube.com/watch?v=GI7c6vnbEN0
Вот интересная конструкция,
https://radiokot.ru/circuit/digital/measure/76/