问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于STM32F103C8T6的串级PID平衡小车设计与实现

创作时间:
作者:
@小白创作中心

基于STM32F103C8T6的串级PID平衡小车设计与实现

引用
CSDN
1.
https://m.blog.csdn.net/M1223439171/article/details/143866284

双轮平衡车是一种利用倒立摆原理的高度不稳定两轮机械装置,其力学特性具有多变量,非线性和不稳定等特点。本文使用STM32F103C8T6作为MCU,利用MPU6050六轴加速度陀螺仪和带霍尔编码器的GA25-370减速电机搭建平衡小车。通过整合小车的加速度、倾角进而速度信息,应用串级PID算法实现对小车的直立行走以及差速转向。此外,还使用HC-05蓝牙模块实现对小车的无线控制,外加超声波模块实现测距和避障功能,并通过oled进行分析显示,经过试验本系统具有较强的适应性和稳定性。

PID小车的系统设计

硬件方面主要由STM32F103C8T6最小系统,TB6612电机驱动,稳压模块,HC-06蓝牙,OLED显示屏,编码电机,超声波组成。通过单片机输出的PWM控制左右电机的转速,完成前后作用运动。

PID小车的硬件设计

硬件电路构成

系统选用STM32f103c8t6为控制核心,其他各部分模块包括mpu6050传感器,编码器电机,开关,OLED显示模块和超声波模块组成,系统原理图如图3-1所示:

控制模块的选择

单片机是指一种集成在电路芯片上的微型计算机,它包括中央处理器CPU、随机存储器RAM、只读存储器ROM、并行I/O口、串行I/O口、中断系统、定时器/计数器、定时电路及元件等部件集成到一块芯片上构成的一个小而完善的计算机系统。

单片机内部设有定时电路,工作时外接振荡元件可接可不接。

在这个项目中使用的是stm32f103c8t6,功耗较低,符合设计要求。

整个硬件电路原理图如图3-2:

STM32的优点可以从多个角度进行详细分析,包括其性能、外设、开发工具、功耗管理等方面。以下是更加深入的详细分析:

处理性能高

  • STM32微控制器基于ARM Cortex-M系列核心,具有很高的处理能力。不同的Cortex-M内核(如M0, M3, M4, M7等)覆盖了从低功耗到高性能的广泛应用:

  • Cortex-M0:适用于基础控制应用,支持高效的指令执行,但处理能力较为有限。

  • Cortex-M3:适合一般控制和信号处理任务,支持更强的中断管理和更高的计算性能。

  • Cortex-M4:集成了数字信号处理(DSP)功能和硬件浮点单元(FPU),适用于复杂的算法和实时控制。

  • Cortex-M7:提供更高的计算能力,适用于高性能、低延迟要求的应用,如图像处理、音频处理等。

  • 这些处理器核心的性能范围覆盖了从低成本到高性能的广泛应用需求。

0.96OLED显示模块

一种显示屏模块,它包括一个0.96英寸的OLED显示屏和4个引脚。这种OLED屏幕模块通常用于嵌入式系统和小型电子设备中,可以显示文本、图像和其他类型的信息。由于其小尺寸和低功耗,它们也常用于智能手表、健康追踪器和其他便携式设备中。此类模块通常使用SPI或I2C接口进行通信,并且支持多种分辨率和颜色模式。

该模块有4个引脚,分别为VCC、GND、SCL和SDA。VCC是电源引脚,用于提供模块的电源,一般是3.3V或5V电源。GND是地引脚,用于提供模块的接地。需要接到负极电源上。SCL是时钟引脚,用于传输数据时的时钟信号。通常需要连接到主控芯片的时钟引脚。SDA是数据引脚,用于传输数据。通常需要连接到主控芯片的数据引脚。在使用I2C接口时,这个引脚也可以被称为SDA(串行数据线)。

MPU6050姿态传感器模块

读取的三轴角速度和倾角信息作为基本的控制信息,再加上霍尔编码器输出的左右轮转速作为反馈信息实现。算法方面使用串级PID算法,包括PD直立环、PI速度环以及PD转向环三个方面综合计算实现小车的稳定运行,软件框架如图所示:

