基于PID控制算法的自主平衡小车的设计
2018-02-21严冬
严冬
【摘 要】随着电子科学技术的进步,两轮平衡小车的研究和应用越来越广泛。本文提出了一种两轮平衡小车,采用STM32F103C8T6单片机作为整个硬件电路的控制核心,利用NRF24L01无线模块来调整小车的PID参数设计。小车能够自主的保持平衡状态,并在保持直立的基础上完成前进、转弯、后退动作。
【关键字】角度数据;PID算法;四元数滤波算法;单片机
中图分类号: TP13-4;G642 文献标识码: A 文章编号: 2095-2457(2018)33-0014-002
DOI:10.19694/j.cnki.issn2095-2457.2018.33.006
1 研究背景
自主平衡小车具备运动灵活、智能控制、操作简单、节省能源、绿色环保、转弯半径小等可以代替传统的电动车成为新的代步工具,尤其适合于在狭小空间内运行,如大型购物中心、国际性会议或展览场所、办公大楼、生态旅游风景区、生活住宅小区等。本文主要是研究车身运动过程当中陀螺仪加速度计数据变化,针对小车车身在运动过程产生的白噪声对数据产生的影响采用了四元数滤波算法输出正确的数据,采用PID控制算法实现对小车基本控制。
2 系统组成
本系统整合了多种传感器电路设计,为了保证各传感器会传数据的准确性,所以要做好电路信号的隔离,做好各部分的接地、滤波等工作,提高电路的稳定性。整个系统分为控制上位机和受控下位机,控制上位机主要模块有:STM32F103C8T6单片机最小系统、键盘电路、MIC5207锂电池充电电源、OLED液晶显示电路、NRF24L01无线通信模块、CH340串口通信模块,受控下位机:STM32F103C8T6单片机最小系统、陀螺仪加速度计模块、无线通信模块等。硬件框图如图1、2所示。
3 软件设计
3.1 NRF24L01无线通信函数设计
本设计采用了NRF24L01无线模块设计,其主要的功能是可以利用上位机调节PID数据,使得在调试平衡车的过程中更加的便利高效。当系统开始时会对NRF24L01无线模块进行初始化,然后对NRF24L01模块进行检测,如果不能进行通信则在OLED液晶显示屏上保错,反之则在OLED液晶显示屏上显示正常。本设计软件流程图3:
3.2 陀螺仪与加速度计输出值转换
本系统采用MPU6050陀螺仪加速度模块,将MPU6050模块读取的数据,最终送入四元数滤波器转化为更加准确的角度数据和角加速度数据。软件流程图4.6:
3.3 PID控制軟件实现
为了实现自主平衡小车的基本动作,本系统采用PID控制算法,当传感器读取到小车倾斜的角度时,将数据传给主控电路。主控电路通过PID算法计算出相应的PWM值。在保持车身平衡的基础上,改变车身的机械中值,使车身向一边倾斜,这时传感器将车身倾斜角度读取出来,主控为了保持车身平衡会输出相应的PWM值,使小车加速向倾斜方向运动,保持动态平衡。这样就完成了前进的动作。后退亦是如此。
4 系统调试
4.1
(1)开机时界面中NRF24L01 OK 表示无线通信芯片能正常工作。Oled液晶显示屏左边可以调节PID参数,右边的按键可以进入不同的UI界面。
(2)控制上位机调试界面,在界面中有期望调节和PID调节,可以通过这2个功能来调节小车的机械中值以及PID的数值参数。控制上位机的调试界面如图6
4.2 受控下位机
(1)受控下位机的主要硬件电路包括:主控电路、驱动电路、OLED显示
屏、无线通信电路、角度检测电路等。
(2)受控下位机正常工作,使小车实现直立效果,如图7。
5 结论
本系统主要设计包括各个模块的驱动程序设计、以及四元数滤波算法和PID控制算法设计。驱动程序设计包括OLED屏、TB6612FNG驱动芯片等。四元数滤波算法设计是为了使角度传感器能够读取正确的角度数据。PID算法控制是为了使主控板输出相应的PWM值,使小车完成直立、前进、后退等基本动作。