- 电流互感器
- 电流互感器如何工作?
- 电流互感器构造
- 电流互感器比率
- 电流互感器误差
- 如何减少电流互感器的误差?
- 返回计算电流互感器的匝数比
- 负载电阻
- 负载电阻
- 计算合适的负载电阻大小
- 所需组件
- 电路原理图
- 电流测量电路结构
- 用于电流测量的Arduino代码
- 测试电路
- 进一步增强
电流互感器是一种仪表互感器,专门设计用于转换其次级绕组中的交流电,并且产生的电流量与初级绕组中的电流成正比。这种类型的电流互感器设计用于以不可见的方式测量来自高压子系统或大量电流流过系统的电流。电流互感器的工作是将大量电流转换为少量电流,这可以通过微控制器或模拟仪表轻松测量。前面我们在不同类型的电流感测技术文章中介绍了使用电流互感器进行电流测量。
在这里,我们将详细学习这种电流感应技术,并在Arduino的帮助下连接电流互感器以测量AC电流。我们还将学习确定未知电流互感器的 匝数比 。
电流互感器
如前所述,电流互感器是一种旨在测量电流的变压器。上面显示的是我当前拥有的两个变压器,称为窗口型电流互感器,或通常称为铁芯平衡变压器r。
电流互感器如何工作?
电流互感器的基本原理与电压互感器相同,就像电压互感器一样,电流互感器还包括一次绕组和二次绕组。当交流电通过变压器的初级绕组时,会产生交流磁通,这会在次级绕组中感应出交流电,如果您认为这是区别,则可以说它与电压互感器几乎相同。 。
通常,在负载电阻的帮助下,电流互感器始终处于短路状态,而且,流经次级绕组的电流仅取决于流经导体的初级电流。
电流互感器构造
为了让您更好地理解,我拆解了我的一个电流互感器,您可以在上图中看到。
从图像中可以看到,一根非常细的线缠绕在环形磁芯材料上,并且有一组线从变压器中出来。原绕组仅是单根导线,与负载串联,并承载流过负载的大电流。
电流互感器比率
通过在电流互感器窗口内放置一根导线,我们可以形成一个环路,匝数比变为1:N。
像任何其他变压器一样,电流互感器必须满足以下所示的匝数比方程。
TR = Np / Ns = Ip /是
哪里,
TR =传动比
Np =初级匝数
Ns =次级匝数
Ip =初级绕组中的电流
Is =次级绕组中的电流
要找到次级电流,将等式重新排列为
是= Ip x(Np / NS)
如上图所示,如果我们假设100A的电流流过初级绕组,则变压器的初级绕组包含一个绕组,而变压器的次级绕组包含数千个绕组,则次级电流将为5A 。因此,初级与次级之间的比率变为100A至5A或20:1。因此,可以说初级电流是次级电流的20倍。
注意!请注意,电流比与匝数比不同。
现在,所有基本理论都已解决,我们可以将注意力转向计算现有电流互感器的匝数比。
电流互感器误差
每个电路都有一些错误。电流互感器没有什么不同。电流互感器中存在各种错误。其中一些说明如下
电流互感器的比率误差
电流互感器的初级电流不完全等于次级电流乘以匝数比。一部分电流被变压器的铁心消耗,使其达到励磁状态。
电流互感器的相角误差
对于理想的CT,初级和次级电流矢量为零。但是在实际的电流互感器中,总会有差异,因为初级线圈必须向磁芯提供励磁电流,并且相位差会很小。
如何减少电流互感器的误差?
始终有必要减少系统中的错误以获得更好的性能。因此,通过以下步骤,可以实现
- 使用具有高磁导率和低磁滞磁性材料的磁芯。
- 负载电阻值必须非常接近计算值。
- 次级的内部阻抗可以降低。
返回计算电流互感器的匝数比
上图显示了测试设置,我用它来计算匝数比。
如前所述,我拥有的电流互感器(CT)并没有任何规格或部件号,只是因为我是从损坏的家用电表中抢救过来的。因此,在这一点上,我们需要知道匝数比以正确设置负载电阻的值,否则,系统中将引入各种问题,我将在本文的后面详细讨论。
借助欧姆定律,可以很容易地计算出匝数比,但是在此之前,我需要测量充当电路负载的10W,1K大电阻,并且还需要获得任意负载电阻找出匝数比。
负载电阻
负载电阻
测试期间所有组件值的汇总
输入电压Vin = 31.78 V
负载电阻RL = 1.0313KΩ
负载电阻RB = 678.4Ω
输出电压Vout = 8.249 mV或0.008249 V
流过负载电阻的电流为
I = Vin / RL I = 31.78 / 1.0313 = 0.03080A或30.80 mA
现在我们知道了输入电流,即0.03080A或30.80 mA
找出输出电流
I = Vout / RB I = 0.008249 / 678.4 = 0.00001215949A或12.1594 uA
现在,要计算匝数比,我们需要将一次电流除以二次电流。
匝数比n =初级电流/次级电流 n = 0.03080 / 0.0000121594 = 2,533.1972
因此,电流互感器由2500匝组成(舍入值)
注意!请注意,错误主要是由于我不断变化的输入电压和万用表公差引起的。
计算合适的负载电阻大小
此处使用的CT是电流输出类型。因此,要测量电流,需要将其转换为电压类型。这篇文章在openenergymonitor网站上提供了一个很好的想法,说明我们如何做到这一点,因此我将继续关注该文章。
负载电阻(欧姆)=(AREF * CT匝数)/(2√2*最大初级电流)
哪里,
AREF = ADS1115模块的模拟参考电压,设置为4.096V。
CT匝数=我们先前计算的次级匝数。
最大一次电流=将流过CT的最大一次电流。
注意!每个CT的最大额定电流超过该额定值都会导致磁芯饱和,最终导致线性误差,从而导致测量误差
注意!家用电表的最大额定电流为30A,因此我打算使用该值。
负载电阻(欧姆)=(4.096 * 2500)/(2√2* 30)= 120.6Ω
120.6Ω不是一个通用值,这就是为什么我要串联使用三个电阻以获得120Ω电阻值的原因。将电阻器连接到CT之后,我进行了一些测试,以计算CT的最大输出电压。
测试后,观察到如果电流互感器的原边馈入1mA电流,则输出为0.0488mV RMS。这样,我们可以计算出是否有30A电流流过CT,输出电压将为30000 * 0.0488 = 1.465V。
现在,做了计算,我有一组ADC 增益至1倍的增益是+/- 4.096V,这让我们0.125mV全面的解决方案。这样,我们将能够计算出使用此设置可以测量的最小电流。事实证明是3mA,因为ADC分辨率设置为0.125mV。
所需组件
编写所有没有表的组件
编号 |
部分 |
类型 |
数量 |
1个 |
电脑断层扫描 |
视窗类型 |
1个 |
2 |
Arduino纳米 |
泛型 |
1个 |
3 |
AD736 |
我知道了 |
1个 |
4 |
ADS1115 |
16位ADC |
1个 |
5 |
LMC7660 |
我知道了 |
1个 |
6 |
120Ω,1% |
电阻器 |
1个 |
7 |
10uF |
电容器类 |
2 |
8 |
33uF |
电容器类 |
1个 |
9 |
面包板 |
泛型 |
1个 |
10 |
跳线 |
泛型 |
10 |
电路原理图
下图显示了使用电流互感器进行电流测量的连接指南
这就是电路在试验板上的外观。
电流测量电路结构
在上一教程中,我向您展示了如何借助AD736 IC准确测量True RMS电压,以及如何配置一个开关电容电压转换器电路,该电路从输入的正电压生成负电压,在本教程中,我们正在使用这些教程中的两个IC。
为了演示,该电路在原理图的帮助下构建在无焊面包板上。此外,借助16位ADC可以测量直流电压,以实现更高的精度。在演示面包板上的电路以减少寄生时,我使用了尽可能多的跨接电缆。
用于电流测量的Arduino代码
此处Arduino用于将测量值显示在串行监视器窗口中。但是只要稍稍修改一下代码,就可以很容易地在16x2 LCD上显示这些值。在此处了解16x2 LCD与Arduino的接口。
本节末尾提供了电流互感器的完整代码。这里说明了程序的重要部分。
我们首先包括所有必需的库文件。Wire库用于在Arduino和ADS1115模块之间进行通信,而Adafruit_ADS1015库则帮助我们读取数据并向模块写入指令。
#包括
接下来,定义 MULTIPLICATION_FACTOR ,用于根据ADC值计算当前值。
#define MULTIPLICATION_FACTOR 0.002734 / *要计算实际当前值的因子* / Adafruit_ADS1115广告;/ *将其用于16位版本ADS1115 * /
16位ADC吐出16位长整数,因此使用了 int16_t 变量。使用了其他三个变量,一个用于存储ADC的RAW值,一个用于显示ADC引脚中的实际电压,最后一个用于将该电压值显示为电流值。
int16_t adc1_raw_value; / *变量以存储原始ADC值* /浮动实测电压; / *变量以存储测得的电压* /浮动电流;/ *用于存储计算出的电流的变量* /
通过启用具有9600波特率的串行输出来开始代码的设置部分。然后打印设置的ADC的增益;这是因为电压超过规定值肯定会损坏设备。
现在,通过ads.setGain(GAIN_ONE);设置ADC增益。 将1位分辨率设置为 0.125mV的方法
此后,将调用ADC begin 方法,该方法设置硬件模块和统计信息转换中的所有内容。
void setup(void){Serial.begin(9600); Serial.println(“从AIN0..3获取单端读数”); //一些调试信息Serial.println(“ ADC范围:+/- 4.096V(1位= 2mV / ADS1015,0.125mV / ADS1115)”); // ADC输入范围(或增益)可以通过以下功能进行更改,//注意,如果调整输入范围,切勿超过VDD + 0.3V max或超过上限和下限! //错误地设置这些值可能会破坏您的ADC! // ADS1015 ADS1115 // ------- ------- // ads.setGain(GAIN_TWOTHIRDS); // 2/3倍增益+/- 6.144V 1位= 3mV 0.1875mV(默认)ads.setGain(GAIN_ONE); // 1倍增益+/- 4.096V 1位= 2mV 0.125mV //ads.setGain(GAIN_TWO); // 2倍增益+/- 2.048V 1位= 1mV 0.0625mV // // ads.setGain(GAIN_FOUR); // 4倍增益+/- 1.024V 1位= 0.5mV 0.03125mV // ads.setGain(GAIN_EIGHT);// 8倍增益+/- 0.512V 1位= 0.25mV 0.015625mV // // ads.setGain(GAIN_SIXTEEN); // 16倍增益+/- 0.256V 1位= 0.125mV 0.0078125mV ads.begin(); }
在 循环 部分中,我读取了原始ADC值并将其存储到前面提到的变量中,以供以后使用。然后将原始ADC值转换为电压值以进行测量并计算电流值,并将其显示在串行监控器窗口中。
无效循环(void){adc1_raw_value = ads.readADC_SingleEnded(1); 测量电压= adc1_raw_value *(4.096 / 32768); 当前= adc1_raw_value * MULTIPLICATION_FACTOR; Serial.print(“ ADC Value:”); Serial.println(adc1_raw_value); Serial.print(“ Measured Voltage:”); Serial.println(measured_voltae); Serial.println(“ V”); Serial.print(“ Calculated Current:”); Serial.print(val,5); Serial.println(“ A”); Serial.println(“”); 延迟(500); }
注意!如果您没有ADS1115模块的库,则需要在Arduino IDE中包含该库,您可以在此GitHub存储库中找到该库。
完整的Arduino代码如下:
#包括
测试电路
用于测试电路的工具
- 2个60W白炽灯泡
- Meco 450B + TRMS万用表
为了测试电路,使用了上面的设置。电流从CT流到万用表,然后又流回主电源线。
如果您想知道FTDI板在此设置中的功能,让我告诉您板载USB到串行转换器不能正常工作,因此我不得不将FTDI转换器用作USB到串行转换器。
进一步增强
您在视频中看到的几个mA错误(如下所示)仅是因为我将电路制作在面包板上,所以存在许多接地问题。
希望您喜欢本文并从中学到新东西。如有任何疑问,可以在下面的评论中提问,也可以使用我们的论坛进行详细讨论。