传感器课程报告第11组校园滴漏检测.docx

上传人:b****7 文档编号:9625067 上传时间:2023-02-05 格式:DOCX 页数:16 大小:700.47KB
下载 相关 举报
传感器课程报告第11组校园滴漏检测.docx_第1页
第1页 / 共16页
传感器课程报告第11组校园滴漏检测.docx_第2页
第2页 / 共16页
传感器课程报告第11组校园滴漏检测.docx_第3页
第3页 / 共16页
传感器课程报告第11组校园滴漏检测.docx_第4页
第4页 / 共16页
传感器课程报告第11组校园滴漏检测.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

传感器课程报告第11组校园滴漏检测.docx

《传感器课程报告第11组校园滴漏检测.docx》由会员分享,可在线阅读,更多相关《传感器课程报告第11组校园滴漏检测.docx(16页珍藏版)》请在冰豆网上搜索。

传感器课程报告第11组校园滴漏检测.docx

传感器课程报告第11组校园滴漏检测

传感器实验导论课程设计报告

校园滴漏检测

 

华侨大学电子工程系

一、实验的要求与目的

利用传感器设计电路来实现检测到校园水龙头滴漏的功能。

二、所用传感器

三、传感器简介

1.红外反射传感器

该传感器模块其具有一对红外线发

射与接收管,发射管发射出一定频率

的红外线,当检测方向遇到障碍物时,

红外线反射回来被接收管接收,经过

比较器电路处理之后,绿色指示灯会

亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3V-5V。

内部电路图如下

2.压力传感器

称重传感器的工作原理:

应变式力传感器的受力工作原理如图所示。

将应变片粘贴到受力的力敏型弹性元件上,当弹性元件受力产生变形时,应变片产生相

 

应的应变,转化成电阻变化。

将应变片接成如图所示的电桥,力引起的电阻变化将转换为测量电路的电压变化,通过测量输出电压的数值,再通过换算即可得到所测量物体的重量。

3.湿度传感器

四、单片机

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

引脚图如右图所示.

5、原理图

1.红外传感器

2.压力传感器

3.湿度传感器

六、程序清单

1.红外传感器

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitspeaker=P2^0;

sbitled=P2^1;

sbitjieshou=P2^2;

//

voiddelay(ucharx)

{

uchari;

while(x--);

for(i=10;i>0;i--);

}

//

voidbaojing()

{

while

(1)

{

speaker=1;

led=1;

}

}

//

voidmain()

{

speaker=0;

led=0;

jieshou=1;

while

(1)

{

if(jieshou==1)

{

delay(20);

baojing();

}

speaker=0;

led=0;

jieshou=1;

}

}

2.压力传感器

#include"HX711.h"

//****************************************************

//延时函数

//****************************************************

voidDelay__hx711_us(void)

{

_nop_();

_nop_();

}

//****************************************************

//读取HX711

//****************************************************

unsignedlongHX711_Read(void)//增益128

{

unsignedlongcount;

unsignedchari;

HX711_DOUT=1;

Delay__hx711_us();

HX711_SCK=0;

count=0;

while(HX711_DOUT);

for(i=0;i<24;i++)

{

HX711_SCK=1;

count=count<<1;

HX711_SCK=0;

if(HX711_DOUT)

count++;

}

HX711_SCK=1;

count=count^0x800000;//第25个脉冲下降沿来时,转换数据

Delay__hx711_us();

HX711_SCK=0;

return(count);

}

主要程序:

#include"main.h"

#include"HX711.h"

unsignedlongHX711_Buffer=0;

unsignedlongWeight_Maopi=0,Weight_Shiwu=0;

unsignedcharPrice_Buffer[3]={0x00,0x00,0x00};

bitFlag_OK=0;

//****************************************************

//主函数

//****************************************************

voidmain()

{

Get_Maopi();//称毛皮重量

while

(1)

{

if(Flag_OK==0)

{

Get_Weight();//称重

}

}

}

//****************************************************

//称重

//****************************************************

voidGet_Weight()

{

HX711_Buffer=HX711_Read();

HX711_Buffer=HX711_Buffer/100;

if(HX711_Buffer>Weight_Maopi)

{

Weight_Shiwu=HX711_Buffer;

Weight_Shiwu=Weight_Shiwu-Weight_Maopi;//获取实物的AD采样数值。

Weight_Shiwu=(unsignedint)((float)Weight_Shiwu/4.22+0.05);//计算实物的实际重量

//因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的4.30这个除数。

//当发现测试出来的重量偏大时,增加该数值。

//如果测试出来的重量偏小时,减小改数值。

//该数值一般在4.0-5.0之间。

因传感器不同而定。

//+0.05是为了四舍五入百分位

Buzzer=1;//关闭警报

}

//elseif(HX711_Buffer

//{

//Buzzer=0;//负重量报警

//}

//elseif(HX711_Buffer>Weight_Maopi+200)//大于限定范围,报警

//{

//Buzzer=0;

//}

}

//****************************************************

//获取毛皮重量

//****************************************************

voidGet_Maopi()

{

HX711_Buffer=HX711_Read();

Weight_Maopi=HX711_Buffer/100;

}

//****************************************************

//MS延时函数(12M晶振下测试)

//****************************************************

voidDelay_ms(unsignedintn)

{

unsignedinti,j;

for(i=0;i

for(j=0;j<123;j++);

}

3.湿度传感器

#include

#defineucharunsignedchar

#defineuintunsignedint

longuintpulse=0;//计数输入的方波的个数;

longuintfreq=0;//频率

uchartemp=0;//临时变量

voiddelay_1ms(uinti)//延时函数,约1ms

{

uintx,j;

for(j=0;j

for(x=0;x<=148;x++);

}

voidTime0_Init()//定时器和计数器的初始化函数

{

EA=1;//打开全局中断

TMOD=0x15;//设定定时器1和计数器0的工作方式为方式1

TH0=0xff;//计数器0的初值

TL0=0xff;//计数器0的初值

ET0=1;//允许计数器0中断

TR0=1;//打开计数器0,开始计数

TH1=0x3c;//定时器1的初值

TL1=0xb0;//定时器1的初值

ET1=1;//允许定时器1中断

TR1=1;//打开定时器1,开始计数

}

voidmain()

{

Time0_Init();//初始化定时器和计数器

while

(1)

{

delay_1ms

(1);

if(freq>3000&&freq<6719)

{

P1=0xff;//开灯

}

else

{

P1=0;//关灯

}

}

}

voidISQ_timer0(void)interrupt1//用来计数脉冲数,每一个方波脉冲,计数器进入中断,脉冲数加一

{

TR0=0;

pulse++;

TH0=0xff;

TL0=0xff;

TR0=1;

}

/****************************************************************

用来设定时间,定时器的周期为50ms,当经过20次后,

也即1s后,关断定时器和计数器,将一秒内计数的脉冲数赋给频率pulse,

一秒内采集的脉冲数即为输入方波的频率

****************************************************************/

voidISQ_time1()interrupt3

{

TH1=0x3c;

TL1=0xb0;

temp++;

if(temp==20)

{

TR0=0;

TR1=0;

temp=0;

freq=pulse;

pulse=0;//将脉冲数清零,重新计数

TR0=1;//打开计数器0,进入下一个循环

TR1=1;//打开定时器1,进入下一个循环

}

}

7、实验结果

三个传感器分别做成的单元电路都能够检测出滴漏

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1