倒立摆.docx
- 文档编号:16748369
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:14
- 大小:208.86KB
倒立摆.docx
《倒立摆.docx》由会员分享,可在线阅读,更多相关《倒立摆.docx(14页珍藏版)》请在冰点文库上搜索。
倒立摆
C题:
简易旋转倒立摆及控制装置
参赛队号:
20130064
题目:
简易旋转倒立摆及控制装置
摘要:
本装置根据旋转倒立摆模型,采用STC12C5A60S2单片机作为控制系统的核心,JGA25-370直流电机控制旋转臂转动,L298N作为电机驱动芯片,WDY32C作为角位移传感器来检测摆杆的位置,并通过按键命令实现不同功能,使单片机输出不同信号控制电机的转速和转向来控制旋转臂的转动,由此来控制摆杆的运动状态。
在摆杆倒立的控制中,我们运用PID算法,通过采样摆杆角度的差值计算出旋转臂所需的转速和转向以达到摆杆倒立的状态。
该系统布局较为合理,控制精度高,达到了题目的基本要求。
关键词:
PID算法直流电机角度转速旋转倒立摆
目录
引言……………………………………………………………………………1
1、系统方案的设计与论证……………………………………………………1
1.1系统总体框架……………………………………………………………1
1.2方案比较与论证…………………………………………………………1
控制模块…………………………………………………………………1
电机驱动模块……………………………………………………………1
角度测量模块……………………………………………………………1
2、单元模块设计………………………………………………………………2
控制模块………………………………………………………………2
电源模块………………………………………………………………2
电机驱动模块……………………………………………………3
角位移传感器模块………………………………………………3
驱动控制与算法…………………………………………………3
3、软件设计……………………………………………………………………3
4、系统测试……………………………………………………………………4
5、设计实现……………………………………………………………………5
6、设计总结……………………………………………………………………6
7、参考文献……………………………………………………………………6
附录……………………………………………………………………………7
引言
倒立摆系统是一种被广泛运用的物理模型,由此产生的控制理论已广泛用在精密仪器加工、导弹拦截等方面。
该题目要求自制简易旋转倒立摆装置,用电机控制旋转臂转动继而控制摆杆的运动状态。
我们利用按键控制不同功能,角移位传感器检测角度结合PID算法传输给单片机信号,通过单片机输出信号给电机,电机与旋转臂一体,旋转臂的不同运动情况可得到摆杆的不同运动状态。
利用按键该系统更容易控制不同的功能,PID算法的合理运用易于控制电机的转速和转向,角移位传感器的检测方便所需数值的输出,大扭力直流电机更易于该装置功能的实现。
1、系统方案的设计与论证
1.1系统总体框架
图1.1.1系统框架
1.2方案比较与论证
(1)控制模块
方案一:
采用ATMEL公司的AT89C51作为系统控制器的CPU。
该单片机基于8051内核,软件编程灵活、自由度大,但其运算速度较慢,功能单一,不能达到本系统的要求。
方案二:
采用宏晶公司的STC12c5a60s2。
该单片机运算速度比AT89C51快8-12倍,内置AD转换,节省了片外AD,强大的定时器,可储存大容量程序,自带的PWM输出口可直接输出两路PWM波,更适合强干扰场合。
并且成本低,运用广泛,市场上容易购买,完全满足本系统的要求。
方案选择:
基于以上分析,我们选择方案二。
(2)电机驱动模块
方案一:
选用L9110电机驱动。
该驱动芯片具有良好的抗干扰性,较大的电流驱动能力,但是其响应较慢,驱动直流电机的效果不太理想。
方案二:
选用L298N电机驱动。
该芯片控制原理简单,输出电流大,功率增强,可以驱动感性负载,方便单片机控制,而且输出波动小,线性好,对邻近电路干扰小,完全适合本系统使用。
方案选择:
基于以上分析,我们选择方案二。
(3)角度测量模块
方案一:
选用MMA7361三轴模拟加速度器。
MMA7361可直接输出模拟信号至主控芯片,主控芯片通过AD采样得到所测信号值。
但是通过测试我们发现,该角度传感器测量运动中物体时测得的角度值变化幅度过大,测量精度不准,因此不适合完成本系统的要求。
方案二:
选用WDY32C角位移传感器。
角位移传感器的转轴转动时输出的电阻值不断改变,因此输出不同的电压。
测试时发现其AD采样输出的角度值非常精确。
而且该传感器的转轴旋转平滑,方便固定,极适合本系统的要求。
方案选择:
基于以上分析,我们选择方案二。
综上,控制芯片选择STC12c5a60s2单片机,电机驱动芯片选择L298N,通过WDY32C即时获取摆杆的角度位置。
2.单元模块设计
(1)控制模块
采用宏晶公司的STC12c5a60s2,该单片机最小系统原理图如下:
图2.151单片机最小系统图
(2)电源模块
本次设计中,各芯片和传感器的供电电压一般都为5V左右,因此我们使用7.2V的移动电源作为电压源,通过470uf的电容进行滤波和能量存储,用三端稳压器LM2940进行稳压稳定输出为5V,220uf的电容使输出更加稳定。
市电制作的5V稳压电源原理图如下图,实际制作中输入端接入移动电源。
图2.25V稳压电路
(3)电机驱动模块
L298n驱动模块两套H桥驱动电路,每套H桥有4个三极管,两两相对导通时可以控制流过电机的电流方向,进而控制电机正转、反转。
电路原理图见附录图2.3。
(4)角移位传感器模块
WDY32C角移位传感器通过转轴转动改变电阻值,电路电压输出经过AD采样转化为角度值,系统通过角度值得变化可以简便的控制摆杆的状态,角移位传感器图见附录图2.4。
(5)驱动控制算法模块
本系统我们采用PID算法。
PID控制器是把比例、积分和微分作用结合起来,以利用其各自的优点,通过线性组合作为控制器的输出量,作用于被控对象。
PID控制器内各环节作用如下所述:
(1)比例环节实时地按照一定比例反映系统的偏差量,即一旦偏差出现,控制器立即产生控制作用,以减小偏差。
比例系数KP越大,系统的调整时间就越短,稳态误差也越小,但KP过大,会造成超调量过大,引起系统不稳定。
(2)积分环节消除系统的稳态误差,提高系统的无差度。
积分系数KI越大,积分作用越强,稳态误差越小,调整时间越短,但KI大,会造成稳定性变差。
(3)微分环节能及时地反映偏差量的变化趋势和变化率,有效改善系统的动态性能。
通常,微分系数KD大,系统超调量减小,但KD大,也会造成系统稳定性下降。
图2.6模拟反馈控制图
3、软件设计
系统软件采用C语言开发,在KEIL环境下调试。
软件程序设计采用模块化的结构,便于分析和实现功能。
主程序结构流程图如下:
否
图3.1软件流程图
4、系统测试
测量仪器:
量角器、秒表
测量方法:
用量角器测量摆杆摆动角度,通过秒表测量功能完成时间
测试过程:
多次测试,得到摆杆不同的摆动角度和完成摆动所需时间。
摆杆状态检测测试结果:
摆动角度
-65度—+70度
-97度—+100度
-127度—+125度
完成时间
2秒
3秒
5秒
表4.1功能一
摆杆能否圆周运动
能
能
能
完成时间
7秒
15秒
7秒
表4.2功能二
通过多次测试,系统的部分基本功能可以实现。
几次测试之间存在一定的偏差,同一个功能摆杆的摆动状态出现的不一样,主要是电机的抖动会影响性能,程序控制方面仍存在问题,同时空气阻力、摆杆长度、摩擦力会影响系统的功能,但是能完成部分的基本要求。
5、理论分析与计算
(1)电机选型
我们在42H48410步进电机和JGA25-370直流电机之间进行测试选择,42H48410型步进电机是4线2相制,靠脉冲信号控制前进的步数,整步步距角1.8度,按照节拍工作,定位比较精确,但是步进电机的最大转速较小,调速性能较差,电机振动问题较为严重,无法完成本题的要求。
选用JGA25-370直流电机控制,直流电机只要加上合适的电压就会转,节省成本,且直流电机的调速性能好,启动转矩大,电机大扭力,可以得到所需要的高低速,符合本系统的要求。
(2)驱动与控制算法
在实现过程中算法的编写容易出现问题,尝试了多种,最终确定用PID算法。
基本原理:
测量角度值Q,设定角度A;
error=A-Q;(当前角度误差)
ERROR=error-errorlast(上次角度误差)
(摆杆转角)B=P*error+D*ERROR;
独立积分式,这种方法把积分器独立出来,
i(t)=Ki*∫(e(t))dt
转换为:
i(k)=i(k-1)+e(k)
最后把比例,积分,微分三个部分叠加在一起
y(k)=Kp*e(k)+Ki*i(k)+Kd*(e(k)–e(k-1))
增量式:
对标准的 PID 公式微分后,可得:
dy=Kp*de+Ki*e+Kd*dde
离散化后得:
dy(k)=y(k)–y(k-1)=Kp*(e(k)–e(k-1)+Ki*e(k)+Kd*(e(k)-2*e(k-1)+e(k-2))
即:
dy(k)=y(k)–y(k-1) =(Kp+Ki+Kd)*e(k)+(-Kp-2*Kd)*e(k-1)+Kd*e(k-2)
独立积分式与增量式其实是一个公式,各自表述,没有本质的区别,我们可以从独立积分式导出增量式:
y(k)=Kp*e(k)+Ki*i(k)+Kd*(e(k)–e(k-1))
y(k-1)=Kp*e(k-1)+Ki*i(k-1)+Kd*(e(k-1)–e(k-2))
上述两个公式相减可得:
dy(k)=y(k)–y(k-1)=(Kp+Ki+Kd)*e(k)+(-Kp-2*Kd)*e(k-1)+Kd*e(k-2)
6、设计总结
本系统采用stc12c5a60s2作为主控制芯片,角移位传感器测量角度,同时反馈给单片机控制电机转速,最终完成了部分基本功能。
没有完成功能的主要原因是机械结构没有很合理搭建,导致作品制作过程中出现许多问题,在控制上多了许多麻烦。
在软件设计过程中最大的感触是C语言的模块化编程具有极大的简便性,为方案的软件编程设计提供了较为直观的思路,同时在整合程序时非常方便,节省了不少的时间。
在硬件设计时我们也遇到了很多问题,首先是电路的焊接,极易出现虚焊和短路情况,在制作过程中也烧坏不少的元器件,同时由于电路故障不易检测,给我们带来的很大的困扰,我们深刻的认识到,在焊接方面必须要下功夫,要保证不出现虚焊短路的错误,并且每个组员都要掌握基本的焊接技术。
除了知识技能的学习,我们最大的收获就是组员之间的相互合作与信任,仅仅依靠一个人的力量是不行的,必须分工合作,同时组员之间注意交流沟通,互帮互助,才能更快更好的完成作品的制作。
7、参考文献
[1]郭天祥.新编C语言51单片机教程.北京:
电子工业出版社,2009
[2]谭浩强.C语言设计.北京:
清华大学出版社,1991
[3]童诗白.模拟电子技术基础.北京:
高等教育出版社,2012
[4]胡伟,季晓衡.单片机C程序设计及应用实例.北京:
人民邮电出版社,2003
[5]宋受俊,刘景林,张智慧.一种控制改善PID控制性能的简单方法.微特电机,(5):
32—35,2007
附录:
电路设计:
图2.3电机驱动电路
图2.4角移位传感器
硬件电路原理图
附录图1
主程序:
电机转动
voidmain()
{
ucharP=15;
ucharD=3;
AD_initiate();//初始化
init();
CCON=0;//PCA初始化
CL=0;//PCA的16位计数器低八位
CH=0;//PCA的16位计数器高八位
CMOD=0x00;
PCA_PWM0=0x00;//控制占空比的第九位为0
CCAPM0=0x42;//允许P1^3作为PWM输出
CR=1;//启动PCA计数器
while
(1)
{
AD();
delay(10);
x=date1;
x=(date1/0.284)*0.1+0;
x=x+92;
if(x>360)
{
x=x-360;
}
else
{
x=x;
}
ad1x1=x;
ysx1();
y=ad1x1;
error=y-305;
t=error;
Error1=error-errorlast;
errorlast=t;
if(error>15||error<(-15)||error==0)
{
in1=0;
in2=0;
}
elseif(error<15&&error>0)
{
in1=0;
in2=1;
bt=error*P+Error1*D;
CCAP0L=bt/2;
CCAP0H=0xff-bt;
}
elseif(error>(-15)&&error<0)
{
in1=1;
in2=0;
bt=error*P+Error1*D;
CCAP0L=bt/2;
CCAP0H=0xff-bt;
}
}
}
元器件清单:
STC12c5a60s21个
L298N电机驱动1个
JGA25-370直流电机1个
JGA25-370角移位传感器1个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 倒立
![提示](https://static.bingdoc.com/images/bang_tan.gif)