MPU6050 为全球首例集成六轴传感器的运动处理组件,内置了运动融合引擎,用于手持和桌面的应用程序、游戏控制器、体感遥控以及其他消费电子设备。它内置一个三轴 MEMS 陀螺仪、一个三轴 MEMS 加速度计、一个数字运动处理引擎(DMP)以及用于第三方的数字传感器接口的辅助 I2C 端口(常用于扩展磁力计)。当辅助 I2C 端口连接到一个三轴磁力计,MPU6050 能提供一个完整的九轴融合输出到其主 I2C 端口。

对于传统的惯性陀螺仪,主要指的是机械式的陀螺仪,其原理为角动量守恒原理。在本次学习中用到的是微机电系统(Micro electro mechanical Systems)陀螺仪,简称MEMS陀螺仪。主要想记录的也是它的内部构成与原理。

MEMS是一种加工工艺,根据产品需要在各类衬底(硅衬底,玻璃衬底,石英衬底,蓝宝石衬底等等)制作微米级微型结构的加工工艺,陀螺仪是其中一种应用。

MEMS陀螺仪是利用科里奥利力的原理(当动系相对于静系有平动与旋转的复合运动时,此时产生一个方向垂直于相对速度方向的力与加速度)。

Fc=2mv×ω

Drv8833电机驱动模块

工作原理:

H桥结构:D RV8833采用H桥结构,这种设计允许电流在电机的两个端口之间双向流动,使电机能够正转和反转。

PWM控制:通过脉宽调制(PWM)信号,可以控制电机的速度和方向。调节PWM的占空比可以改变电机的有效电压,从而调整转速。

输入信号:D RV8833接收控制信号(如方向控制和PWM信号),并根据这些信号驱动电机。模块通常具有方向引脚(IN1和IN2)和PWM引脚。

保护功能:该模块内置了过流、过热和低电压锁定等保护机制,以确保在各种工作条件下的安全运行。

置 1 通过 AIN1 AIN2, BIN1,BIN2 引脚来控制正反转

PWM引脚控制占空比

VM: 接 12V 以内电源

VCC: 接 5V 电源

GND: 接电源负极

编码器电机

对于M1,M2施加5V的驱动信号,Blue(3.3V), Black(GND)加上3.3V工作电压。测量C1,C2波形,C1上升沿领先C2的上升沿。。改变M1,M2电压的极性,C1的上升沿落后于C2的上升沿,编码器电机外观及工作原理如3-6所示

超声波测距采集模块

超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

蓝牙模块

一共有6个引脚,但经过查阅资料以及实操,实际上只需要用到中间的4个引脚即可(即RXD,TXD,GND,VCC)。需要注意的是,蓝牙模块的RXD引脚需要接单片机的TXD引脚,同样,蓝牙模块的TXD引脚需要接单片机的RXD引脚!也就是RXD--TXD,TXD--RXD,VCC—3.3V,GND--GND。

值得一提的是蓝牙模块的波特率一定要与代码波特率一样!!不然是乱码

整车焊接成品图如下:

PID小车的软件设计

简述:

所谓的软件设计就是指把软件需求变换成软件具体设计方案(即模块化结构)的过程。模块化结构设计是指根据要求和硬件设计的结构,将整个系统的功能分成多个小的功能模块,再根据小的功能模块进行程序编写的过程。所以在本设计中的软件设计的思想主要是模块化设计,包括一个主模块和四个子模块(电机驱动子模块、蓝牙模块、OLED显示子模块、蓝牙模块),对各个子模块进行逐一设计,主模块完成对各个子模块的初始化,调用控制子模块、显示子模块。数据采集子模块采用中断方式工作,同时在编程中采用C语言编写,使用了许多技巧,使运算做到高精度、快速。

系统整体流程图如4所示:

PID算法

将比例、积分、微分三种调节规律结合在一起, 只要三项作用的强度配合适当,既能快速调节,又能消除余差,可得到满意的控制效果。

特点:

PID 控制作用中,比例作用是基础控制;微分作用是 用于加快系统控制速度;积分作用是用于消除静差。

只要比例、积分、微分三种控制规律强度配合适当, 既能快速调节,又能消除余差,可得到满意控制效果。

Kp 较小时,系统对微分和积分环节的引入较为敏感,积分会引起超调,微分可能会引起振荡,而振荡剧烈的时候超调也会增加。

