找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11534|回复: 12
收起左侧

简易旋转倒立摆及控制装置设计论文下载 含程序 原理图等

  [复制链接]
ID:207366 发表于 2017-6-3 14:49 | 显示全部楼层 |阅读模式
摘要
倒立摆控制系统是一个复杂的、不稳定的、非线性系统。本设计在研究倒立摆运动规律的基础上,构建其运动轨迹的数学模型,使用MATLAB进行仿真分析,在对倒立摆模型认识以后,使用k60微控制器结合PID算法给出信号驱动直流减速电机,进而对倒立摆系统进行控制,在倒立的过程中使用编码器采集摆杆角度,对摆杆反馈的角度进行处理,针对角度,角速度的方向,电机运行方向进行处理,运用PD算法调节摆杆倒立,PI参数调节电机速度,通过双回路PD\PI控制方案实现了对旋转臂位置和摆杆偏角的同时闭环控制。

目    录

一、系统方案    1
1.1 主控芯片的论证与选择    1
1.2 摆杆的角度测量的论证与选择    1
1.3 电机的论证与选择    1
二、系统结构    2
    2.1机械结构    2
    2.2测控电路结构    2
三、理论分析与计算    3
3.1倒立摆的基本模型    3
    3.2模型分析与参数测量    3
    3.3基于状态反馈的倒立控制    4
四、电路与程序设计    5
    4.1系统的硬件设计    5
    4.2系统软件设计    7
五、测试方案与测试结果    10
    5.1基本要求(1)    10
    5.2基本要求(2)    10
    5.3基本要求(3)    10
    5.4发挥要求(1)    10
    5.5发挥要求(2)    11
    5.6发挥要求(3)    11
六.其他的拓展部分    12
七、参考文献    12
附录    13

一、系统方案    本系统主要有五大部分组成,即控制部分、电机部分、传感器部分、电源部分和人机交互部分。传感器采用两个光电式旋转编码器,分别用于测量摆杆角度、电机转速。结合传感器反馈信息运用PID算法将控制信号传输给电机驱动使电机运行,带动旋转臂转动,进而控制摆杆,形成双闭环控制网络。
1.1 主控芯片的论证与选择方案一:采用AT89S52单片机

优点:AT89S52是CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。具有低功耗,价格便宜,控制简单等一系列优点。

缺点:片内资源少,没有集成的正交解码寄存器,需要外扩才能实现,而且难以实现快速和精准的反映控制。

方案二:采用飞思卡尔KinetisK60微控制器。

优点:是一款高性能的32位微控制器,片内资源丰富,内置PIT定时器、FTM定时器,有两路编码器AB相正交解码的功能,时钟频率50MHZ,具有高速的计运算能力。
缺点:频率的提高功耗也随之增大。
总结:由以上方案分析,为了可以高精度、高速度的进行系统控制,同时由于编码器使用过程中需要正交解码功能,AT89S52不满足以上要求,故本系统选择方案二,使用飞思卡尔Kinetis K60微控制器。
1.2 摆杆的角度测量的论证与选择    方案一:采用光电编码器。
    优点:无累计误差,精度高、数字信号接口。
    缺点:价格偏高。
    方案二:采用倾角传感器。
    优点:无累计误差。
    缺点:被测物体有其他加速度则无法准确计算。
    方案三:  采用角速度传感器。
    优点:直接测出角速度,理论上不受移动等其他运动影响。
    缺点:角度由积分产生,累计误差可能导致系统不稳定。
总结:由以上方案分析,为提高测量精度,同时考虑到传感器安装的难易程度,所以我们选择方案一测量摆杆角度。
1.3 电机的论证与选择方案一:采用空心杯直流减速电机。
    优点:空心杯电动机属于直流、永磁、伺服微特电机。空心杯电动机具有杰出的节能特性、灵敏方便的控制特性和稳定的运行特性。
缺点:辐射产生电磁波干扰,减速箱存在机械虚位。
方案二:采用步进电机。

优点:步进电机是纯粹的数字控制电动机,它将电脉冲信号转变为角位移,步进电机属于开环控制,累计误差小,成本相对低廉。

