双通道高精度角度测量仪设计毕业设计说明书_第1页
双通道高精度角度测量仪设计毕业设计说明书_第2页
双通道高精度角度测量仪设计毕业设计说明书_第3页
双通道高精度角度测量仪设计毕业设计说明书_第4页
双通道高精度角度测量仪设计毕业设计说明书_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中北大学2014届毕业设计说明书双通道高精度角度测量仪设计摘要在很多领域,角度位置信号的测量都非常重要,尤其是在运动物体的控制和检测系统中,不仅需要准确的线参量,更需要准确的角参量(尤其是角加速度)信息。目前随着科学技术的发展,角加速度传感器的应用越来越广泛,其测量精准度直接影响着整个系统的精度。本文主要介绍了将角度测量和单片机控制结合,实现双通道高精度角度测量仪的设计方案。设计中采用了芬兰VTI公司高精度MEMS单轴倾角传感器(SCA103T-DO4倾角计),微处理器通过SPI接口直接读取SCA103T-DO4内部AD转换器转换结果(11位AD),通过调试系统角度测量范围达±18º,精度可到0.003º,在工程实践中具有一定现实意义。关键词:角度传感器,单片机,双通道,SCA103T-DO4,SPI接口DualchannelandhighprecisionAnglemeasuringinstrumentAbstractThemeasurementofAnglepositionsignalisveryimportantinmanyfieldsespeciallyinthecontrolanddetectionsystemofmovingobject,inwhichpeoplenotonlyneedtheexactlineparametersbutalsoneedmoreaccurateinformationabouttheAngleparameter(especiallyangularacceleration).NowWiththedevelopmentofscienceandtechnology,theangularaccelerationsensorhasbeenextensivelyapplied,whichmeasurementprecisiondirectlyaffectstheprecisionofthewholesystem.ThisarticlemainlyintroducedthecombinationofAnglemeasurementwithMCUcontroltorealizethedesignoftwo-channelhighprecisionAnglemeasuringinstrument.Adoptedinthedesignofhigh-precisionMEMSFinlandVTIcompanysingleshaftAnglesensor(SCA103T-DO4inclinometer),themicroprocessorthroughtheSPIinterfacedirectlyreadSCA103T-DO4ADconverterinternaltransformation(11AD)asaresult,throughthedebuggingsystemAnglemeasurementrangeofplusorminus18DHS,precisioncanbeupto0.003DHS,hascertainpracticalsignificanceinengineeringpractice.Keywords:Anglesensor,MCU,DualChannel,SCA103T-DO4,SPIInterface第=2\*ROMANII页共=2\*ROMANII页第=1\*ROMANI页共=2\*ROMANII页目录TOC\o"1-3"\h\uHYPERLINK1绪论 ⑵程序算法优化。整个系统调试过程中,采用的的数据处理算法为采集至少50组数据然后求其平均值然后输出,这样虽然可以一定程度上减小干扰误差。但是如果想要得到更高精度的测量值,可以将采样值去掉最大最小值后再求其平均值。参考文献[1]陶卫,浦昭邦,孙运髌.角度测量技术的发展[D].激光杂志,2002,23(2): 5~6[2]李士钊,秦贵和.基于AVR单片机的双轴倾角仪的设计与实现[D].吉林大学硕 士研究论文.吉林大学,2009:1~3[3]费维,刘正士,郑传荣.几种角加速度传感器的工作原理及其应用[D].机床与 液压.2005,1:145~146[4]施云贵,基于SCA103T实现的高精度倾角检测系统设计[D].吉林化工学院学 报.2008,25(3):68~70[5]孙汝建,基于SPI接口的双轴SCA100T倾角传感器及其应用方法[D].仪器仪 表用户:应用实例,2006,03(23):69~71[6]刘爱华,李邓化,董必政.高精度双轴倾角监测装置的设计与实现[J].北京信 息科技大学学报.2013,28(5):51~55[7]李蔚恒,李永田.精密电位器在测角系统中的应用[J].电子科技,2002(5):62[8]吕涛.敏感型FabryPerot腔高精度光纤角位移传感器研究[D].西南师范大 学硕士学位论文,2005[9]柏受军等,差动变压器式大量程精密角位移传感器的设计[J].传感器与微系 统,2006(11):636[10]刘君华,郝惠敏,林继鹏,白鹏,等.传感器技术及应用实例[M].北京:电子工 业出版社,2008:1—9.[11]周景润.基于proteus的单片机的设计与仿真[M].北京:航空航天大学出版 社.2010,8.[12]胡杰.51单片机的C语言开发[M].北京:航空航天大学出版社.2003,7.[13]张洪洞.单片机的原理与应用[M].北京:清华大学出版社.2001,3.[14]张齐.单片机的源于技术开发[M].北京:电子工业出版社.2011,9.[15]张洪洞.单片机原理及接口技术(C语言版)[M].北京:清华大学出版 社.2000,2.[16]刘小成.单片机原理及C51的应用[M].上海:华东理工大学出版社.2010,7.[17]杨治洁.单片机原理及应用[M].北京:北京科海电子出版社.2005,2.[18]楼然苗,李光飞.51系列单片机设计实力[M].北京:航空航天大学出版 社.2003,1. [19]黄宇飞.单片机单总线技术.单片机与嵌入式应用系统[M].2001,2.[20]郭天祥.新概念51单片机C语言教程:入门、提高、开发、扩展全攻略[M]. 北京:电子工业出版社,2009.1[21]AgelldisVG&VincentiD.OptimumNon-deterministicPWMThree-phase Inverters,IEEEIECONCohf,Rec.1993[22]RodolfoEchavarria,SergioHorta,MarcoOliver.Athreephasemotor driveusingIGBTsandconstandV/fspeedcontrolwithslip regulation[C].PowerElectronicsCongress,2005:87-91.[23]Ph.Lataire.WhitepaperonthenewABBmediumvoltagedrivesystem, usingIGCTpowersemiconductorsandDirectorTorqueControl.EPE JournalVol.7,No.3-4,December1998.[24]M.J.Barker,M.S.Colough.Atwodimensionalcapacitiveposition transducerwithrotationoutputRev[M].Sci.Instrum,1997,68(8):3238 3240[25]CheHsinLin,ShuMingKuo.20thIEEEInternationalConferenceonMicro ElectroMechanicalSystems[C].Kobe,DepartmentofMechanical andElectro-mechanicalEngineering[M],NationalSunYat-Sen University,2007附录主函数(main)程序:#include<stc12c5a60s2.h>#include<tupian.h>#include<intrins.h>#include"delay.h"#include"lcd12864.h"#include"spi.h"#include"uart.h"externintData1;externintData2;main(){ ucharcount=0; longSum_Data=0; SetGraphicMode(); //设置成绘图模式 LCD_PutGraphic(nBitmapDot); //调入一幅图画 DelayMs(1000); InitUart(); InitSca103T(); Init_ST7920(); //初始化 LCD_PutString(0,1,"双通道角度测量仪"); LCD_PutString(2,4,"卜建国"); LCD_PutString(0,2,"通道1:"); LCD_PutString(0,3,"通道2:"); while(1) { for(count=0;count<100;count++) { Sum_Data+=Measure(); } Data1=Sum_Data/100; Sum_Data=0; for(count=0;count<200;count++) { Sum_Data+=Measure2(); } Data2=Sum_Data/200; display(); Sum_Data=0; DelayMs(100); }} //串口(uart)程序:#include<stc12c5a60s2.h>#include"uart.h"#defineFOSC11059000#defineBAUD(256-FOSC/32/9600)voidInitUart(){ SCON=0x5a;//setUARTmodeas8-bitvariablebaudrate TMOD|=0x20;//timer1as8-bitautoreloadmode AUXR=0x40;//timer1workat1Tmode TH1=BAUD;//9600bps TL1=BAUD; EA=1; TR1=1; voidSendUart(unsignedchardat){while(!TI);//waitpre-datasentTI=0;//clearTIflagSBUF=dat;//sendcurrentdata //SPI接口程序:include<intrins.h>#include"spi.h"#include"delay.h"#include"math.h"#include"uart.h"#include<stc12c5a60s2.h> sbit CSN2=P1^3;ucharSPI_RW(uchardat){ SPDAT=dat;//将串口接收的数据装入SPI数据寄存器 while(!SPSTAT&0x80);//等待发送完毕 SPSTAT=0xc0;//清除中断标志,和写冲突标志,注意是对应位写1才能清零 dat=SPDAT; DelayUs2x(1); returndat; }intSPI_Read(ucharreg){ intreg_val=0; uchartemp=0; ucharcnt1=8; ucharcnt2=11; CSN=0; CSN2=1; _nop_(); _nop_(); _nop_(); while(cnt1>0) { SCK=0; MOSI=((reg&0x80)==0)?0:1; reg<<=1; _nop_(); SCK=1; _nop_(); _nop_(); _nop_(); cnt1--;} while(cnt2>0) { SCK=1; if(MISO) reg_val=reg_val|0x0001; reg_val<<=1; _nop_(); SCK=0; _nop_(); _nop_(); _nop_(); cnt2--; } CSN=1; SCK=0; temp=(reg_val&0xff00)>>8; SendUart(temp); temp=(reg_val&0xff); SendUart(temp); return(reg_val);//returnregistervalue}intSPI_Read2(ucharreg){ intreg_val=0; uchartemp=0; ucharcnt1=8; ucharcnt2=11; CSN2=0; CSN=1; _nop_(); _nop_(); _nop_(); while(cnt1>0) { SCK=0; MOSI=((reg&0x80)==0)?0:1; reg<<=1; _nop_(); SCK=1; _nop_(); _nop_(); _nop_(); cnt1--; } while(cnt2>0) { SCK=1; if(MISO) reg_val=reg_val|0x0001; reg_val<<=1; _nop_(); SCK=0; _nop_(); _nop_(); _nop_(); cnt2--;} CSN2=1; SCK=0; temp=(reg_val&0xff00)>>8; SendUart(temp); temp=(reg_val&0xff); SendUart(temp); return(reg_val);//returnregistervalu}voidInitSPI(){SPDAT=0;//initialSPIdataSPSTAT=0xc0;//clearSPIstatusSPCTL=0xd1;//slavemode}voidInitSca103T(){// SPI_RW(MEAS); ucharcnt1=8; CSN=0; CSN2=0; _nop_(); _nop_(); _nop_(); while(cnt1>0) { SCK=0; MOSI=0; _nop_(); SCK=1; _nop_(); _nop_(); _nop_(); cnt1--; } }intMeasure(){ intx,y; intValue; x=SPI_Read(RDAX); y=SPI_Read(RDAY); Value=(int)(asin((x-y)/6554.0)*57295.78); //*360/3.14159*1000=*114591.56 returnValue;}intMeasure2(){ intx,y; intValue; x=SPI_Read2(RDAX); y=SPI_Read2(RDAY); Value=(int)(asin((x-y)/6554.0)*57295.78); //*360/3.14159*1000=*114591.56returnValue;} //液晶显示(12864)程序:#include<stc12c5a60s2.h>#include<intrins.h>#include"delay.h"#include"lcd12864.h"sbitRS =P2^5;sbitRW =P2^6;sbitE =P2^7;sbitRES =P2^4;sbitPSB =P2^4; #defineDataPortP0//MCUP0<>LCMunsignedcharcha; //正负标记unsignedcharge,shi,bai,qian,wan;//显示变量constunsignedcharCha1[]="通道1:";constunsignedcharCha2[]="通道2:";intData1;intData2;voidCheck_Busy(){RS=0;RW=1;E=1;DataPort=0xff; while((DataPort&0x80)==0x80);//忙则等待E=0;}//写命令voidWrite_Cmd(unsignedcharCmd){ Check_Busy(); RS=0; RW=0; E=1; DataPort=Cmd; DelayUs2x(5); E=0; DelayUs2x(5);}//写数据voidWrite_Data(unsignedcharData){ Check_Busy(); RS=1; RW=0; E=1; DataPort=Data; DelayUs2x(5); E=0; DelayUs2x(5);}//液晶屏初始化voidInit_ST7920(){DelayMs(40);//大于40MS的延时程序PSB=1;//设置为8BIT并口工作模式DelayMs(1);//延时//RES=0;//复位DelayMs(1);//延时//RES=1;//复位置高DelayMs(10);Write_Cmd(0x30);//选择基本指令集DelayUs2x(50);//延时大于100usWrite_Cmd(0x30);//选择8bit数据流DelayUs2x(20);//延时大于37usWrite_Cmd(0x0c);//开显示(无游标、不反白)DelayUs2x(50);//延时大于100usWrite_Cmd(0x01);//清除显示,并且设定地址指针为00HDelayMs(15);//延时大于10msWrite_Cmd(0x06);//指定在资料的读取及写入时,设定游标的移动方向及指 定显示的移位,光标从右向左加1位移动DelayUs2x(50);//延时大于100us}voidLCD_PutString(unsignedcharx,unsignedchary,unsignedcharcode*s){switch(y){ case1:Write_Cmd(0x80+x);break; case2:Write_Cmd(0x90+x);break; case3:Write_Cmd(0x88+x);break; case4:Write_Cmd(0x98+x);break;default:break; }while(*s>0){Write_Data(*s);s++;DelayUs2x(50);}}//清屏voidClrScreen(){Write_Cmd(0x01);DelayMs(15);}//显示图片voidLCD_PutGraphic(unsignedcharcode*img){inti,j; //显示上半屏内容设置for(i=0;i<32;i++){Write_Cmd(0x80+i); //SET垂直地址VERTICALADDWrite_Cmd(0x80); //SET水平地址HORIZONTALADDfor(j=0;j<16;j++){Write_Data(*img);img++;}} //显示下半屏内容设置for(i=0;i<32;i++){Write_Cmd(0x80+i); //SET垂直地址VERTICALADDWrite_Cmd(0x88); //SET水平地址HORIZONTALADDfor(j=0;j<16;j++){Write_Data(*img);img++;}}}voidSetGraphicMode(){Write_Cmd(0x36); //选择8bit数据流图形模式DelayUs2x(20);}voidconversion(inttemp_data)//数据转换出个,十,百,千,万{if(temp_data<0) {cha='-'; temp_data=-temp_data;} else cha='+'; wan=temp_data/10000+0x30;temp_data=temp_data%10000;//取余运算 qian=temp_data/1000+0x30;temp_data=temp_data%1000;//取余运算bai=temp_data/100+0x30;temp_data=temp_data%100;//取余运算shi=temp_data/10+0x30;temp_data=temp_data%10;//取余运算ge=temp_data+0x30; }voiddisplay(){ inti=0; conversion(Data1); Write_Cmd(0x94); Write_Data(cha); Write_Data(wan); Write_Data(qian); Write_Data('.'); Write_Data(bai); Write_Data(shi); Write_Data(ge); conversion(Data2); Write_Cmd(0x8c); Write_Data(cha); Write_Data(wan); Write_Data(qian); Write_Data('.'); Write_Data(bai); Write_Data(shi); Write_Data(ge);} //延时(delay)程序:#include"delay.h"/*uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5uS*/voidDelayUs2x(unsignedintt){for(;t>0;t--);}/*-mS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编*/voidDelayMs(unsignedintt){while(t--){ //大致延时1mSDelayUs2x(245); DelayUs2x(245);}}致谢本次设计过程中首先查阅了大量相关资料,对角度传感器尤其是加速度角度传感器的工作原理有了一定认知。其次,对于主控芯片单片机的选择,先后应用了普通的AT89C51系列单片机和STC12C5A系列单片机,通过对比发现,应用功能较为强大的STC12C5A60S2系列单片机更易实现设计,并且系统性能有了大幅度提升。对于角度传感器的应用方面,主要参考资料及器件手册进行设计,这是误差的主要来源,所以需要考虑误差的消除,无论是从电源滤波还是从期间焊接或者程序算法优化方面都需要经过斟酌。庆幸的是,经过一番努力之后,终于完成的系统满足了设计要求,甚至高出了部分标准。整个设计过程让自己受益匪浅,在指导老师的悉心教导下,又接触和掌握了不少新知识。例如对角度测量方面,之前只应用过陀螺仪,加速度计之类的测角器件。在此次设计过程中接触到了加速度传感器测量角度的原理方法,并能最终如愿实现了角度测量。更为重要的是,通过这次实践,对之前课本所学知识理解更加深切,也学会了应用工程实践思维解决问题的方法。此次毕业设计能够顺利完成,首先是要非常感谢我的指导老师,他以扎实的理论基础和多年丰富的专业知识以及长期做项目的经验悉心的指导我,又以学术的严谨和做人的认真态度深深影响了我。从起初设计的选题到开题报告和中期报告直至最终实物完成和论文成稿,老师都给予了我许多宝贵的意见和支持,设计中所用的传感器比较昂贵,都是老师想办法提供的,至于其他帮助,在此一并致谢。同时,我也要感谢评审老师给予我的论文指导,正是老师们认真严谨的教学态度,帮助我完善毕业论文并提高了我的专业理论素养,在这里,我要向他们表示深深的谢意。此外,我还要感谢在论文完成过程中给予我帮助的同学和学长。总之,在完成论文过程中得到很多帮助,感谢所有帮助过我的人。基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究基于单片机的一体化智能差示扫描量热仪系统研究基于TCP/IP协议的单片机与Internet互联的研究与实现变频调速液压电梯单片机控制器的研究基于单片机γ-免疫计数器自动换样功能的研究与实现基于单片机的倒立摆控制系统设计与实现单片机嵌入式以太网防盗报警系统基于51单片机的嵌入式Internet系统的设计与实现\

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论