摘 要:本文介绍了利用16位单片机SPCE061A作为控制中心,配合电容式湿度传感器HS1101测量湿度的方案。该湿度测量仪具有语音播放功能,利用按键控制湿度的测量和湿度值的播放。 1 引言 1.1 系统参数 1.2 功能简介 2 系统硬件设计 图 2.1 系统结构框图 SPCE061A单片机作为主控芯片,根据读到的键值判断是否启动测量,测量时负责读取Feedback电路的工作频率,根据频率计算HS1101的电容和它所在环境的湿度,并把湿度通过喇叭播放出来。同时如果湿度值太高或者太低,系统会播放温馨提示。 2.1 SPCE061A芯片简介 图 2.2 SPCE061A内部结构图 2.2 湿度传感器HS1101 |
-
-
-
强强 发表于 2007/8/19 20:45:21
2.2.2 HS1101简介
1、基本参数
如图 2.3。如果没有特别标注,默认下图的测量温度Tα=25℃,测量时HS1101工作频率为10KHz。图 2.3 HS1101参数图
2、特性曲线
如图 2.4。测量温度Tα=25℃,测量时HS1101工作频率为10KHz。图 2.4 HS1101特性曲线
2.3 硬件电路
2.3.1 SPCE061A最小系统
本方案使用SPCE061A精简开发板(61板)作为单片机最小系统。61板包括SPCE061A芯片及其外围的基本模块,外围模块包括:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如下图所示。图 2.5 SPCE061A最小系统
2.3.2 电容式湿度传感器HS1101电路模块
由于湿度传感器HS1101是电容式的,所以要想办法测量得到它的电容,利用单片机没有办法直接读到,但是利用SPCE061A的Feedback功能可以测得HS1101所在RC电路的工作频率,这样就可以计算得到它的电容。
为了减小误差,利用一个固定电容和一个电阻构成另一个Feedback电路,作为湿度传感器HS1101的基准。
如图 2.6:根据图 2.3中的参数,为了使湿度传感器HS1101的工作频率尽量接近10KHz,选择一个620KΩ的电阻和HS1101形成Feedback1;390pF的电容作为基准,和另外一个620KΩ电阻形成Feedback2。图 2.6 电容式湿度传感器电路模块电路
2.3.3 按键电路
本系统直接使用SPCE061A精简开发板上的按键,61板上按键电路如图 2.7。
图 2.7 61板按键电路3 系统软件设计
本方案的软件系统包括下面模块:
按键扫描:扫描按键,判断是否有键按下,在Key.c文件中实现;
湿度测量:端口初始化,测量湿度并返回湿度值,在Hum_Measure.c文件中实现;
语音播放任意数字:播放任意的整数,本系统中用来播放湿度值,在PlayVoice.c文件中实现;
中断服务:语音播放中断服务程序和IRQ2中断读计数值程序,在isr.asm文件中定义。3.1 各模块程序说明
3.1.1 主程序
主程序流程如图 3.1:调用按键扫描程序读取键值,如果是KEY1键按下则启动测量,调用湿度测量函数测量湿度,并根据测量结果进行相应播放;如果不是KEY1键按下,返回继续扫描按键。
注意:在每次测量前都会关断快速中断FIQ,这是因为在测量过程中用到了定时/计数器TimerA,而在语音播放时打开了FIQ中断,所以在测量前需先关闭,以免在测量过程中CPU一直相应FIQ中断,造成不必要的麻烦。
图 3.1 主程序流程图
引用 强强 2007/8/19 20:45:21 发表于2楼的内容
-
-
-
-
强强 发表于 2007/8/19 20:45:44
3.1.2 按键扫描模块
本系统中只用到了一个按键--61板上的KEY1键,这个键和IOA0连接。按键扫描程序流程如图 3.2所示。利用延时去抖的方法,先取一次端口数据,延时一段时间,一般延时几十ms即可,再取一次端口数据,如果二者相同,说明取到了正确的键值。图 3.2 按键扫描程序流程图
3.1.3 湿度测量程序流程图
湿度测量程序流程如图 3.3,为了减少误差,确保测量的正确性,测量四次,去掉一个最高值和一个最低值,如果中间两个数相差不大于10,则中间两个数的平均值就是测量的最终数据,程序中这个数据为TimerA的计数值。
由于用Feedback功能测量传感器的电容,如图 2.6。事实上利用Feedback功能直接能测到传感器工作的频率,根据这个频率来才能计算传感器的电容值。
测量传感器工作频率的方法:利用TimeB作为定时器,TimeA作为计数器;根据TimeB定时时间内TimeA计数的个数来测得传感器的工作频率。图 3.3 湿度测量程序流程图
3.1.4 语音播放任意整数数据程序
语音播放任意三位整数程序流程如图 3.4。这个程序可以定义形式参数来传递任意三位数。先计算这个数据的百、十、个位,再分别进行播放,播放的流程如下:图 3.4 语音播放任意三位数流程图
3.1.5 中断服务程序流程图
FIQ的中断服务程序如图 3.5。FIQ中断服务程序主要功能是调用F_FIQ_Service_SACM_S480函数解码并输出。
IRQ2中断服务程序如图 3.6。IRQ2中断服务程序有两个功能:一是保存TimerA的计数值;二是为了配合湿度测量函数,设置定时时间溢出标志,如果进入这个中断服务程序,说明定时溢出。图 3.5 FIQ中断服务程序流程图
图 3.6 IRQ2中断服务程序流程图4 结语
湿度测量本身比温度测量复杂的多,主要是由于湿度受温度、大气压的影响。对于电容式湿度传感器来说,更是难上加难,因为测量电容本身也是一个非常复杂的过程。SPCE061A的Feedback功能给这种测量提供了很大的方便,利用固定电阻和电容式湿度传感器形成RC振荡电路,接在Feedback的输入和输出端,这样通过测量频率,很容易就能得到电容式湿度传感器的电容,根据标定值就可以得到测量湿度。
引用 强强 2007/8/19 20:45:44 发表于3楼的内容
-