缺点:步进电机角度分辨率低,且转动时伴随着强烈的振动,这对旋转臂及摆杆的稳定性是不利的。
   方案三:采用伺服电机。
   优点:伺服电机是一种补助马达间接变速装置。其用作执行元件,把所收到的电信号转换成电动机轴上的角位移或角速度输出,可使控制速度,位置精度非常准确。
    缺点:减速箱存在机械虚位。
    总结:由以上方案分析,考虑到系统的稳定性,性价比等因素,我们选择方案一,采用空心杯减速电机。该电机自带精密行星减速箱和光电式编码器,同时通过对减速箱的改造可以减少机械虚位的影响,完全可以满足题目相关要求。
二、 系统结构
2.1机械结构机械结构的稳定性直接影响系统的稳定性。故该倒立摆采用钢底座,稳固性能好,支架和摆杆采用铝合金打造,具有密度小、强度高、易加工等特点。机械结构图如下:
0.png 0.png
三、理论分析与计算3.1倒立摆的基本模型
    旋转臂由转轴处的直流减速电机驱动, 可绕转轴在垂直于电机转轴的铅直平面内转动. 旋臂和摆杆之间由关节相连, 当旋臂转动时, 摆杆可绕关节在垂直于关节转轴的铅直平面内转动,根据一定的控制算法, 计算出控制规律, 并转化为电压信号提供给驱动电路, 以驱动直流减速电机的运动, 通过电机带动旋转臂的于关节转轴的铅直平面内转动,进而通过电机带动旋转臂的转动来控制摆杆的运动
0.png
     图3 倒立摆的模型结构


3.2模型分析与参数测量
建立比较精确的数学模型是控制系统设计的基础. 如图3所示, 在非惯性系S2 中对摆杆有:
0.png

…………此处省略内容请下载51hei附件查看…………

可知系统是不稳定的, 且是完全能控和完全能观的. 因此可以设计一个基于状态反馈的控制器对系统进行极点配置 , 使得系统在原点附近保持稳定. 由于倒立摆装置中没有直接测量角速度的器件, 我们采用角度的差分进行近似,在角度测量上, 硬件和软件部分都采用了滤波手段.
经过极点配置设计, 得到态反馈矩阵为:
0.png
由以上可知倒立摆系统是一个不稳定但能控能观系统。

四、电路与程序设计4.1系统的硬件设计系统的硬件主要由四大部分组成,即电源部分、主控部分、电机驱动部分、人机交互部分。各部分电路设计和功能介绍如下:
4.1.1电源部分
该系统电源部分有2部分组成,分别由一块7.2V蓄电池和一块11.1V锂电池供电。其中一块锂电池经稳压后为8.5V后为电机驱动模块供电;另一块电池为系统提供2组电源,即5V和3.3V,其中5V用于编码器、语音模块等部分的供电。3.3V用于单片机、液晶显示等部分的供电;其中8.5V和5V电源部分采用采用LM2596开关电压调节器,其具有可靠的工作性能、较高的工作效率和较强的输出电流驱动能力,功耗小等特点,从而为系统稳定、可靠地工作提供有力的保障,3.3V电源采用2块LM1117系列线性稳压器并联,其具有稳定性好,负载响应快。输出纹波小,价格低廉的优点。
0.png 0.png

4.1.2电机驱动部分
    电机驱动采用双BTS7970大功率H桥驱动,其为高强度电流的半桥电机驱动芯片。我们利用两片BTS7970B构成一个完整的全桥驱动,电流最大可达70A,并利用光耦与单片机隔离,有效保护单片机。可以很好实现电机的正转、反转、能耗制动。

4.1.3人机交互部分
人机交互模块由TFT彩屏、键盘、语音模块组成,实时显示播报参数及数据的变化,也方便我们调节控制。
0.png
4.2系统软件设计
  
        
开始
   
   
   
4.2.1系统流程图
0.png

