ACS712 — датчик тока

Arduino
Автор темы, Сержант
Сержант
Аватара
Arduino
Автор темы, Сержант
Сержант
Сообщения: 64
Зарегистрирован: 19 апреля 2017
С нами: 6 лет 11 месяцев

#1 Arduino » 2 июля 2019, 22:54

Модуль ACS712.png
Модуль ACS712
Модуль ACS712.png (140.73 КБ) 1129 просмотров

Датчик ACS712 позволяет измерить постоянный и переменный ток, с достаточно большой точностью (погрешность измерения не более 1,5%), так же падение напряжение на датчике тока очень незначительное, так как сопротивление токопроводящей цепи не более 1,2 мОм.

Датчик тока ACS712 выпускается на номиналы в ±5, ±10 и ±30 А, с чувствительностью 185 мВ/А, 100 мВ/А и 66 мВ/А соответственно. Микросхема датчика ACS712 выпускается в миниатюрном 8-выводном корпусе SOIC для поверхностного монтажа. Так же существуют уже готовые модули.

Для измерения тока модуль подключается в разрыв цепи между источником питания и нагрузкой.
2 Модуль ACS712.png
Модуль ACS712
2 Модуль ACS712.png (44.87 КБ) 1129 просмотров

Если Вы используете микросхему ACS712 вместо модуля, то используйте следующую схему подключения:
3 Модуль ACS712.png
Модуль ACS712
3 Модуль ACS712.png (18.43 КБ) 1129 просмотров

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

На основе Arduino Uno (Nano) можно собрать простое уст-во для измерения тока с применением модуля ACS712. Как было сказано ранее, выходное напряжение датчика имеет разную чувствительность в зависимости от номинала датчика, также при отсутствии тока напряжение на выходе датчика будет равно половине напряжения питания. Для упрощения написания скетча можно воспользоваться библиотекой, которая позволяет использовать датчики всех трех номиналов (5, 10, 30 А), при измерении переменного и постоянного тока.
Ниже показан пример скетча для измерения постоянного тока для датчика ACS712_05B на 5А

Код: Выделить всё

#include <ACS712.h>
 
ACS712 sensor(ACS712_05BA0); // тип датчика 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);

4 Модуль ACS712.png
Модуль ACS712
4 Модуль ACS712.png (11.84 КБ) 1129 просмотров

Для измерения переменного тока используйте следующий скетч:

Код: Выделить всё

#include <ACS712.h>
 
ACS712 sensor(ACS712_05BA0); // 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_05BA0); // 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 i;
  
Serial.print("P = ");
  
Serial.print(p);
  
Serial.println(" Watt");
  
delay(1000);


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Аппаратная часть»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 2 гостя