瑞萨杯电子设计大赛倒立摆论文资料Word文档格式.docx
《瑞萨杯电子设计大赛倒立摆论文资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《瑞萨杯电子设计大赛倒立摆论文资料Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
6测试方案与测试结果10
6.1测试方案10
6.2测试条件与仪器11
6.3测试结果及分析11
6.3.1测试数据11
6.3.2测试分析与结论11
7.结论和总结12
7.1对设计的小结12
7.2设计收获体会12
7.3对设计进一步完善的建议12
附录1:
电路原理图13
附录2:
源程序14
1设计任务与要求
1.1设计任务
设计并制作一套简易旋转倒立摆及其控制装置。
旋转倒立摆的结构如图1所示。
电动机A固定在支架B上,通过转轴F驱动旋转臂C旋转。
摆杆E通过转轴D固定在旋转臂C的一端,当旋转臂C在电动机A驱动下往复运动时,带动摆杆E在垂直于旋转臂C的平面作自由旋转。
1.2设计要求
1.2.1基本要求
(1)摆杆从处于自然下垂状态(摆角0°
)开始,驱动电机带动旋转臂作往复运动使摆杆摆动,并尽快使摆角达到或超过-60°
~+60°
;
(2)从摆杆处于自然下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;
(3)在摆杆处于自然下垂状态下,外力拉起摆杆至165◦位置,外力撤除同时,启动控制旋转臂使摆杆保持倒立状态时间不少于5s;
期间旋转臂的转动角度不大于90°
。
1.2.2发挥部分
(1)从摆杆处于自然下垂状态开始,控制旋转臂作往复运动,尽快使摆杆摆起倒立,保持倒立状态时间不少于10s。
(2)在摆杆保持倒立状态下,施加干扰后摆杆能继续保持倒立或2s内恢复倒立状态;
(3)在摆杆保持倒立状态的前提下,旋转臂作圆周运动,并尽快使单方向转过角度达到或超过360°
(4)其他
1.3题目分析
旋转倒立摆控制系统是一个复杂、不稳定的、非线性系统,是进行控制理论教学及开展各种控制实验的理想实验平台。
由于倒立摆系统本身具有的不稳定、多变量、非线性和强耦合特性,使得如何有效控地制摆杆的运动状态问题变得比较复杂和极具挑战。
对此,选择一个动力足、响应快、稳定性高的电机,适合的角度传感器和控制芯片是解决问题的关键。
2系统方案的论证与选择
本系统主要由单片机最小系统、电源、传感器、电机驱动和液晶显示等模块组成,其中单片机最小系统芯片、电机、电机驱动芯片、角度传感器决定着此控制系统的品质,下面分别论证这几个模块的选择。
2.1单片机最小系统的论证与选择
方案一:
S12XE系列。
此系列内置XGATE协处理器,集32位性能和16位架构的所有现有优势于一身。
有着卓越的系统性能,可将CPU总线频率提高到50MHZ;
出色的扩展性和兼容性可将S12X内存规模扩展到最大1MB,此系列属于高性能产品。
方案二:
S12XS系列。
S12XS系列单片机是在S12XE系列基础上去掉XGATE协处理器的单片机,是对S12XE系列经济性和兼容性的扩展,更加的低成本和更小的包装,性价比高,操作相对简单。
单片机最小系统是控制系统的核心,此系统主要是接收、处理传感器的信号向电机控制芯片发出指令控制摆轴的力度和速度的问题,综合以上两种方案,我们决定选用性价比更高的方案二S12XS系列中的MC9S12XS128MAE芯片。
2.2电机模块的论证与选择
考虑到倒立摆是一个复杂的快速、非线性、多变量、强耦合、自然不稳定的非最小相位系统,是重心在上、支点在下控制问题的抽象表现,这对电机的快速性、稳定性要求较高,且要具有良好的启动、制动和调速特性,那么选择一个强大有力的电机和一个稳定性、可控性、收敛速度和抗干扰能力强的电机芯片是关键。
2.2.1电机方案比较
伺服电机。
具有良好的启动、制动和调速特性,可很方便在宽范围内实现平滑无极调速,启动转矩大、转速快、调速范围宽、控制容易,但需要维护,会产生电磁干扰,成本高而且结构复杂。
方案二:
步进电机。
良好的角控制能力,但快速性达不到要求,力矩太大,惯性太大,抖动大,电池驱动能力弱带动不起来还需升压,不适合做单摆,被排除掉。
方案三:
直流电机RS380-ST/3545。
能够实现快速启动和制动,但调速性能较差,而系统对调速性能要求较高,故排除。
方案四:
用舵机代替电机。
舵机扭力比较大,扭矩通常都很小,精度确很高,但舵机只能匀速运动无加速度,没办法实现要求(3),故也排除。
方案五:
减速电机JGA25-370,力足够、重量轻、耗电小、散热好、扭矩较大,具有适中的转速和较强的自锁性能,使之特别适合用于机器人关节等部位并易于控制,是DIY机器人爱好者、模型爱好者的良好选择。
而且引线和连接头已做好,便于与控制电路接插式连线。
控制板引出线裸线头可焊接于控制板上或接入控制板输出端子,快装接头具有弹性卡子,连接牢固、拆卸方便。
综合上述,方案一的伺服电机的性能无疑是丝毫没问题的,但是价格实在太高,而减速电机的力足够、性能又不错,价格上实惠很多,故选择方案五。
2.2.2电机驱动芯片方案比较
BTN7970电机驱动芯片。
BTN7970内部集成了驱动电路、控制电路,以及一个P型和一个N型MOSFET管,可以灵活应用于2相或3相、直流有刷或无刷电机的控制驱动电路中,不仅可以简化电路设计,而且使得控制更加简单,还可以直接和MCU接口,同时具有电流检测,以及过温、过压、欠压、过流和短路保护等诊断功能。
其无需驱动便可以与MCU接口,且无需另外添加电机电流检测电路,外围器件少,电机控制简单。
目前该芯片已经广泛应用于微电机的嵌入式应用领域,但它也存在一些缺点:
输出功率有限,不适合大功率直流电机驱动的需求;
采用PWM信号的频率和占空比有一定限制;
没有光电隔离电路,当驱动电路发生击穿故障时会损坏与之相连的MCU等器件。
L298电机驱动芯片。
L298是一款单片集成的高电压、高电流、双路全桥式电机驱动,设计用于连接标准TTL逻辑电平,驱动电感负载(诸如继电器、线圈、DC和步进电机)。
L298提供两个使能输入端,可以在不依赖于输入信号的情况下,使能或禁用L298器件。
L298低位晶体管的发射器连接到一起,而其对应的外部端口则可用来连接一个外部感应电阻。
L298还提供一个额外的电压输入,所以其逻辑电路可以工作在更低的电压下。
L298是步进电机专用控制器,它能产生4相控制信号,可用于计算机控制的两相双极和四相单相步进电机,能够用单四拍、双四拍、四相八拍方式控制步进电机。
芯片内的PWM斩波器电路可开关模式下调节步进电机绕组中的电机绕组中的电流。
2.2.3最终方案选择
如选择步进电机的话,L298电机驱动芯片无疑是最佳选择。
但是JGA25-370成为了我们的首选电机,那么电机驱动芯片BTN7970就成为我们的最终选择。
2.3角度感器的论证与选择
如果说电机在此系统中相当于摇动摆杆的手臂,那么传感器就相当于眼睛,只有看得清楚了才会向如大脑般的核心控制系统发出正确的指令让手臂做到恰到好处的调整,所以在本设计中,传感器的选择可以说是起着画龙点睛的作用。
WDD35D电位式角度传感器。
它是国产精密导电塑料电位器,标准阻值有1K、2K、5K,阻值公差为±
15%,独立线性精度达到±
0.5%、±
0.1%,理论电气转角为345°
±
2°
,工作温度范围广,机械转角360°
(连续),其还有多种电阻可选,多种线性度可选,机械寿命长,动态噪声小,分辨率高,转动顺滑的优良性能。
角度传感器ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达±
16g。
数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。
ADXL345非常适合移动设备应用。
它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。
其高分辨率(3.9mg/LSB),能够测量不到1.0°
的倾斜角度变化。
但是摆旋转时的向心加速度会对重力加速度造成影响,不便检测角度。
综上所述,较方案二,方案一的性能虽然低点但是足够用,而且操作方便,价格实惠,因此我们选择了方案一。
3系统理论分析与计算
3.1系统机械结构
图3-1结构正视图
其中,角度传感器50.0ɡ,铁柱6.0ɡ,空心柱3.6ɡ,碳素杆10.4ɡ,摆臂62.4ɡ,摆杆重心到支点的距离为10㎝。
3.2电机选型分析
根据题目要求,摆杆选取6ɡ的铁柱、3.6ɡ的空心柱和10.4ɡ的碳素杆组成,则摆杆总质量为20ɡ;
摆杆重心距离支点距离为10㎝,则通过计算得出实际扭矩T=M×
L=20ɡ×
10㎝=0.2㎏•㎝。
根据扭矩等的冗余量要求,我们选择JGA25-370减速电机,它的额定电压6V,空载时转速为281rpm,负载时扭矩为0.5㎏•㎝,堵转的时候扭矩为4㎏•㎝。
符合设计要求。
3.3摆杆状态的检测和计算
因需对摆杆做360°
连续检测,所以选择角度传感器是最简便、快捷的方式。
再加上信号处理电路的输入电阻与传感器的电阻匹配,所以阻值为0.5-10KΩ,阻值公差为±
15%,独立线性精度为±
0.5%,理论电气转角:
345°
2°
,实现机械转角为360°
(连续)的360WDD35D电位式角度传感器非常适合。
3.3驱动与控制的算法
电机输出能量等于其输出功率乘以时间W=Pt,此能量用来对摆臂、角度传感器和摆杆做功。
而摆臂的速度可以在电机上的光电门设备得出摆臂的速度,因此也可以算出摆臂运动时候能量的变化量(等于动能的变化量)W1=1/2(MV2t-MV20);
电机对摆臂做功W2可以从摆臂机械能的变化量(等于重力势能的变化量)W2=mgh2-mgh1(其中h为有效高度);
对传感器做功W3也可以算出。
因此对W1、W2再进行物理计算处理便得出摆臂的加速度a和摆杆摆动的角度θ。
4系统硬件设计
4.1驱动模块电路设计
图4-1驱动模块电路原理图
驱动模块电路是本设计最重要的电路。
角度传感器将信号反馈给单片机最小系统,单片机最小系统便向电机驱动芯片发出指令,这样的循环信号通过此电路后便能向摆臂和摆杆输出相应的物理量,实现了对摆杆运动状态的控制。
4.2电路原理图(见附录1)
5系统软件设计
5.1系统框架图
5.2系统总流程图
5.3程序清单(见附录2)
6测试方案与测试结果
6.1测试方案
A、机械结构测试阶段,通过PWM控制直流减速电机的转速,从而估算出摆杆和旋臂的重心和长度的最佳组合.
B、测试调试阶段,利用LCD5110显示角度传感器实时的电阻值、角度、电压幅值,从而根据上述的值对算法进行相应的调整。
C、PID算法调试阶段,通过串口通信和相应的上位机对P、I、D的值进行调整。
6.2测试条件与仪器
测试条件:
检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:
数字万用表,LCD5110、串口调试小助手、PID上位机。
6.3测试结果及分析
6.3.1测试数据
A、硬件测试:
检验方法:
将摆杆要能够在垂直平面灵活旋转;
将拉起至水平起至水平位置后松开,摆杆至少能够自由摆动3个来回;
输入电压为7.2V,经过稳压电路后输出为5V。
检验结果:
各电路均无短路、短路的现象,焊点无虚焊现象。
机械结构良好,摆杆能够在垂直平面灵活旋转。
B、硬件软件联调:
测量并记录摆杆的角度与角度传感器阻值及输出电压的关系,如下表所示。
摆杆的角度(°
)
输出电压(V)
角度传感器阻值(Ω)
180
2.79
532
-165
3.02
575
165
2.48
472
-75
4.33
825
75
1.07
204
6.3.2测试分析与结论
测试内容
测试结果
备注
摆杆的稳态精度
3°
旋臂的稳态精度
10°
旋臂的快速响应时间
约为2秒
旋臂的最大偏移
35°
最大干扰
15°
人为施加于摆杆
最小回复时间
约为0.3秒
摆杆
通过多次测量,得出角度传感器的阻值与输出电压的值基本成线性关系,整个系统精度较高,基本满足题目指标要求。
7.结论和总结
7.1对设计的小结
此旋转倒立摆装置,总体结构简洁、大方,底座等材料还属于废品重新利用,符合可持续发展的环保道路,而且其构造稳固,有利于系统性能的发挥。
检测出来的数据显示,其总体性能比较好,机械性能不错,如果经济允许,换上更加优质的元器件,其性能会更加完美。
7.2设计收获体会
通过这次比赛,我们收获匪浅。
学到了很多全新的知识,比如PID算法,更加了解角度传感器的使用和性能;
在制作的过程中遇到了很多困难,但我们相互安慰、鼓励,从不言弃,努力找出原因、突破难点,一步一步走向目的地;
最重要的是这四天三夜的奋战曾强了我们的合作精神,促进了我们的友谊!
7.3对设计进一步完善的建议
1、部分材料可能可以选取更轻便的材料;
2、部分结构可以合并到一起,减少工艺结构;
3、如果经济允许,可以换上性能更加好的元器件;
4、机械结构的构架和稳定性待加强;
5、深入学习PID算法,设计更加简洁、完善的程序。
电路原理图
A、驱动模块电路原理图:
B、电源模块电路原理图:
源程序
A、主函数
#include"
define.h"
math.h"
5110.h"
delay.h"
#include<
stdio.h>
#include"
sci0.h"
pid.h"
///////////////////主函数///////////////////////
voidmain(void)
{
//定义变量....
inta,i;
intangle;
intn;
//EnableInterrupts;
//使闹卸宪
Init_PLL();
//40Mhz
Init_AD();
//AD初始化
Init_IO();
//IO口初始化
//Init_PIT();
//5ms中断
//Init_ECT();
//定时器初始化
Init_PWM();
//PWM初始化
LCD_init();
//5110初始化
LCD_clear();
//5110清屏
//SCI0_Init();
while
(1)
{
AD_Value[4]=AD_read(4);
//AD
//jiaodu1=jiaodu_calulate();
LCD_display_int(0,0,AD_Value[4],5);
//列行要显示的数字数字的位数
//LCD_display_int(0,1,PID_m_add,5);
//LCD_display_int(0,2,PWMDTY23,5);
//LCD_display_int(0,3,PWMDTY67,5);
//LCD_display_int(0,2,PID_m_add,5);
//if(jiaodu1>
150&
&
jiaodu1<
210)
//{
adpid=AD_read(4);
Motor_ctl(612);
//}
//xiaobaikuai();
//PWMDTY23=0;
//0--1600
//PWMDTY67=1200;
//0--1600顺时针
}
}
//////////////////中断函数/////////////////////
#pragmaCODE_SEG__NEAR_SEGNON_BANKED
voidpingheng();
voiddaoli();
externsintPID_m_add;
voidinterrupt66PIT0()//5ms定时中断
{
DisableInterrupts;
pit5_flag=1;
//pit5_flag,5ms定时标志
PITTF_PTF0=1;
//清中断标志位
flag1++;
flagpingheng=1;
OutData[0]=AD_Value[4];
OutData[1]=jiaodu_calulate();
OutData[2]=PID_m_add;
//V_ave;
//D_CCD*100;
OutData[3]=Angle_jsdj;
;
//Angle_jsdj;
OutPut_Data();
EnableInterrupts;
#pragmaCODE_SEGDEFAULT
B、初始化程序
voidInit_AD(void)
ATD0CTL4=0x03;
//Setsampletimeandprescaler
//ATD0CTL4=0X09;
ATD0CTL3=0x88;
//Rightjustifieddata,ConversionSequenceLength=1
ATD0CTL5=0X20;
//Setwraparound
ATD0CTL1=0x3F;
//10bit12-bitdata//5f
ATD0CTL2=0x40;
//FastFlagClear
/*
*********************************************************************************************************
*Description:
AD_Measure12
*/
///*
intAD_read(unsignedcharChannel)
ATD0CTL5=Channel;
while(ATD0STAT0_SCF==0);
returnATD0DR0;
}
//*/
//IOinitializtion
voidInit_IO(void)
DDRP=0xff;
//P口,PWM通道输出
DDRM=0xff;
//数码管位选端口输出
DDRK=0xff;
//数码管片选端口输出
DDRB=0xff;
//低四位拨码开关输入,高四位LED灯输出
DDRH=0xc0;
//按键输入PH0-PH5
PPSH=0xc0;
//PH0-PH5下降沿
PIEH=0x3F;
//PH0-PH5中断使能
DDRE=0xff;
DDRJ=0xff;
DDRS=0xff;
DDRA=0xff;
//PITinitialztion
voidInit_PIT(void)
PITCFLMT_PITE=0;
//定时中断关
PITCE_PCE0=1;
//定时器通道0使能
PITMTLD0=40-1;
//8位定时器初值设定。
PITLD0=5000-1;
//16位定时器初值设定。
中断间隔=80M/(40*2000)=5ms;
PITINTE_PINTE0=1;
//定时器中断通道0中断使能
PITCFLMT_PITE=1;
//定时器使能
voidInit_PIT(void)
PITMUX=0X00;
PITMTLD0=0XFF;
PITLD0=0X7A11;
//1S
PITINTE=0X01;
PITCFLMT=0X80;
//定时器使能
//accumulatorinitlize
voidInit_ECT(void)
PACTL=0x40;
//测速用的脉冲累加器配置
PACNT=0x0000;
//测速用的脉冲累加器配置
TIOS_IOS6=0;
//通道6为输入捕捉
TIE_C6I=1;
//通道6输入捕捉中断允许
TFLG1_C6F=1;
//清中断标志