4.2.2 摆杆的倒立状态检测
摆杆状态的检测,即摆杆角度的检测是本设计的重要点,角度大小检测的精准度直接影响到电机带动旋转臂的旋转,进而影响到摆杆的状态。摆杆自由下摆在最下方进行编码器脉冲输出零位校准;编码器为500线,摆杆运动一周,编码器脉冲输出计数为500,即当从最低点运动至最高点时,编码器输出脉冲计数为250,再次运动到最低点时编码器输出脉冲计数为500,由此判断摆杆当前角度。为了提高精度,通过将编码器A相和B相4倍频后,正交解码,测量步距变为原来的1/4,精度提高4倍。如此根据脉冲计数值可以判定摆杆摆动方向和摆动度数,进而反馈给单片机,执行相关操作。
程序框图如下:


…………此处省略内容请下载51hei附件查看…………

五 测试方案与测试结果5.1基本要求(1)    测试方案:摆杆从处于自然下垂状态(摆角0°)开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过-60°~+60°测量角度并记录测试结果。
    测试结果:
1 摆杆摆动的角度及时间测量
  测量次数
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  偏离角度/°
  
  115
  
  99
  
  115
  
  107
  
  108
  
  122
  
  94
  
  完成时间/s
  
  0.7
  
  0.5
  
  0.7
  
  0.6
  
  0.5
  
  0.8
  
  0.5
  
    结论:达到基本要求(1),摆杆可以快速达到或超过-60°~ +60°,达到题目要求。5.2基本要求(2)测试方案:摆杆从处于自然下垂状态(摆角0°)开始,驱动电机带动旋
转臂做往复旋转使摆杆摆动,看是否可以完成圆周运动。
    测试结果:
2摆杆摆动360度时间测量
  测量次数
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  完成时间/s
  
  1.1
  
  1.3
  
  1.3
  
  1.0
  
  1.1
  
  1.2
  
  1.1
  

测试结果及结论:目测摆杆开始起摆后迅速可以做圆周运动,并持续下去,达到基本要求(2)。
5.3基本要求(3)测试方案:当摆杆处于自然下垂状态下,外力拉起摆杆至接165°位置,外力撤除时,启动控制旋转臂,测量摆杆保持倒立状态时间,并且测量旋转臂的转动角度。
   测试结果:
3  摆杆保持倒立时旋转臂的转动角度
  测试次数
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  角度/°
  
  12
  
  12
  
  10
  
  8
  
  11
  
  9
  
  11
  
  13
  
  倒立时间/s
  
  长期
  
  长期
  
  长期
  
  长期
  
  长期
  
  长期
  
  长期
  
  长期
  
   结论:完全达到基本要求(3),摆杆倒立后在很小的角度内转动,系统稳定。5.4发挥要求(1)测试方案:从摆杆处于自然下垂状态开始,控制旋转臂作往复旋转运动,尽快使摆杆摆起倒立,保持倒立状态,并测量摆起的时间。
测试结果:
                3  摆杆摆起到立起的时间
  测试次数
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  起摆时间/s
  
  1.7
  
  1.8
  
  1.7
  
  1.8
  
  1.7
  
  1.9
  
  1.8
  
  1.7
  
  倒立时间/s
  
  长期
  
  长期
  
  长期
  
  长期
  
  长期
  
  长期
  
  长期
  
  长期
  
    结论:摆杆迅速摆起倒立,摆杆摆起后,可长时间倒立下去,并且旋转臂的转动的角度保持在90°内,达到发挥要求(1)。
5.5发挥要求(2)测试方案:在摆杆保持倒立状态下,我们施加干扰,即以15cm长细绳栓一只5g砝码,在摆杆上方将砝码拉起15°~45°,释放后用砝码沿摆杆的切线方向撞击摆杆上端1~2cm处,观察摆杆能否继续保持倒立状态。
测试结果:

表4砝码拉起15°时的摆杆的摆动角度


  测试次数
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  角度/°
  
  20
  
  22
  
  25
  
  22
  
  20
  
  19
  
  22
  
  24
  

