ACS712电流传感器与Arduino接口- Arduino测量电流

在这个项目中,我们将讨论关于ACS712电流传感器,如何基于霍尔效应电流传感器的工作,最后如何接口的ACS712电流传感器Arduino。

接口ACS712电流传感器Arduino图像1

介绍

如果您还记得之前的Arduino项目,我已经讨论过使用测量大于5V的电压Arduino使用电压传感器。在这个项目中,我们将学习使用电流传感器(具体为ACS712电流传感器)测量电流。

电流传感器是电力计算和管理应用中的重要器件。它通过设备或电路测量电流,并产生与被测电流成比例的适当信号。通常,输出信号是模拟电压。

输出视频

在进一步进入ACS712电流传感器模块之前看一下输出视频。

ACS712电流传感器简介

ACS712电流传感器是Allegro MicroSystems的产品,可用于交流和直流电流的精确测量。该传感器基于霍尔效应,集成了霍尔效应器件。

进入ACS712电流传感器的输出,它产生一个与交流或直流电流成比例的模拟电压(被感知到的)。

ACS712 IC可在一个8引线SOIC封装和下图显示其引脚图。

ACS712电流传感器与Arduino ACS712引脚图接口

现在让我们看看ACS712的引脚描述。密码、名称和说明如下表所示。

密码

销的名字

销的描述

1 & 2

IP +

+ve端子用于检测电流

3 & 4

知识产权- - - - - -

-ve端子用于检测电流

5

接地

信号地

6

过滤器

外部电容(设置带宽)

7

VIOUT

模拟输出

8

VCC

电力供应

ACS712传感器根据其电流传感范围分为三种。优化范围为+/-5A、+/-20A和+/-30A。根据变量的不同,输出灵敏度也会发生如下变化:

ACS712模型

优化的电流范围

输出灵敏度

ACS712 ELC-05

+ / - 5

185 mV /一个

ACS712 ELC-20

+ / - 20

100 mV /一个

ACS712 ELC-30

+ / - 30 a

66 mV /一个

ACS712电流传感器是如何工作的?

如前所述,ASC712基于霍尔效应。内部有一个铜条连接IP+和IP-引脚。当一些电流流过这个铜导体时,就会产生一个磁场,霍尔效应传感器就会感应到这个磁场。

接口ACS712电流传感器Arduino工作

霍尔效应传感器然后将这个磁场转换成适当的电压。在这种方法中,输入和输出是完全隔离的。

ASC712电流传感器应用电路

ASC712电流传感器的典型应用电路在其数据表中给出,以下图片显示相同。

ACS712电流传感器与Arduino应用电路的接口

ACS712电流传感器模块

使用ACS712 IC的一个变体(5A、20A或30A),几家制造商开发了ASC712电流传感器模块板,可以很容易地与Arduino之类的微控制器接口。

下图显示了本项目中使用的ASC712电流传感器板。

ACS712电流传感器与Arduino ACS712电流传感器接口

正如您所看到的,它是一个相当简单的板,只有一些组件,包括ASC712 IC,一些无源组件和连接器。

该板由ASC712 ELC-30组成,即该板的范围是+/- 30A。下图显示了电路板上的组件和引脚。

接口ACS712电流传感器Arduino ACS712引脚

ASC712电流传感器与Arduino接口

测量电压(直流电压)与Arduino是非常容易的。如果您的要求是测量小于或等于5V,那么您可以直接使用Arduino模拟引脚测量。如果你需要测量超过5V,那么你可以使用一个简单的分压器网络或电压传感器模块。

当测量电流时,Arduino(或任何其他微控制器)需要一个专门的电流传感器的帮助。因此,将ACS712电流传感器与Arduino接口可以帮助我们通过Arduino来测量电流。

ASC712既可以用来测量交流电流,也可以用来测量直流电流,Arduino也可以用来测量交流电流。

ASC712 Arduino电流传感器电路图

ACS712电流传感器与Arduino接口电路图如下图所示。

ACS712电流传感器与Arduino电路图接口

组件的要求

  • Arduino UNO [在这里买]
  • ASC712电流传感器模块
  • 负载(像灯或马达)
  • 电源(类似电池负载)
  • 16×2液晶显示[在这里买]
  • 10 kΩ电位计
  • 330Ω电阻
  • 连接电线

电路设计

首先,负载。我使用了一个12V直流电机和一个12V电源。ASC712电流传感器模块板的螺杆端子与电机和电源串联,如图所示。

然后将ASC712板的VCC、GND和OUT连接到Arduino的+5V、GND和A0。

接口ACS712电流传感器与Arduino图像2

现在,为了查看结果,一个16×2 LCD连接到Arduino。其RS, E, D4-D7引脚连接到Arduino的数字I/O引脚7到2。

A 10KΩ POT接LCD的引脚3,VCC和GND接+5V和GND。

代码

工作

连接并上传代码到Arduino。在代码中,有一个测量电流的小计算。

首先,假设VCC到ASC712的电压为5V,当没有电流流过IP+和IP-端子时,ACS712的VIOUT输出电压为2.5V。这意味着你需要从模拟引脚测量的电压减去2.5V。

现在,为了计算电流,将此值与传感器的灵敏度(5A传感器为185mV/A, 20A传感器为100mV/A, 30A传感器为66mv /A)除以。

下面的代码实现了相同的功能。

adcValue = analogRead (currentPin);

adcVoltage = (adcValue / 1024.0) * 5000;

currentValue = ((adcVoltage - offsetVoltage) / sensitivity);

ACS712电流传感器与Arduino输出LCD接口

应用程序

ACS712电流传感器可用于各种电流测量应用,如:

  • 逆变器
  • smp
  • 电池充电器
  • 汽车应用,如逆变器,动力转向等。

7反应

  1. 这快把我逼疯了。设置与所示完全一致(不同的LCD显示除外)
    已经尝试了三种不同的微处理器,输入从A0到A7(并适当地更改了代码)。
    已经尝试了两种不同的ACS712单位。尝试了四个不同的电机和一个LED条作为负载。
    净结果:没有任何变化与负载或负载电压。ADCvalue是随机浮动的,绝对不会随负载而改变。我可能收到了两个坏的ACS712板吗?

  2. “传感器的灵敏度(5A传感器为185mV/A, 20A传感器为100mV/A, 5A传感器为66mv /A)”这句话有修正。" 30A 66 mV/A .....
    顺便说一句精彩的解释

留下一个回复

您的电子邮件地址将不会被公布。必填字段被标记*