完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近用STM32做设备,其中有一项功能计算瞬时调节速度。
起初的做法是:每250ms采集一次被调节值,采集4次后赋值给速度1;接着采集4次赋值给速度2。速度1与速度2的差值即为前1秒钟的瞬时速度。但是这样做实际效果很差。数据跳动很大。后分析,是调节本身就不是匀速的,硬件的反应速度大概是500ms,所以设计值是每700ms给一次固定的调节值。这样会导致每1秒的瞬时速度一会大一会小。 后来改为计算3秒内的平均速度,同样是250ms采集一次,每次采集的值与前一次的采集值的差值放入数组的最后一位,其他位向前移动,第一位舍弃掉,类似队列。然后将数组内容相加,除以时间,得到速度。这样做速度显示平滑性得到的解决,但是这样就算不上真实的瞬时速度了,有延迟。 再这里请问一下大家,关于速度,瞬时速度的计算有哪些较好的算法? while(1) { temp = 0; speed1 = H_Output; //еÄÊäÈë if(speed2 != 0) { for(i = 0 ; i < 12 ; i ++) //ÏòÇ°Òƶ¯ t = t[i+1]; t[12] = speed1 - speed2; //еIJîÖµ for(i = 0 ; i < 12 ; i ++) //ÇóËÙ¶ÈºÍ temp += t; Speed = temp / 3; } speed2 = speed1; vTaskDelay(250); } |
|
相关推荐
1 个讨论
|
|
|
|
|
|
|
|
hal库中i2c卡死在HAL_I2C_Master_Transmit
1017 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1497 浏览 1 评论
525 浏览 0 评论
1059 浏览 0 评论
1228 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 15:19 , Processed in 0.899451 second(s), Total 52, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号