开放.docx
《开放.docx》由会员分享,可在线阅读,更多相关《开放.docx(14页珍藏版)》请在冰豆网上搜索。
开放
2013年春季
开放性实验
题目名称:
跷跷板轮式机器人设计
院系名称:
电气自动化
专业班级:
自动化1106
学生姓名:
楚梦帅
学号:
201123910920
指导教师:
郑维
成绩:
评语:
指导老师签名:
日期:
目录
1系统概述………………………………………………………………………………1
2方案论证………………………………………………………………………………1
2.1核心控制模块选择……………………………………………………………………1
2.2.驱动电机选择…………………………………………………………………………1
2.3平衡检测方案………………………………………………………………………2
2.4倾角传感器选择……………………………………………………………………2
2.5小车引导方式选择…………………………………………………………………2
2.6光电探测模块…………………………………………………………………………2
2.7电源模块………………………………………………………………………………3
3硬件设计…………………………………………………………………………………3
3.1系统的原理方框图…………………………………………………………………3
3.2理论分析与计算…………………………………………………………………3
3.3电路图………………………………………………………………………………4
4软件设计……………………………………………………………………………7
4.1软件设计思想及主流程……………………………………………………………7
4.2流程框图及关键代码………………………………………………………………8
5系统调试………………………………………………………………………………11
设计心得………………………………………………………………………………12
参考文献………………………………………………………………………………13
1系统概述
设计制作一个电动车跷跷板,在跷跷板起始端A一侧装有可移动的配重。
电动车从起始端A出发,可以自动在跷跷板上行驶。
基本要求:
在不加配重的情况下,电动车完成以下运动:
(1)电动车从起始端A出发,在30秒钟内行驶到中心点C附近;
(2)60秒钟之内,电动车在中心点C附近使跷跷板处于平衡状态,保持平衡5秒钟,并给出明显的平衡指示;
(3)电动车从
(2)中的平衡点出发,30秒钟内行驶到跷跷板末端B处(车头距跷跷板末端B不大于50mm);
(4)电动车在B点停止5秒后,1分钟内倒退回起始端A,完成整个行程;
(5)在整个行驶过程中,电动车始终在跷跷板上,并分阶段实时显示电动车行驶所用的时间。
通过车载倾角传感器对跷跷板倾角的高精度测量,实时的向控制系统反馈倾斜状态,系统根据跷跷板状态做出前进或后退动作,使跷跷板保持平衡及实现所要求的其他功能。
为保证小车在板上平稳行使,以及从地面任意位置找到跷跷板起点,在小车的前后四角各安装了一对红外发射接收传感器,通过设定合适的光强和角度,可以探测板边界的位置,配合软件分析引导小车行驶。
2方案论证
2.1核心控制模块选择
方案一:
采用传统51单片机作为主控制器。
该单片机价格低廉,程序资源丰富,技术比较成熟。
但是运算速度较慢,很难担任复杂算法的计算工作;程序储存空间小,不能储存大规模程序代码。
方案二:
采用MSP430F169低功耗单片机主控芯片,该单片机IO接口数量多,内部资源丰富,如包涵12位AD转换、16位定时器、PWM控制、USART接口等,处理能力强大,能够轻松胜任此任务。
2.2驱动电机选择
方案一:
使用步进电机。
步进电机的一个显著特点就是具有快速启停能力,如果负荷过大超过步进电机所提供的动态转矩值,就能够立即使步进电机启动或反转。
另一个显著特点是转换精度高,正反转控制灵活。
方案二:
使用减速电机。
基于以上分析,小车在运行过程中需要进行实时检测位置并进行调整,所以采用方案一。
2.3平衡检测方案
方案一:
使用自制的传感器,如平衡杆、悬挂重锤、检测气泡位置等方案。
方案二:
使用成品的倾角传感器,由单片机处理传感器输出的数据。
考虑自制传感器基本只能得出开关量结果,但倾角传感器能精确的反映出角度,便于应用算法使小车最快最稳的找到平衡点,故使用方案二。
2.4倾角传感器选择
方案一:
采用SCA60C倾角传感器,此芯片只有模拟输出,所以结合MSP430内部AD模块或者采用专用AD芯片采样如ADS7813来采集传感器信号,并转换为倾斜角度送给单片机处理。
价格低廉,易于连线。
方案二:
采用SCA100T高精度双轴倾角传感器,此传感器为数字SPI输出模式,测量分辨力可达0.003度,具有灵敏度极高,抗冲击,抗震动等诸多优点。
但采用该传感器所需要的硬件电路相对复杂。
从成本控制和硬件复杂度上综合考虑,采用方案一。
2.5小车引导方式选择
为了使小车不至于掉下跷跷板且能平稳的走直线,有两种引导方式。
方案一:
在跷跷板上采取不影响板面平整的引导措施,设计拟在板面上贴黑色引导胶带,在电动车上安装一系列ST188红外反射光电传感器,采用循迹的方式引导电动车在板上行驶。
方案二:
在小车边缘设置数个光电探测传感器对木板边沿定位,使小车沿中线前进保证不跌落板面。
考虑到题目要求中方案一技术成熟可靠,稳定性高。
2.6光电探测模块
方案一:
使用电探测器光成品,如微型红外传感器TCRT或ST系列,体积小且开关量输出,但有效距离一般不超过10mm;而工业上使用的光电开关距离较长但体积过大
方案二:
使用红外发光二极管和一体化接收器自制反射式或对射型的传感器。
小车到板边沿需要距离为100mm左右的探测,且为了避免环境光以及杂讯干扰故用方案二。
2.7电源模块
方案一:
单电源供电,由于小车体积和重量的限制,只使用单电池组。
方案二:
采用控制、驱动两部分分离供电,中间采用光耦隔离,最大限度降低信号干扰。
通过体积、重量、系统功耗、电压稳定性等多方面研究,一组电池供电已经可以满足设计需要,故采用方案一。
最终方案确定
控制芯片采用MSP430F169
ST188红外反射光电传感器作为循迹引导电动车
采用SCA60C作倾角传感器
电机模块采用两相步进电机
3硬件设计
3.1系统的原理方框图
根据上面的分析论证,我们设计的系统的总体结构框图如图1所示。
3.2理论分析与计算
根据题目说明,只要跷跷板两端与地面的距离差小于40mm即可认为平衡,本设计通过倾角传感器检测跷跷板水平倾角,所以只要水平倾角保持在0度附近的某个角度范围之内,即可认为跷跷板达到平衡状态。
其闭环结构框图如图2所示。
该系统的工作原理是:
小车驶上跷跷板后,通过倾角传感器不断的测量跷跷板的倾角(即实际倾角),该实际倾角与给定倾角作比较,形成倾角偏差,通过步进电机控制小车前后微移,不断修正该倾角偏差,最终使倾角保持在给定范围之内。
此时跷跷板便达到平衡状态。
设计中小车车轮的周长为240mm,电机最小步进角为0.9度,因此电机每步进一步小车移动距离x为:
x=240*0.9/360=0.6mm
可见,小车位移量是很小的。
因此我们能实现小车前后微位移的控制,从而使跷跷板较易达到平衡状态。
小车所走各段所需脉冲数的计算(以AC段为例):
(1)起点A至中点C的距离AC=800mm;
(2)测量小车车长L=270mm,小车重心约在车身靠后约4/5处;
(3)上面计算电机每步进一步小车移动距离为x=0.6mm;
因此AC段所需脉冲
n=(AC-L*1/5)/0.6=1243.3;
从而可计算出AB段所需脉冲数m=2n=2*1243.3=2486.7
3.3电路图
(1)驱动电路
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。
其基本原理作用如下:
(1)控制换相顺序
通电换相这一过程称为脉冲分配。
(2)控制步进电机的转向
如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。
(3)控制步进电机的速度
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
两个脉冲的间隔越短,步进电机就转得越快。
调整单片机发出的脉冲频率,就可以对步进电机进行调速。
为了保证步进电机能够平稳高效运转,本设计采用L298N芯片驱动电机,并用光电耦合器进行隔离防止烧坏单片机。
图3驱动电路
(2)红外传感电路
ST188采用高反射功率红外光电二极管和高灵敏度光电晶体管组成。
检测距离:
4--13mm。
图4红外传感电路
(3)角度传感电路
角度检测模块采用单轴倾角传感器SCA60C,SCA60C利用感应重力加速度在某一方向的分量来完成角度的测量,其输出电压与角度变化成一定的线性关系。
通过AD采样判断角度的大小。
小车处于平衡状态时,SCA60C的输出电压是2.44V。
小车在上坡过程中,输出电压逐渐增大至2.44V。
小车通过平衡点,下坡时,输出电压由2.44V增大至限幅电压3V。
图5角传感器电路
4软件设计
4.1软件设计思想及主流程
开发语言:
C/C++
开发环境:
IAR4.20
系统主程序流程图
系统主程序流程图如图6所示。
图6系统主流程图
4.2流程框图及关键代码
平衡检测
此函数是整个设计的核心。
程序首先通过对平衡传感器SCA60C的返回值的采样来判断小车是否处于平衡状态,如果返回值为2.44±0.03V,则小车处于平衡的状态,如果传感器返回值小于2.41,则小车处于向上爬行阶段,否则,小车处于下坡阶段。
当小车越过平衡点出现超调时,PID调节起作用。
/*小车平衡控制*/
unsignedcharLevel_Ctrl(floatDeviation_ADC12_Level)//参数:
Deviation_ADC_12()
{
floatDeviation_Angle_Deviation=Deviation_ADC12_Level;
if(Mode_Flag==2)
{
if((Deviation_Angle_Deviation<0.03)&&(Deviation_Angle_Deviation>-0.03))//平衡
{
if(Level_Flag==0)
{
Level_Flag=1;
Delay_ms(100);
}
elseif(Level_Flag==1)
{
ADC12CTL0&=~ENC;
Mode_Flag=3;//进入模式3
Motor_Stop();
return1;
}
}
elseif(Deviation_Angle_Deviation>0.0)//下行
{
Motor_Run_Distance(IncPID_Calc(Deviation_Angle_Deviation),400);
//Motor_Run_Distance(-10,200);
Level_Flag=0;
}
else//上行
{
//Motor_Run_Distance(10,200);//(mode0+->up/0->down,speed)
Motor_Run_Distance(IncPID_Calc(Deviation_Angle_Deviation),400);//(mode0+->up/0->down,speed)
Level_Flag=0;
}
return0;
}
return0;
}
/*
增量式PID计算
*/
intIncPID_Calc(floatNextPoint)
{
floatIError;//偏差
floatIIncpid;//增量
intRet_IIncpid=0;
IError=SPID->SetPoint-NextPoint;//E[k]
SPID->SumError+=IError;//误差累计
//增量PID计算
IIncpid=SPID->Proportion*IError//E[k]
-SPID->Integral*SPID->LastError//E[k-1]
+SPID->Derivative*SPID->PrevError;//E[k-2]
//存储误差,用于下次计算
SPID->PrevError=SPID->LastError;//E[k-2]
SPID->LastError=IError;//E[k-1]
Ret_IIncpid=((int)IIncpid);
return(Ret_IIncpid);//返回增量值
}
在完成基本功能时,主程序流程图如图7所示。
软件编程实现小车的运动过程可分为四个部分:
(1)从A点出发,驶向中心点C。
(2)在一段时间内维持小车平衡。
平衡判断子程序流程图如图8所示。
(3)行驶到末端,与控制器进行通信。
通信过程子程序流程图如图9所示。
(4)倒退回起始端。
如图所示,假设跷跷板平衡状态与大地水平处于同一水平面。
小车由A点走上木板,迅速前进。
当接近中点C时开始缓慢前进,寻找平衡点。
未到达平衡点时,由于跷跷板两侧力矩不等,导致跷跷板一侧翘起,此时板与水平面形成一定倾角,此倾角将会引起加速度计的动作,即输出电压值的改变。
加速度计被竖直向下连接在小车上,设置板水平时的输出电压值为“平衡点”,所以存在倾角时加速度计输出的电压值相对于“平衡点”有个偏差值,此偏差值经放大后被送给单片机进行处理即将其反馈给小车的运动,用以减小偏差。
即A低B高小车向B运动;A高B低小车向A运动,形成跷跷板状态。
加速度计输出的偏差值在一定范围内被判定为平衡态,维持平衡态一定时间后,小车则快速驶向B点。
由杠杆平衡原理可得,当系统处于动态平衡时,两边力矩相等。
即mgl=MgL,由此可计算出l,l=ML/m。
图7主控制程序框图图8平衡判断子程序图9B点判断子程序
图10工作流程图
5系统调试
5.1硬件主要模块调试与故障排除
硬件调试的主要工作是排除设计错误和工艺故障。
基本调试方法是:
在将各元件焊接到万用板版上之后,首先用万用表检测各个引脚是否已经正常连接,确保没有虚焊漏焊,然后用示波器观察各模块的输出波形。
5.2调试所用仪器:
数字示波器DS1063C
万用表
直流稳压电源
秒表
三角板
5.3角度传感器模块
红外传感器通过加入先富电路后测试发现一切正常。
电压波动在1.7-2.9之间,符合我们输入端电压小于3.3V的要求。
5.4红外检测路径模块
该模块在焊接上没有发现虚焊漏焊现象,但是通电后,发现在遇到黑线和白线时,指示发光二极管并没有正常指示当前状态。
用示波器观察ST188的输出端,发现在不同地面上时示波器有反应,电压发生变化,说明ST188连接正常。
用示波器对LM311P的输出端进行观察,发现变化范围很小,于是调节电位器,使输出在较大范围内变化,当输出大于基准电压时,发光二极管熄灭。
调试完成。
设计心得
从最初掌握的专业知识贫乏,到如今可以熟练使用AltiumDesigner、Multisim、Diaportable、SmartDraw、Tina这几个软件进行电路原理图,流程图,结构图的绘制,以及用这些软件实现系统仿真,我学到了很多课本以外的知识。
整个课程设计过程,我收获很大。
一方面加强了自我学习的能力。
另一方面,因为和组员一起工作,大大培养了团队合作能力,加强了团队意识。
最后,非常感谢老师的大力帮助和指导。
老师们用它们丰富的经验为我们解决了很多问题,也使得我们在整个项目过程中少走了很多的弯路。
他们有许多值得我们学习的地方。
参考文献
[1]阎石.数字电子技术基础(第五版).高等教育出版社2006.5
[2]潭浩强.C语言程序设计(第二版).清华大学出版社,1991:
54-118
[3]余家春.Protel99SE电路设计实用教程.中国铁道出版社,2003
[4]胡乾斌.单片微型计算机原理与应用.华中理工大学出版社,2000:
120-142
[5]朱定华.微型计算机接口技术及应.华中理工大学出版社,2002:
133-185
[6]康华光.电子技术基础(模拟部分).高等教育出版社,2000:
289-317
[7]谢自美.电子线路设计(第二版.华中理工大学出版社,2003:
84-92
[8]陈大钦.电子技术基础实验(第二版).高等教育出版社,2000:
231-269
[9]何立民.MSC-51系列单片机实用接口技术.北京航空航天大学出版社.1999
[10]胡伟.季晓蘅.单片机C语言程序设计及应用实例.人民邮电出版社,2003
[11]陈平.楮华.软件设计师教程.清华大学出版社,2004
[12]鲍可进.C8051F单片机原理及应用.中国电力出版社,2006
[13]万光毅.SoC单片机实验、实践与应用设计:
基于C8051F系列.北京航天航空大学出版社,2006
[14]赵建领.51系列单片机开发宝典.电子工业出版社,2007
[15]黄根春.电子设计教程.电子工业出版社,2007
[16]刘畅生.新型集成电路简明手册及典型应用.西安电子科技大学出版社,2005
[17]刘畅生.新型集成放大器工程应用手册.人民邮电出版社,2007