Kp 增大时,积分环节由于滞后产生的超调逐渐减小,此时如果想要继续减少超调可以适当引入微分环节。继续增大 Kp 系统可能会不太稳定,因此在增加 Kp 的同时引入 Kd 减小超调,可以保证在 Kp 不是很大的情况下也能取得较好的稳态特性和动态性能。Kp 较小时,积分环节不宜过大,Kp 较大时积分环节也不宜过小(否则调节时间会非常地长),当使用分段PID ,在恰当的条件下分离积分,可以取得更好的控制效果。原因在于在稳态误差即将满足要求时,消除了系统的滞后。因此系统超调会明显减少。

直立环PD算法

适用于舵机快速响应,对于惯性较大的对象,常常希望能加快控制速度, 此时可增加微分作用。

特点:

比例控制对于惯性较大对象,控制过程缓慢,控制品质不佳。比例微分控制可提高控制速度,对惯性较大对象,可改善控制质量,减小偏差,缩短控制时间。

理想微分作用持续时间太短, 执行器来不及响应。实际使用中,一般加以惯性延迟,称为实际微分。

PD 调节以比例调节为主,微分调节为辅,PD调节是有差调节。

PD 调节具有提高系统稳定性、抑制过渡过程最大动态偏差的作用。

PD 调节有利于提高系统响应速度。

PD 调节抗干扰能力差,一般只能应用于被调参数 变化平稳的生产过程。

微分作用太强时,容易造成系统振荡。

速度环Pi算法

串级PID

当进行小球的位置控制时,可能会发现一个问题,如果小球与目标之间的距离较远的话,小球在运动过程中的速度会很快,会导致较大的超调,而且不论怎么修改参数都很难让系统的表现更好一些。

这时可能会想,如果运动过程中的速度没这么快就好了,这样就不会冲过头了。没错,这就要用到串级PID了。

上面所说的算法其实就是单级PID,目标值和反馈值经过一次PID计算就得到输出值并直接作为控制量,但如果目标物理量和输出物理量之间不止差了一阶的话,中间阶次的物理量是无法控制的。比如:目标物理量是位置,输出物理量是加速度,则小球的速度是无法控制的。

而串级PID就可以改善这一点。串级PID其实就是两个单级PID“串”在一起组成的,它的信号框图如下图4-4:

调试

把基本代码框架完成后,就可以进行调参,下面是一些基本思路

调参的顺序是直立环——速度环——转向环。

Kp Kd Kp Ki Kp Kd 现象

-180 0 0 0 0 0 车身出现大幅度低频振荡,达到要求,调kd

-180 -0.73 0 0 0 0 车身出现小幅度高频振荡,趋于平稳,ok

-180 -0.73 -100 -0.5(与kp是200:1的关系) 0 0 小车前后摆动距离过大 减小kp

-180 -0.73 -90 -0.45 0 0 平衡性能良好

-180 -0.73 -90 -0.45 25 0.5 转向时抖动较大

-180 -0.73 -90 -0.45 25 0.01 转向OK

结论

经过多次调参,该PID小车各方面的功能基本能够符合要求。不足的是,在实际调参之后发现车子仍然存在小幅度摆动的问题,初步怀疑是车子外形结构或者编码器电机转速低的问题,不过测试结果在可接受范围内。当然,过程中难免经历失败和挫折,失败在所难免,关键看对待失败的心态,所谓天助自助者,最后还是在不断的调参中找到了最适合的数值,下面是属于可以改良的部分,板子是预留了寻迹模块的接口,本来是想着加上寻迹模块的,但是由于成本和时间,只能留着后面再做了。车身可以加上3D打印外壳成为智能遥控小车,单小车本体的话可以成为PID调参学习工具,有助于想学习PID的初学者更好的学习和理解PID的原理和上手。最后还要感谢导师徐治根教授,这个过程中遇到了很多问题都是他提供了思路来解决问题,还有博客上诸多大佬的讲解,感谢!!!

参考文献

[1] Gene F. Franklin.Feedback Control of Dynamic Systems,第六版。

[2] 李建忠,单片机原理与应用[M]. 西安:西安电子科技大学出版社.2009

[3] 刘灿军.实用传感器,国防工业出版社,2008年

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号