传感器与检测技术课程设计规范副本Word文件下载.docx
《传感器与检测技术课程设计规范副本Word文件下载.docx》由会员分享,可在线阅读,更多相关《传感器与检测技术课程设计规范副本Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
主要工作由热释电红外感应器完成信息采集、处理、数据传送经过单片机功能设定到达报警模块这一过程。
就此设计的核心模块来说,单片机就是设计的中心单元。
单片机应用系统也是由硬件和软件组成。
硬件包括单片机、输入/输出设备、以及外围应用电路等组成的系统,软件是主要是工作的程序通过编写程序来控制输入的信号。
2硬件电路设计
2.1硬件框图
本设计包括硬件和软件设计两个部分。
从设计的要求来分析该设计须包含如下结构:
红外感应部分、STC89C52单片机、报警系统三大部分。
电路总原理图如图2-1所示:
图2.1硬件框图
处理器采用51系列单片机STC89C52。
整个系统是在系统软件控制下工作的。
设置在监测点上的红外探头将人体辐射的红外光谱变换成电信号,送出TTL电平至STC89C52单片机。
在单片机内,经软件查询、识别判决等环节实时发出入侵报警状态控制信号。
驱动蜂鸣器及报警指示灯报警。
2.2红外感应部分
2.2.1电源模块
本系统电压为4.5v左右,直接接3个1.5V的直流干电池提供电源,然后用导线连接电源接口模块。
2.2.2热释电传感器
热释电红外传感器(简称PIR)能以非接触形式检测出人体辐射的红外线能量的变化,并将其转换成电压信号输出。
将这个电压信号加以放大,便可驱动各种控制电路,人体辐射的红外线中心波长为9~10--um,而探测元件的波长灵敏度在0.2~20--um范围内几乎稳定不变。
在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为7~10--um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器,本传感器是整个系统的关键,只有本传感器才能感应到人体红外线。
如图2-2所示。
图2-2热释感应传感器
2.2.3人体热释电原理
在自然界中人体的温度会维持在37摄氏度,这个温度的人体会释放出10um特定波长的红外线,而本设计中用到的被动式红外检测传感器正是利用了这一点,靠检测人体释放出的10um特定波长红外线来工作的。
在基尔霍夫定律中指出,在一定的温度下,在到达热平衡时,任何物体此时的辐射量和吸收量成正比例,这便是说实时的发射率与吸收率是相等的。
发射率是一个物体发射热辐射的能力。
现在所说的热辐射本领都与黑体的热辐射本领相比较而得知的,这里提到的黑体是辐射本领最大的,与黑体辐射的比例系数就是发射率,黑体的发射率都等于1,所以任何物体的辐射率总是小于1,一般人的辐射能量与310K绝对温度下的黑体的辐射能力相似。
某个人的辐射率是0.99这个数字表示这个人辐射能力很高,很接近黑体。
2.2.4红外信号检测原理
从原理上来讲,传感器外的任何发热物体都是会产生红外线,本设计中的热释电人体红外传感器就是这样,对于自身之外的温度变化都会体现在自身敏感单元上,并且很灵活。
外部温度的变化体现在敏感单元,敏感单元将这种温度的变化转换为电信号。
周围环境与传感器自身的温度变化都是有自身内在构成的部分决定了它不产生电信号,所以没有向外输出信号,对于低频效应传感器,它的频率通常是在0.1~10Hz这个区间,对5~15um这个区间波长的红外线的响应决定了,传感器只对外界的温度变化而敏感,这种变化就是人体移动所导致的敏感的。
可以说,传感器只对人体的运动才敏感,而对静止和移动很慢的人体没有反应。
2.2.5信号采集处理模块
图2-3信号处理模块
图2-4实物图
本电路是将人体辐射的红外线转变为电信号。
热释红外感应2脚输入到前置放大器OP1进行放大,然后由C4耦合给运算放大器OP2进行第二级放大。
再经过电压比较器COP1和COP2构成双向鉴幅器处理后,检出有效触发信号去启动延时时间定时器输出信号在经过R3进入单片机部分进行处理。
延时周期可通过R12来调节输出,在延时时间内只要Vs发生上跳变,Vo就会从Vs上跳变时刻起继续延长一个周期,而电路中的电容为了能够更好的控制了芯片内的定时器,若Vs一直保持为高电平,这样就可以通过P13传输到单片机内进行下一步处理。
而根据不同的距离要求来调节R13,最大可以调节到7米左右。
图中BISS0001中1脚用跳线连连接住一个接高电平后,在延时时间段内如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才将高电平变为低电平,本电路设计就是可触发方式。
2.3单片机部分
2.3.1STC89C52单片机简介
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
这一模块以单片机为中心把程序代码烧进去然后外围接上复位电路、振荡电路、键盘控制、LED显示电路、报警电路等子模块。
2.3.2单片机最小系统
要使单片机工作起来最基本的电路构成为单片机最小系统如图2-7所示。
图2-5单片机最小系统
单片机最小系统包括单片机、复位电路、时钟电路构成。
STC89C52单片机的工作电压范围:
4V-5.5V,所以通常给单片机外界5V直流电源。
连接方式为单片机中的40脚VCC接正极5V,而20脚VSS接电源地端。
复位电路就是确定单片机的工作起始状态,完成单片机的启动过程。
单片机接通电源时产生复位信号,完成单片机启动确定单片机起始工作状态。
当单片机系统在运行中,受到外界环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。
一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET端持续给出2个机器周期的高电平时就可以完成复位操作。
本设计采用的是外部手动按键复位电路,需要接上上拉电阻来提高输出高电平的值。
时钟电路好比单片机的心脏,它控制着单片机的工作节奏。
时钟电路就是振荡电路,是向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。
XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。
如采用外部时钟源驱动器件,XTAL2应不接。
因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us。
2.3.3按键控制电路
本电路的设计就是为了控制电路中布防和紧急状态下不同的工作形式,当按下布防按键后,30秒后进入监控状态,当有人靠近时,热释红外感应到信号,传回给单片机,单片机马上进行报警。
当遇到特殊紧急情况时,可按下紧急报警键,蜂鸣器进行报警。
如图2-8所示。
图2-6按键部分
2.3.4指示灯和报警电路
在单片机的I/O里会输出高低电平,在P20、P21和P22分别接上LED指示灯而P23接上蜂鸣器而蜂鸣器外接个8550的三极管起到开关作用,当三极管达到饱和状态下就驱动了蜂鸣器工作了。
图2-7指示灯和报警电路
3软件的设计
3.1主程序工作流程图
按上述工作原理和硬件结构分析可知系统主程序工作流程图如下图所示:
图3-1主程序工作流程图
3.2报警判断程序
如果检测的脉冲信号后,表示有人闯入监控区,从而经过单片机内部程序处理后,驱动声光报警电路开始报警,持续报警,然后程序开始循环工作,
Voidled_show()_task_2
{
while
(1)
{
switch(state)
case0:
LED_Green=1;
LED_Red=1;
os_wait2(K_TMO,50);
break;
}
case1:
LED_Green=0;
case2:
LED_Yellow=1;
case3:
LED_Red=0;
Buzzer=0;
os_wait2(K_TMO,10);
Buzzer=1;
default:
break;
}
3.3串口通信
本系统采用异步通信,在异步串行通信时,每一个字符都是作为独立的信息,可以随机出现在数据流中。
为确保异步通信的正确性我们在数据的的字符格式中加入了终止位和起始位,就是在数据正式的发送
3.3.1串口程序
voidUartInit(void)//2400bps@12.000MHz实际4800bps
TMOD=0x21;
//定时器1操作模式2:
8位自动重载定时器
SCON=0x50;
//8位数据,可变波特率
TL1=0xF3;
//设定定时初值
TH1=0xF3;
//设定定时器重装值
PCON|=0x80;
//使能波特率倍速位SMOD
TF0=0;
//清除TF0标志
EA=1;
//开总中断
ES=1;
//串口中断
ET1=0;
//禁止定时器1中断
TR1=1;
//启动定时器1
charputchar(unsignedchardat)
TI=0;
SBUF=dat;
while(!
TI);
returnSBUF;
4调试
4.1Keil编译器软件简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
下面详细介绍KeilC51开发系统各部分功能和使用。
图4-1C51工具包整体结构图
KeilC51单片机软件开发系统的整体结构C51工具包的整体结构,如图3.1所示,其中uVision与Ishell分别是C51forWindows和forDOS的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及A51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
4.2使用Keil软件建立一个工程
Keil是目前进行51单片机开发最常用的编译软件。
关于Keil的使用,有很多的资料介绍,这里只介绍其整个编译过程,在最短时间内开始使用Easy51DP-2开发板。
对于Keil更详细的介绍,可以参考一些专门书籍资料。
在Keil里,每一个完整的程序,都是以一个工程的形式建立的。
一个工程里可以有一个或多个*.c文件和*.h文件,但只可以有一个main()函数。
一般的做法是将包含main()函数的C文件加入到工程中,其他文件以#include头文件的形式加到这个C文件里。
这样,在编译的时候,其他的文件会被自动的导入到工程里来。
打开Keil软件后,出现(图16)所示界面。
当然,如果Keil在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。
图4-2Keil软件主界面
首先点击Project->
NewProject…(Project->
OpenProject…为打开一个已经存在的工程),如图17所示。
图4-3Keil软件打开新工程界面
点开后,在出现的对话框中选择工程存在路径,单击“保存”后,出现(如图18所示)界面。
在此界面上选择电路板上所用的单片机型号:
AtmelSTC89C52(或者是AT89S52,视开发板上具体型号而定),单击“确定”。
图4-4选择电路板上所用的单片机型号
设置完成后,软件会提示“是否将8051上电初始化程序添加入工程?
”如图19所示,这个一般选择“否”。
(关于STARTUP.A51的相关内容可查阅相应资料)
图4-5是否将8051上电初始化程序添加入工程
这样,就建立了一个空的51工程。
接下来的事,就是在这个工程里面加入自己的程序代码。
点击
,或者File->
New,便建立了一个空的文本框。
现在,就可以开始在里面输入你的代码了。
保存时注意:
如果是用C语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.asm。
到目前为步,我们已经建立了一个工程,也写了一个程序代码。
但现在还不能开始编译。
因为还没有将程序代码添加到工程里面去。
下一步就是将写完的程序添加到工程里面,如图20所示,在左边ProjectWorkspace里的SourceGroup1上右击,选择AddFilestoGroup’SourceGroup1’。
在打开的对话框中,选择刚存的文件路径和对应的扩展名。
这样,程序就添加进了这个工程。
图4-6添加文件到工程中
下一步,就开始编译刚输入进去的代码。
点击工具栏中的
按钮。
接着,Keil会打出下面的提示:
Buildtarget'
Target1'
assemblingled.asm...
linking...
ProgramSize:
data=8.0xdata=0code=100
"
first"
-0Error(s),0Warning(s).
其中“"
-0Error(s),0Warning(s).”说明现在的工程编译通过,0个错误和0个警告。
建立工程的时候,默认是不生成HEX文件的,得在编译做如下设置:
单击
,或者在ProjectWorkspace里Target1上右击,选择“OptionsforTarget‘Target1’”。
出现如图21所示对话框,选择“Output”按图示,将箭头所指的多选框勾上,点“确定”。
现在再点击
重新编译,系统提示:
“creatinghexfilefrom"
...”。
便会在工程所在文件夹里生成HEX文件。
图4-7生成HEX文件
4.3使用Debug进行调试
Keil有很强大的调试功能,可以显示C程序的反汇编代码、可以计算代码运行的时间、可以显示程序中某一变量的值……能用好这个调试工具对编写单片机程序会有很大的帮助。
同样的,在这里,只对Debug进行简单应用介绍,更详细的使用方法可以参看相关书籍资料。
图4-8调试前设置窗口
首先,单击
,弹出如图22所示对话框,在Target页面上设置对应的晶振频率。
其他不用作修改。
设置完成后,单击
,进入调试界面(如图23所示)。
图4-9Keil调试界面
中对应的工具按钮则可以开始调试。
另外,“View”下的三个工具在调试中会经常用到如.图24所示,“DisassemblyWindow”显示C文件的反汇编程序;
“Watch&
CallStackWindow”可以显示程序中某一变量的值;
“MemoryWindow”可以显示内存中某一地址的值。
图4-10三个常用的调试工具
4.4运行状态
1.紧急报警键:
按下紧急报警键,系统会马上报警。
2.布防键:
按下布防键绿色发光二极管会闪烁,说明系统准备开始布防,布防结束后绿色发光二管会长亮,说明系统进入布防状态了,只要一有人进入传感器的范围内系统马上就会报警。
3.取消键:
按下取消键可取消当前报警。
4.5误差分析
容易受各种热源、光源干扰被动红外穿透力差,人体的红外辐射容易被遮挡,不易被探头接收。
环境温度和人体温度接近时,探测和灵敏度明显下降,有时造成短时失灵。
5上位机
5.1上位机的介绍
上位机是指可以直接发出操控命令的计算机,一般是PC/hostcomputer/mastercomputer/uppercomputer,屏幕上显示各种信号变化(液压,水位,温度等)。
5.2上位机执行过程的流程图
图5-1上位机工作流程图
5.3上位机程序
此程序设计目的在于读取并显示从串口中采集到的数据,设计思路为创建两个线程并发执行,代码如下:
#ifndefM_SERIAL_THREAD_H
#defineM_SERIAL_THREAD_H
#include<
QThread>
#include"
CommunicateCommDlg.h"
classSerialThread:
publicQThread
Q_OBJECT
public:
SerialThread();
~SerialThread();
Posix_QextSerialPort*m_GPRS_Com;
/*GPRS串口应用对象*/
qint64GPRS_LenOld;
protected:
voidrun();
signals:
voidm_GPRS_Done(QByteArraytemp);
};
#endif//M_SERIAL_THREAD_H
m_Serial_Thread.h>
//构造函数
SerialThread:
:
SerialThread()
structPortSettingsm_GPRS_Com_Setting={BAUD115200,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,10};
m_GPRS_Com=newPosix_QextSerialPort("
/dev/ttyS1"
m_GPRS_Com_Setting,QextSerialBase:
Polling);
m_GPRS_Com->
open(QIODevice:
ReadWrite);
//返回布尔类型,打开成功是true打开失败是false
GPRS_LenOld=0;
/*在构造函数内赋初值*/
//析够函数
~SerialThread()
//线程启动函数
voidSerialThread:
run()
QByteArraytemp;
while(true)
qint64GPRS_Len=m_GPRS_Com->
size();
if((GPRS_LenOld==GPRS_Len)&
&
(GPRS_LenOld>
0))
//读取串口缓冲区的所有数据给临时变量temp
temp=m_GPRS_Com->
readAll();
//然后写入FIFO
//再置
emitthis->
m_GPRS_Done(temp);
else
GPRS_LenOld=GPRS_Len;
msleep(10);
//睡眠10ms
5.4上位机界面
图5-2上位机界面
附录1
这次我们这一组传感器课程设计的任务是做一个红外防盗报警器,由于是分工合作,我就参与其中选题,写课程报告,修改论文,画电路图,焊接电路。
通过参加此次设计,让我印象最深就是焊接电路,由于之前没有学过焊接技术,在焊接过程中错误百出,例如电烙铁使用后一定要稳妥地放在烙铁架上,应避免导线等被烙铁烫坏,但我总是不经意间就放在桌上。
另外焊锡是也要注意,要避免形成“虚焊”,而焊接时间太长又容易损坏元器件,所以一般一两秒内要焊好一个焊点,若没完成,就要等一会儿再焊一次。
可是我焊出来的点不是圆的就是歪的,由于脚与脚之间的距离太小,好几个脚都焊在了一起,结果就是造成很多的虚焊。
本来想修饰一下,让它看起来好看一点,结果更糟糕。
结果就把电路板焊的太难看,除了电路是通,其他感觉就是失败。
虽然这次的课程设计不是太成功,可我还是很高兴,因为他让我看到自身能力反应不足,严重的动手能力不好,实践检验真理,真是一点没错啊。
我希望我们通过