5   砝码拉起30°时的摆杆的摆动角度

  测试次数
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  角度/°
  
  28
  
  31
  
  30
  
  28
  
  30
  
  32
  
  31
  
  32
  

6   砝码拉起45°时的摆杆的摆动角度

  测试次数
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  角度/°
  
  47
  
  48
  
  42
  
  44
  
  39
  
  45
  
  42
  
  50
  
     结论:摆杆在有干扰情况下仍能保持直立,在干扰时旋转臂会有不同程度的旋转,同时随着砝码拉起角度的增大,摆杆转动的角度增大,达到发挥要求(2)。
5.6发挥要求(3测试方案:在摆杆保持倒立状态的前提下,旋转臂做圆周运动,看是否能够单方向转过的角度达到或超过360°
测试结果:
7  摆杆倒立转一周的时间的测量

  测试次数
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  时间/s
  
  2.1
  
  2.2
  
  1.8
  
  1.9
  
  2.1
  
  2.2
  
  2.0
  
  1.9
  
结论:达到发挥要求(3)要求。
六.其他的拓展部分1)该设计在满足题目要求的情况下,还对摆杆的稳定度实现了更高的控制和优化,使摆杆可以很快的达到直立状态,达到更好的指标。
2)我们采用自制的控制板,添加了了语音模块,液晶显示,有良好的人机界面,同时方便测试时观察。
3为此我们增添了两个测试:一为高强度抗干扰测试,即使用50g砝码,在摆杆上方将砝码拉起15°~45°,释放后用砝码沿摆杆的切线方向撞击摆杆上端1~2cm处,观察摆杆能否继续保持倒立状态。二为快速360°旋转测试,即尽可能快使摆杆倒立旋转N周。
测试结果:高强度干扰下,摆杆仍能保持直立。力度增加后,摆杆可能会失去倒立平衡,但会迅速恢复。倒立状态下,可以快速进行旋转。
    结论:倒立摆整体性能相当稳定。
七、参考文献1】从爽,张东军,单级倒立摆三种控制方法对比研究【J】。系统工程与电子技术,2001,23(1):47-49。
【2】王辉,一类非线性系统的模糊自适应控制器设计【J】。湖南大学学报(自然科学版),2004,31(6)41-45。
【3】冯艳宾,崔红梅,李凤,模糊控制理论及其倒立摆中的应用【J】。数学通报,2003,6:1-3。
4】黄智伟,全国大学生电子设计竞赛训练教程【M】,北京:电子工业出版社,2010

