智能车浅谈——抗干扰技术软件篇

文章目录

  • 软件抗干扰技术
  • 数字信号的抗干扰措施
    • 数字输入信号软件抗干扰措施
    • 数字输出信号软件抗干扰措施
    • 数字滤波
      • 算术平均值滤波
      • 中值滤波
      • 滑动平均滤波
      • 归一化
      • 差比和
    • CPU及程序的抗干扰措施
      • 复位
      • 掉电保护
      • Watchdog技术
  • 总结
  • 智能车系列文章汇总

软件抗干扰技术

前面介绍了一些硬件抗干扰技术,不难发现,要做好一个完美的硬件系统是需要花大心思的,而且很多硬件抗扰方案都需要借助一些元器件来实现,这在一定程度上增加了费用,而且也增加了硬件设计时的难度,这对于学生党而言有些许的不友好,实际上,在抗扰技术方面除了之前提到的硬件抗扰技术外,我们常用的还有软件抗扰技术。今天博主就来扒一扒我们智能车中常用的部分软件抗扰技术。
开始介绍抗干扰技术之前,先给大家分享一个知识点吧,我们都知道对于一个控制系统,输入信号越平滑越好,可大多数情况下输入的数据往往需要我们处理后才能变得平滑,甚至有些波形十分凌乱我们还会采用一些数学方案让他变得近似一条直线或者曲线,那么为什么一定要使用信号处理手段让输入信号变得平滑或者是近似线性呢道输入原始信号就不能实现控制效果了吗这里是笔者根据自动控制原理推测,并没有明确的理论推断,如有不妥,欢迎大家指出)
相信大家最容易想到的解释就是,输入信号决定了输出信号,如果不处理这些杂乱的输入信号,那么输出的信号就会一片混乱,系统也就无法达到稳态,进而控制效果也就不理想。
对于这个疑问笔者有这样一个想法,在自动控制原理以及计算机控制原理里面有介绍,我们平时研究的经典控制系统都是线性定常系统,学过自动控制原理的同学肯定都还记得有个叫稳态误差的东西,在求稳态误差的方法中,有一个方法是根据系统型别进行计算,想必下面这个表大家还有印象,当然没学过自控的同学肯定没印象,我们抛开那些理论知识,可以从表中看见两个规律:
1.系统输入r(t)不变时,随着型别的提高,表中的数据越来越小,这个数据就是稳态误差;
2.当系统型别不变时,随之输入信号的不断升级(从位置信号1(t)—>速度信号t—–>加速度信号1/2t^2)系统的稳态误差不断增加。

智能车浅谈——抗干扰技术软件篇
根据上面这个例子,我们再扩充一下,智能车实际上也是一个线性定常系统,它肯定也要遵循上面的控制规律,假设我们小车是个二型系统,要想让系统稳定工作,输入信号是不是最多最多只能是加速度信号,输入信号超过二次时系统就没法无差跟随输入了。
有人可能会说,根据上面的理论知识,想让系统可以跟随更高阶的信号不是还可以提高系统型别来实现吗,显然,提高系统型别也是一个可行方案,但是自控中所有的东西都是双刃剑,有利它必然会带来弊端,提高系统型别后,系统的稳定裕度就会减小,也就意味着控制器的参数更难调节,大家自己想想,现在一个PID的参数都要很长时间才能调的合适,如果再提高系统型别,是不是真的可以一年做车时间都用来调参了呢,除此之外,整个系统其他部分的环节已经固定了,要想改变系统型别只能改变控制器的算法,这也会加大单片机内部的运算量,同时还会影响到系统的响应速度。

数字信号的抗干扰措施

数字输入信号软件抗干扰措施

干扰信号多呈毛刺状,而且作用时间短,而数字信号作用时间相对要长得多。
改进:在采样某一数字信号时,可多次重复采样,直到连续两次或两次以上采样结果完全一致方为有效。如果多次采样后,信号始终变化不定,则说明干扰严重,就应停止采样,并且发出报警信号,类似输入如下图时。

智能车浅谈——抗干扰技术软件篇
算术平均值滤波程序流程图如下:
智能车浅谈——抗干扰技术软件篇

中值滤波

思路:
连续采样 N 次(N 取奇数)
把 N 次采样值按大小排列
取中间值为本次有效值
B、 优点:
能有效克服因偶然因素引起的波动干扰
对温度、 液位的变化缓慢的被测参数有良好的滤波效果
C、 缺点:
对流量、 速度等快速变化的参数不宜

滑动平均滤波

递推平均滤波法(又称滑动平均滤波法)
思路:
把连续取 N 个采样值看成一个队列
队列的长度固定为 N
每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则)
把队列中的 N 个数据进行算术平均运算,就可获得新的滤波结果
N 值的选取: 流量, N=12; 压力: N=4; 液面, N=4~12; 温度, N=1~4
优点:
对周期性干扰有良好的抑制作用, 平滑度高
适用于高频振荡的系统
缺点:
灵敏度低
对偶然出现的脉冲性干扰的抑制作用较差
不易消除由于脉冲干扰所引起的采样值偏差
不适用于脉冲干扰比较严重的场合
比较浪费 RAM

智能车浅谈——抗干扰技术软件篇
有关数字滤波器还有很多,大家可以根据自己的需求去尝试,我也上传了一个滤波器的文档到资源,需要的同学自行下载。

归一化

归一化,见名知意,就是把所有采集到的参数转换为同一个范围的数据,归一化的思路:获取变量最大值,并记录,后面所有的采集值都与此最大值进行对比,根据比值再×对应的数据范围即可。
主要作用是消除更换场地后电磁信号出现的偏差。 。

// An highlighted block/**************************************************************************  函数名称:void InductorNormal(void)*  功能说明:采集电感电压并归一化;*  参数说明:无*  函数返回:无*  修改时间:2020年11月18日*  备    注:   注意要先标定运放的放大倍数,尽量四个一致或者接近*************************************************************************/void InductorNormal (void){  LnowADC[0] = ADC1_Read_Average(ADC1ch0_A0,10);   // 左前侧第1个电感,与赛道平行,采集各个电感的AD值  LnowADC[1] = ADC1_Read_Average(ADC1ch1_A1,10);   // 左前侧第2个电感,与垂直赛道,  LnowADC[2] = ADC1_Read_Average(ADC1ch8_B0,10); // 右前侧第2个电感,与垂直赛道,  LnowADC[3] = ADC1_Read_Average(ADC1ch9_B1,10);  // 右前侧第1个电感,与赛道平行,if (LnowADC[0]  ad_min[0]) LnowADC[0] = ad_min[0];     // 刷新最小值else if (LnowADC[0] > ad_max[0]) LnowADC[0] = ad_max[0];     // 刷新最大值if (LnowADC[1]  ad_min[1]) LnowADC[1] = ad_min[1];else if (LnowADC[1] > ad_max来源:小向是个Der
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月11日
下一篇 2022年3月11日

相关推荐