使用霍尔效应电流传感器:ACS758

大家好!

也许值得介绍一下自己-我是一名常规电路工程师,他对编程和其他电子领域也很感兴趣:DSP,FPGA,无线电通信等。最近,我全力投入SDR接收器。起初,我想将我的第一篇文章(我希望不是最后一篇)专门用于一些更严肃的话题,但是对于许多人来说,这只是阅读问题,不会带来任何好处。因此,该主题被选为高度专业化且专门应用。我还想指出,大概所有的文章和问题都将更多地从电路设计者的角度考虑,而不是从程序员或任何其他人那里考虑。好吧-走吧!

不久前,我订购了“住宅建筑电源监控系统”的设计,该客户从事郊区住宅的建设,因此你们中的有些人可能已经看过我的设备。该设备测量了每个输入相位和电压上的消耗电流,同时通过无线电通道将数据发送到已经安装的Smart Home系统,并且他能够削减房屋输入处的启动器。但是,今天的讨论将不是关于他,而是关于他的微小但非常重要的组成部分-电流传感器。正如您已经从文章标题中了解的那样,这些将是Allegro- ACS758-100的 “非接触式”电流传感器
________________________________________________________________________________________________________________________

有关数据传感器的数据表,请参见此处。您可能会猜到,标记末尾的数字“ 100”是传感器可以测量的最大电流。坦率地说-我对此表示怀疑,在我看来,结论很长时间不能承受200A,尽管它非常适合测量突入电流。在我的设备中,没有问题的100A传感器不断通过自身至少35A,并且存在高达60A的功耗峰值。

图片
图1-传感器ACS758-100(50/200)的外观

在继续本文的主要部分之前,我建议您先熟悉两个来源。如果您具有电子学的基本知识,那么它们将是多余的,可以随时跳过此段。我建议其他人继续进行总体发展和了解:

1)霍尔效应。现象和工作原理
2)电流的电流传感器
________________________________________________________________________________________________________________________

好吧,让我们用最重要的开始,即标签。我在www.digikey.com上购买了90%的外壳零件。组件会在5到6天之内到达俄罗斯,网站上可能包含所有内容,而且参数搜索和文档非常方便。因此,可根据要求在“ ACS758 ”中找到该系列传感器的完整列表。我的传感器在那里购买-ACS758LCB-100B

在数据表中,所有内容均根据标记进行了标记,但是我仍然要注意关键点“ 100V ”:

1)100是以安培为单位的测量极限,也就是说,我的传感器可以测量高达100A的电流;
2)“ B ”-该字母值得特别注意,在其位置也可能存在字母“ U ”。带字母B的传感器能够测量交流电,并因此进行直流测量。带字母U的传感器只能测量直流电。

同样在数据表的开头,有一个关于该主题的极佳板块:
图片
图2-ACS758系列电流传感器的类型

同样,使用这种传感器的最重要原因之一是电流隔离电源端子4和5没有电连接到端子1,2,3。在该传感器中,通信仅以感应场的形式进行。

该表中出现了另一个重要参数-输出电压对电流的依赖性。这种传感器的优点在于它具有电压输出,而不像传统的电流互感器那样具有电流,这非常方便。例如,传感器输出可以直接连接到微控制器的ADC输入并获取读数。

我的传感器这个值是20毫伏/ A。这意味着当电流1A流过传感器的端子4-5时,其输出电压将增加20 mV。我认为逻辑很明确。

下一刻,输出电压将是多少?假设食物是“人类”的,即单极性的,那么在测量交流电时,应该有一个“参考点”。在此传感器中,该参考点为1/2电源(Vcc)。这样的解决方案经常发生并且很方便。当电流沿一个方向流动时,输出将为“ 1/2 Vcc + I * 0.02V ”,在另一半周期中,当电流沿相反方向流动时,输出电压将为“ 1/2 Vcc-I * 0.02V ”。在输出处,我们得到一个正弦波,其中“零”为1 / 2Vcc。如果我们测量直流电,则输出将为“ 1/2 Vcc + I * 0.02V ”,那么当在ADC上处理数据时,我们只需减去恒定分量1/2 Vcc然后我们处理真实数据,即剩余的I * 0.02V

现在是时候在实践中测试我上面描述的内容了,或者更确切地说,从数据表中减去了什么。为了使用传感器并检查其功能,我建立了这个“迷你支架”:

图片
图3-测试电流传感器的站点

首先,我决定对传感器通电并测量其输出以确保其为“零”。他已经采取了1/2 Vcc。可以在数据表中获取连接图,但是,为了结识,我没有浪费时间,而是在Vout引脚上为电源+ RC低通滤波器设计了滤波电容器。在真实的设备中,没有它们,无处不在!我最终得到以下图片:

图片
图4-

