请选择 进入手机版 | 继续访问电脑版
快捷导航
8 238

基于PID的自平衡自行车系统

这叫半生瓜 于 2018-12-19 17:26 发表在 [开源项目] [复制链接]

注册后可查看大图哦

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 这叫半生瓜 于 2019-1-9 17:12 编辑

参与人员:@程厚敏 @这叫半生瓜(金祖勇)@sandianshui(汪乐乐)@ZLL(祝来李)@毛鱼小雅(于超然)@yq745010183(于泉)
一、项目名称
        基于PID的自平衡自行车系统
二、项目概述
自平衡自行车控制系统,使用MPU6050姿态传感模块获取自行车当前状态及自行车把手的角度,通过串口将提取到的信息传送给M3,然后通过M3中实现的PID算法来计算PWM,将PWM输出至舵机来控制自行车的把手的转角,并通过M3中的算法来控制TB6612FNG电机驱动器,使得电机工作。舵机、电机开始工作后,周期地读取自行车的角度及MPU6050中数据,使得舵机、电机不断调整,从而使自行车获得动态平衡。
三、项目需求1.传感数据获取
陀螺仪:一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的,根据这个道理,用它来保持方向,然后读取轴所指示的方向,并自动将数据信号传给控制系统。
加速度传感器:通常由质量块、阻尼器、弹性元件、敏感元件和适调电路等部分组成。传感器在加速过程中,通过对质量块所受惯性力的测量,利用牛顿第二定律获得加速度值。
使用陀螺仪与加速度传感模块获取自行车的偏转角度及加速度数据,再通过舵机读取当前车把手偏转角。
2. 机械平衡控制
PID控制算法:当得到系统的输出后,将输出经过比例,积分,微分3种运算方式,叠加到输入中,从而控制系统,主要参数说明如下:
P:Proportion(比例),输入偏差乘以一个常数。
I:Integral(积分),对输入偏差进行积分运算。
D:Derivative(微分),对输入偏差进行微分运算。
平衡控制算法:将传感器获取的数据传入M3后,根据自行车偏角、加速度及舵机角度判断此时电机、舵机该如何工作。

四、项目功能模块
1.数据采集
MPU6050负责采集自行车的倾角及加速度,舵机负责采集自行车把手的偏转角,两者采集到相关数据后,通过串口将提取到的数据传送给M3,进行相关数据处理。
2.数据处理
数据处理主要采用PID算法与平衡控制算法两块,PID算法用于控制舵机转动角度,平衡控制算法用于控制电机。通过自行车把手转动角度比例P对舵机角速度进行调整;角度误差积分I用于消除车身稳态误差;角度微分D用于反映自行车把手偏转角的变化率,能预见偏差变化的趋势并能产生超前的控制作用。
平衡控制算法则控制电机的正转与反转,正转代表平衡车向前移动,反转代表平衡车向后移动。在此基础上结合PID算法参数驱动电机与舵机的转动,从而驱动平衡车的行进。
五、项目所需材料
1.M3板子(实验室自备)
2.MPU6050模块、超声波模块、TB6612电机驱动器(实验室自备)
3.螺丝、铜柱(集资购买)
4.舵机(集资购买)
5.马达、马达固定架(集资购买)
6.车轴、轮胎(集资购买)
7.亚克力自行车车架(集资购买)
8.电池(实验室自备)
六、项目分工
金祖勇:负责整体框架搭建
祝来李、汪乐乐:负责平衡算法
于超然、于泉:负责PID算法
程厚敏:负责机械部分与算法的配合







Connecting & Messaging from Any.

共 8 个关于本帖的回复 最后回复于 2019-1-4 08:22

Jump 注册会员 发表于 2019-1-4 08:22:37 | 显示全部楼层
程厚敏 发表于 2019-1-2 19:17
自行车物理架构拼装
   由于我们的零件是全部单独购买,单独制作,导致很多零件有误差,之前组装也出现很 ...

可以加油
Connecting & Messaging from Any.
举报 使用道具
毛鱼小雅 新手上路 发表于 2019-1-2 21:37:07 | 显示全部楼层
PID控制分为位置式PID和增量式PID

