标题 | 基于CAN总线的灌区低功耗温湿度采集系统设计 |
范文 | 许燕+屈宝鹏 摘 要: 由于灌区自然环境恶劣,观测点多且布局分散。为了分析灌区水量调配对温湿度监测的需求,设计开发了一种基于CAN总线和MSP430单片机相结合的低功耗温湿度采集系统。温湿度信号采集采用SHT10数字温湿度传感器,通过SPI总线技术与控制器进行通信,并引进CAN总线通信技术实现终端数据的传输。相比其他总线技术,CAN总线具有抗干扰能力强、数据的传输速率高、传输距离远、可靠性及性价比高等优点。设计中拟采用Microchip公司生产带SPI接口的CAN控制器MCP2515为CAN通信模块。 关键词: CAN总线; MSP430单片机; SHT10; 数据采集; 低功耗 中图分类号: TN911.7?34 文献标识码: A 文章编号: 1004?373X(2014)03?0105?03 Design of temperature and humidity data acquisition system with low power consumption for irrigated area based on CAN bus XU Yan, QU Bao?peng (Shaanxi Institute of Technology, Xian 710300, China) Abstract: Due to the harsh natural environment in irrigated area, there are many observation points and the distribution is scattered, to analyze the requirements of water allocation for temperature and humidity monitoring, a temperature and humidity data acquisition system with low power consumption based on the combination of CAN bus and MSP430 microcontroller is designed and developed. The temperature and humidity signal is collected by using SHT10 digital temperature and humidity sensor, and communicates with the controller through SPI bus technology. CAN bus communication technology is introduced to realize the terminal data transmission. Compared to other bus technologies, CAN bus has the advantages of strong anti?interference ability, high data transmission rate, long transmission distance, high stability and low price. CAN controller MCP2515 with SPI interface of the Microchip is adopted as CAN communication module in the design. Keywords: CAN bus; MSP430 singlechip; SHT10; data acquisition; low power consumption 0 引 言 灌区内作物的良好生长发育依赖于适宜的温湿度条件,合适的温湿度变化能够为灌区作物提供充足的能量促进其健康生长。因此,在灌区内对温湿度进行适时准确的测量具有重要意义。由于灌区自然环境恶劣,观测点多且布局分散,而CAN总线具有抗干扰能力强、数据的传输速率高、传输距离远、可靠性及性价比高等优点。 因此,设计开发一种基于CAN总线的低功耗温湿度测量系统,采用美国TI公司生产的低功耗MSP430单片机作为核心处理器,以瑞士Sensirion公司推出的新一代基于CMOSensTM技术的数字式温湿度传感器SHT10对温湿度进行采集处理,通过CAN总线稳定地将采集的数据传输到通用计算机上,进行进一步的数据处理和分析。 1 系统组成 整个系统包括观测节点单元、CAN适配卡及上位机三部分。灌区温湿度采集系统总体设计如图1所示。 图1 温湿度采集系统结构框图 其中观测节点单元系统设计结构如图2所示,其包括温湿度传感器模块、主控单元以及CAN通信模块。观测节点单元由微控制器MSP430F169控制,采集处理温湿度传感器的数据并通过CAN通信模块进行数据传输;通信模块包括CAN控制器MCP2515和CAN收发器PCA82C250,负责通过MCP2515与MSP430F169进行基于CAN总线上的数据发送和接收。 图2 观测节点单元结构框图 2 硬件结构设计 2.1 温湿度测量 本设计选用表面贴片式湿度传感器SHT10,由于其具有两线制串行接口,可将MSP430F169直接与其相连,通过MSP430F169自身编程来完成相关的非线性补偿计算。具体硬件连接如图3所示。 另外,SHT10的温度最大(默认)测量精度及最小测量精度分别为14位和12位,湿度的最大(默认)测量精度及最小测量精度分别为12位和8位,用户可根据需求通过修改其状态寄存器来更改温湿度测量精度[1]。 图3 SHT10与MSP430F169硬件连接图 2.2 微处理器MSP430F169及通信模块设计 MSP430F169是美国德州仪器(TI)公司推出的一款16位超低功耗、具有RISC(精简指令集)的微控制器。与其他类型的单片机相比,其高性能的处理能力及超低功耗的特点十分适合本设计中对微控制器选型的要求[2]。 本设计CAN通信模块选用CAN控制器MCP2515和CAN收发器PCA82C250。其与微控制器MSP430F169、CAN总线之间的电路连接如图4所示。 MSP430F169通过差分放大、A/D转换、数据校正等处理后,将温湿度数据通过SPI接口写入MCP2515的发送缓存器中,然后再通过SPI接口访问MCP2515控制寄存器来启动报文发送,即可将数据发送至CAN总线上[3]。 3 软件设计 单个观测节点单元的主程序设计拟采用模块化程序设计方式,其主要由微控制器MSP430F189与CAN控制器MCP2515的初始化、SHT10温湿度数据采集模块及CAN通信模块三部分构成。该灌区低功耗温湿度采集系统观测节点软件实现流程图如5所示。 3.1 MSP430F169端温湿度采集 MSP430F169端温湿度采集编程要点如下: int_clk(); SVCC_H; S_Connectionreset(); S_WriteStatusReg((unsigned char *)&RegCMD); while(1) { error=0; error+=S_Measure((unsigned char*) &humi_val.i,&checksum,HUMIDITY); //测量湿度 error+=S_Measure((unsigned char*) &temp_val.i,&checksum,TEMPERATURE); //测量温度 if(error!=0) S_Connectionreset(); { templow=(humi_val.i&0xff00); humi_val.i=templow>>8; temphigh=((temp_val.i&0xf)<<8); templow=((temp_val.i&0xff00)>>8); temp_val.i=temphigh+templow; humi_val.f=(float)humi_val.i; //转换为浮点数 temp_val.f=(float)temp_val.i; //转换为浮点数 S_Calculate(&humi_val.f,&temp_val.f); //计算温湿度 } } 图5 观测节点主程序流程图 3.2 MSP430F169端SPI端口初始化 MSP430F169端SPI端口初始化程序如下: void InitSPI() { U1CTL|=CHAR+SYNC+MM;//8位数据,SPI模式,主机模式 U1TCTL|=SSEL1+SSEL0+STC+CKPL;//时钟为SMCLK,3线模式 U1BR0=0x08; //SMCLK 8分频 U1BR1=0x00; U1MCTL=0x00; ME2|=USPIE1; //打开SPI1模块 P5SEL|=BIT1+BIT2+BIT3; //P5.1 P5.2 P5.3设置为SPI口 UCTL1&=~SWRST; } 3.3 主程序 主程序如下: void main(){ uchar Buf[1]; InitClock(); //初始化时钟 InitPort(); //初始化端口 InitSPI(); //初始化SPI MCP2510_Init(); //MCP2510初始化 CH452_Init(); //初始化CH452 LcdInit(); //Lcd初始化 _EINT(); //打开中断 while(1){ if(KeyValue!=0xFF){ Buf[0]=KeyValue; SendData(0x0000,Buf,1); //发键值到地址0x0000的节点 KeyValue=0xFF; } } 4 结 论 本系统在灌区进行了一系列试验,成功地实现了基于CAN总线的远距离的温湿度采集。在实际的电路测试过程中,系统进行数据采集的工作电流≤6 mA,由此可见这种低功耗的温度采集系统使电池供电成为可能。 由于CAN总线的工作方式为多主类型,因此系统中的每个CAN总线节点设备均可实现即插即拔的操作,用户可根据实际需要还可增加其他气象因素的监测,比如降雨量、风速、风向以及光照量等。从而方便用户对各节点设备进行维护,提高了灌区低功耗温湿度采集系统的可操作性和稳定性 [4]。 参考文献 [1] 匡宇国.智能传感器SHT11及其在便携式温湿度检测仪中的应用[J].电子器件,2006(4):1312?1315. [2] 秦龙.MSP430单片机常用模块与综合系统实例精讲[M].北京:电子工业出版社,2007. [3] 许燕.基于CAN总线的灌区气象数据采集处理系统[D].西安:西北农林科技大学,2011. [4] 毛春奎,张颖超.基于CAN总线的气象数据采集系统[J].南京信息工程大学学报:自然科学版,2009. [5] 刘培国,周希伟,刘志勇.CAN总线智能检测仪的设计与实现[J].现代电子技术,2012,35(18):44?46. [6] 周素琴,杨晓京.基于单片机的烤烟房多点温湿度测控系统[J].现代电子技术,2012,35(21):109?111. 另外,SHT10的温度最大(默认)测量精度及最小测量精度分别为14位和12位,湿度的最大(默认)测量精度及最小测量精度分别为12位和8位,用户可根据需求通过修改其状态寄存器来更改温湿度测量精度[1]。 图3 SHT10与MSP430F169硬件连接图 2.2 微处理器MSP430F169及通信模块设计 MSP430F169是美国德州仪器(TI)公司推出的一款16位超低功耗、具有RISC(精简指令集)的微控制器。与其他类型的单片机相比,其高性能的处理能力及超低功耗的特点十分适合本设计中对微控制器选型的要求[2]。 本设计CAN通信模块选用CAN控制器MCP2515和CAN收发器PCA82C250。其与微控制器MSP430F169、CAN总线之间的电路连接如图4所示。 MSP430F169通过差分放大、A/D转换、数据校正等处理后,将温湿度数据通过SPI接口写入MCP2515的发送缓存器中,然后再通过SPI接口访问MCP2515控制寄存器来启动报文发送,即可将数据发送至CAN总线上[3]。 3 软件设计 单个观测节点单元的主程序设计拟采用模块化程序设计方式,其主要由微控制器MSP430F189与CAN控制器MCP2515的初始化、SHT10温湿度数据采集模块及CAN通信模块三部分构成。该灌区低功耗温湿度采集系统观测节点软件实现流程图如5所示。 3.1 MSP430F169端温湿度采集 MSP430F169端温湿度采集编程要点如下: int_clk(); SVCC_H; S_Connectionreset(); S_WriteStatusReg((unsigned char *)&RegCMD); while(1) { error=0; error+=S_Measure((unsigned char*) &humi_val.i,&checksum,HUMIDITY); //测量湿度 error+=S_Measure((unsigned char*) &temp_val.i,&checksum,TEMPERATURE); //测量温度 if(error!=0) S_Connectionreset(); { templow=(humi_val.i&0xff00); humi_val.i=templow>>8; temphigh=((temp_val.i&0xf)<<8); templow=((temp_val.i&0xff00)>>8); temp_val.i=temphigh+templow; humi_val.f=(float)humi_val.i; //转换为浮点数 temp_val.f=(float)temp_val.i; //转换为浮点数 S_Calculate(&humi_val.f,&temp_val.f); //计算温湿度 } } 图5 观测节点主程序流程图 3.2 MSP430F169端SPI端口初始化 MSP430F169端SPI端口初始化程序如下: void InitSPI() { U1CTL|=CHAR+SYNC+MM;//8位数据,SPI模式,主机模式 U1TCTL|=SSEL1+SSEL0+STC+CKPL;//时钟为SMCLK,3线模式 U1BR0=0x08; //SMCLK 8分频 U1BR1=0x00; U1MCTL=0x00; ME2|=USPIE1; //打开SPI1模块 P5SEL|=BIT1+BIT2+BIT3; //P5.1 P5.2 P5.3设置为SPI口 UCTL1&=~SWRST; } 3.3 主程序 主程序如下: void main(){ uchar Buf[1]; InitClock(); //初始化时钟 InitPort(); //初始化端口 InitSPI(); //初始化SPI MCP2510_Init(); //MCP2510初始化 CH452_Init(); //初始化CH452 LcdInit(); //Lcd初始化 _EINT(); //打开中断 while(1){ if(KeyValue!=0xFF){ Buf[0]=KeyValue; SendData(0x0000,Buf,1); //发键值到地址0x0000的节点 KeyValue=0xFF; } } 4 结 论 本系统在灌区进行了一系列试验,成功地实现了基于CAN总线的远距离的温湿度采集。在实际的电路测试过程中,系统进行数据采集的工作电流≤6 mA,由此可见这种低功耗的温度采集系统使电池供电成为可能。 由于CAN总线的工作方式为多主类型,因此系统中的每个CAN总线节点设备均可实现即插即拔的操作,用户可根据实际需要还可增加其他气象因素的监测,比如降雨量、风速、风向以及光照量等。从而方便用户对各节点设备进行维护,提高了灌区低功耗温湿度采集系统的可操作性和稳定性 [4]。 参考文献 [1] 匡宇国.智能传感器SHT11及其在便携式温湿度检测仪中的应用[J].电子器件,2006(4):1312?1315. [2] 秦龙.MSP430单片机常用模块与综合系统实例精讲[M].北京:电子工业出版社,2007. [3] 许燕.基于CAN总线的灌区气象数据采集处理系统[D].西安:西北农林科技大学,2011. [4] 毛春奎,张颖超.基于CAN总线的气象数据采集系统[J].南京信息工程大学学报:自然科学版,2009. [5] 刘培国,周希伟,刘志勇.CAN总线智能检测仪的设计与实现[J].现代电子技术,2012,35(18):44?46. [6] 周素琴,杨晓京.基于单片机的烤烟房多点温湿度测控系统[J].现代电子技术,2012,35(21):109?111. 另外,SHT10的温度最大(默认)测量精度及最小测量精度分别为14位和12位,湿度的最大(默认)测量精度及最小测量精度分别为12位和8位,用户可根据需求通过修改其状态寄存器来更改温湿度测量精度[1]。 图3 SHT10与MSP430F169硬件连接图 2.2 微处理器MSP430F169及通信模块设计 MSP430F169是美国德州仪器(TI)公司推出的一款16位超低功耗、具有RISC(精简指令集)的微控制器。与其他类型的单片机相比,其高性能的处理能力及超低功耗的特点十分适合本设计中对微控制器选型的要求[2]。 本设计CAN通信模块选用CAN控制器MCP2515和CAN收发器PCA82C250。其与微控制器MSP430F169、CAN总线之间的电路连接如图4所示。 MSP430F169通过差分放大、A/D转换、数据校正等处理后,将温湿度数据通过SPI接口写入MCP2515的发送缓存器中,然后再通过SPI接口访问MCP2515控制寄存器来启动报文发送,即可将数据发送至CAN总线上[3]。 3 软件设计 单个观测节点单元的主程序设计拟采用模块化程序设计方式,其主要由微控制器MSP430F189与CAN控制器MCP2515的初始化、SHT10温湿度数据采集模块及CAN通信模块三部分构成。该灌区低功耗温湿度采集系统观测节点软件实现流程图如5所示。 3.1 MSP430F169端温湿度采集 MSP430F169端温湿度采集编程要点如下: int_clk(); SVCC_H; S_Connectionreset(); S_WriteStatusReg((unsigned char *)&RegCMD); while(1) { error=0; error+=S_Measure((unsigned char*) &humi_val.i,&checksum,HUMIDITY); //测量湿度 error+=S_Measure((unsigned char*) &temp_val.i,&checksum,TEMPERATURE); //测量温度 if(error!=0) S_Connectionreset(); { templow=(humi_val.i&0xff00); humi_val.i=templow>>8; temphigh=((temp_val.i&0xf)<<8); templow=((temp_val.i&0xff00)>>8); temp_val.i=temphigh+templow; humi_val.f=(float)humi_val.i; //转换为浮点数 temp_val.f=(float)temp_val.i; //转换为浮点数 S_Calculate(&humi_val.f,&temp_val.f); //计算温湿度 } } 图5 观测节点主程序流程图 3.2 MSP430F169端SPI端口初始化 MSP430F169端SPI端口初始化程序如下: void InitSPI() { U1CTL|=CHAR+SYNC+MM;//8位数据,SPI模式,主机模式 U1TCTL|=SSEL1+SSEL0+STC+CKPL;//时钟为SMCLK,3线模式 U1BR0=0x08; //SMCLK 8分频 U1BR1=0x00; U1MCTL=0x00; ME2|=USPIE1; //打开SPI1模块 P5SEL|=BIT1+BIT2+BIT3; //P5.1 P5.2 P5.3设置为SPI口 UCTL1&=~SWRST; } 3.3 主程序 主程序如下: void main(){ uchar Buf[1]; InitClock(); //初始化时钟 InitPort(); //初始化端口 InitSPI(); //初始化SPI MCP2510_Init(); //MCP2510初始化 CH452_Init(); //初始化CH452 LcdInit(); //Lcd初始化 _EINT(); //打开中断 while(1){ if(KeyValue!=0xFF){ Buf[0]=KeyValue; SendData(0x0000,Buf,1); //发键值到地址0x0000的节点 KeyValue=0xFF; } } 4 结 论 本系统在灌区进行了一系列试验,成功地实现了基于CAN总线的远距离的温湿度采集。在实际的电路测试过程中,系统进行数据采集的工作电流≤6 mA,由此可见这种低功耗的温度采集系统使电池供电成为可能。 由于CAN总线的工作方式为多主类型,因此系统中的每个CAN总线节点设备均可实现即插即拔的操作,用户可根据实际需要还可增加其他气象因素的监测,比如降雨量、风速、风向以及光照量等。从而方便用户对各节点设备进行维护,提高了灌区低功耗温湿度采集系统的可操作性和稳定性 [4]。 参考文献 [1] 匡宇国.智能传感器SHT11及其在便携式温湿度检测仪中的应用[J].电子器件,2006(4):1312?1315. [2] 秦龙.MSP430单片机常用模块与综合系统实例精讲[M].北京:电子工业出版社,2007. [3] 许燕.基于CAN总线的灌区气象数据采集处理系统[D].西安:西北农林科技大学,2011. [4] 毛春奎,张颖超.基于CAN总线的气象数据采集系统[J].南京信息工程大学学报:自然科学版,2009. [5] 刘培国,周希伟,刘志勇.CAN总线智能检测仪的设计与实现[J].现代电子技术,2012,35(18):44?46. [6] 周素琴,杨晓京.基于单片机的烤烟房多点温湿度测控系统[J].现代电子技术,2012,35(21):109?111. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。