湿度监测系统设计方案

时间:2012-06-04

  摘要:本文提出了一种基于单片机,SD卡和湿度传感器的湿度监测系统设计方案,并将其应用于森林湿度监测系统实例中,该方案不仅简便易行,成本低廉,而且具有实际应用价值。同时,该系统性能稳定,操作方便,具有较高的性价比,适于在实际中应用。现就基于SPCE061A单片机,SD卡和湿度传感器的湿度监测系统设计方案介绍如下。

  一、系统方案介绍

  系统总体框图如图1所示。其中,单片机采用凌阳公司的SPCE061A.该单片机内部结构框图如图2所示,相关说明见表1。

图1 系统总体框图

图1 系统总体框图

图2 SPCE061A结构

图2 SPCE061A结构

表1 结构图说明

表1 结构图说明

  1.系统方案设计

  应用SPCE061A读写SD卡,首先要寻找它们之间的通信方案。SD模式是SD卡的标准读写方式,选用此模式需要选择带SD卡控制接口的MCU或者额外的SD卡控制单元;SPI模式通过SPI总线完成SD卡与主控制器的通信。SPCE061A没有集成SD卡控制器,为了减少额外的SD卡控制单元硬件成本,本方案采用SPI模式进行二者之间的通讯。另外,SPCE061A没有集成化的SPI接口模块,因此要用软件进行SPI接口时序的模拟。

  SD卡的逻辑电平相当于3.3V的TTL电平标准,而SPCE061A通过跳线的设置完全可以提供该工作电压,因此不需要增加额外的电平匹配电路。

  2.湿度传感器选择

  鉴于森林中温度和湿度的变化较大,系统中的湿敏电阻选用耐高温高压且特性稳定的MgCr2O4-TiO2陶瓷湿度传感器。

  二、系统硬件连接

  1.SPCE061A单片机和SD卡的连接

  凌阳公司提供专门的SD卡配套模组,因此单片机和SD卡的连接较为方便。

  (1) SD卡接口规范。

  SD卡工作在2.7~3.6V电压下,其普通SD卡的结构示意图如图3所示,表2列出了各引脚在SPI模式下的定义和功能描述。主机与SD卡之间通过指令来实现交互。

图3 SD卡结构示意图

图3 SD卡结构示意图

表2 SPI模式下SD卡引脚定义

表2 SPI模式下SD卡引脚定义

  (2) 接口电路设计示意图(见图4)。

图4 SD卡与单片机连接示意图

图4 SD卡与单片机连接示意图。

  2.SPCE061A与湿度传感器的连接

  (1)湿敏传感器。

  大多数湿度传感器A-A端为测量电极,B-B端为加热清洗电极,如图5所示。加热清洗电极通电后, 内部电加热丝产生热量可排除传感器感湿层中的水分子。

图5 湿敏传感器

图5 湿敏传感器

  (2)单片机与传感器连接示意图(见图6)。

图6 单片机和传感器的连接

图6 单片机和传感器的连接

  三、软件设计

  1. FAT文件系统

  FAT16文件系统的存储结构如图7所示。

图7 FAT文件系统结构

图7 FAT文件系统结构

  主引导记录区(MBR,Main Boot Record)位于物理磁盘第零扇区。MBR中有硬盘分区记录表DPT(Disk Partition Table),DPT记录了各逻辑分区的相对偏移。SD卡不支持多分区,在一个SD卡中只有一个分区,因此在SD卡上的DPT只有一个分区表项被占用。系统引导记录区(DBR,DOS Boot Record)位于磁盘逻辑分区的第零扇区,是操作系统可以访问的个扇区。它其中包含一个称为BPB(Bios Parameter Block)的本分区参数记录表。BPB记录着本分区的根目录大小、FAT个数、磁盘介质描述、分配单元大小等重要参数。

  DBR之后是FAT(File Allocation Table)文件分配记录表,记录文件在磁盘上的存储位置。在Windows系统中,文件存储的单位是簇而不是字节,一个文件并不是连续地存放于磁盘的某一区域,而往往是分成若干段,像链子一样存放。FAT表记录了每个文件的起始簇号、后继簇号和终止簇号。FAT表中的每个表项对应数据存储区中的一个簇,由于FAT表对文件管理的重要性,FAT表有一个备份。

  DIR是根目录区,紧接着第二个FAT表(FAT2)之后,记录着根目录下每个文件的起始簇号、大小等属性。操作系统根据DIR中文件的起始簇号和大小,结合FAT表来定位文件。

  FAT16 文件系统中一个文件的存储示意图如图8所示。

