《基于自由摆的平板控制系统—毕业设计论文.doc》由会员分享,可在线阅读,更多相关《基于自由摆的平板控制系统—毕业设计论文.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于自由摆的平板控制系统摘要本系统以由msp430F149单片机作为中心控制系统,由角度监测模块、电机驱动模块、液晶显示模块、键盘模块和电源电路组成。角度监测模块采用三轴加速度传感器mma7361,实时测量平板与水平面的角度,通过屡次采集取平均值的方法基于倾角转换公式将所采样的数据转换成角度反响给单片机,从而控制步进电机转动相应的角度,使物体能始终保持平衡,并通过液晶实时显示所转过的角度。电机驱动局部使用SM-202A细分驱动驱动步进电机精确地控制平板转动相应角度。最后通过传感器采集的角度实时控制电机旋转相应角度以使激光笔始终照射在水平线附近。本操作简单,控制界面直观、简洁,经检验系统性能指标
2、到达了设计要求,工作可靠,功耗低,具有良好的人机交互性能。关键词:平衡控制、msp430单片机、角度传感器、步进电机目录1、引言.12、系统方案. . . . .1控制器模块的论证与选择1角度检测模块的论证与选择1电机的论证与选择12.4显示模块的论证与选择23、理论分析与设计. . . . . . . . . . . . . . . . . . . . . 2摆杆摆一个周期平板转一周2硬币不滑落的建模与计算2使激光笔始终照射在中心线附近的建模与计算34、电路与程序设计. . . . . . . . . . . . . . . . . . . . . .3模块设计3.1系统总体框图3角度检测模
3、块设计4电机驱动模块设计4程序设计5.1程序功能描述与设计思路5.2程序流程图55、测试方案与测试结果. . . . . . . . . . . . . . . . . . . .65.1测试方案6硬件测试6软件仿真测试6硬件软件联调6测试条件与仪器6测试结果及分析66、设计总结. . . . . . . . . . . . . . . . . . . . . . . . .8附录. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9一、引言随着单片机的不断普及,其与传感器的结合也在相关领域应用得越来越广泛,尤其在自动控
4、制领域更是得到了管广泛应用,本系统正是在这样的背景下应用单片机与传感器进行设计制作。二、系统方案2.1控制器模块的论证与选择根据设计要求,控制器主要用于计算平板调整角度、控制电机工作模式、显示摆杆与垂直面夹角及系统完成激光笔照射在中心线上时的声光提示。方案一:采用STC89C51作为系统控制器。它的技术成熟,本钱低,引脚较少,硬件布局较简单。STC89C51为八位单片机,数据转换速度慢,且实时性不好,复杂的控制算法难以实现,不利于高精度的控制。方案二:采用TI公司的MSP430f149单片机作为控制器。MSP430系列单片机是16位、RISC、超低功耗的处理器。其超低功耗的架构加上灵活的时钟系
5、统可延长电池的使用寿命;处理能力强,运算速度快,其内部集成了12的AD,并采用了DMA模块,因此其数据传输速度快;且本钱低。综合考虑以上两种方案,采用方案二。2.2度检测模块的论证与选择角度检测模块检测平板与水平方向的夹角以及检测摆杆与垂直方向的夹角。方案一:采用mma7361检测。mma7361是一款低功耗、低本钱、低姿态微型电容式三轴加速度传感器,具有信号调理,温度补偿,自我测试,MMA7361L包括一个休眠模式,可使用电池供电。方案二:采用AS5040检测。AS5040是由AMSCO公司生产的一种非接触、高分辨力编码、在0360范围内进行角度测量的传感器芯片。但为了测量角度,需要使用两极
6、磁铁,在芯片的中心旋转。这样使得系统更加复杂,且加大了电机负载。综合以上两种方案,考虑本钱及功耗等因素,选择方案一。2.3制电机的论证与选择方案一:采用减速电机。减速电机结构紧凑,体积小,承受过载能力强,且能耗低,性能优越,效率高,振动小。但由于机械效率影响,减速电机输出扭矩的增加和电机功率的增加不成正比,易出现死区现象,不利于控制。方案二:使用步进电机。步进电机的旋转角度正比于脉冲数,精度高且不累计误差,具有较好的位置精度和运动的重复性。另外步进电机的显著特点就是快速启停能力和转换精度高,正反转控制灵活。综合以上两种方案,摆杆在运动过程中需要进行实时检测平板和摆杆的位置,且需要系统启停反响快
7、,应选择方案二。2.4显示模块的论证与选择方案一:使用数码管显示。数码管电压低、寿命长、对外界环境要求低,易于维护,同时它是采用BCD编码显示数字,亮度高。但是其耗能大,电路复杂,占用资源较多,且显示信息少,精度低。方案二:使用液晶屏显示。LCD具有轻薄短小、低耗电量、影像稳定不闪烁等优势,可视面积大,画面效果好,显示信息量大,分辨率高且抗干扰性强;外围电路少,使用方便。综合考虑以上两种方案,选择采用方案二。三、理论分析与设计3.1摆杆一个周期平板转一周根据摆杆摆动周期公式,可近似求出摆杆摆动一个周期所需的时间。利用所算出的时间控制电机在这一时间段内旋转360,在允许误差范围内该方案可满足题目
8、要求。3.2硬币不滑落的建模与计算图1 硬币不滑落时的物理模型如图1所示,设当摆杆倾角为时,平台与水平方向的夹角为。对硬币进行受力分析,其合力为自身重力与离心力这两个力的合力。假设硬币不掉,那么平台平面与合力方向垂直。由此可建立平面几何模型,求得与的关系。具体计算如下:在ABC中,利用余弦定理求得。其中,。再利用正弦定理得。由于平台转动角后水平,所以硬币不滑落的平台旋转角度为度。3.3使激光笔始终照射在中心线附近的建模与计算图2 激光照射系统模型如图2,理论上系统在没有对平板做任何处理时,平板垂直于摆杆,且与水平面成角,在根本要求局部中,只要调节平板始终与水平面夹角为0;要使激光笔能照射中心线
9、,那么平板的转动角即。在摆杆靠近靶子一侧表达式为:;在摆杆远离靶子一侧有表达式:通过该关系表达式可确定平板在不同时刻相对摆杆所需摆过的角度,经过msp430单片机计算控制可使平板上的激光笔始终照射在中心线附近。四、电路与程序设计4.1模块设计系统总体框图系统总体框图如图3:图3 系统总体框图4.角度检测模块设计电路如图4所示。我们选用三轴加速度传感器mma7361测量平板转动角度。通过使用MSP430内部12位ADC采样X、Y、Z输出的模拟量,并利用三轴建模可以计算出平板的倾角。图4 角度模块电路图4.1.3电机驱动模块设计图5 电机驱动模块程序设计程序功能描述与设计思路本系统主要通过430单
10、片机来控制电路的键盘输入,平板状态控制的算法和显示操作等功能,通过三轴加速度传感器模块检测平板与水平面的夹角。细分驱动SM202-A驱动步进电机实现平板的旋转。通过键盘输入系统的工作模式,并通过LCD直观地显示相关参数。流程图图6 程序流程图五、测试方案与测试结果:硬件测试硬件测试时,可先用万用表检测印制板及焊接的质量是否符合要求,有无虚焊及线路间有无短路、断路,检查无误后,可通电检测电源局部是否正常工作。软件仿真测试软件编译和仿真调试是在IAR编译器下进行,源程序编译及仿真调试应分段或子程序为单位逐个进行,最后结合硬件实时调节。子程序测试包括:1显示程序;2声光提示程序;3键盘程序;4角度传
11、感器模块。硬件软件联调根本要求的测试第一次,我们设置平板的摆动为模式1,要求平板能随着摆杆的摆动而旋转35周,平板旋转一周偏差不大于45。第二次,设置平板的工作为模式2,在平板上粘贴一张画有一组间距为1cm平行线的打印纸,将摆杆从45处放下,5周期后,控制摆杆缓慢停下,这时硬币滑离平板中心距离0cm。第三次,让摆杆从60处放下,5周期后,控制摆杆缓缓停下,此时接触平板的硬币数为1。1、测试条件:检查电路板,保证电路无虚焊及线路间无短路、断路。2、测试仪器如表1:表1 测试仪器序号类型1直流稳压稳流电源2数字万用表3量角器4卷尺5秒表5.3.1测试分析与结论测试结果如2:表2 摆杆和平板测量周数
12、 木板旋转时间t1 摆杆摆动时间t2 t t/t2 10r 18.7s 19.2s 0.5s 2.6%20r 37.9s 38.6s 0.7s 1.8%30r 56.6s 57.6s 1.0s 1.7%40r 76.0s 77.4s 1.4s 1.8%50r 95.2s 96.8s 1.6s 1.6%60r 103.8s 105.9s 2.1s 2%表2分析:单摆周期测量值为1.92s,木板旋转周期测量值为1.89s,平板和摆杆同时转动数周后,时间偏差/摆杆摆动时间最大为2.6%。表3 板水平数据测量角度 光斑相对高度 木板中心相对高度 绝对误差 |h1-h2/h2|h1/cm h2/cm60
13、 50.9 50.0 0.9 1.8%48 32.5 33.1 -0.6 1.8%36 19.6 19.1 0.5 2.6%24 8.9 8.6 0.3 3.4%12 2.1 2.2 -0.1 4.5%0 0.0 0.0 0.0 0%12 2.2 2.2 0.0 0% 表4 定点指向次数 静态光斑偏移距离/cm 动态光斑偏移距离/cm1 1.56 9.452 1.45 12.083 1.43 8.134 1.52 13.745 1.48 12.34平均 1.49 9.69表3分析:在平板上安装一支激光笔,在一端竖直放置且与单摆运动面垂直的对照板,作木板上一点非木板轴中心高度h1测量用。同时利用
14、公式1- cos算出木板中心的理论高度h2。比拟h1和h2高度,假设相等那么保持水平。经测量h1-h2/h2最大为4.5%。表4分析:因为本实验采用直流电机,所以抖动范围较小,可以实现要求。通过脉宽调制可以控制光斑寻点的速递和抖动程度,同时在平衡位置时角度变化较大,且支架在控制单摆摆动中稍有形变,亦会对光斑的投射产生影响。此设计采用角度传感器进行检测,结合430单片机编程,对系统各电路和实际运行的测试,得出上述数据。根据上述测试数据,由此可以得出以下结论:系统精度相对来说比拟高,误差很小,系统各项功能均到达设计要求;由于增加了LCD显示当前信息,显示清晰醒目,灵活性较大。综上所述,本设计到达根
15、底局部设计要求。六、设计总结本文旨在设计并制作一个基于自由摆的平板控制系统:以MSP430F149单片机为控制核心,采用角度传感器对单片机的反响控制,融合数学公式的计算,直流电机的转动,AD采样从而实现相应功能。由于系统装置在运动过程中存在轻微形变,机械设计存在误差且直流电机和角度传感器然存在一定的精度误差,致使系统在控制平摆转动时存在相应偏差,这些缺乏将会是我们以后一直前进的方向。参考文献:1 沈建华.MSP430系列16位超低功耗单片机原理与实践. 北京航空航天大学出版社,2021.7.2滤波器篇.科学出版社,2004.05.3 罗杰.电子线路设计.电子工业出版社,2021.4.附:源程序
16、主函数:#include #include #include #include#define uchar unsigned char#define uint unsigned int#include mcu_init.h#include lcd12864.h#include xifen.cunsigned char x,y; /定义参数位置 显示unsigned int x1,y1,z1,y2;int degree;/角度double m;/弧度#include ADC12.h#define Num_of_Results 16 /进行32次测量,算平均值static uint results0
17、Num_of_Results; /A0 P6.0保存ADC转换结果的数组 static uint results1Num_of_Results; /A1 P6.1保存ADC转换结果的数组 static uint results2Num_of_Results; /A2 P6.2保存ADC转换结果的数组 unsigned long int VBufx=0;/电压扩大1000的值unsigned long int VBufy=0;unsigned long int VBufz=0;/电压扩大1000的#define delay_us(x)_delay_cycles(long)(CPU_F*(doub
18、le)x/1000000.0)#define delay_ms(x)_delay_cycles(long)(CPU_F*(double)x/1000.0)struct point int x0; int y0; int d; int sj; double n;p,q;void systemtime() unsigned char i;BCSCTL1&=XT2OFF; /翻开XT2振荡器do IFG1 &= OFIFG; / 去除振荡器失效标志 for (i=255;i0;i-); / 延时,等待XT2起振while (IFG1 & OFIFG) != 0); / 判断XT2是否起振BCSCTL
19、2=0x88; void main( void ) Msp430f149_config(); /单片机初始化 WDTCTL = WDTPW + WDTHOLD; systemtime(); P1DIR=0XFF;P1OUT=0XFF; P2DIR=0XFF;P2OUT=0XFF; P3DIR=0XFF;P3OUT=0XFF; P4DIR=0XFF;P4OUT=0XFF; /P5DIR=0XFF;P5OUT=0XFF; /P6DIR = 0XFF;P6OUT = 0XFF; q.x0=8000;/初始化 q.y0=0; q.d=0; q.n=0.0; q.sj=0; Ini_Lcd(); /初始
20、化液晶 LcdWriteString(1,0,角度: ); LcdWriteString(2,0,X: V); LcdWriteString(3,0,Y: V); /LcdWriteString(4,0,Z: V); adc12(); /ADC初始化 /dj_1(300); P1DIR&=BIT3; /P1SEL|=BIT0; /中断功能 P1IES|=BIT3; /选择下降沿触发 P1IE|=BIT3; /翻开中断允许 P1IFG=0; P2DIR&=BIT3; /P1SEL|=BIT0; /中断功能 P2IES|=BIT3; /选择下降沿触发 P2IE|=BIT3; /翻开中断允许 P2I
21、FG=0; _EINT(); while(1); /进入低功耗模式、等待中断 /* 函数名称:ADC12ISR 功 能:ADC中断效劳函数,4在这里用屡次平均的 参 数:无 返回值 :无 */#pragma vector=ADC_VECTOR _interrupt void ADC12ISR (void) static uint index = 0; results0index = ADC12MEM2; / Move results results1index = ADC12MEM3; results2index = ADC12MEM4; index+; if(index = Num_of_R
22、esults) /ADC12IE&=0x10; uchar i; unsigned long sum0= 0; unsigned long sum1= 0; unsigned long sum2= 0; index = 0; for(i = 0; i = 4; /除以16 sum1= 4; sum2= 4; /if(m0)/属于这个范围 / /m1=3.1413925-m; /degree1 = (int)(m1 * 180/3.1413926); / x=2;y=4; VBufx=Trans_val(sum0); x=3;y=4; VBufy=Trans_val(sum1); x=4;y=4
23、; VBufz=Trans_val(sum2); VBufy*=100;/计算电压并扩大10000倍 3.3为内部参 VBufz*=100; x1=VBufx-16000; y1=VBufy-17200; /具体数值现场测量,有变化,角度误差 40以内,误差0) /左上 if(p.x0q.x0)/左下 k=(100*(1-cos(p.n)/(150+100*sin(p.n); zj=p.d-(int)(atan(k)*180/3.141592); p.sj=abs(zj-q.sj); dj_0(p.sj); x=4;y=1; Trans_valjiaodu(p.sj); q=p; delay_
24、ms(100); else if(p.x0q.x0)/右下 k=(100*(1-cos(p.n)/(150-100*sin(p.n); zj=p.d+(int)(atan(k)*180/3.141592); p.sj=abs(zj-q.sj); dj_1(p.sj); x=4;y=1; Trans_valjiaodu(p.sj); q=p; delay_ms(100); /if() /* if() double k,n; k=(100*(1-cos(m)/(150+100*sin(m);/wangbinjiang /k=(100*(1-cos(m)/(150-100*sin(m);/wangs
25、ushe n=atan(k); degree2=(int)(n*180/3.1415); degree=degree1-degree2; degree4=degree-degree3; dj_1(degree4); degree3=degree4; /degree=degree1+degree2;/wangsushe /dj_0(degree);/wangsushe delay_ms(10000);*/ /*void port1() P1DIR&=BIT3; /P1SEL|=BIT0; /中断功能 P1IES|=BIT3; /选择下降沿触发 P1IE|=BIT3; /翻开中断允许 P1IFG=0; /P1IES的切换可能使P1IFG置位,需去除*/#pragma vector=PORT1_VECTOR_interrupt void Port(void) int jd; jd=(int)degree; dj_1(jd); delay_ms(6000); P5DIR=0XFF; P5OUT|=BIT0; / delay_ms(); dj_0(jd); P1IE&=BIT3; P1IFG=0; #pragma vector=PORT2_VECTOR_interrupt void Port2(void) djz(); P2IE&=BIT3; P2IFG=0;
限制150内