当前位置:   article > 正文

平衡小车调试总结及心得_平衡小车 速度环 直立还 方向环

平衡小车 速度环 直立还 方向环

目录

一、知识点

1、PID控制算法

 2、平衡原理

二、硬件

1、编码器

2、电机

 3、PWM

4、陀螺仪MPU6050

三、PID调节过程

1、理论部分

1.1直立环

1.2速度环、串级PID

1.3、纯比例控制

2、调参步骤:

2.1大致步骤:

2.2直立环

2.3速度环

2.4转向环

前言

    这个项目是我在入门嵌入式做的第一个项目,是在看完原子哥的视频后,为了巩固和连接起来这些知识点做的,做的不是很好。此次项目主要涉及到嵌入式方面的的基础知识,如PWM输出,IIC通信时序,uart串口通信,定时器。核心部分是用MPU6050和编码器来读取小车的姿态和速度信息,通过PID来处理得到的数据使小车实现自平衡。

一、知识点

1、PID控制算法

PID控制即为对偏差进行比例、积分和微分控制。由三个元素构成,分别是比例(P)积分(I)微分(D)
  工程中P必然存在,在P的基础上又有如PI控制(比例积分控制),PD控制(比例微分控制),PID控制(比例积分微分控制)。

  • 比例项P:提高响应速度,减小静差。
  • 积分项I:消除稳态误差。
  • 微分项D:减小震荡以及超调。

 2、平衡原理

小车往前倒,电机加速往前,从而达到平衡。反之亦然。

 首先我们要知道,电机通过PWM控制转速,单片机PWM给到电机驱动,从而控制电机的转速和方向。

  具体流程如下:

或者用方框图表示:


 二、硬件

硬件占用的GPIO

  1. 编码器1——PA0/PA1---TIM2

编码器2——PB6/PB7---TIM4

  1. 电机1——PB12/PB13

电机2——PB14/PB15

  1. PWM1——PA8---TIM1_1

PWM2——PA11---TIM1_4

4、 MPU6050中断引脚——PB5

MPU6050所用IIC——PB3/PB4

硬件连接:

讲解:

1、编码器

这里以霍尔编码器为主介绍(光电编码器精度比霍尔高38倍)。霍尔编码器是有霍尔马盘和霍尔元件组成。霍尔马盘是在一定直径的圆板上等分的布置有不同的磁极。霍尔马盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。示意图如下:

我用的电机是GM25-370直流减速电机(带霍尔编码器),其对应编码器引脚图如下:

通常有两种方式,第一种软件技术直接采用外部中断进行采集,根据AB相位差的不同可以判断正负。第二种硬件技术直接使用定时器的编码器模式,这里采用第二种。也是大家常说的四倍频,提高测量精度的方法。其实就是把AB相的上升沿和下降沿都采集而已,就是所有边沿都计数,AB两相有90度的相位差,可以判断出旋转方向和旋转速度,也可以提高精度,所以1变4。自己使用外部中断方式实现就比较占用资源了,这里建议使用定时器的编码器模式来测量脉冲变化值。

2、电机

这里所说的电机也就是通过电机驱动控制电机,电机驱动我们使用的是tb6612,一定要用tb6612的芯片,国产做的兼容板子质量太差,钽电容很脆,一不注意就炸了,比如我当时就差点当场去世,前期调试不建议使用,虽然便宜一半,但是为了系统的稳定和安全,还是用tb6612吧,但是调试完成后可以换成兼容板。

电机驱动引脚定义:

可见,电机驱动最多可接两个电机,tb6612的稳定性是比L298N稳定的,如果感兴趣可以试试L298N。下面以一个电机的配置举例如下:

电源,地,STBY这里不做过多赘述。

输入端大致配置为:

Ain1=1,Ain2=0,电机正转

Ain1=0,Ain2=1,电机反转

输出端AO1 AO2接编码器的动力线部分

PWM信号输入端接单片机定时器的PWM输出

3、PWM

   软件PWM的配置过程不再详解,具体可参考正点原子的用户手册,这里讲解一下代码中的Load(Moto1,Moto2)加载到电机的函数,加载的值实际是占空比CCRX的值,也就是通过控制占空比达到控制速度的效果。PID算法就是把需要的CCRX实时地算出来,然后控制电机,达到平衡。

   讲解一下PWM周期的计算,具体公式如下:

        72MHZ*T=(ARR+1)(PSC+1);

占空比:CCRX/ARR=高电平时间/T;

PWM时序图如下:重装载值是ARR,比较值是CCRX

这里再讲解一下PWM限幅,实际是限制CCRX的值,避免CCRX大于ARR的值。

再讲解一下低通滤波,期间需要低频滤波,我们是以直立环为主,速度环为辅,速度环相对于直立环来说是一个干扰,最终目的是直立。低频滤波作用是使得波形更加平滑,滤除高频干扰,防止速度过大影响直立环正常工作。

4、陀螺仪MPU6050

作用:检测倾斜角。

主要用到如下三个引脚:
MPU6050中断引脚——PB5
MPU6050所用I2C——PB8/PB9

中断引脚的定义为配置PB5为上拉输入,检测到数据后电平变低,则进入外部中断,整个控制周期都是再在中断中进行,这里我们的检测周期设为10ms,则我们读取的编码器的值/10ms就是速度值,因为时间是固定的,所以编码器的值即可理解为速度。


三、PID调节过程

1、理论部分

牢记如下知识点:

PID控制即为对偏差进行比例、积分和微分控制。由三个元素构成,分别是比例(P)积分(I)微分(D)
  工程中P必然存在,在P的基础上又有如PI控制(比例积分控制),PD控制(比例微分控制),PID控制(比例积分微分控制)。

  • 比例项P:提高响应速度,减小静差。
  • 积分项I:消除稳态误差。
  • 微分项D:减小震荡以及超调。

1.1直立环

1.理论

小车往那边倒,车轮就往哪边开,既可以保持车子的平衡。

2.公式

a=b1*θ+b2*θ; ——> 比例微分控制【PDout=Kp*Angle+Kd*( Angle-Angle_last)】

3.结构框图

直立环:让小车角度趋近0;

速度环:让电机速度趋近0;

1.2速度环、串级PID

速度环输入:1.给定速度。2.速度反馈。

输出:角度值(直立环的期望速度输入)

直立环输入:1.给定角度(速度环输出)。2.角度反馈

输出:PWM(直接控制小车)

Vertical_out=Kp1*( real_Angle- expect_Angle)+Kd*D( real_Angle- expect_Angle) //直立PD控制器

Velocity_out =Kp2*(Encoder_ real- Encoder_ expect)+Ki*S(Encoder_ real- Encoder_ expect) //速度PI控制器

(NOTE:(1)Velocity_out = expect_Angle.(2)Kp1:Vertical_Kp.(3)Kp2:Velocity_Kp.)

【中文】

直立环输出=Kp1*(真实角度-期望角度+机械中值)+Kd*角度偏差的微分     //角度偏差=真实角度-期望角度

速度环输出=Kp2*(反馈编码器值-期望编码器值)+Ki*编码器偏差的积分 //编码器偏差=反馈编码器值-期望编码器值

(NOTE:(1)速度环输出=直立环的期望角度。(2)Kp1:直立环Kp。(3)Kp2:速度环Kp。)

1.3、纯比例控制

单摆的加速度和单摆的倾角成正比

只存在大小与角度偏差成正比的回复力

a=b1*θ; ——> 比例控制【Pout=Kp*Angle】

 

比例微分控制器

大小与角度成正比、方向与角速度成正比的回复力

大小与角速度成正比、方向与回复力成反比的阻尼力

a=b1*θ+b2*θ'; ——>比例微分控制【PDout=Kp*Angle+Kd*( Angle-Angle_last)】

  1. 编写PID相关函数以及平衡小车控制函数。
  2. 编写缺少的一个函数。
  3. 完善主函数----初始化&变量的定义。

控制函数写在外部中断服务函数里面。

10ms控制周期由MPU6050的INT引脚给定。

保证数据的采集和处理的同步性。

2、调参步骤:

2.1大致步骤:

  1. 确立机械中值。
  2. 直立环(内环)—Kp极性、Kp大小。Kd极性、Kd大小。
  3. 速度环(外环)——Kp&Ki极性、Kp&Ki大小。
  4. 转向环——系数极性、系数大小。

机械中值把平衡小车放在地面上,从前向后以及从后向前绕电机轴旋转平衡小车,两次的向另一边倒下的角度的中值,就是机械中值。

2.2直立环

         Kp极性:

               极性错误:小车往哪边倒,车轮就往反方向开,会使得小车加速倒下。

               极性正确:小车往哪边倒,车轮就往哪边开,以保证小车有直立的趋势。

        Kp大小:

                Kp一直增加,直到出现大幅低频震荡。

        Kd极性:

                极性错误:拿起小车绕电机轴旋转,车轮反向转动,无跟随。

                极性正确:拿起小车绕电机轴旋转,车轮同向转动,有跟随。

        Kd大小:

                Kd一直增加,直到出现高频震荡。

                直立环调试完毕后,对所有确立的参数乘以0.6作为最终参数。

                原因:之前得到的参数都是Kp、Kd最大值,根据工程经验平衡小车的理想参数为最大参数乘以0.6求得。

                 结果:乘以0.6后,小车的抖动消失,但同时直立效果也变差。待下面加入速度环就能得到更好的性能。

2.3速度环

速度环参数调节前注意:

一、

        在调试【速度环参数极性】时:需要去掉(注释掉)【直立环运算】

        在调试【速度环参数大小】时:再次引入(取消注释)【直立环运算】

二、

        【转向环运算】始终是去掉(注释)的一个状态。若转向环已提前将参数调试好,则未注释也影响不大。

Kp&Ki:

        线性关系、Ki=(1/200)*Kp、仅调Kp即可。

Kp&Ki极性:

        极性错误:手动转动其中一个车轮,另一车轮会以同样速度反向旋转——典型负反馈。

        极性正确:手动转动其中一个车轮,两个车伦会同向加速,直至电机最大速度——典型正反馈。

Kp&Ki大小:

        增加Kp&Ki,直至:小车保持平衡的同时,速度接近于零。且回位效果较好。

2.4转向环

Kp极性:

        极性错误:拿起小车,并将小车绕Z轴旋转,两车轮旋转的趋势与小车旋转趋势一致——典型正反馈。

        极性正确:拿起小车,并将小车绕Z轴旋转,两车轮旋转的趋势与小车旋转趋势相反——典型负反馈。

Kp大小:

        加大Kp,直至走直线效果较好,且无剧烈抖动。


代码资料均已打包,有需要的找我要即可。

B站:天下行走ㅍ_ㅍ (相关视频)

知乎:天下行走 (相关文章)

CSDN:技术创造无限可能

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/929403
推荐阅读
相关标签
  

闽ICP备14008679号