基于自由摆的平板控制系统4资料Word格式文档下载.docx
- 文档编号:7119554
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:19
- 大小:182.38KB
基于自由摆的平板控制系统4资料Word格式文档下载.docx
《基于自由摆的平板控制系统4资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于自由摆的平板控制系统4资料Word格式文档下载.docx(19页珍藏版)》请在冰点文库上搜索。
二、方案论证与比较
1.控制器的选择
方案一:
采用AT89S52单片机作为主控制器。
它是一种低功耗、高性能CMOS8位微控制器,具有8K可编程Flash存储器。
优点是价格低廉、程序资源丰富、技术比较成熟;
缺点是运算速度慢、程序储存空间小啊。
方案二:
采用TI公司出品的一款低功耗16位单片机MSP430F149。
该芯片内含三个捕获/比较寄存器的16位定时器Timer_A3,七个捕获/比较寄存器的16位定时器Timer_B7和8通道12位A/D转换器ADC12等。
方案三:
采用PHILIPS公司出品的LPC2119ARM7内核处理器。
优点是处理速度快呀!
而且片内外设非常丰富;
缺点是价格高花钱要多一些。
以上方案均可完成本题设计任务,但综合考虑了性价比、资料获取的难易、电路的难易程度等因素最后我们决定采用方案一。
2.电机的选择
采用步进电机的优点是在非超载的情况下不受负载变化的影响、速度稳定、控制准确、不用电刷、可靠性高、寿命长;
缺点是如果控制不当容易产生共振和难以运转到较高的转速、造价较高、控制程序也较为复杂。
采用直流电机的优点是结构简单、程序资源丰富、造价较低、使用普遍;
缺点是容易产生误差、实现精确转弯时也存在一定困难。
虽然可以用信号源和传感器进行校正,但这样无疑增加造价以及系统复杂程度,而且无法满足本设计对精度的要求。
由于自由摆的特性和设计要求,不需要求高的速度,但精度要求精确,经过比较选用了方案一。
3.电机驱动的选择
采用继电器驱动的步进电机控制是通过开关的切换,实现对电机的各相绕组分时通入脉冲达到换向和调速的功能。
优点是电路非常简单;
缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性也不高。
采用L298N驱动的主要优点是可以直接用单片机的I/O口提供标准逻辑电平信号控制,且具有两个使能控制端;
缺点是价格稍高、电路又较复杂。
由于大赛的时间短、工作量大、对可靠性要求也比较高,所以我们选用集成芯片L298来驱动步进电机。
4.角度测量的选择
光电传感器+码盘的优点是价格便宜、货源广泛、结构简单、原理通俗易懂和易于实现;
缺点是输出的开关量易受到干扰。
采用加速度传感器ADXL202的优点是PWM输出易与单片机进行接口,线性输出可以做到高精度控制;
缺点是算法复杂和编程困难。
采用精位电位器式倾角传感器的优点是其输出量是0~5V压信号,灵敏度为40mV/°
;
缺点是响应速度稍慢。
基于上述考虑,我们拟采用方案一。
三、系统硬件设计和软件流程
1.系统工作原理
AT89S52最小系统为整个系统的大脑,上下两部分光电传感器为系统提供单摆运动状态的信号。
步进电机随着信号的改变而不断地改变转动角度。
上面的传感器通过检测码盘上的黑白色区域可以判断单摆是在垂直线的左面还是右面;
下面的两个传感器可以检测到光盘上约1cm宽的黑色条形区域,黑色条形区域与平板成90°
角与单摆成零度,当两个传感器均达到黑色条形区域时,同时发送回两个高电平信号,这样可控制平板在单摆不动的情况下为水平。
逆时针向左提升单摆与垂直成60°
角,调节平板水平,放上硬币。
松开提升单摆的手,单摆自由落下,同时按下平板运动开关。
平板迅速逆时针转动,当下面的两个传感器检测到黑色条形区域时平板停止转动。
当单摆摆过中心线向另一侧摆动时,上面的传感器检测单摆在中心线的右侧摆动,在此之后下面的传感器不在工作。
平板逆时针转动,使硬币不能因惯性而飞出。
当单摆达到最高点下降时平板随即转回当前的角度,周而复始硬币就不会再单摆的运动中下落。
系统结构框图如图4所示。
图4系统结构图
2.角度测量
图5光电传感器原理图
光电传感器模块主要是由施密特触发器CD40106和TRCT5000红外光电对管组成,如图5所示。
CD40106内部有六个施密特触发器,每个电路的功能相当于反相器。
它能够将TRCT5000红外光电对管传感器对黑白颜色检测送来的微小电压差别进行比较,输出变化的高低电平信号给单片机。
3.电机
步进电机的驱动采用L298N集成芯片,电路原理如图6所示。
图6L298驱动电路电路原理图
电机驱动电路是由L298芯片及一些外围元件组成,如图6所示。
L298N工作电压高,最高工作电压可达46V,输出电流大,瞬间峰值电流可达3A,持续工作电流为2A,内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载,具有两个使能控制端,在不受输入信号影响的前提下允许或禁止器件工作,有一个逻辑电源输入端,其内部逻辑电路部分在低电压下工作。
图中输入端IN1、IN2、IN3、IN4分别控制L298N的输出OUT1、OUT2、OUT3、OUT4引脚的电压极性变化,从而控制电机正、反向转动或不转。
5软件流程图
图7软件流程图
四、理论分析与计算
基于自由摆的平板控制系统主要在于平板的状态控制,既要结合自由摆的自身摆动特性,也要了解平板设计要求,全方位考虑分析、计算出符合设计要求的可行性方案。
自由摆的示意如图8所示。
图8自由摆示意图
单摆往返摆动一次所需要的时间称为单摆的周期,当摆幅很小时,单摆周期满足以下公式:
(1)
以上公式只适用于单摆的摆角小于5°
时,若摆角较大时,根据振动理论,周期不仅与摆长L有关,而且与摆动的角振幅θ有关,其公式如下:
(2)
平板状态的分析:
本系统采用光电传感器和自制码盘构成的角度测量模块。
码盘固定在摆杆的轴承处,光电传感器通过硬件系统把检测到的黑条纹数转化成脉冲数,把计算出自由摆的摆角度数转化成控制步进电机的旋转角度数,来控制平板的状态。
设光电传感器检测到的黑色条纹数为N,码盘上共有黑白间隔的条纹数200个,故自由摆转过的度数为
A=1.8*N(3)
五、创新点
本设计采用步进电机,依靠它精确稳定的“步距角”特点和软件程序的结合,是平板能更好的配合自由摆的摆动,更容易控制。
六、系统测定
1测试及结果
测试1:
按基本要求1测试,测试结果如表1:
表1基本要求1的测试数据
测试次数
平板偏差绝对值
1
20
2
9
3
18
4
5
通过表1的测试五组数据分析,经过反复调试步进电机正常精确运行,满足基本要求1。
测试2:
按基本要求2测试,测试结果如表2:
表2基本要求2的测试数据
硬币是否滑落
没有滑落,偏移位置小
滑落
没有滑落,无偏移
6
7
8
10
通过表2测试的十组数据分析,由于偶然误差的存在及人为控制精度等因素的存在,能达到第二个基本要求。
测试3:
按基本要求3测试,测试结果如表3:
表3基本要求3的测试数据
结果
全部滑落
滑落5,叠放3
滑落6,叠放2
滑落4,叠放3
滑落3,叠放5
滑落2,叠放5
滑落1,叠放4
通过表3中十组测试数据分析知,由于操作人员手动操作自由摆及偶然误差的存在,经过反复实验和调试可基本完成基本要求的第三点,当然这也考验着操作人员的心理素质和肢体协调力。
2.误差分析
引起误差的原因是多方面的,主要分为偶然误差和系统误差。
偶然误差我们是不可避免的,但可以通过多次测量取平均值的方法来减小偶然误差。
系统误差主要来源有系统结构引起的误差和自然环境引起的误差,如摆杆和轴承间的摩擦引起的误差和测量仪器精度引起的误差。
七、心得体会
本次设计考核了我们将理论知识应用到实践中的能力,锻炼了自己的思考和动手能力,提高了我们独立思考、解决问题、设计、创新的能力和团队合作的能力,并为我们就业工作积累了经验。
在实际的动手设计中我学到了好多书本上学不到的知识,让我们进入一个全新的知识领域,领略了怎样在实践中锻炼自己,在设计中怎样排除万难,从生理与心理去克服困难,最终设计成功实现目标。
比赛之中我们也有心情沮丧的时候,但是我们大家相互鼓励,勇往直前,终于克服了困难,完成了设计。
在碰到困难时不急不燥,在自主解决的前提下,团队成员之间进行讨论研究。
正是这种团队精神才让我们在竞赛中能够克服各种困难,更让我们感受到团队精神的力量。
这次的比赛经历是我们大学四年乃至一生的财富!
最后我们要感谢这这么多天来一直支持我们,帮助我们克服重重难关的各位老师和各位辛勤工作的评委老师,没有你们的支持和帮助,就没有我们锻炼和充实我们能力的比赛机会。
对此我们要深深地道一声:
老师,你们辛苦了!
附录1整体电路图
附录2源程序:
#include"
reg52.h"
#defineTHVALUE(0xEC)//5毫秒定时
#defineTLVALUE(0x78)
#defineLEFT2RIGHT
(1)
#defineRIGHT2LEFT
(2)
#defineLEFTSIDE(0)
#defineRIGHTSIDE
(1)
#defineSTEPPERDELTA(0.9)
#defineLIGHTDELTA(1.8)
#defineDELTALEFT
(1)
#defineDELTARIGHT(-1)
#defineMAXINDEX(7)
#defineMININDEX(0)
#defineFINDIT(0)
#defineSTEPPERPORT(P0)
#defineX5MSTIMES(13)
#defineENCHANGEUPTIME(150)
#defineACCDELTA
(1)
#defineENCONTROLLIMIT
(1)//控制的灵敏度,最小值为1
#defineNOCONTROLUPLIMIT(3)
sbitSensor1=P1^0;
sbitSensor2=P1^1;
sbitSideSensor=P3^3;
sbitLed1=P1^2;
sbitLed2=P1^3;
unsignedcharcodeStepper[]={
0x09,0x01,0x03,0x02,
0x06,0x04,0x0C,0x08
};
signedcharGlobalIndex;
unsignedcharWhichSide,WhatDir;
signedintGlobalAngelPuls,OldGlobalAngelPuls;
unsignedcharForMAcc,MAccFlag,PowerOnFlag;
/*******************************************************************************/
voidxDelay(unsignedintx)
{
unsignedchary;
for(;
x>
0;
x--)
for(y=0;
y<
110;
y++);
}
voidSearchO(void)
Sensor1=1;
Sensor2=1;
GlobalIndex=MININDEX;
do{
STEPPERPORT=Stepper[GlobalIndex];
if(GlobalIndex>
=MAXINDEX)GlobalIndex=MININDEX;
elseGlobalIndex++;
xDelay(8);
}while(!
((Sensor1==FINDIT)&
&
(Sensor2==FINDIT)));
voidStepperMove(intnPuls)
intTemp;
if(nPuls<
0)
{
Temp=-nPuls;
Temp>
Temp--)
}
else
Temp=nPuls;
if(GlobalIndex<
=MININDEX)GlobalIndex=MAXINDEX;
elseGlobalIndex--;
/********************************************************************************/
voidInit(void)
PX0=0;
IT0=1;
EX0=1;
PX1=0;
IT1=1;
EX1=1;
SideSensor=1;
TMOD=0x01;
TH0=THVALUE;
TL0=TLVALUE;
ET0=1;
EA=1;
PowerOnFlag=1;
GlobalAngelPuls=0;
OldGlobalAngelPuls=0;
ForMAcc=0;
WhatDir=LEFT2RIGHT;
TR0=1;
MAccFlag=1;
intAbs(inta)
{return(a>
=0?
a:
(-a));
//****************************************************
voidmain(void)
intxPuls,Temp,xAngelPuls;
unsignedcharxSide,xDir;
SearchO();
xDelay(1000);
Init();
while
(1){
xAngelPuls=GlobalAngelPuls;
//if(Abs(xAngelPuls)<
NOCONTROLUPLIMIT)
//{
//
//continue;
//}
Temp=xAngelPuls-OldGlobalAngelPuls;
//if(Abs(Temp)<
ENCONTROLLIMIT)continue;
xSide=WhichSide;
xDir=WhatDir;
switch(xDir){
caseLEFT2RIGHT:
//Temp-=DELTALEFT;
xPuls=(int)(Temp*LIGHTDELTA/STEPPERDELTA+0.5);
//OldGlobalAngelPuls+=Temp;
OldGlobalAngelPuls=xAngelPuls;
break;
caseRIGHT2LEFT:
//Temp-=DELTARIGHT;
default:
;
StepperMove(xPuls);
//**********************************************************************
voidT0Int(void)interrupt1
staticunsignedcharnTime,CanChange=1,ForChange=0;
ET0=0;
if(SideSensor==LEFTSIDE)WhichSide=LEFTSIDE;
elseWhichSide=RIGHTSIDE;
if((ForChange<
ENCHANGEUPTIME)&
(++ForChange>
=ENCHANGEUPTIME))CanChange=1;
if(++nTime>
=X5MSTIMES)
MAccFlag=0;
if(ForMAcc<
ACCDELTA)
if(CanChange==1)
Led1=0;
Led2=1;
if(WhatDir==LEFT2RIGHT)WhatDir=RIGHT2LEFT;
elseWhatDir=LEFT2RIGHT;
ForChange=0;
CanChange=0;
else{Led1=1;
Led2=0;
nTime=0;
voidInt0(void)interrupt0
if(WhatDir==LEFT2RIGHT)GlobalAngelPuls++;
elseGlobalAngelPuls--;
if(MAccFlag==1)ForMAcc++;
voidInt1(void)interrupt2
if(PowerOnFlag==1)
{WhatDir=RIGHT2LEFT;
PowerOnFlag=0;
StepperMove((-OldGlobalAngelPuls)*LIGHTDELTA/STEPPERDELTA+0.5);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 自由 平板 控制系统 资料