温湿度记录仪单片机
基于单片机的温湿度记录仪的设计
温度和湿度一直是环境监测领域的两个最基本、重要的参数,对这两个参数进行测量、监视、记录的设备也是各种各样。本文设计了一种基于AVR单片机的温湿度记录仪。该记录仪使用红外遥控器对记录仪进行参数设置、控制,可以实时测量环境温度和湿度,并且进行本地存储、显示,测量的历史数据还可以利用单片机的串行口传送至上位机,利用上位机进行监测。
一、温湿度记录仪系统组成及基本原理
该记录仪实现以下功能:进行温湿度数据的采集、记录和显示;利用遥控器进行系统初始时间的设置;自助选择温湿度数据采集的时间间隔;将本地记录的历史数据传送至上位机PC端;使用遥控器可以控制显示当前实时的温湿度数据或多屏查看历史记录数据等。本文设计的温湿度记录仪用单片机作为控制核心,由温湿度采集模块、时钟模块、显示模块、红外发送接收模块、串行通信模块、电源模块等组成,其结构图如图1所示。温湿度采集模块采集环境的温度和湿度数据,并将它们转换为数字量,提供给单片机进行处理。时钟模块为整个记录仪提供精确、详细的年、月、日、时、分秒等时间信息,并在系统掉电时能自动启用后备电源为此模块供电。显示模块进行本地实时温湿度数据的显示、历史记录数据的显示等。红外接收模块与红外遥控器配合,对记录仪进行参数设置、参数修改,记录仪运行过程中对显示器显示内容进行更换等功能。串行通信模块负责将记录仪上记录的历史数据传送至上位PC机。电源模块为整个记录仪供电。
二、温湿度记录系统硬件设计
系统硬件主要采用高性能AVR单片机ATmega16,数字温湿度传感器SHT10,时钟芯片PCF8563,点阵式LCD显示模块12864和红外接收器VS1838等器件。
2.1单片机ATmega16介绍
高可靠性、功能强、高速、低功耗和低价位等性能,一直是衡量单片机的重要指标,也是单片机占领市场,赖以生存的必要条件。本系统中,采用了高性能,低功耗的8位单片机ATmega16。
ATmega16功能齐全,外围接口丰富,具有2个8位、1个16位定时/计数器,8路10位AD转换器,4通道PWM,2个可编程的串行USART,共有32个可编程的I/O接口。片内具有16KB的系统内可编程Flash,1KB的片内SRAM,512字节的EEPROM。具有空闲、ADC噪声抑制、省电、掉电、待机等多达6种休眠模式。因ATmega16使用哈弗结构、全静态工作、以字作为指令长度单位、精简指令集,其大多数指令在一个时钟周期内完成,故其数据吞吐率很高,工作于16MHz时性能高达16MIPS,从而可以减缓系统在功耗和处理速度之间的矛盾。ATmega16共有131条指令和32个8位通用寄存器,所有寄存器都直接与算逻单元相连,使得一条指令在一个时钟周期可以同时访问两个寄存器,大大提高代码效率,可以很好的进行数据传送以及温度采集。
2.2温湿度采集模块
温度、湿度的测量使用集成式数字温湿度传感器SHT10。SHT10将温度湿度感测、信号变换、AD转换器等功能集成到一个芯片上,提供两线数字串行接口SCK和DATA,支持CRC传输校验,测量精度可编程调节,提供具有温度补偿的温度测量值,测量和通信结束后,自动转入低功耗模式,测量时可将感测头完全浸入水中。本记录仪设计时温度使用14b分辨率,量程范围:
-400C~990C,测量精度:±0.50C,分辨率0.01 0C;湿度使用12b分辨率,量程范围:0~99%RH,测量精度:±4.5%RH,分辨率0.03%RH。电路设计时将SHT10的SCK、DATA引脚分别接ATmega16的PC7、PC6引脚,由ATmega16给SHT10提供时钟信号,DATA引脚用于两者进行数据交换。
2.3时钟模块
记录温湿度数据时,需要精确的时间信息,该信息由时钟模块提供。时钟模块以飞利浦公司的可编程时钟/日历芯片PCF8563为核心,辅以相应的外围电路。PCF8563内部具有16个8位寄存器、内置32.768KHz的振荡器、用于给实时时钟RTC提供源时钟的分频器、定时器、报警器、掉电检查和I2C总线接口等部件。16个寄存器中2个用于控制寄存器和状态寄存器,7个用于时钟(秒、分、时、日、星期、月、年)计数器,4个用于报警寄存器(定义分、时、日、星期的报警条件),剩下3个分别是CLKOUT频率寄存器、定时器控制寄存器和倒计数定时寄存器。这些寄存器通过两线式I2C总线(时钟SCL、数据SDA)由单片机进行读写。PCF8563由于采用I2C总线,其外围电路设计简单。PCF8563共有8个引脚。本设计中OSCI和OSCO接32.768KHz的晶振。SCL引脚接单片机的PC0口,给I2C总线提供时钟信号,SDA引脚接单片机的PC1口,实现时间、日期等的读写。电源引脚Vdd除了接系统电源之外,还连接了3.3V的纽扣电池作为备用电源。当系统掉电时,3.3V的后备电源启用作为PCF8563的供电电源。
2.4红外接收模块
温湿度记录仪在使用时,会有一些特殊场合,例如记录仪所放高度、记录仪放置于密闭空间等地方,使得记录仪不便于控制,需要进行短距离的非接触式控制。系统选用红外通信技术进行短距离通讯。红外通信技术具有信息容量大、结构简单、方向性好、功耗低、价格低廉、保密性强等特点。系统使用一体化红外接收头VS1838和集成式红外遥控器配合,对记录仪的时间设置,显示格式等控制信息进行传输。当遥控器不同按键被按下后,即有不同的串行二进制遥控码产生,该编码经38KHz的载波信号进行二次调制后,再通过红外发射二极管以红外信号形式发射出去。VS1838接收头集成了红外接收二极管、信号放大器、限幅器、选频带通滤波器、积分电路以及比较器等。红外接收二极管将接收到的信号传输至放大器进行放大,通过限幅器将信号限制在合适的电压范围内,经过带通滤波器,只保留30~60KHz的信号。该信号经解调、积分电路后传输至比较器输出高低电平,转换为发射端发来的二进制编码,通过引脚DQ送至单片机的PC2引脚,供单片机使用。
2.5显示模块
显示模块在本地显示当前的时间、温度和湿度,显示系统初始化时的初始设置时间、温湿度记录时间间隔,显示记录的历史数据等信息。因显示的数据量较多,本系统采用点阵图形液晶显示模块LCD12864。LCD12864显示分辨率为128*64,可以显示8*4行16*16点阵的汉字。12864硬件电路结构以及软件编程与同类型图形点阵液晶模块相比,要简洁的多而且价格也较低,得到了广泛的应用。系统采用8位并行12864显示模块,该模块与外部的接口共有20个引脚。该模块与外部连接电路简单。设计时将12864的8根并行三态数据线DB0~DB7接单片机的PB0~PB7口,用于与单片机之间进行数据传输。12864的对比度(亮度)调整引脚V0接可调电阻,通过调节电阻值改过亮度。12864的并行指令/数据显示选择引脚RS、读写控制引脚R/W、并行的使能引脚E分别接单片机的PD7~PD4,由单片机给出控制信号。因使用并行接口,故并/串行接口选择引脚PSB接高电平。复位端RESET、背光源正端和PSB端共同接电源端VCC。LCD驱动电压输出端Vout经过10K的限流电阻接电源端VCC。
2.6通信模块
通信模块完成单片机与PC机的通信。该记录仪最多可以连续存储最近50条的温湿度数据。而有些使用场合需要将更长时间的数据永久保留,使用通信模块可以将记录仪里的数据送入PC机进行永久存储。单片机与PC机之间采用串行通信,由于PC机串口电平和单片机串口电气规范不一致,采用MAX232芯片进行电平转换。使用ATmega16单片机的PD0口(RXD)接MAX232的9脚R2OUT,PD1口(TXD)接MAX232的10脚T2INT。MAX232的引脚7、8接PC机的全双工串行口。随着物联网技术的发展,该设备还可以作为物联网的终端节点使用,在系统设计时,将PA口引出预留给Zigbee网络使用。
2.7电源模块
电源模块给整个记录仪供电。记录仪使用交流220V市电作供电电源,记录仪上的芯片供电电源要求直流5V。因此,电源模块要完成AC220V到DC5V的转换。原理为220V交流电经过全桥整流电路后整流后,进行滤波、稳压后,送入7805三端稳压器得到稳定的直流电压5V。
三、温湿度记录仪软件设计
系统硬件架构完成后,系统软件所实现的功能主要是进行上电之后的初始化设置,温湿度数据的实时采集、记录、显示和传送。单片机上电或复位后进行系统初始化,完成对单片机的IO口、内部寄存器、串行通讯的波特率等进行初始设置,然后扫描红外接收器,看遥控器是否有遥控信号传送过来。若有,分析信号是进行记录仪的设置信号还是数据传送信号,设置信号转入设置记录仪时间、记录间隔、显示模式的设置,传送信号控制记录仪中记录的历史数据传送至PC机。若没有遥控信号送入单片机,查询是否是记录间隔时间到,若是进行温湿度数据的采集、记录和显示,否则重新查询是否有遥控信号送来。软件设计采用C语言编程语言,采用模块化的设计方法。根据流程图,将程序分为初始化模块,红外遥控信号采集模块,红外遥控信号处理模块,温湿度数据采集模块,采集数据转换为存储数据、显示码转换模块,PCF8563设置、时间信息的读取、显示码转换模块,温湿度数据记录模块和记录历史数据传送等模块。
总结
本文研究设计了一种基于AVR单片机的温湿度记录仪,该记录仪具有数据采集精度高、体积小、携带方便、成本低、功耗低、结构简单、控制简单方便等特点。该记录仪也存在一定的不足之处,因历史数据的存储使用的是单片机内部的EEPROM区,而单片机的EEPROM区容量有限,该记录仪最多只能存储500条历史数据。若设置为15分钟记录一条数据,记录仪本体只能存储3天的历史数据。单片机扩展大容量的存储芯片可以增加记录的历史数据。