ACS712 — датчик тока (Arduino)

Модуль ACS712

Датчик 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

Comments

  1. Было-бы интересно построить на базе этого модуля,измеритель
    мощности нагрузки переменного тока. С выводов на дисплей показаний входного напряжения
    и тока потребляемого нагрузкой.Типа такого,(но попроще, с выводом на 16Х2 дисплей)
    https://www.youtube.com/watch?v=GI7c6vnbEN0

Добавить комментарий

Войти с помощью: