ACS712模块 ACS712ELCTR-05A电流传感器模块

简 介: 测试了基于HALL原理的电流传感器ACS712,验证了它的基本功能,测试了这款5A容量的电流传感器的实际测量电流的范围。实际上比它的标称值大了一倍多。

关键词 HALL,霍尔,ACS712电流传感器

 

流传感器模块 ACS712


  传感器 在工程应用和科学研究中被广泛应用。在 如何进行电流测量 - NI 中,给出了关于电流检测的基本方法方法:

  • 基于电磁学方法:与早期的动圈式(达松瓦尔)仪表有关系
  • 基于电学方法:主要与欧姆定律有关系

  下面是从TB购买到的 ACS712ELCTR-05A 电流 传感器 模块 (¥:8.80: - 4.80),来初步检测该模块的基本性能。

▲ ACS712 模块

▲ ACS712 模块

1、模块特点

  √ □ 电流 传感器 芯片:ACS712ELC-05B;

  √ □ 插针5V供电,板载电源指示灯;

  √ □ 模块可以测量正负5安电流,对应模拟量输出185mV/A;

  √ □ 没有检测电流通过时,输出的的电压是VCC/2;

  √ □ PCB板子尺寸:31(mm)x13(mm);

  注: ACS712 是基于霍尔检测的原理,使用时请尽量避免磁场对此造成影响!

2、IC ACS712

  Fully Integrated, Hall Effect-Based Linear Current Sensor IC with 2.1 kVRMS Isolation and a Low-Resistance Current Conductor 使得ACS712的数据手册。其中给出了它的基本特性。

  • 频率响应:80kHz
  • 输出误差:1.5%
  • 内部电阻:1.2毫欧
  • 工作电压:+5.0V

▲ 基本应用电路

▲ 基本应用电路

▲ 内部功能框图

▲ 内部功能框图

▲ 通过外部运放将输出信号的灵敏度增加

▲ 通过外部运放将输出信号的灵敏度增加

▲ 芯片的管脚定义

▲ 芯片的管脚定义

 

本功能测试


1、静态测试

   测量基本参数:
工作电压:+5.003V
工作电流:14mA
输出电压:2.4940V

▲ 模块加电(+5V)之后

▲ 模块加电(+5V)之后

2、测量直流电流输出

  由 DH1766线性三路可编程直流电源 产生0~ 31V的直流电压,施加在5.1Ω的功率上产生0 ~ 6A左右的电流。测量ACS712模块的输出。

▲ 输出电流电压的可编程直流电源 DH1766

▲ 输出电流电压的可编程直流电源 DH1766

   测量方式:
电流测量:由DH1766读出输出电流;
输出电压:使用FLUKE45测量输出电压;
(1)正向电流测量

  如下显示了电流正向输入和模块输出信号。

【Ⅰ.数据曲线】

▲ 输入电流与输出电压

▲ 输入电流与输出电压

【Ⅱ.测试数据】
idim=[0.0000,0.1140,0.2337,0.3503,0.4668,0.5827,0.6995,0.8163,0.9334,1.0500,1.1674,1.2847,1.4016,1.5180,1.6351,1.7531,1.8722,1.9905,2.1092,2.2276,2.3452,2.4626,2.5810,2.6990,2.8174,2.9361,3.0544,3.1722,3.2907,3.4089,3.5271,3.6455,3.7643,3.8823,4.0006,4.1189,4.2363,4.3543,4.4720,4.5892,4.7073,4.8254,4.9427,5.0596,5.1771,5.2946,5.4141,5.5311,5.6502,5.7692]
vdim=[2.4996,2.5219,2.5437,2.5656,2.5878,2.6088,2.6301,2.6520,2.6736,2.6954,2.7170,2.7389,2.7607,2.7822,2.8044,2.8259,2.8480,2.8700,2.8918,2.9141,2.9366,2.9586,2.9806,3.0021,3.0228,3.0454,3.0673,3.0897,3.1114,3.1332,3.1550,3.1769,3.1989,3.2205,3.2423,3.2641,3.2860,3.3080,3.3298,3.3518,3.3735,3.3953,3.4171,3.4393,3.4608,3.4825,3.5043,3.5259,3.5478,3.5695]
【Ⅲ.直线拟合】

V o u t = 0.1854 I + 2.5009 V_{out} = 0.1854I + 2.5009 Vout=0.1854I+2.5009

(2)反向电流测量

  下图显示了电流反向输入的时候,输入电流与输出电压信号。

【Ⅰ.测试曲线】

▲ 输入电流与输出电压

▲ 输入电流与输出电压

【Ⅱ.测试数据】
idim=[0.0000,0.1130,0.2317,0.3476,0.4629,0.5788,0.6948,0.8111,0.9268,1.0435,1.1603,1.2761,1.3922,1.5075,1.6232,1.7397,1.8571,1.9731,2.0904,2.2081,2.3303,2.4496,2.5674,2.6856,2.8034,2.9202,3.0378,3.1557,3.2736,3.3925,3.5101,3.6295,3.7484,3.8671,3.9853,4.1048,4.2239,4.3417,4.4601,4.5805,4.6995,4.8198,4.9382,5.0572,5.1778,5.2958,5.4160,5.5345,5.6534,5.7736]
vdim=[2.5003,2.4780,2.4570,2.4354,2.4142,2.3928,2.3711,2.3497,2.3281,2.3065,2.2847,2.2632,2.2417,2.2202,2.1984,2.1770,2.1550,2.1335,2.1114,2.0896,2.0667,2.0447,2.0226,2.0008,1.9789,1.9575,1.9360,1.9137,1.8914,1.8693,1.8469,1.8247,1.8026,1.7806,1.7585,1.7361,1.7140,1.6918,1.6693,1.6465,1.6244,1.6018,1.5796,1.5575,1.5348,1.5127,1.4901,1.4679,1.4455,1.4227]
【Ⅲ.直线拟合】