位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大。
增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀。
Connecting & Messaging from Any.
举报 使用道具
程厚敏 新手上路 发表于 2019-1-2 19:17:55 | 显示全部楼层
本帖最后由 程厚敏 于 2019-1-2 19:23 编辑

自行车物理架构拼装
   由于我们的零件是全部单独购买,单独制作,导致很多零件有误差,之前组装也出现很多问题,导致无法达到想要的结果。在物理组装上花了很多时间。本来准备另寻出路,然后今天整组决定再尝试一下,我们在学长那里借了胶棒,有误差的地方手动粘起来,大致可以拼凑好。因为没买到电机与轮子相连的履带,导致无法将电机放在自行车中间,只能将电机直接与轮子相连,这样的问题就是左右重量完全失衡,这让我们项目难度增大很多。
舵机控制
  舵机控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生一个基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的转动。当电机转速一定时,通过电机带动轮子旋转,使得电压差为0,电机停止转动。
  舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:

   0.5ms--------------0度;

   1.0ms------------45度;

   1.5ms------------90度;

   2.0ms-----------135度;

   2.5ms-----------180度;
   
参考 http://blog.sina.com.cn/s/blog_8240cbef01018hu1.html项目分工 :程厚敏 金祖勇


点评

Jump 可以加油  详情 回复 发表于 2019-1-4 08:22
Connecting & Messaging from Any.
举报 使用道具
毛鱼小雅 新手上路 发表于 2018-12-29 09:07:20 | 显示全部楼层
本帖最后由 毛鱼小雅 于 2018-12-29 09:20 编辑

PID算法的详细内容
[P]比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。反之,过小,更不上系统需求。
[I]积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。一般情况是将时间常数设置很小。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。
[D]微分调节作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强 的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。
PID各参数对控制性能的影响
1.随着比例系数Kp的增加,超调量增大,系统响应速度加快。
2.积分时间常数Ti对控制性能的影响:
积分作用的强弱取决于积分常数Ti。Ti越小,积分作用就越强,反之Ti大则积分作用弱。积分控制的主要作用是改善系统的稳态性能,消除系统的稳态误差。当系统存在控制误差时,积分控制就进行,直至无差,积分调节停止,积分控制输出一常值。
加入积分控制可使得系统的相对稳定性变差。Ti值的减小可能导致系统的超调量增大,Ti值的增大可能使得系统响应趋于稳态值的速度减慢。
3.微分时间常数Td对控制性能的影响
随着微分时间常数Td的增加,闭环系统响应的响应速度加快,调节时间减小。微分环节的主要作用是提高系统的响应速度。由于该环节对误差的导数(即误差变化率发生作用),它能在误差较大的变化趋势时施加合适的控制。
但是过大的Kd值会因为系统造成或者受控对象的大时间延迟而出现问题。微分环节对于信号无变化或变化缓慢的系统不起作用。
比例积分(PI)控制
  比例控制规律是基本控制规律中最基本的、应用最普遍的一种,其最大优点就是控制及时、迅速。只要有偏差产生,控制器立即产生控制作用。但是,不能最终消除余差的缺点限制了它的单独使用。克服余差的办法是在比例控制的基础上加上积分控制作用。
  积分控制器的输出与输入偏差对时间的积分成正比。这里的“积分”指的是“积累”的意思。积分控制器的输出不仅与输入偏差的大小有关,而且还与偏差存在的时间有关。只要偏差存在,输出就会不断累积(输出值越来越大或越来越小),一直到偏差为零,累积才会停止。所以,积分控制可以消除余差。积分控制规律又称无差控制规律。
  积分时间的大小表征了积分控制作用的强弱。积分时间越小,控制作用越强;反之,控制作用越弱。
  积分控制虽然能消除余差,但它存在着控制不及时的缺点。因为积分输出的累积是渐进的,其产生的控制作用总是落后于偏差的变化,不能及时有效地克服干扰的影响,难以使控制系统稳定下来。所以,实用中一般不单独使用积分控制,而是和比例控制作用结合起来,构成比例积分控制。这样取二者之长,互相弥补,既有比例控制作用的迅速及时,又有积分控制作用消除余差的能力。因此,比例积分控制可以实现较为理想的过程控制。
  比例积分控制器是目前应用最为广泛的一种控制器,多用于工业生产中液位、压力、流量等控制系统。由于引入积分作用能消除余差,弥补了纯比例控制的缺陷,获得较好的控制质量。但是积分作用的引入,会使系统稳定性变差。对于有较大惯性滞后的控制系统,要尽量避免使用。
