找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1060|回复: 11
收起左侧

用ACS724、INA180、WCS2720传感器测24V直流风扇电流波动很大

[复制链接]
ID:118322 发表于 2024-6-4 08:49 | 显示全部楼层 |阅读模式
我用ACS724、INA180、WCS2720这三个传感器测风扇的电流都会有很大的波动,比如1A的电流ADC测到的会从0.1到1.2一直回来跳动,测其他用电设备的电流就很稳定,
有没有大虾遇到过这种情况,有没有推荐的电流传感器。

回复

使用道具 举报

ID:404160 发表于 2024-6-4 11:03 | 显示全部楼层
风扇电机的工作特性是导致测量不稳定的主要原因。风扇电机在启动和转速变化时会产生大的瞬时电流波动,这是由于电机内部电磁场的变化造成的。此外,风扇叶片可能会受到空气湍流的影响,导致电机转速不稳定,从而引起电流波动。

此外,电流传感器的响应特性也可能是导致测量不稳定的原因。ACS724、INA180和WCS2720等电流传感器可能在测量快速变化的电流时存在一定的滞后和响应时间,从而导致测量值出现波动。

供电电路的影响也是一个可能的原因。风扇通常使用脉宽调制(PWM)控制,这种供电方式会在电流波形上引入一些高频脉冲,可能影响传感器的测量稳定性。电源噪声或供电线路电磁干扰也可能导致电流测量不稳定。

相比之下,其他用电设备的电流通常较为稳定,电流变化较小,不会对电流传感器产生如此大的影响。

要改善测量稳定性,可以尝试以下方法:

* 选择带宽足够高的电流传感器,以跟上风扇电流的快速变化。
* 在测量电路中加入滤波电路,如RC低通滤波器,来平滑电流波形。
* 采用隔离的供电方式,减小供电电路的干扰。
* 检查接地和屏蔽情况,降低电磁干扰。
* 对测量数据进行软件滤波或平均处理,以获得更加稳定的结果。

通过以上几方面的优化,应该可以改善对风扇电流的测量稳定性。
回复

使用道具 举报

ID:925236 发表于 2024-6-4 16:13 | 显示全部楼层
飞云居士 发表于 2024-6-4 11:03
风扇电机的工作特性是导致测量不稳定的主要原因。风扇电机在启动和转速变化时会产生大的瞬时电流波动,这是 ...


回复

使用道具 举报

ID:118322 发表于 2024-6-4 18:22 | 显示全部楼层
飞云居士 发表于 2024-6-4 11:03
风扇电机的工作特性是导致测量不稳定的主要原因。风扇电机在启动和转速变化时会产生大的瞬时电流波动,这是 ...

直流稳压电源显示的电流就很稳定,不知道用的什么传感器。
回复

使用道具 举报

ID:891041 发表于 2024-6-4 20:17 | 显示全部楼层
风扇电流可能本身就不是直流。  在传感器输出加RC滤波再采集。
回复

使用道具 举报

ID:118322 发表于 2024-6-5 08:35 | 显示全部楼层
abob 发表于 2024-6-4 20:17
风扇电流可能本身就不是直流。  在传感器输出加RC滤波再采集。

加了RC滤波的,100欧 和100nf
回复

使用道具 举报

ID:712493 发表于 2024-6-5 10:20 | 显示全部楼层
ohshit 发表于 2024-6-5 08:35
加了RC滤波的,100欧 和100nf

再深点,太浅了
回复

使用道具 举报

ID:344848 发表于 2024-6-5 11:48 | 显示全部楼层
只有画一个电路图,才能贴身定做解决问题。
回复

使用道具 举报

ID:879809 发表于 2024-6-5 14:05 | 显示全部楼层
直流稳压源是每秒测3次,你的霍尔测多少次?结果能一样就怪了。
回复

使用道具 举报

ID:427868 发表于 2024-6-5 18:55 | 显示全部楼层
我在做电动车库仑计时,用的是STC8H,12位ADC采集充电电流,结果电流变化也很明显,后来采用每10ms采集一次,每次是采集16次的平均值(单片机硬件功能),首次数据丢弃,然后再求64次的平均值),即每0.65秒刷新一次,电流值就平稳多了,查看ADC采集值抖动只有正负1个(供电电源是DC-DC降压电路,无法采用纯净电源供电)。我计划按
回复

使用道具 举报

ID:118322 发表于 2024-6-6 15:03 | 显示全部楼层
刘佑红 发表于 2024-6-5 18:55
我在做电动车库仑计时,用的是STC8H,12位ADC采集充电电流,结果电流变化也很明显,后来采用每10ms采集一次 ...

看看ADC程序怎么写的
回复

使用道具 举报

ID:427868 发表于 2024-6-17 15:27 | 显示全部楼层
ohshit 发表于 2024-6-6 15:03
看看ADC程序怎么写的

/**********************读取ADC数值*****************/
void ADCdu()
{
        static bit VA = 0;                                                //静态变量VA,电压/电流采集开关
        static u8 i = 0;                                                        //静态变量i,采集次数
        static u32 ADCA1 = 0;                                        //静态变量电流ADC中间数值
        static u32 ADCV1 = 0;                                        //静态变量电压ADC中间数值
        static u16 ADCV = 0;                                                //静态变量电压ADC数值平均值

        if(flag10ms)
                {
                        flag10ms = 0;

                        //读取限流电阻电压ADC
                        if(VA)
                        {
                                ADC_CONTR &= 0xF0;                                //选择ADC0通道 1111 0000=0xF0
                                ADC_CONTR |= 0x40;                                        //启动ADC转换 0100 0000=0x40
                                _nop_(); _nop_();
                                while (!(ADC_CONTR & 0x20));                        //查询ADC完成标志
                                ADC_CONTR &= ~0x20;                                //清完成标志~0x20=1101 1111
                                ADCI = (ADC_RES << 8) | ADC_RESL;                //读取ADC结果
                                if(i) {ADCA1 += ADCI;}                                //第一次采集的丢弃
                        }

                        //读取电压ADC
                        else
                                {
                                        ADC_CONTR |= 0x01;                                //选择ADC1通道 0000 0001=0x01
                                        ADC_CONTR |= 0x40;                                //启动ADC转换  0100 0000=0x40
                                        _nop_(); _nop_();
                                        while (!(ADC_CONTR & 0x20));                //查询ADC完成标志
                                        ADC_CONTR &= ~0x20;                        //清完成标志~0x20=1101 1111
                                        ADCE = (ADC_RES << 8) | ADC_RESL;//读取ADC结果
                                        if(i) {ADCV1 += ADCE;}                        //第一次采集的丢弃
                                }

                        //计算读取ADC的64次平均值
                        i++;
                        if(i == 65)                                                        //计算64次平均值,刷新时间0.65秒(第一次采集值丢弃)
                                {
                                        if(VA) {ADCA = ADCA1>>6;ADCA1 = 0;}//计算64次平均值,并清零电流ADC中间数值
                                          else {ADCV = ADCV1>>6;ADCV1 = 0;} //计算64次平均值,并清零电压ADC中间数值
                                        i = 0;
                                        VA = ~VA;
                                }
                }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表