首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于SPCE061A的温湿度测控系统设计与实现

作者:郑冬强 万 琰 张平川 来源:现代电子技术


  摘 要:温度湿度指标是许多工作环境的重要参数。创新性地研究在16位高性能单片机SPCE061A上移植μC/OSⅡ实时操作系统,选用高性能温湿度传感器,设计实现高精度嵌入式实时温湿度测量控制系统,介绍硬件设计、软件设计以及μC/OSⅡ移植方法,对于实现环境温湿度控制具有重要意义。该系统具有易扩展、高可靠性、实时性高、精度高等特点。
  关键词:温度指标; 湿度指标;温湿度测控系统;实时操作系统
  中图分类号:TN401 文献标识码:B 文章编号:1004373X(2008)1618603
  
  Design and Realization of TemperatureHumidity Measuring &
  Controlling System Based on SPCE061A
  ZHENG Dongqiang,WAN Yan,ZHANG Pingchuan
  (Luohe Vocational &Technical College,Luohe,462002,China)
  Abstract:The index of temperature& humidity is important parameters in many work environments.The innovative research is that the realtime operation system μC/OSⅡ is embedded into microchip SPCE061A to design and realize a system of temperaturehumidity measure &control by choosing high performance sensors of temperature and humidity,it mainly introduces the hardware,the software,the program and the transplanting method of μC/OSⅡ respectively. And it is significant in controllinging the temperature& humidity satisfied.The experience show that the system with characters of easy extendibility,high stability,goog reliability,high precision and practical realtime.
  Keywords:temperature index;humidity index;temperaturehumidity measuring&controlling system;realtime operation system
  
  仓库管理、图书馆等很多工作场所的环境对温、湿度指标有严格要求。传统的人工测量控制以及目前的非实时性单片机测控系统不易实时保障温、湿度指标。本文采用凌阳公司高性能16位单片机SPCE061A和μC/OSⅡ实时操作系统以及高精度DS18B20温度传感器和HIH3605湿度传感器设计实现了温湿度实时测控制系统。温湿度控制的精度分别达到:温度(-10~85 ℃)±0.5 ℃;湿度(20%~98%RH)±3%RH。
  
  1 系统硬件设计
  
  系统控制芯片选用SPCE061A[1],内部结构如图1所示。该芯片是凌阳公司推出的一款高性价比的16位单片机,其主要特性是:工作电压:内核工作电压VDD为3.0~3.6 V(CPU),I/O口工作电压VDDH为VDD~5.5 V(I/O);CPU时钟:0.32~49.152 MHz;内置2 k字SRAM和32 k闪存ROM;系统处于备用状态下(时钟处于停止状态),耗电小于2 μA@3.6V;具备触键唤醒的功能;32位通用可编程输入/输出端口;2个16位可编程定时器/计数器(可自动预置初始计数值);7通道10位电压模/数转换器(ADC)和单通道声音模/数转换器;2个10位DAC(数/模转换)输出通道;14个中断源可来自定时器A / B,时基,2个外部时钟源输入、键唤醒;具备串行设备接口;低电压复位(LVR)和低电压监测(LVD)功能;内置在线仿真(In Circuit Emulation,ICE)。 另外16位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用。
  图2为温度、湿度测控系统硬件原理示意框图。下面主要介绍温度和湿度测量电路。
  1.1 温度测量电路设计
  温度检测电路选用Dalls公司生产的DS18B20 [2]。DS18B20是“一线总线”数字化温度传感器,测量温度范围为-55~125 ℃,在-10~+85 ℃范围内,精度为±0.5 ℃。该器件只有3个引脚(即电源VDD、地线GND、数据线DQ),不需要外部元件,一条数据线进行通信。考虑到湿度传感器的工作条件-40~+85 ℃,设计系统检测温度范围设计为-10~+85 ℃,精度为0.5 ℃,已经能够满足绝大多数工作环境的要求;用9 b数字量来表示温度;每次将温度转换成数字量需200 ms。在单总线工作方式下,允许1条信号线上挂接多个DS18B20,DS18B20都有惟一的ROM代码(64位产品序列号)。在多点温度测控系统中,ROM代码是识别和操作DS18B20的基础;无论读取还是选择对某一个传感器进行操作,主机必须发送64位ROM代码。图3为温度测量和控制电路示意图。
  
  在实际系统中,每个任务都是无限循环的,分别实现某一特定的功能,由μC/OSⅡ内核来进行调度。系统运行时,首先调用oshiint()进行初始化,μC/OSⅡ所有的变量和数据结构,再调用Init()初始化微控制器的定时器等,通过调用OSTaskCreat()依次创建各个任务,并且分配任务优先权,所有新建立任务被置为就绪态。最后调用OSStart()启动系统,开始多任务调度。
  本系统用2块DS18B20实现对环境温度的检测,保证在被测环境范围内,温度分布均匀,测量更加准确,使用时将DS18B20放置在被测环境的不同位置。获得温度信息时,先由SPCE061A的IOA8脚发送1个1 ms的复位脉冲,以使DS18B20复位后将向SPCE061A发送1个回应脉冲,SPCE061A接到回应脉冲后将发送读DS18B20序列号的读ROM命令,以分别读取3个DS18B20的序列号(每1块DS18B20有惟一的序列号);然后,SPCE061A再发出定位命令以选择在线的DS1820并进行温度转换。当温度转换完成后,SPCE061A的IOA8脚会发送DS1820的存储命令,从而完成温度信息数据的转换和读取。
  1.2 湿度测量电路设计
  湿度传感器采用Honeywell公司生产的HIH3605[2],它为热固性聚合物电容传感器,带集成信号处理电路,5 V恒压供电,放大线形电压输出0~5 VDC对应0~100%RH(相对湿度),精度为±3%RH。低功耗设计200 μA驱动电流,宽工作温度范围-40~+85 ℃,稳定性好、低的温度飘移、抗化学腐蚀性能优良。由于HIH3605为大信号输出且线性度良好,因此,可省去复杂的信号放大及整形电路,只需经过CPU内部的A/D转换器将与湿度值成正比的电压值转换成16位数字量,和标准进行比对,然后决定是进行加湿还是通风。
  
  
  2 系统软件设计
  
  系统软件主要任务包括:设置、修改、显示仪表的参数;检测、计算、显示温度、湿度等参数;温、湿度状态指示及报警输出;定时存储各种检测及运算参数。本系统软件采用C语言和汇编语言混合编写、模块化结构和程序调用的方法。一般的嵌入式软件系统的设计都是采用前后台式的设计方法。传统的前后台式的单任务软件设计方法已经不能满足工程的需要,因此设计中引入了μC/OSⅡ,采用多任务式的软件设计方法。将μC/OSⅡ移植到SPCE061A微处理器上后,接下来的工作就是对操作系统本身的扩充。
  2.1 主程序设计
  按温湿度测控系统所要求实现的功能,将整个系统划分为并行存在的任务层和中断程序。系统中并行存在的几个任务按优先级从高到低依次是:系统监视任务、数据采集任务、数据处理任务、数据输出任务、显示任务。温湿度测控系统主程序流程图如图4所示。
  中断发生时,系统将强行剥夺运行态任务CPU的使用权,将它转入中断态保存相关数据到堆栈区之后,执行中断服务程序。在中断返回后,系统返回函数将重新进行任务调度,将优先权最高的就绪态转换为运行态。
  2.2 数据采集程序设计
  数据采集A/D转换主程序和外部中断0服务程序。A/D转换主程序主要实现SPCE061A硬件初始化、实现A/D转换。采集数据程序流程图如图5所示。
  
  3 μC/OSⅡ的移植
  
  μC/OSⅡ是一种专门为微控制器设计的抢占式实时多任务操作系统[3],它以源代码的形式给出。其内核主要提供进程管理、时间管理、内存管理等服务。系统最多支持56个任务,每个任务均有一个独有的优先级。由于其内核为抢先式,所以总是处于运行态最高优先级的任务占用CPU。系统提供了丰富的API函数,实现进程之间的通信以及进程状态的转化。
  
  多任务系统在运行时每个任务好像独立占用CPU一样,因此系统必须为每个任务开辟一块内存空间作为该任务的任务堆栈。该堆栈的作用是保存任务被切换前时CPU各寄存器的值以及系统堆栈的数据。在进行任务切换时需要完成的工作,主要步骤如下:
  (1) 将当前任务CPU所有的寄存器压栈;
  (2) 将CPU系统堆栈的数据全部拷贝到当前任务的任务堆栈中;
  (3) 得到下一个处于运行态优先级最高的任务的任务堆栈的指针;
  (4) 恢复下一个任务的CPU寄存器的值;
  (5) 恢复下一个任务的系统堆栈中的数据;
  (6) 通过中断返回指令或函数返回指令,间接修改PC寄存器的值来进行任务切换。
  在为μCOSⅡ编写任务切换代码时需要注意:μCOSⅡ在每次发生中断后都会产生任务调度,但在中断结束后进行的任务切换,不能调用普通任务切换函数,这是因为在中断过程中往往伴随将CPU的状态寄存器压栈操作。在中断后,芯片将PC和SR寄存器的值压入堆栈,因此,在中断结束后进行的任务切换中必须对堆栈指针进行调整。
  
  4 结 语
  
  本文采用SPCE061A CPU结合嵌入式实时操作系统μC/OSⅡ,设计并实现了环境温度湿度实时测控系统。在温度-10~85 ℃和湿度20%~98%RH,可任意设定温湿度控制点,而且实时监测环境温、湿度的变化情况,并记录、存储相关数据。另外,该系统便于功能扩展,测控精度高、可靠性高、系统成本低、易操作、易维护,具有广泛的应用前景。
  
  参 考 文 献
  [1]罗亚非.凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社,2003.
  [2]张平川,许兴广.基于单片机电热水器模糊控制系统设计[J].微计算机信息,2007(32):145146.
  [3]孙育河.在ARM上移植μC/OSⅡ的若干问题研究[J].微计算机信息,2007(10):117119.
  [4]陈赜.ARM嵌入式技术实践教程[M].北京:北京航空航天大学出版社,2005.
  [5]凌阳大学计划网站\.www.unsp.com.cn.
  [6]向红军,雷彬.基于SHT15型智能传感器的弹药库温/湿度监控系统的设计\.国外电子元器件,2006(1):6466.
  
  作者简介 郑冬强 男,1972年出生,河南舞阳人,漯河职业技术学院讲师。主要从事电工电子以及嵌入式系统教学工作。
  万 琰 男,1971年出生,河南信阳人,漯河职业技术学院讲师。主要从事电子技术教学及科研工作。
  张平川 男,1968年出生,河南舞阳人,漯河职业技术学院讲师,硕士。主要从事电子与嵌入式系统及计算机教学科研工作。