比例微分(PD)控制
比例积分控制对于时间滞后的被控对象使用不够理想。所谓“时间滞后”指的是:当被控对象受到扰动作用后,被控变量没有立即发生变化,而是有一个时间上的延迟,比如容量滞后,此时比例积分控制显得迟钝、不及时。为此,人们设想:能否根据偏差的变化趋势来做出相应的控制动作呢?犹如有经验的操作人员,即可根据偏差的大小来改变阀门的开度(比例作用),又可根据偏差变化的速度大小来预计将要出现的情况,提前进行过量控制,“防患于未然”。这就是具有“超前”控制作用的微分控制规律。微分控制器输出的大小取决于输入偏差变化的速度。
  微分输出只与偏差的变化速度有关,而与偏差的大小以及偏差是否存在与否无关。如果偏差为一固定值,不管多大,只要不变化,则输出的变化一定为零,控制器没有任何控制作用。微分时间越大,微分输出维持的时间就越长,因此微分作用越强;反之则越弱。当微分时间为0时,就没有微分控制作用了。同理,微分时间的选取,也是需要根据实际情况来确定的。
  微分控制作用的特点是:动作迅速,具有超前调节功能,可有效改善被控对象有较大时间滞后的控制品质;但是它不能消除余差,尤其是对于恒定偏差输入时,根本就没有控制作用。因此,不能单独使用微分控制规律。
  比例和微分作用结合,比单纯的比例作用更快。尤其是对容量滞后大的对象,可以减小动偏差的幅度,节省控制时间,显著改善控制质量。
比例积分微分(PID)控制
最为理想的控制当属比例-积分-微分控制规律。它集三者之长:既有比例作用的及时迅速,又有积分作用的消除余差能力,还有微分作用的超前控制功能。
当偏差阶跃出现时,微分立即大幅度动作,抑制偏差的这种跃变;比例也同时起消除偏差的作用,使偏差幅度减小,由于比例作用是持久和起主要作用的控制规律,因此可使系统比较稳定;而积分作用慢慢把余差克服掉。只要三个作用的控制参数选择得当,便可充分发挥三种控制规律的优点,得到较为理想的控制效果。


项目分工:平衡小车的PID算法 负责人:于泉,于超然




Connecting & Messaging from Any.
举报 使用道具
sandianshui 新手上路 发表于 2018-12-28 19:32:45 | 显示全部楼层
一、今天我们研究MPU6050的配置。初始化MPU6050有6个步骤,
        1.初始化IIC接口.
    2.复位MPU6050。
    3.设置角速度传感器和加速度传感器的满量程范围。
    4.设置其他参数。配置中断,设置AUX IIC接口,设置FIFO, 设置陀螺仪采样率
    5.设置系统时钟。
    6.使能角速度传感器(陀螺仪)和加速度传感器。
二、我们今天重点学习了IIC通信原理等
        I2C,两线式串行总线。它是由数据线SDA,和时钟SLC构成的串行总线,可发送和接收数据。
        IIC是半双工通信方式。
        I2C协议包括
                1.空闲状态        2.开始信号        3.停止信号        4.应答信号        5.数据的有效性        6.数据传输
三、感受:
        完成了初始化IIC接口的配置代码结构,但还未将开发板与MPU6050结合,主要是因为没找到对
应引脚,迷迷糊糊。       

项目分工:自行车的平衡  负责成员:祝来李,汪乐乐
Connecting & Messaging from Any.
举报 使用道具
yq745010183 新手上路 发表于 2018-12-28 10:14:47 | 显示全部楼层
本帖最后由 yq745010183 于 2018-12-28 10:18 编辑

                                                                                    对PID算法的分析与概述
一、 PID含义