通电时测量“零”的结果STM32VL-Discovery围巾获得5V电压我看到了这些结果-2.38V。出现的第一个问题是:“ 为什么选择2.38,而不是数据表中描述的2.5? ”这个问题几乎立即消失了–我测量了用于调试的电源总线,当时是4.76-4.77V。但问题是电源来自USB,已经有5V电压,USB之后有线性稳定器LM7805,这显然不是LDO下降40 mV。在此大约250 mV。好吧,这并不重要,主要要知道的是“零”为2.38V。当处理来自ADC的数据时,我将减去这个常数。

现在,我们将仅在示波器的帮助下进行首次测量。我将测量可调电源的短路电流,它是3.06A。这和内置的电流表​​显示和fluka给出了相同的结果。那么,将电源输出连接到腿4和传感器(在照片我vituha铸造)的5,看看会发生什么:

图片
图5 -电流测量PSU短路

正如我们所看到的,电压Vout的增加从2.38V到2.44V。如果您看上面的依赖性,那么我们应该得到2.38V + 3.06A * 0.02V / A,它对应于2.44V的值。结果达到了预期,在3A的电流下,我们将等于60 mV的 “零”增加了。结论-传感器可以工作,您已经可以在MK的帮助下使用它。

现在,您需要将电流传感器与STM32F100RBT6微控制器上的ADC引脚之一连接。卵石本身非常平庸,系统频率仅为24 MHz,但是这条围巾存活了很多,并得到了证明。我已经拥有了大约5年,因为它是在ST左右分发时免费获得的。

首先,出于习惯,我想在传感器后放置一个具有系数的运算放大器。获得“ 1”,但是,看一下结构图,我意识到他已经站在里面了。唯一要考虑的是,在最大电流下,输出功率将等于Vcc传感器的电源,即大约5V,并且STM可以测量0至3.3V,因此在这种情况下,有必要放置一个电阻分压器,例如1:1.5或1:2。我目前的情况很少,所以到目前为止我一直忽略了这一刻。我的测试设备如下所示:

图片
图6-放置“电流表”

另外,为了使结果可视化,我将中文显示器固定在ILI9341控制器上,虽然好处不多,但我的双手根本无法达到。为了为他写一个完整的图书馆,他杀死了几个小时和一杯咖啡,因为数据表令人惊讶地提供了信息,这对于成龙儿子的手工艺品来说是罕见的。

现在,您需要编写一个使用微控制器的ADC测量Vout的函数。我不会详细说明,根据STM32,已经有大量的信息和教训。因此,请看:

uint16_t get_adc_value()
    {
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
    return ADC_GetConversionValue(ADC1);
    }

接下来,为了在主体或中断的可执行代码中获得测量ADC的结果,您需要编写以下代码:

 data_adc = get_adc_value();

先前已声明data_adc变量:

 extern uint16_t data_adc;

结果,我们得到变量data_adc,它的取值范围是0到4095,因为STM32中的ADC为12位。接下来,我们需要将结果“鹦鹉”化为我们更熟悉的形式,即安培。因此,您必须首先计算分割价格。在3.3V总线上安装了稳定器之后,我的示波器显示为3.17V,我不明白它所连接的是什么。因此,将3.17V除以4095,得到的值为0.000774V-这是分度的价格。也就是说,从ADC获得结果,例如2711,我只需将其乘以0.000774V即可得到2.09V。

在我们的任务中,张力只是“调解人”;我们仍然需要将其转换为安培。为此,我们需要从结果中减去2.38B,然后除以0.02 [B / A]。结果是以下公式:

float I_out = ((((float)data_adc * presc)-2.38)/0.02);

好了,是时候将固件填充到微控制器中并查看结果了:

图片
图7-传感器数据及其处理的测量结果我

测量了自己的电路消耗,如230 mA。用经过验证的福禄克测得的结果相同,结果发现功耗为201 mA。好吧-精确到一位小数已经很酷了。我将解释为什么...测量电流的范围是0..100A,即,高达1A的精度为1%,高达十分之一安培的精度已经为0.1%!并且请注意,这是没有任何电路解决方案的。我什至懒得挂过滤神鹰吃。

现在,您需要测量电源的短路电流(短路)。我将手柄拧到最大并得到以下图片:图8-短路

图片
电流测量

好吧,实际上是源本身带有电流表的读数:

图片
图9-BP刻度上的值

实际上,它显示为3.09A,但是当我拍摄照片时,vitukha被加热并且其电阻增加,因此电流下降了,但这并没有好恐怖

总之,我什至不知道该说些什么。我希望我的文章能以某种方式对新手无线电爱好者有所帮助。也许有人会喜欢我介绍材料的形式,那么我可以继续定期撰写有关使用各种组件的文章。您可以在评论中表达您对主题的愿望,我会尽量考虑在内。

当然,我附上了程序的源代码,您会看到谁需要一个库才能与显示器或ADC配合使用。Keil 5中的项目本身。

Source: https://habr.com/ru/post/zh-CN397641/


All Articles