课程设计报告 车体倾斜姿态测量仪Word格式文档下载.docx
《课程设计报告 车体倾斜姿态测量仪Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《课程设计报告 车体倾斜姿态测量仪Word格式文档下载.docx(38页珍藏版)》请在冰豆网上搜索。
熟悉实验板原理图和印刷板图。
星期三~星期五:
进行仪表的方案选择,确定主要芯片、工作方式、输入输出信号的接口方式、键盘和显示方式、以及通信方式。
进行硬件设计和元器件选择,画出硬件原理图。
第二周:
星期一~星期五:
根据硬件原理图,焊接硬件电路;
测试硬件电路的功能;
软件设计,包括软件需求说明、软件结构框图、主要软件功能模块的流程图;
编写程序。
第三周:
星期一~星期三:
调试程序,联调软件和硬件。
星期四~星期五:
写课程设计报告。
四、应交成果
应交成果包括:
⏹纸质课程设计报告和电子文档;
⏹硬件原理图的Protel文件,程序;
⏹可以演示的硬件和软件成果。
五、课程报告内容
课程设计报告应包括下列部分:
⏹课程设计任务书
⏹仪表的功能要求、性能指标要求。
⏹方案选择:
提出多种方案,进行方案比较,说明选定方案的理由,描述硬件和软件的功能分工。
⏹硬件设计:
包括硬件结构框图、原理图及其各个主要环节的工作原理说明,元器件选择的计算方法或者理由,利用提供的实验板焊接元器件。
⏹软件设计:
首先提出软件的功能需求,然后进行软件的结构设计,再画出主要功能模块的软件框图。
⏹程序编写和调试。
⏹设计小结。
报告中硬件原理于用Protel画出,软件框图和程序流程图用Visio画出。
第二部分
课
程
设
计
报
告
第一章简介…………………………………………………………………(8-11)
1.1引言………………………………………………………………………(8)
1.2双轴倾角传感器SCA100t简介…………………………………………(8)
1.3SCA100t工作原理……………………………………………………(8-9)
1.4STC89C51单片机简介………………………………………………(9-11)
第二章设计内容及要求………………………………………………………(12)
2.1设计内容………………………………………………………………(12)
2.2设计要求………………………………………………………………(12)
第三章总体设计方案及原理框图………………………………………(13-15)
3.1原理框图………………………………………………………………(13)
3.2总体设计方案………………………………………………………(13-15)
第四章硬件设计…………………………………………………………(16-18)
4.1传感器硬件电路………………………………………………………(16)
4.2液晶显示器硬件电路………………………………………………(16-17)
4.3通信接口硬件电路……………………………………………………(17)
4.4报警电路……………………………………………………………(17-18)
4.5总硬件原理图…………………………………………………………(18)
第五章软件设计…………………………………………………………(19-24)
5.1软件的功能需求………………………………………………………(19)
5.2各部分程序框图……………………………………………………(19-24)
第六章程序编写………………………………………………………………(25)
6.1程序编写中遇到的问题及解决办法……………………………………(25)
第七章结果调试…………………………………………………………………(26)
第八章设计小结…………………………………………………………………(27)
第九章参考文献…………………………………………………………………(28)
附 录器件清单全部程序和实物图片……………………………………(30-41)
第一章简介
1.1引言
随着市场需求和科技的发展,人们对工程、机械、航空、航海设备的可靠性和稳定性提出了更高的要求,其中姿态测量是一项重要的指标。
倾角传感器是测量关于某一基准面的倾斜角或者是姿态的装置。
目前,市场上已有单轴、双轴、三轴的倾角传感器,但大多都价格昂贵或者体积较大。
本文提出以双轴传感器SCA100t和STC89C51单片机实现的设计,可大大降低系统成本,不但可以构成一个单独的数字输出传感器,也可以作为一个测量模块,嵌入到测量控制系统中,广泛应用于机器人控制、平台姿态(俯仰和滚转)测量、双轴加速度测量等系统中。
1.2双轴倾角传感器SCA100t简介
SCA100T倾角传感器是芬兰VTI公司2005年最新推出的,利用MEMS技术开发生产的高精度的双轴倾角传感器,体积小重量轻仅1.2克。
MEMS(Microelectromechanicalsystem)是二十一世纪的前沿技术,采用MEMS技术可以在硅芯片上加工出完整的徽型电子机械系统,包含了微型传感器、微型机械结构、以及信号处理和控制电路、通讯接口等于一体的微型器件,把信息系统的微型化、多功能化、智能化和可靠性水平提高到新的高度。
该芯片的引脚图及(图1-1)说明如下:
管脚名称功能
1SCK串行口时钟输入
2NC无连接
3MISO数据输出
4MISI数据输入
5OUT_2Y轴输出
6GND电源负极
7CSB片选
8NC无连接
9ST_2Y轴测试输入
10ST_1X轴测试输入
11OUT_1X轴输出
12VDD电源正极
图1-1芯片引脚图
1.3SCA100t工作原理
该器件内部包含了一个硅敏感微电容传感器,测量芯片在X和Y方向的加速度以及一个专用ASIC集成电路,ASIC电路集成了EEPROM存储器、信号放大器、AD转换器、温度传感器和SPI串行通信接口,组成了一个完整的数字化传感器。
有±
30o和±
90o两种量程,其主要原理如下:
y
a
x
b
g
图1-2工作原理图
图中g代表重力加速度,x和y分别代表双轴的重力加速度,a和b分别代表双轴上的重力加速度与水平的夹角;
芯片内部通过对x,y,g以及合成量的测量,再将信号通过一定得集成电路,将输出量与角度线性化、数字化,这样得出的输出量就为随倾角变化的分量。
其内部结构如图1-3所示:
图1-4芯片内部结构图
分析内部结构可知SCA100t输出有两种形式,即模拟量与数字量,且:
模拟输出到角度的转化公式为:
α=arcsin[(Vout-offset)/Sensitivity]
其中Vout为芯片输出的电压(OUT_1、OUT_2输出X、Y轴角度对应电压),offset是0°
是输出电压(2.5V),Sensitivity是芯片灵敏度(SCA100t-D01为4V/g,SCA100t-D02为2V/g);
数字输出到角度转化公式为:
α=arcsin[(Dout-Dout@0°
)/Sensitivity]
其中Dout为X或Y通道的数字输出量,Dout@0°
为0°
时X或Y通道的数字输出量,Sensitivity为芯片灵敏度(SCA100t-D01为1638LSB/g,SCA100t-D02为819LSB/g)。
1.4STC89C51单片机简介
1.4.1STC89C51系列单片机的主要性能特点
STC89C51系列单片机是宏晶科技推出的新一代超强抗干扰、高速、低功耗的单片机,指令代码与传统8051单片机完全兼容。
MCS-51的主要特点为:
◆CPU为8位;
◆片内带振荡器,频率范围为1.2~12MHz;
◆片内带128字节的数据存储器;
(RAM)
◆片内带4KB的Flash程序存储器;
(ROM)
◆程序存储器的寻址空间为64KB;
(需要扩展ROM)
◆片外数据存储器的寻址空间为64KB;
(需要扩展RAM)
◆128位(16字节)用户位寻址空间;
(在128个字节中)
◆18个字节特殊功能寄存器SFR(MCS—52子系列为21个);
◆4个8位的并行I/O接口:
P0、P1、P2、P3;
◆2个16位定时器/计数器T0、T1;
(MCS-52子系列为3个,T2)
◆2个优先级别的5个中断源;
(高、低2个)
◆1个全双工的串行I/O接口,可多机通信;
◆片内采用单总线结构;
◆有较强的位处理能力;
1.4.2MCS-51系列单片机的基本组成
图1-5管脚图
AT89C51与51系列中各种型号芯片的引脚互相兼容。
目前多采用40只引脚双列直插,如图2-2所示。
引脚按其功能可分为如下3类:
1电源及时钟引脚——VCC、VSS;
XTAL1、XTAL2;
2控制引脚——
、
、和
;
3I/O口引脚——P0、P1、P2、P3,为4个8位I/O口。
第二章设计内容及要求
2.1设计内容
利用SCA100t-D01倾斜角传感器作为测量元件,设计一个倾斜姿态测量仪
2.2设计要求
该倾斜姿态测量仪需具有以下功能:
1.测量范围为-30°
2.精度为0.001°
3.误差为
4.双行LCD液晶显示。
5.可以设置上下报警温度,当温度不在设置范围内时,可以报警。
6.具有RS232通信接口。
第三章设计总体方案及原理框图
3.1原理框图
本课题设计原理框图如下图(图3-1):
图3-1原理框图
该车体倾斜姿态测量仪原理框图主要由传感器、信号调理电路、AD转换器、单片机、液晶显示器、报警电路等组成;
通过传感器感应被测物体角度的变化,然后经过处理后,由AD转换器将模拟量转换为单片机能处理的数字量,然后由单片机输出信号控制显示、报警等。
3.2设计方案
3.2.1方案一
(1)传感器选用
本方案中选用的传感器是SCA100t-D02,引脚图见图3-2,此芯片能测量的角度范围为-90°
~+90°
数字灵敏度为819LSB/g,模拟输出灵敏度为2V/g,可采用模拟输出或数字输出均可,为简化电路、减少外加AD转换器带来的花费,最优采用数字输出的方式。
图3-2SCA100t-D02引脚图
(2)液晶显示器选用
本方案中选用的液晶显示器的型号是1602,引脚图见图3-3,LCD1602显示器有20个引脚,能够双行显示20为字符,本方案的思想是显示器的两行分别显示传感器的X和Y轴对应角度;
当角度超过20°
时,在对应角度后面显示‘DANGER!
!
’字符,警示倾斜角度过大。
图3-3LCD1602引脚图
(3)单片机选用
单片机选用的是STC89C51系列,具体资料参见1.4节STC89C51简介。
(4)通信协议
本方案中的通信接口采用的是MAX232,引脚图见图3-4,通过此通信接口可实现单片机与上位机PC的通信;
程序的烧录也是通过通信接口实现的。
图3-4MAX232引脚图
(5)报警电路
根据设计要求,即,当倾斜角度超过20°
时,要报警;
本方案中的报警思想是:
倾斜角超过20°
时,通过I/O口发出控制信号,控制LED发光和蜂鸣器发生模拟报警。
如图3-5,
图3-5报警电路
3.2.3方案二
方案二与方案一的不同之处在于传感器的选用和报警电路的改进:
(1)传感器的选用
本方案中选用的传感器是SCA100t-D01,引脚图见图3-6,此芯片能测量的角度范围为-30°
~+30°
数字灵敏度为1638LSB/g,模拟输出灵敏度为4V/g,可采用模拟输出或数字输出均可,为简化电路、减少外加AD转换器带来的花费,最优采用数字输出的方式。
图3-6SCA100t-D01引脚图
(2)报警电路
在方案一报警电路中,外部会通过接口向单片机内部输入一定量的电流,长时间工作会给单片机带来危害,因此改为图3-7的形式,此时外部电路就没有电流输入单片机。
图3-7报警电路
3.2.4最终方案选择
通过比较两个方案的优缺点,最终选用的是方案二。
第四章硬件设计
4.1传感器硬件电路
传感器与单片机的连接如图4-1
图4-1传感器与单片机连接图
传感器选用倾斜角传感器SCA100T-D02,按照图3-2连接,此时传感器输出量为数字量,数字输出到角度转化公式为:
时X或Y通道的数字输出量,Sensitivity芯片灵敏度为1638LSB/g。
4.2液晶显示器硬件电路
LCD1602显示器与单片机的连接如图4-2
图4-2显示器与单片机连接图
LCD1602液晶模块内部的字符发生器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一定的代码,比如大写字母‘A’的代码是01000001(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就可以看到‘A’。
因此,传感器测得的倾斜角经过单片机软件处理程序处理后,通过P0口输出即可显示。
4.3通信接口硬件电路
通信接口与单片机的连接如图4-3
图4-3MAX232与单片机连接图
如图4-3,MAX232的R1OUT、T1IN分别与单片机的RXD、TXD相连,然后MAX232的T1OUT、R1IN分别与PC机的TXD、RXD相连,这样单片机就可以通过MAX232实现与PC机的数据传输。
4.4报警电路
报警电路如图4-4
图4-4报警电路
(1)R1、R2的选择
当通过LED的电流为3~5mA时,LED就可以发光;
忽略LED的内阻,分析计算得:
R1(R2)=5V/5mA=1000
=1K
(2)蜂鸣器外围电路设计
如图所示,当三极管8550基极电压为0时,三极管工作,蜂鸣器就可以发
声,R3、R4均为限流作用,同时也与电容一起起到保护电路的作用。
4.5总硬件原理图
综合前几节的分析可得设计的总体硬件原理图,如图4-5
图4-5总体硬件原理图
第五章软件设计
5.1软件的功能需求
因为所采用的传感器是直接输出数字量的,所以程序的编写就变的简单了。
不需要进行A/D转换了。
而且因为传感器输出的时间和单片机处理的速度很匹配所以我们也没有进行中断处理。
采用的是查询的方式。
软件的功能主要包括:
(1)能在LCD上面显示传感器传出的角度。
(2)判断值是否在报警范围内从而做出不同的判断。
(3)能进行串口通信。
5.2各部分程序框图
图5-1总体软件原理框图
图5-2LCD显示子程序
图5-3倾斜角采集框图
图5-4报警程序框图
图5-5通信程序框图
第六章程序编写
6.1程序编写中遇到的问题及解决办法
程序的编写中遇到了很多问题,很多问题都能解决。
因为我们都有一定的C语言的编程能力,所以语法上面的问题没有。
有的都是逻辑上面的错误。
第一个遇到的问题就是标准问题,在处理数据的时候我们需要用到三角函数,我们刚开始用习惯上面的表达方式,后来老是出错。
在同学的帮助下面我们到C51的安装文件夹下面找到了函数表达式的标准表达方式,解决了问题。
我们遇到的最大的问题就是在编写通信的时候遇到的问题,在那边卡了三天。
后来在黄老师和唐老师的帮助下我们从逻辑顺序入手,本来我们是用一直在发送,根据标志位的状态决定程序的执行顺序,但是实际使用的时候发现这样的话会出现显示器无法显示角度的情况,后来从结构上面和逻辑上面考虑发现我们少了判断,就是判断通信的标志位的状态,所以出现了数据只在保持通信的情况下面才会读取,但是在不需要通信的时候就不能正常读取数据。
发现问题以后解决就好办了,只需要在通信程序前面加一个判断就可以了,在正常通信的情况下面应该怎么办,在不需要通信的情况下应该怎么办。
还有一个问题就是显示的时候遇到的问题,在显示数据的时候是好的,但是我们有报警功能,在报警的时候屏幕上面会出现“DANGER!
”字样,刚开始的时候字母能出现,但是当不需要报警的时候字母就不消失了,后来发现也是判断上面出了问题,就是我们少了判断在不需要报警的情况下面应该怎么办的语句,把语句加上以后问题就解决了。
第七章结果调试
因为我们硬件上面做的工作比较足,所以硬件上面没什么大问题,主要的硬件的问题是报警电路那边的,当时从安全角度考虑用了反相器,但是实际使用的时候发现反相器的输出电压很小,不足以带动LED灯和蜂鸣器。
后来直接把反相器去掉了,这样既简化了电路还实现了需要的功能。
剩下的问题就是软件上面的问题了,而且软件上面的问题都是逻辑上面的错误。
解决这些错误的时候我们采用了“排除法”,先是把每个小程序编好,然后进行整合,这样错误容易检查出来。
当子程序都整合好以后再出现问题以后我们可以根据相对应的问题很快定位到软件中那部分的问题,然后采用隔离部分语句的办法查问题,发现这样查问题又快又准。
第八章设计小结
为期三周的课程设计结束了,在这次课程设计中我学到了很多。
设计一个产品必须按部就班的来,从硬件的设计、选择到组合,然后到软件的编写和最后的调试,一部都不可以马虎。
在课程设计的过程中我们遇到了很多问题就像前面软件部分所说的那样,每个人都想一步成功,可惜这个概率很小。
在做的过程中我们同样遇到了很多的问题,有的问题,比如通信的问题,我们还费了大力气去解决。
解决的过程是痛苦的,但是结果是喜悦的。
每次看到问题解决以后我们的心中都很高兴,同时在解决问题的过程中我们还学到了很多。
比如对于软件的编写采用先部分再整体的办法会使效率更高些,排除问题的时候用隔离法会跟快些。
我们组的课程设计在我们四个人的努力下面提前两天完成了,这个与我们每个人都出力是分不开的。
在做课程设计的时候还要感谢两位老师的帮助,有了他们的帮助我们找问题的时候能更快更准。
当然收获也是很大的,比如在这次课程设计之前我根本不知道蜂鸣器有有源和无源之分,在这次设计中我们遇到蜂鸣器的问题,在解决的过程中知道了蜂鸣器还有有源和无源之分。
在选择电阻的问题上面也摆脱了以前靠瞎说,靠老师给数据的境况,比如在选择LED灯的配套电阻上面,我们根据电源大小和二极管的通过电流算出来电阻应该用四百欧姆左右的,我相信以后再遇到这种问题我都能解决了。
第九章参考文献
程德福、林君、智能仪器、2009、机械工业出版社
张毅刚、单片机原理及应用、2010、高等教育出版社
第三部分
附
录
附 录
附录一:
元器件清单
STC11F16XE单片机 1个
MAX232串行接口 1个
SCA100t-D01倾斜角传感器 1个
LCD1602液晶显示器 1个
蜂鸣器 1个
LED发光二极管 2个
三极管8550 1个
1K电阻 3个
10K电阻 2个
470电阻 1个
10K滑动变阻器 1个
0.1uF电容 6个
30pF电容 2个
10uF电解电容 2个
12MHz晶振 1个
附录二:
完整程序
#include<
reg52.h>
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
intrins.h>
math.h>
stdio.h>
absacc.h>
ctype.h>
stdlib.h>
#defineRS_CLRRS=0
#defineRS_SETRS=1
#defineRW_CLRRW=0
#defineRW_SETRW=1
#defineEN_CLREN=0
#defineEN_SETEN=1
#defineDataPortP0
#defineMEAS0x00//测量模式
#defineRWTR0x08//读写温度数据寄存器
#defineSTX0x0E//x通道自检
#defineSTY0x0F//Y通道自检
#defineRDAX0x10//读X通道加速度值
#defineRDAY0x11//读Y通道加速度值
sbitRS=P2^4;
//定义端口
sbitRW=P2^5;
sbitEN=P2^6;
sbitSPK=P2^0;
sbitSCK=P1^7;
sbitMISO=P1^6;
sbitMOSI=P1^5;
sbitCSB=P1^4;
unsignedcharfrq;
sbitP0_0=P0^0;
sbitP0_1=P0^1;
sbitP0_2=P0^2;
sbitP0_3=P0^3;
sbitP0_4=P0^4;
sbitP0_5=P0^5;
sbitP0_6=P0^6;
sbitP0_7=P0^7;
sbitP1_0=P1^0;
sbitP1_1=P1^1;
sbitP1_2=P1^2;
sbitP1_3=P1^3;
sbitP1_4=P1^4;
sbitP1_5=P1^5;
sbitP1_6=P1^6;
sbitP1_7=P1^7;
sbitP2_0=P2^0;
sbitP2_1=P2^1;
sbitP2_2=P2^2;
sbitP2_3=P2^3;
sbitP2_4=P2^4;
sbitP2_5=P2^5;
sbitP2_6=P2^6;
sbitP2_7=P2^7;
sbitP3_0=P3^0;
sbitP3_1=P3^1;
sbitP3_2=P3^2;
sbitP3_3=P3^3;
sbitP3_4=P3^4;
sbitP3_5=P3^5;
sbitP3_6=P3^6;
sbitP3_7