PID是英文单词比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写。PID调节实际上是由比例、积分、微分三种调节方式组成
离散式PID分为位置型和增量型。
比例控制理解

        首先是比例控制。比例控制就好比是通过水桶往水缸加水或者从水缸舀水。假设我们需要把水平面稳定在A平面,而实际水平面在B平面,那么水平面差值Err=A-B,那这个时候我们需要往里面加水的量就是Kp*Err,Kp就是我们的比例控制系数。

        如果A>B,Err为正,就往水缸里面加水;如果A<B,Err为负,就从水缸里面舀水出来。那么只要预期水平面和实际水平面有差值,我们都会通过水桶去加减水来调整系统。同时Kp的大小也有对系统的性能有影响。如果Kp的值比较大,优点是从B平面达到A平面的速度快,缺点是在B平面已经接近A平面的时候系统会产生比较大的震荡。如果Kp的值比较小,优点是B平面在接近A平面的时候系统震荡小,缺点是从B平面达到A平面的速度慢。
其中Kp为比例系数,Ti为积分时间常量,Td为微分时间常量。C:\Users\yq745010183\Pictures\Saved Pictures
平衡小车的PID算法 负责人:于泉,于超然

点评

你真可爱: 0.0
@TK https://wenku.baidu.com/view/cbf919827e21af45b207a8ad.html?rec_flag=default&sxts=1545719904159  发表于 2018-12-28 10:21
@TK 你真可爱: 0
糟了,是心动的感觉  发表于 2018-12-28 10:20
Connecting & Messaging from Any.
举报 使用道具
这叫半生瓜 注册会员 发表于 2018-12-27 20:30:40 | 显示全部楼层
今天我们组的材料到了好多,MPU6050、TB6612、螺丝、轮胎等都到了,不过整体的框架还没到,还只能研究部分,不能整体考虑。我今天着重看了舵机这一块,关于舵机也是了解了大部分,结合前几天宁哥讲得用PPM控制舵机,今天也写了一点控制舵机的代码,有两个问题,第一个是配置什么都没有问题,代码我也看不出问题,就是没反应,不知道是线接的有错误还是代码没写好;还一个问题就是舵机如何读出当前的角度,因为我们需要知道当前自行车的转向,这个方面还有问题。
Connecting & Messaging from Any.
举报 使用道具
ZLL 新手上路 发表于 2018-12-27 16:58:06 | 显示全部楼层
自行车平衡总体原理及概述
关于前后轮小车平衡原理参照左右轮,虽控制方法具体有一些差别,但是总体思路类似。控制平衡的方法都是通过PID(比例、积分、微分)来调整的。左右轮通过MPU6050(检测加速度和倾角)和编码器(检测电机的位置信息)先来检测当前的状态,然后结合主开发板对编码器控制进行减速或加速从而来达到平衡。前后轮主要思路:首先要做的也是基础要保证自行车在平衡时的速度为零。通过对舵机和编码器检测,MPU6050检测自行车当前的倾角及其加速度,反馈给M3(具体正反馈还是负反馈还没确定后期研究之后再确定),同时M3会接受到编码器给电机的速度,通过电机驱动器(我们用的TB6612)来驱动电机。关于这点我们想法是速度是外加在平衡之上,也就是在平衡时速度为零的基础上再去控制加速还是减速(后期会给出原理图关于MPU6050的角度反馈和编码器的速度反馈原理)
位置闭环控制:就是根据编码器的脉冲累加测量电机的位置信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程   
速度闭环控制:就是根据单位时间获取的脉冲数(这里使用了M法测速)测量电机的速度信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程,这上两种控制方法就是PID控制的核心算法。
目前猜想是可能需要编码器配合MPU6050共同来控制车的平衡和运动,还有一种方案就是车的平衡和速度控制分开,只控制车的平衡,然后给车一个恒定的速度(不确定这种方案是否可行正在研究有待验证)来控制平衡和运动,这是我们目前关于平衡的大概思路和实施方案
项目分工:自行车的平衡  负责成员:祝来李,汪乐乐
Connecting & Messaging from Any.
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐板块

精彩推荐

热门排行

明星用户

手机版|小黑屋|AnyMSG ( ©AnyMSG 2009 - 2017 · ICP备16009991号 )

GMT+8, 2019-4-25 11:45