嵌入式实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于STM32的温湿度测量系统设计
摘要:选用STM32F103ZET6为控制核心,CHTM-02/N为温湿度传感器,利用ADC转换,得到相应的温度、湿度值,并将处理后的数据通过液晶屏显示;每隔一段时间(如2秒)往串口发送一次温湿度信息;具有报警功能,如:当湿度值大于7 0%RH时,蜂鸣器报警,LED闪烁,液晶显示提示。该设计可有效检测当前温湿度,灵敏度高,稳定准确,在实际应用中前景良好。
关键词:STM32 CHTM-Q2/N温湿度传感器串口通信
在现代生活中,温湿度测量几乎涉及到各个领域,包括探险救灾机器人、温室环境智能监控系统、医院、工业控制、农业管理、仓库存储、文物保护等,因此研究低成本、高可靠性的温湿度系统就变得十分重要。本设计选用STM32F103ZET6为核心控制器与处理器, CHTM-02/N为温湿度传感器,利用ADC转换,得到相应的温度、湿度值并通过液晶显示,也可通过串口进行显示。当湿度值大于70%RH 时,进行报警提示。整个系统工作可靠性高,使用良好。
1系统总体设计
图 1系统总体设计框图
系统总体设计框图如图1,可以看到,温湿度测量系统主要由上位机、温湿度传感器、控制器及其
外围电路组成。控制器通过串口与上位机连接。CHTM-02/N温湿度传感器对当前的温湿度进行测量,将测量数据传给控制器,控制器对采集到的温湿度进行初步处理后,将处理后的数据通过TFTLCD液晶进行显示,同时也可通过串口与PC机上位机通信,实时地显示采集到的温湿度。如果要对现场环境进行处理,则控制器可以根据接收到的数据并对其进行分析,进而做出报警等处理,如当湿度值大于70%RH 时,蜂鸣器报警,LED闪烁,液晶显示提示。
2 硬件设计
2.1 STM32F103ZET6 微控制器
本次设计采用的是ALIENTEK 战舰STM32 开发板。
其特点包括:
接口丰富。板子提供十来种标准接口,可以方便的进行各种外设的实验和开发。
设计灵活。板上很多资源都可以灵活配置,以满足不同条件下的使用。我们引出了除晶振占用的I/O 口外的所有I/O 口,可以极大的方便大家扩展及使用。另外板载一键下载功能,可避免频繁设置BO、B1的麻烦,仅通过1根USB线即可实现STM32的开发。
资源充足。外扩1M字节SRAM和8M字节FLASH,满足大内存需求和大数据存储。板载MP3和FM收发芯片,娱乐学习两不误。板载3D加速度传感器和各种接口芯片,满足各种应用需求。
人性化设计。各个接口都有丝印标注,使用起来一目了然;接口位置设计安排合理,方便顺手。资源搭配合理,物尽其用.
2.2温湿度传感器电路设计
CHTM-02/N温湿度传感器模块包含四个引脚,分别是+5V (电压5V)、GND (地)、H (湿度输出)和T (温度输出h 供电为5V±5%,耗电电流为5mA max.(2mA avg.),工作范围为温度0〜60°C、湿度10%- 95%RI^湿度变送范围为0〜100%RH,湿度准确度为±5%RH (在25°C,输入电压=5V),一致性为±3%RH/每批,温度系数为 0.4%RH/°C (输入电压=5V,30〜80%RH温度范围10〜40°C (基准点25°C ),并且通过常规冲击试验,振动试验,冷热试验,高湿试验,温度循环等可靠性测试,能比较准确地测量出当前温湿度。CHTM-02/N温湿度传感器模块与STM32F103ZET6的对应引脚相连,采用 ADC1的通道0和通道1,并进行连接。
3 软件设计
3.1系统软件设计
- 3 -
系统软件设计主要分为4 t任务来完成,分别为:各部分初始化、获取温湿度数据、处理数据并显示以及报警提示。初始化主要是对各t部分进行配置、函数初始化、波特率设置等;获取温湿度数据主要是CHTM-02/N温湿度传感器,利用ADC转换,得到相应的温度、湿度值;处理数据并显示主要是控制器通过相关计算公式及转换将数据进行实时处理,在液晶上进行显示,并可通过串口将数据发送给上位机;报警提示则主要是当湿度值大于70%RH时,蜂鸣器报警,LED闪烁,液晶显示提示,提醒系统采取相关措施。
图2系统软件设计
3.2 CHTM-02/N温湿度传感器设计
CHTM-02/N温湿度传感器主要利用ADC 转换,得到相应的温度、湿度值。
3.3数据处理及显示程序设计
STM32F103ZET6通过相关计算公式及转换将数据进行实时处理,在TFTLCD上进行显示,并通过串口将数据发送给上位机。具体程序如下:
wliile( 1)
a d c l i = G e t_A d c_A v e r a g e(A D C_ Channel」),10):
a d c t = G e t_A d c_A v e r a g e(A D C_ Cliannel_l,10);
h=(float)adch*(33/4096); t=(float)adct*(33/4096);
k=h;
LCD_ShowNum( 156,90,k,2,16); k=(h-k)*100:
LCD_ShowNum(172,90,k,2,16);
k=t;
LCD_ShowNum(156,110,k,2,16);
k=(t-k)*100;
LCD_ShowNum(172,110,k,2,16);
t=t/0.01:
temp=li/0.03;
adcli=li;
adct=t;
printf("liumidity:%f\r\ntemperature:%f\r\
n",temp,t);
LCD_ShowNum( 60+40,150,adct,2,16); j=(t-adct)*100;
LCD_ShowNum( 60+60,150,j,2,16); i=temp;
temp-=(u8)temp;
LCD_ShowxNum( 100,130,i,2,16,0); LCD_ShowNum( 120,130,temp* 100,2,16);
delay_ms(20000);
\
3. 4报警及提示程序设计
当湿度值大于70%RH时,蜂鸣器报警,LED闪烁,液晶显不提不,提醒系统米取相关措施。具体程序如下:if(temp>70)
j
BEEP=1;
LED0=0;
delay_ms(2000);
LED0=1;
LCD_ShowString(60,170,200,16,16, "humid
ity is more than 70%");
\ i
else
j
BEEP=0;
LED0=1;
4 结论