您好, 访客   登录/注册

基于卡尔曼滤波算法的无线船模遥控器研究

来源:用户上传      作者:黄永昌

  摘要:通过对各类无线遥控器的研究与分析,设计了一款简易的无线船模遥控器,该无线遥控器以嵌人式芯片STM32作为控制器,选用NRF24L01+PA+LNA作为无线发送数据模块,并利用卡尔曼滤波算法处理采集的控制(电机转速与方向)数据。实验结果表明,在硬件电路通电后,容易造成电压数据波动,即噪声干扰,引入卡尔曼滤波算法能有效减少噪声干扰,提高采集电压数据的稳定性,在遥控船模运行时,船模运行更加平稳了。
  关键词:遥控器;NRF24L01+PA+LNA;卡尔曼滤波;噪声干扰
  中图分类号:TP3 文献标识码:A
  文章编号:1009-3044(2020)14-0269-03
  随着科技的不断发展,无线传输技术在生活中的应用也越来越广泛。目前常见的无线传输方式主要包括以下几种:蓝牙、Zigbee、WIFI、NRF24L01、NRF905、GSM(GPRS),下表列出了六种无线传输方式的各种特性。
  在选取传输模块制作无线遥控器之前,需要挑选最有利的传输方式,由上表可以看出,综合考虑频段、收费、传输距离、传输带宽等因素得知:以上六种传输方式中,只有GSM(GPRS)一种传输方式需要交费,因此,该传输方式不作考虑,在剩余五种传输方式中,NRF24L01(+)的传输距离最远,传输距离近2000m,而且其传输带宽也比其余几种要宽得多。因此,选用NRF24L01(+)模块作为无线遥控器的发送模块是最理想的选择。
  以往,在设计无线遥控器时,大多能够选取较先进的无线传输方式,但是在传输数据时,数据往往存在较大的波动,性能不够稳定,对于这一特性,较少有研究人员能够利用算法对不稳定数据进行处理。在本文中,采用卡尔曼滤波算法,对主控芯片采集的波动较大的数据进行了有效的处理。
  1卡尔曼滤波算法介绍
  1960年,R.E.Kalman提出了基于状态空间递推滤波的卡尔曼滤波算法,它是一种自回归最小方差意义下的估计;采用递推方式处理的滤波器算法,能够在包含噪声及不完整的测量信号的系统中,估算出相应的状态量。在信息技术高速发展的当今社会,卡尔曼滤波算法得到了越来越广泛的应用。
  其中,Kk就是卡尔曼增益,I为单位矩阵。经典的卡尔曼滤波在使用上限制较多,需要满足系统是线性系统以及噪声成正态分布两个条件。虽然一些实验验证当噪声不是严格的正态分布时,卡尔曼滤波依然有效。但是,由卡尔曼滤波的公式可以看出,卡尔曼滤波只适用于线性系统,而无法用于非线性系统。为了扩展卡尔曼滤波的适用范围,使之能应用于非线性系统,一些卡尔曼滤波的改进算法也被提了出来。
  2无线船模遥控器总体设计
  无线船模遥控器的总体方案如下,无线船模遥控器,顾名思义,就是用于控制船模的无线遥控器,在图1的左边红色背景部分为无线船模遥控器的内部结构(为本文的研究内容),图1右边蓝色背景部分为船模的内部结构(非本文研究内容),无线船模遥控器主要包括五个部分:电源模块、液晶显示屏、旋钮电位器、无线收发器以及处理器,无线船模遥控器与船模通过无线收发模块发送的高频信号进行通信。
  如图2所示,图2-(a)为无线船模遥控器的外观图,图2-(b)为船模内部接线图,图2-(c)为船模外观图。
  如图2-(a)所示,图中有两个旋钮电位器,一个电位器用于控制船模的油门,另一个电位器用于控制船模的方向。
  如3图所示,为旋钮电位器的外观图与原理图。
  图3-(a)所示旋钮电位器有三根线接到外部电路,三根线分别对应图3-(c)中的三根线。通过控制滑动变阻器的阻值,进而控制电路中电压值的变化。本实验中,电压最大值为VCC(3.3v),最小值为0v。
  3無线船模遥控器软件设计
  本实验采用STM32作为控制芯片,利用Keil4作为程序编辑与下载软件,无线遥控船模遥控器的任务是通过控制旋钮电位器上的旋钮,从而达到控制船模电机的转速与船模方向的目的。
  在程序设计过程中,首先需要定义一个数据包,用于打包所有需要发送出去的数据,主要有船模电机转速与船模方向的数据,然后,初始化系统所有模块,采集到旋钮电位器电压数据之后,利用卡尔曼滤波算法对采集到的数据进行处理,并将处理之后的数据通过发送模块发送出去。其具体的程序流程如图4所示。
  4实验设计
  在本文中,主要是利用$TM32控制芯片的AD采集功能,采集旋钮电位器测量上的电压值,如图5蓝色线所示,为STM32芯片采集的电位器的电压值数据,由图易见,蓝色线有较大的波动,如利用该结果控制船模航行,则船模势必有较大的抖动,为解决抖动问题,本实验引入卡尔曼滤波算法,用于减少电位器数据的波动,从而减少船模的抖动。
  在本实验中,编写程序时首先建立一个包含1000个变量的数组(每隔20ms采集一次,总共采集时间为20s),用来储存从电位器采集的电压数据值,在数据采集过程中,将旋钮电位器从0值旋动到最大阻值,停顿一段时间后,再将旋钮电位器由最大阻值旋到0阻值处,同时,利用卡尔曼滤波算法,对该数组的数据进行处理,处理后的结果如图5曲线所示。
  5结论
  由经实验验证得知,没有经过卡尔曼滤波算法处理的数据存在较多大的波动,运用卡尔曼滤波算法处理后的数据,波动明显减少了,数据稳定性更好,更有利于控制船模的航行。
转载注明来源:https://www.xzbu.com/8/view-15266934.htm