V o u t = − 0.1865 I + 2.5011 V_{out} = - 0.1865I + 2.5011 Vout=0.1865I+2.5011

(3)将上面两个测量结果合并

▲ 测量电流与输出电压

▲ 测量电流与输出电压

  线性拟合后的公式: V o u t = 0.18592 I + 2.49939 V_{out} = 0.18592I + 2.49939 Vout=0.18592I+2.49939

3、测量电流范围极限

  根据上面测测量线性拟合,如果按照+5V的范围,那么理论上该模块可以测量的电流范围应该是: I max ⁡ = 2.5 0.18592 = 13.44 A I_{\max } = {{2.5} \over {0.18592}} = 13.44A Imax=0.185922.5=13.44A

  那么,增加输入电流,测试输入输出的关系。

(1)改造负载

  在原有的5Ω的基础上,再并联上两个5Ω的电阻,形成 5 / 3 = 1.667 Ω 5/3 = 1.667\Omega 5/3=1.667Ω。考虑到线路其它部分的阻抗,整个回路的电阻大约为2欧姆左右。

(2)测量数据

  设置电压范围为 0V~19V ,便可以获得±10A的电流。如下是测量得到的数据曲线。

▲ 输入电流与输出电压

▲ 输入电流与输出电压

  输入输出之间的线性拟合公式为:

U O u t = 0.1855 I + 2.497 U_{Out} = 0.1855I + 2.497 UOut=0.1855I+2.497

  从上面测量结果来看。在±10A左右,输入与输出之间仍然呈现出线性关系。

 

态特性测量


  量模块测量电流信号的动态特性。

1.测量方法

  利用DG1062产生峰峰值为8V的方波信号,驱动AOT254L功率MOS管。带动2.5Ω电阻。

  下面是MOS管的驱动电压与电流信号。

▲ MOS驱动信号(蓝色)与电流信号(青色)

▲ MOS驱动信号(蓝色)与电流信号(青色)

  由于只是简单的测试,没有进行良好的共地,所以在信号的上升与下降沿出现很多的振荡信号。

  分析电流信号的变化,可以看ACS712输出电压的响应情况。

  如下是在 ACS712数据手册 给出了ACS712的输出信号变化情况。

▲ 数据手册中给出的ACS712的电流响应曲线

▲ 数据手册中给出的ACS712的电流响应曲线

 


  ■ 相关文献链接:

 

件文件


1、测量模块特性程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2021-04-24
#
# Note:
#============================================================

from headm import *
from tsmodule.tsvisa        import *
from tsmodule.tsstm32       import *

vset = linspace(0, 31, 50)
vdim = []
idim = []

for v in vset:
    dh1766volt(v)
    time.sleep(1.5)

    meter = meterval()
    vdim.append(meter[0])
    curr = dh1766curr()
    idim.append(curr)

    printff(v, meter[0], curr)

    tspsave('meas', idim=idim, vdim=vdim)

dh1766volt(10)

plt.plot(idim, vdim)
plt.xlabel("Current(A)")
plt.ylabel("Voltage(V)")
plt.grid(True)
plt.tight_layout()
plt.show()

#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

2.对于测量结果进行线性拟合

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY                     -- by Dr. ZhuoQing 2021-04-24
#
# Note:
#============================================================

from headm import *
from scipy.optimize        import curve_fit

idim0, vdim0 = tspload('meas1', 'idim', 'vdim')
idim1, vdim1 = tspload('meas2', 'idim', 'vdim')

def linefun(x, a, b):
    return a*x + b

x1 = list(idim0)
y1 = list(vdim0)
x2 = [-x for x in list(idim1)]
y2 = list(vdim1)

x1.extend(x2)
y1.extend(y2)

printf(x1, y1)

x = array(x1)
y = array(y1)
param = (1, 0)
param, conv = curve_fit(linefun, x, y, p0=param)
printf(param)

plt.plot(x1, y1)
plt.xlabel("Current(A)")
plt.ylabel("Voltage(A)")
plt.grid(True)
plt.tight_layout()
plt.show()

#------------------------------------------------------------
#        END OF FILE : TEST2.PY
#============================================================
"未解析引用model"是一个比较常见的错误信息。这个错误通常出现在以下两种情况下: 1. 模型文件未被正确加载:这种情况通常出现在你正在尝试加载一个不存在的文件或者文件路径不正确的情况下。在这种情况下,你需要确保模型文件存在,并且文件路径是正确的。 2. 模型名称未被正确指定:这种情况通常出现在你正在尝试使用已经定义但未加载的模型的情况下。在这种情况下,你需要确保你已经正确地定义了模型,并且在调用模型时指定了正确的名称。 下面是一个使用TensorFlow加载模型时出现“未解析引用model”的示例代码: ```python import tensorflow as tf # 加载模型 model = tf.keras.models.load_model('path/to/model') # 对模型进行推理 output = model(input_data) ``` 在这个示例代码中,如果出现“未解析引用model”的错误,可能是因为模型文件路径不正确,或者在加载模型时没有指定正确的模型名称。你需要检查模型文件路径是否正确,并且确保在加载模型时指定了正确的名称。例如: ```python import tensorflow as tf # 加载模型 model = tf.keras.models.load_model('path/to/model', compile=False, custom_objects={'model': model}) # 对模型进行推理 output = model(input_data) ``` 在这个示例代码中,我们使用了`custom_objects`参数指定了模型的名称,从而避免了“未解析引用model”的错误。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值