OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2990|回复: 12

stm32 一阶低通滤波

[复制链接]

3

主题

16

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-6-13
在线时间
8 小时
发表于 2018-7-8 16:04:10 | 显示全部楼层 |阅读模式
2金钱
第一次做滤波,经验不足,麻烦各位大佬帮忙看看!!
刚开始参考了很多博主的资料,
int num_x=0;
float k_x=0.02;
int old_flag=0;
int new_flag=0;
float old_data = 0;   
float new_data = 0;     
int i;

IVP_TypeDef IVP;
void Read_IVP(void)
{
        new_data = Read_IIC(0x01)*LSBCurrent;//
        IVP.Voltage = Read_IIC(0x02)*LSBVoltage;
        IVP.Power = Read_IIC(0x03)*LSBPower;
       
        for( i=1;i<=100;i++)
        {
                if(new_data-old_data>0)
                new_flag=1;
                else new_flag = 0;
                if (new_flag == old_flag)
                {
                        if(new_data-old_data>Threshold_1)
                                num_x+=5;
                        else if(old_data-new_data>Threshold_1)
                                num_x+=5;
                        if(num_x>=Threshold_2)
                        {        k_x+=0.2;
                          num_x=0;
                        }
                        else
                        {
                                num_x=0;
                                k_x=0.01;
                        }
                }
                else   
                {
                  num_x = 0;               
                        k_x = 0.2;
                        old_flag = new_flag;
                }
                        if (k_x > 0.95)  k_x = 0.95;
                  new_data = (1-k_x) * old_data + k_x * new_data;  
//                  new_data = k_x* old_data + (1-k_x) * new_data;  
                  old_data=new_data;
                 
        }
        IVP.Current=new_data;
}

这是采集电流值写的程序,因为采的值有点偏,于是加了一个滤波。
加了滤波之后灵敏度降低了,采到的值很稳定,但是却和我想要的结果有了很大的误差,我测电压又没有问题,所以不知道这个程序是不是有什么问题,麻烦大佬能帮忙看看。

最佳答案

查看完整内容[请看2#楼]

求平均值之后应该是校准系数,用一个表量一下真值,然后校准系数。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
发表于 2018-7-8 16:04:11 | 显示全部楼层
求平均值之后应该是校准系数,用一个表量一下真值,然后校准系数。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-7-9 01:25:59 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2015-9-1
在线时间
29 小时
发表于 2018-7-9 09:08:16 | 显示全部楼层
这个只要调整系数就好了吧?
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-6-13
在线时间
8 小时
 楼主| 发表于 2018-7-9 14:48:17 | 显示全部楼层
nieyong 发表于 2018-7-9 09:08
这个只要调整系数就好了吧?

有调整建议吗?那几个值我调了感觉没什么作用。
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-6-13
在线时间
8 小时
 楼主| 发表于 2018-7-9 14:54:14 | 显示全部楼层
周易八索连山 发表于 2018-7-9 11:06
求平均值之后应该是校准系数,用一个表量一下真值,然后校准系数。

还有就是这个需要的时间很长,拖慢了整个程序执行的过程。可以怎么调试吗?
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-6-13
在线时间
8 小时
 楼主| 发表于 2018-7-9 14:57:25 | 显示全部楼层

原子哥,加了滤波程序后整个程序执行周期就长了好多,这个能怎么改善吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-7-10 02:08:22 | 显示全部楼层
Pearl 发表于 2018-7-9 14:57
原子哥,加了滤波程序后整个程序执行周期就长了好多,这个能怎么改善吗?

说明速度不够,提高单片机运行速度,或者换性能更高的MCU
或者精简代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-7-10 02:08:25 | 显示全部楼层
Pearl 发表于 2018-7-9 14:57
原子哥,加了滤波程序后整个程序执行周期就长了好多,这个能怎么改善吗?

说明速度不够,提高单片机运行速度,或者换性能更高的MCU
或者精简代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-7-10 02:08:30 | 显示全部楼层
Pearl 发表于 2018-7-9 14:57
原子哥,加了滤波程序后整个程序执行周期就长了好多,这个能怎么改善吗?

说明速度不够,提高单片机运行速度,或者换性能更高的MCU
或者精简代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-6-13
在线时间
8 小时
 楼主| 发表于 2018-7-10 15:30:18 | 显示全部楼层
最后找出了问题,原来是传感器有个地方虚焊了,其他没有什么问题直接用就可以调好。
回复

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2015-9-1
在线时间
29 小时
发表于 2018-7-10 15:35:17 | 显示全部楼层
还是那句话,一切鬼畜问题,都是人为的
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-6-13
在线时间
8 小时
 楼主| 发表于 2018-7-10 16:14:37 | 显示全部楼层
nieyong 发表于 2018-7-10 15:35
还是那句话,一切鬼畜问题,都是人为的

是的,软件找不出问题就找硬件的问题吧
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-16 05:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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