传感器实验-土壤湿度传感器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
传感器实验
1. 土壤湿度传感器介绍
SHTxx 系列单芯片传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专利的工业COMS 过程微加工技术(CMOSens®),确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14 位的A/D 转换器以及串行接口电路在同一芯片上实现无缝连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个 SHTxx 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。两线制串行接口和内部基准电压,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
应用领域 ➢ 汽车 ➢ 消费品 ➢ 气象站 ➢ 湿度调节器 ➢ 除湿器 ➢ 数据记录器 ➢ 自动控制 ➢ 家电 ➢ 医疗
土壤湿度传感器
知识准备
1
讯方公司传感器实验
2
通过本实验了解土壤湿度传感器的硬件电路和工作原理
1.编写一个读取土壤湿度传感器数据的程序
2.将数据做简单的处理显示
1.硬件部分
(1)采集节点一个
(2)J-Link仿真器一个
(3)显示终端一台
(4)土壤湿度传感器一个
2.软件部分
Keil μVision4 开发环境,J-Link 驱动程序
1.土壤湿度传感器工作原理
电路中用到,土壤湿度传感器电路、信号放大电路、单片机系统、状态显示系统构成。其基本工作原理:经过信号放大电路,土壤湿度传感器电路将感受到的土壤湿度以数字量形式输出至单片机系统, 经AD转换由状态显示系统进行显示。
土壤湿度传感器工作框图如图5-1:
图5-1 电路工作框图
1.土壤湿度传感器的硬件电路图
电路中,土壤湿度传感器电路如图5-2。
图5-2 土壤湿度传感器原理图
6 实验步骤
实验基本步骤如下:
1.启动Keil μVision4,新建一个项目工程Bank,添加常用组,并添加相应库函数;
2.在user文件中建立main.c,SystemInit.c,PublicFuc.c文件;
3.新建一个组sensor,在sensor中编写读取土壤湿度传感器状态的代码;
4.编译链接工程,并生成hex 文件,所有文件如下图6-1所示:
图6-1 文件示意图
3
讯方公司传感器实验
4
5.将土壤湿度传感器接到传感器接口2;
图 6-2 土壤湿度传感器
6.将J-Link仿真器、ZigBee路由器接入传感器采集节点,仿真器USB 接口连入PC 机,插好电源,并打开开发实验箱上的电源开关,如图6-3;
图6-3 硬件连接示意图
7.将ZigBee协调器接入智能网关,插好电源,并打开电源启动智能网关系统,运行传感器实验显示程序;
电
源
开
关
电
源
传
感
器
接
口
1
传感器接口2
传感器接口3
J-LINK接口
ZigBee_DEBUG
复位
节点按键
拨码开关
ZigBee按键
红
外
发
射
天
线
指
示
灯
ZigBee复位
5
图6-4 传感器实验显示程序
图6-5 智能网关连接示意图
8. 选择【Debug 】->【Start/Stop Debug Session 】,启动J-Link 进行仿真调试; 9. 选择【Debug 】->【run 】或者按快捷键“F5”,运行程序; 10. 验证:对土壤湿度进行呼气,观察显示屏上数值的变化;
11. 验证完毕后,退出J-Link 仿真界面,关闭Keil μVision4软件;关闭硬件电
源,整理桌面; 12. 实验完毕。
7
实验部分参考程序(完整程序见源程序文件)
ZigBee 协调
电源接口
讯方公司 传感器实验
6 代码解释:
7.1 IO 口初始化
void Sensor_TTL_Init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( SHT11_SCK_CLK, ENABLE ); RCC_APB2PeriphClockCmd( SHT11_DATA_CLK, ENABLE );
//打开GPIOC 的时钟
GPIO_InitStructure.GPIO_Pin = SHT11_SCK_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(SHT11_SCK_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = SHT11_DATA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(SHT11_DATA_PORT, &GPIO_InitStructure); //配置SDA,也就是PC11为浮空输入模式 }
解释:其中宏定义为: #define SHT11_SCK_PORT GPIOA #define SHT11_DATA_PORT GPIOA #define SHT11_SCK_CLK RCC_APB2Periph_GPIOA #define SHT11_DATA_CLK RCC_APB2Periph_GPIOA #define SHT11_SCK_PIN GPIO_Pin_9 #define SHT11_DATA_PIN GPIO_Pin_10 输入输出的状态改变:
#defineSHT11_DATA_IN() {GPIOA->CRH&=0XFFFFF0FF;GPIOA->CRH|=8<<8;} #define SHT11_DATA_OUT() {GPIOA->CRH&=0XFFFFF0FF;GPIOA->CRH|=3<<8;}
7.2 采集数据函数
u8 Get_Soil_humidity(u16 *Value) {
//float dew_point;
value humi_val, temp_val; unsigned char error, checksum;
sht11_connectionreset(); error = 0;
error += sht11_measure(&humi_val.i, &checksum, HUMI); //measure humidity error += sht11_measure(&temp_val.i, &checksum, TEMP); //measure temperature if(error != 0)