单片机源程序如下:
  1. #include "include.h"//电子设计竞赛倒立摆
  2. s8 iii=1;
  3. u8 che=1,zhuan=0;
  4. extern KEY_e KEYX ;
  5. extern s16 real_L,real_R;
  6. extern float P=0,D=0,P2,D2,accL,accR;
  7. extern float I_1,I_2;
  8. extern u16 bai_flag,textdata1;
  9. extern s16 angle_bai,speed_ji,speed_bai,bai_speed,angle_ji;

  10. //电机控制PID
  11. void motor_control(s16 pwmL,s16 pwmR)
  12. {
  13.     erR1 = pwmR-speed_ji;
  14.     accR+= I_2*erR1;
  15.     real_R=(s16)(P2*erR1+real_R+D2*(erR1-erR2)+accR);//
  16. }
  17. //倒立PID
  18. void daoli_PID(s16 eagle)
  19. {
  20.     float P_1,D_1;
  21.     if(eagle<1000)
  22.         erL1=eagle-999;
  23.     else
  24.         erL1=eagle-1000;
  25.     accL+= I_1*erL1;
  26.     if(accL>5000)
  27.         accL=5000;
  28.     if(accL<-5000)
  29.         accL=-5000;
  30.     real_L =(s16)( P_1*erL1 +D_1*speed_bai +real_L+accL);
  31. }
  32. 定时器中断2
  33. void PIT2_IRQHandler(void)
  34. {   
  35.     angle_bai=FTM2_CNT%2000;//摆杆角度
  36.     if(iii<6)if(angle_bai>850&&angle_bai<1150)bai_flag=1;
  37.    
  38.     if(iii==6)
  39.     {
  40.         if(angle_bai>0&&angle_bai<750)
  41.             bai_flag=1;
  42.         else
  43.         if(angle_bai>1250&&angle_bai<1999)
  44.             bai_flag=2;
  45.         else
  46.             bai_flag=0;
  47.     }      
  48.     PIT_Flag_Clear(PIT2);       //清中断标志位
  49. }
  50. 定时器中断3
  51. void PIT3_IRQHandler(void)
  52. {
  53.     count_bai++;
  54.     if(count_bai>=5)
  55.     count_bai=0;
  56.     textdata1++;
  57.     if(textdata1>=59999)
  58.         textdata1=0;
  59.     speed_ji=FTM1_CNT;//电机速度
  60.     angle_ji+=speed_ji;
  61.     FTM1_CNT=0;   
  62.     spd2=FTM2_CNT;
  63.     speed_bai=spd2-spd1;//摆杆速度
  64.     spd1=spd2;
  65.     if(angle_bai>800&&angle_bai<1300)
  66.     {   
  67.         daoli_PID(angle_bai);      
  68.         motor_control(0,bai_speed);
  69.         pwm_control(real_L-real_R,0);
  70.             
  71.     }
  72.     PIT_Flag_Clear(PIT3);           //清中断标志位
  73. }
  74. //主函数
  75. void main()
  76. {
  77.     LCD_init();
  78.     KEY_init();
  79.     LCD_display_full(BLUE);   
  80.     motor_init();
  81.     boma_INIT(6);
  82.     iii=1;
  83.     while(1)
  84.     {   
  85.         key_check();            //检测按键状态        
  86.         if(KEYX==KEY_UP)iii++;     //准备开始
  87.         if(KEYX==KEY_DW)iii--;     //准备开始
  88.         if(iii==0)iii=7;
  89.         if(iii==8)iii=1;
  90.         for(u8 j=1;j<8;j++)
  91.         {
  92.             if(j==iii)
  93.             {
  94.                 LCD_P16x16Str(2,j-1," ",BLACK,BLUE);
  95.                 LCD_P16x16Str(7,j-1,"←",BLACK,BLUE);
  96.             }
  97.             else
  98.             {
  99.                 LCD_P16x16Str(7,j-1," ",BLACK,BLUE);
  100.                 LCD_P16x16Str(2,j-1," ",BLACK,BLUE);
  101.             }
  102.         }        //GUI(iii);//界面
  103.         if(KEYX==KEY_START)     //确认进入当前选项
  104.         {
  105.             key_check();
  106. ……………………

  107. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

完整论文下载(word格式 可编辑):
设计报告.doc (551 KB, 下载次数: 196)
回复

使用道具 举报

ID:1 发表于 2017-6-3 17:55 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:298568 发表于 2018-3-28 21:09 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:291031 发表于 2018-3-29 13:08 | 显示全部楼层
好资料
回复

使用道具 举报

ID:328599 发表于 2018-5-22 23:11 | 显示全部楼层
需要得资料,急需
回复

使用道具 举报

ID:458192 发表于 2018-12-29 17:49 | 显示全部楼层
最近在一直学习倒立摆相关内容,这个有很大的帮助,多谢分享
回复

使用道具 举报

ID:477675 发表于 2019-2-18 13:23 | 显示全部楼层
APPRECITED IT
回复

使用道具 举报

ID:484228 发表于 2019-3-4 14:28 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:516675 发表于 2019-5-8 16:48 | 显示全部楼层
楼主有没有程序的源码,有偿
回复

使用道具 举报

ID:245338 发表于 2019-5-14 17:10 | 显示全部楼层
是一份好的资料。
回复

使用道具 举报

ID:579291 发表于 2019-7-7 10:51 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:688894 发表于 2020-1-30 23:56 | 显示全部楼层
楼主 MATLAB仿真怎么弄
回复

使用道具 举报

ID:609509 发表于 2020-2-1 21:25 | 显示全部楼层
想问一下 编码器的线与转轴如何处理的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表