基于 labview光照度检测.doc
文本预览下载声明
基于 labview的光照度检测
光在生活中无处不在,因此对人类的生活以及生产活动都产生了各种各样的影响。如实验室中有的实验对光的强度有严格的要求,在某些工业化生产中也需要严格控制光的强度,因此光强的检测在生活中有着非常广泛的应用。我们由此设计了一套可以检测并显示光强的模型,可以实时感知光的强度,并记录数据,实现人机交互,方便实现光的自动化控制。
一、系统方案
设计流程
通过传感器实时测量所处环境的光强度,然后将信号转换成电平信号输入单片机,单片机读取电压的变化将信号输入电脑,电脑通过labview读取信号并将信号显示的记录。
模块选择
光照测量模块
我们采用光敏电阻作为检测光强的传感器,基本特性及其主要参数其电阻会随着光强度的变化而变化,在光敏电阻两端的金属电极之间加上固定电压,其中便有电流通过,受到适当波长的光线照射时,电流就会随光强的增加而变大,从而实现光电转换。
信号转换
采用mega16单片机片内的AD读取电压值,然后单片机将电压信号通过USB线传给电脑
信号显示与记录
电脑上通过labview读取单片机传来的信号值,将其转换成光的强度大小并且实时显示出来,记录相应时间的光强度的变化。
电路设计
电路设计十分简单,给光敏电阻加上5V电压,然后直接与单片机相连,然后利用RS-232转接USB与电脑相连
二、LabView程序设计
数据的获得:
采用VISA接口程序库,程序编写见图Figure 1。因为在LabView中没有将二进制字符串转化为数值的express控件,便编写了一个将二进制字符串调整为十六进制的子Vi。这样通过USB口边可以接收我们需要的数据。
Figure 2
数据显示部分:
采用了两种显示方式:一、直接用数值显示控件;二、用仪表显示数值。
数据提取部分:
并不是所有的情况下,都是有人盯着数据的,于是我们编写了一段数据记录的程序段,将数据存储到了excel表格中,程序如图Figure 3。这一部分花费的时间最长,本来只想将这一部分放入原先的vi程序中,结果有时间刷新的冲突,最后采用全局变量的方法,将数据用另一个程序来存储。
Figure 3
报警部分:将报警部分编成了一个子Vi的形式:
整体的程序框图:
用于仪表显示的数据是经过采样八次求取平均值的方法。
整体界面的设计:
采用了最常规的设计方法,只是将颜色给修改了一下,调节的相对匀称一点。采用了双界面的形式:选项卡1用来设置参数;选项卡二用来显示工作状态,以及我们所观察的对象。
三、总结
最终的测试结果我们都基本满意,可以较准确感知当前光强度的变化,而且可生成excel文件记录数据,方便查询利用。本模型虽然精度没有那么高,只能给出光照强度的相对变化,但是总体结构十分简单,采用的元器件也都很普通,因此成本十分低廉,便于推广利用,为节约生产成本提供了一个简单的选择。
附录:单片机程序的设计:
因为项目主要用的是LabView,所以单片机用到的知识并不是很多。主要是Usart总线和AD转化两个部分。程序内容如下:
/*****************************************************
File name : 实时测量
Chip type : ATmega16L
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include mega16.h
#include delay.h
#define BAUD 9600 //波特率采用9600bps
#define CRYSTAL 4000000 //系统时钟4MHz
//计算和定义波特率设置参数
#define BAUD_SETTING (unsigned int)((unsigned long)CRYSTAL/(16*(unsigned long)BAUD)-1)
#define BAUD_H (unsigned char)(BAUD_SETTING8)
#define BAUD_L (unsigned char)(BAUD_SETTING)
// USART控制和状态寄存器的标志位定义
#define RXC 7 // UCSRA位定义
#define TXC 6
#define UDRE 5
#def
显示全部