图8 文件存储示意图

图8 文件存储示意图

  2.SD卡指令规范

  单片机通过相应指令与SD卡进行交互,SD卡有特定的指令格式。所有的SD卡指令都是6字节长,有效位(MSB)传输优先。SD卡特定指令格式如图9所示。

图9 SD卡指令格式

图9 SD卡指令格式

  SD卡指令的两位"01"是SD卡指令的开始标志,一位"1"是结束标志。6位的指令是SD卡的指令序号,例如CMD17的6位指令即17的二进制表示"010001".指令参数占4个字节,具体内容参照SD卡规范。7位CRC校检的生成多项式为G(x) = x^7 + x^3 + 1.事实上SD卡在进入SPI模式后,SD卡不再通过CRC码来确认指令的传输正确与否,指令中的7为CRC校检只在SD模式下起作用。因此仅是SD卡上电后的条切换SPI模式指令CMD0需要校检码,而此校检码是固定的0x95,其他指令的CRC均置"1"即可。

  SD卡响应有四种格式,不同指令对应不同响应,具体内容可参看SD卡规范。

  3.SD卡读写驱动

  (1)SPI时序模拟。

  用软件来模拟SPI总线的具体方法是:将SCK的初始状态置"0",允许接收后(即CS置"0")将SCK置"1",这样单片机由DI线输出一位数据到SD卡;接着再将SCK置"0",单片机由DO线从SD卡读到一位数据。至此,模拟1位数据输入输出便完成。此后再将SCK置"1",依次循环8次,完成SPI总线1个字节数据的输入输出。

  以下是本系统软件模拟SPI时序的部分C语言代码:

  

  (2)SD卡的初始化。

  SD卡的初始化流程图,如图10所示。SD卡上电延时74个时钟周期后,单片机向SD卡发送复位命令CMD0使SD卡进入SPI模式,之后循环发送激活SD卡指令CMD1直到接收到SD卡响应的第0位为"0".

图10 SD卡初始化流程

图10 SD卡初始化流程

  (3)SD卡数据块的读写。

  完成SD卡的初始化后,就可以对SD卡进行读写操作。读写操作都是通过指令来完成的:单块写命令CMD24,多块写命令CMD25;单块读命令CMD17,多块读命令CMD18.单块读写时,数据块的长度为512字节,多块读写时SD卡收到一个停止命令CMD12后停止读写。图11和图12分别是SD卡单块读、写的SPI时序图,图13和图14分别是单块读、写SD卡的软件流程图。

图11 单块读时序图

图11 单块读时序图

图12 单块写时序图

图12 单块写时序图

图13 读SD卡流程图

图13 读SD卡流程图

图14 FAT16文件读写流程图

图14 FAT16文件读写流程图

  4. FAT16 文件读写

  按照FAT16 文件系统的文件组织规范,编写读文件函数和写文件函数。FAT16 文件读写的软件流程图如图15 所示。

图15 FAT16 文件读写流程图

图15 FAT16 文件读写流程图

  5.湿度传感器的软件设计

  湿度传感器的测量电极端与SPCE061A 的I/O 口相连,以传输数据,其部分初始化程序如下:

  

上一篇:一种基于公话网的智能家居系统设计方案
下一篇:基于无线传感器网络的大棚环境参数采集系统

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料