课程设计(论文)-基于MSP430的无线温度光照传感系统.docx_第1页
课程设计(论文)-基于MSP430的无线温度光照传感系统.docx_第2页
课程设计(论文)-基于MSP430的无线温度光照传感系统.docx_第3页
课程设计(论文)-基于MSP430的无线温度光照传感系统.docx_第4页
课程设计(论文)-基于MSP430的无线温度光照传感系统.docx_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘 要随着科学技术的发展,人们对温度光照的要求越来越高,这样就功耗等方面对光照温度的检测系统提出了新的要求,基于msp430制作的温度光照传感系统,则能很好的满足生物技术、农业生产、造纸工业、纺织工业等的民用需求,比如公共场所温度以及光照的调控,大棚种植等方面。本文介绍了基于msp430的温度光照无线传感系统的设计方法与过程,采用c语言到单片机进行编程,配合硬件电路,实现了温度和光照信息的采集、无线传输和显示。关键词:msp430,温度,光照,无线传输i目录目 录第1章背景及要求1-31.1立项背景1-31.2项目要求1-3第2章设计方案2-32.1 总体设计方案2-32.2 微处理器选择方案2-42.2 温度信息采集方案2-62.3 光照信息采集方案2-82.4 无线传输方案2-9第3章硬件电路设计3-103.1 温度采集系统3-103.2 光照采集系统3-103.3 无线传输系统3-11第4章软件设计4-114.1 温度数字信号采集4-114.2 光照信号的模数转换4-164.3 无线发送模块4-184.4 显示模块4-20第5章结果仿真与测试5-214.1 仿真结果5-214.2 测试结果5-224.2.1 测试仪器5-224.22 功能描述5-22参考文献5-22ii基于430的无线光照温度传感调节系统第1章 背景及要求1.1 立项背景现在市场上无线温度传感系统很多,但能同时调控温度和光照并能以一控多的系统却不多,仅有少数环境温度和光照监控系统,大多却只是应用于农业种植的温室控制一个方面,价格昂贵,而且功耗较高。基于msp430制作的系统,最明显的优势是以一控多,即使用一个终端系统对多个采集点的温度以及光照进行统一控制,操作更加简便。另外,msp430有较高的处理速度,可以保证了系统运行的高效性。同时,msp430在降低芯片的电源电压及灵活可控的运行时钟方面都有其独到之处,具有低功耗的特点。由此,基于430的温度和光照控制系统相较于其他系统,有着稳定可靠,操作简单,控制精度高的特点,同时节约能耗。基于msp430,制作无线控制的恒温及恒光照系统,以满足生物技术、农业生产、造纸工业、纺织工业广泛的等民用需求,比如公共场所温度以及光照的调控,大棚种植等方面。1.2 项目要求基于msp430的温度光照传感系统主要将实现以下功能:1、 实现温度信息的采集、无线传输和显示;2、 实现光照信息的采集、无线传输和显示;第2章 设计方案2.1 总体设计方案基于msp430的无线温度光照传感系统,顾名思义,其核心处理器采用msp430。而且,不仅仅是将msp430作为一个连接输入端和输出端的过渡芯片,更重要的是充分利用msp430的内部资源,提高芯片的利用率。首先,我们将看到的是整个系统的设计结构,如下图所示:光照传感器光照传感器光照传感器光照传感器数据采集板数据采集板msp-430分控制块无线发收模块无线收发模块msp-430主控制块lcd显示模块键 盘图2-1 系统结构上图展示了整个系统的设计思路,主要的模块都已包含。2.2 微处理器选择方案无线温度传感系统使用的核心处理器的可选器件很多,可以胜任的主流处理器有:1)51系列单片机(如80c51)2)avr系列单片机(如atmega系列)3)msp430系列(msp430x2系列)以下部分,均以80c51,atmega16以及msp430x2系列为对象,不再另外注明。选择该系统核心处理器,有以下需要考虑的要素:1)无线系统,尤其是前端处理器要求低功耗2)前端要求尽量简洁的系统结构3)前端要求足够的i/o接口4)后端处理器要求足够的处理多路数据的能力5)软件部分的设计基于上述要求并综合考虑,选择msp430作为核心处理器,理由有以下几点:1)msp430是优秀的低功耗器件,由下图可知,msp430拥有4种低功耗状态。在低功耗状态下,片内电流icc不超过100ua,甚至达到1ua以下。2)工作频率意味着更高的处理速度。以下是avr单片,51单片机以及msp430单片机的主频能力对比:avr外部最高频率 16mhz,msp430外部最高频率 16mhz,实际中51的最高频率也不大于10mhz。所以,可以看出,msp430能够具有很高的处理速率,但此速率视系统要求而定,不一定要达到最大值。3)i/o接口是相当重要的部分,80c51系列单片机,具有4组i/o口,其中,3组i/o,avr单片机拥有4组i/o,并且为双向i/o,msp430拥有6组i/o口,皆为双向i/o,并为三态输出另外,3种单片机的驱动能力对比如下i max(voh)i max(vol)msp430ioh(max) = -6 ma,iol(max)= 6 ma,atmege16ioh = -20 maiol = 20 ma,at89s52ioh = -60 aiol = 1.6 ma由于驱动能力涉及到外部i/o接口,从上图我们可以看出,在ma量级上,msp430用能力提供足够的电流,虽然atmega可以提供更大的输出电流,但是对于我们的系统而言显然是多余的。足够的驱动电流输出可以简化外围缓冲器件的设计,这对电路简化有益。4)电路结构复杂度,本次项目的前端部分包括温度采集,光照采集部分,无线发送部分,后端有lcd驱动部分,无线接收部分。保证精度情况下,集成的信号处理部分对于简化电路很有益处。51系列单片机数模转化必须用外部ad器件,avr拥有8路10位内部a/d,msp430拥有12位内部a/d,拥有8路通道,16组存储器,4种工作模式。msp430的内部a/d具有更优的性能,并且,综合i/o接口电路的设计,msp430益于前端电路简化。5)软件部分的设计可以说是项目的核心之一。c51,avr,msp430都可以使用c语言编程。其中,msp430编译软件iar embedded workbench提供了强大的编译支持,编辑功能,同时,能够直接与jtag配合调试仿真,缩短了程序开发的周期。除了上述因素,选择msp430还有以下因素:1)msp 16位risc处理内核具有很强大处理能力; 2)10kb的片内集成flash;3)足够的通讯接口,内部模块(如uart,da,定时比较器),为系统扩展提供了可能;3)多个驱动时钟(mclk,smclk,aclk,dco),使系统时钟选择具有多样性,尤其是时钟精度要求不高的环境下,使用内部dco降低电路复杂度,节约成本;4)看门狗模块可以有效防止程序跑飞;综合上述考虑,所以,本系统采用msp430系列作为核心处理器,并且,我们的目标就是充分利用msp430提供的资源,优化系统设计。2.2 温度信息采集方案围绕温度信息采集,我们提出了两种备选方案:方案一 外围模拟电路实现温度采集,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行a/d转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到a/d转换电路,感温电路比较麻烦,可选用pt100温敏电阻。以下列出了pt100的部分参数:测量范围:-200+850;a级 精度为(0.15+0.002*|t|)摄氏度;b级 精度为(0.30+0.005*|t|)摄氏度,其中|t|为实际温度的绝对值;测量精度(根据传感器类型):0.05至0.5;反应时间(63%):1秒(高温),0.5秒(其他)。模拟电路采集温度信息,在理论上是有很高性能的,但是模拟电路采集有以下的一些缺点:1)电路较为复杂,占用过多前端空间,对电路优化不利;2)模拟信号输入要经过a/d转换,损失精度;3)模拟信号采集存在极大的偶然误差。方案二 使用集成温度测量模块,进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器直接读取被测温度值,进行转换,就可以满足设计要求,可选用ds18b20。ds18b20是一款性能优良的温度测量芯片,本系统采用ds18b20作为温度测量部分的前端芯片。ds18b20具有以下特点:1.单总线时序。所谓单总线就是区别于其他多总线通信协议,在主机与丛机(比如本系统中的msp430与ds18b20)之间只有一根总线联系。这一点包含两层意思,第一,在该总线上分时完成命令传输,数据读取等通信功能;第二,多个丛机可以同时挂在一条总线上,依靠各丛机序列号进行识别。单总线时序在时间控制上有极其苛刻的要求(比如,在对ds18b20写数据时,要求总线拉低15us左右,然后写数据在30us左右,5us左右之后,等待丛机响应),因此,采用ds18b20就要求本系统具有精确的时间控制手段,让时间控制精确到10us的数量级。在程序部分,我们将详细介绍精确时间控制模块。2.高精度宽范围的温度测量性能。高精度是指ds18b20在10c到85c范围测量时,误差(忽略与主机通信时引入的误差)只有0.5c。宽范围是指ds18b20可以测量55c到125c的范围,这样的温度测量性能显然是非常重要的。3.片内实现模拟信号到数字信号的转化。ds18b20采集的温度信息为模拟信息,但是输出的信号为数字信号,且输出信号位数可变,最大可以有12bit输出模式。4.ds18b20外围电路非常简单。ds18b20将温度传感器以及相应的控制电路集成在了片内,因此,在实际使用中,只需要考虑ds18b20的程序实现以及与主机的接口,把它放在有需求的位置,便可以进行测量,相当方便。当然,ds18b20并不是没有瑕疵。12bit的数字信号获取要消耗将近800ms的时间,对于系统实时性有一定影响。另外,其严格的单总线时序控制对程序实现提出了严酷的要求,增加了开发难度。从上面的论述我们决定采用ds18b20作为温度信息采集的核心部件。2.3 光照信息采集方案方案1为直接使用光敏电阻,其阻值随着光源强度而变化。再加上分压电阻构成一个简单的电路,当外界环境温度变化时,就会引起光敏电阻的阻值变化,经过分压后输出的电压就会变化,将采集到的电压值送入单片机,再根据光敏电阻的特性参数在程序中实现标度变换还原成对应的光照值。此方案可选择5系列lxd5539光敏电阻,最大电压150v,环境温度-30+70摄氏度,光谱峰值540(nm),亮电阻30-90k,暗电阻5.0(m)。方案二为采用光电集成传感器,与光敏电阻的使用基本相同,其阻值的变化随光照变化更趋于线性,这校结果会更加精确。此方案可选用on9658光电集成传感器,典型入射波长为p=520nm,内置双敏感元接收器,可见光范围内高度敏感,输出电流随照度呈线性变化。适合电视机、lcd背光、数码产品、仪器仪表、工业设备等诸多领域的节能控制、自动感光、自适应控制。它且有如下的电气特性:1 暗电流小,低照度响应,灵敏度高,电流随光照度增强呈线性变化,如下图所示:2 内置双敏感元,自动衰减近红外,光谱响应接近人眼函数曲线;3 内置微信号cmos放大器、高精度电压源和修正电路,输出电流大,工作电压范围宽,温度稳定性好;4 可选光学纳米材料封装,可见光透过,紫外线截止、近红外相对衰减,增强了光学滤波效果;更值得一提的是,msp430系列单处机内部有集成的ad模块,光照传感器的阻值变化而引起的变化的输出电压就能直接输入到单处机中进进转化,而不再需是外部加adc模块,大大地简化了外部电路。这样就充分利用了msp430内部的a/d转换器,提高单片机利用率,且结果精确,所以我们选择了方案二。2.4 无线传输方案无线我们采用集成的单片无线收发芯片nrf2401,它是nordic 公司最近生产的一款无线通信通信芯片,内部集成 nordic 自己的 enhanced short burst协议。可以实现点对点或是 1对 6 的无线通信。它具有以下特点:1) 2.4ghz 全球开放ism 频段免许可证使用;2) 最高工作速率2mbps,高效gfsk调制,抗干扰能力强,特别适合工业控制场合;3) 126 频道,满足多点通信和跳频通信需要;4) 内置硬件crc 检错和点对多点通信地址控制;5) 低功耗1.9 - 3.6v 工作,待机模式下状态为22ua;掉电模式下为900na;6) 内置2.4ghz 天线,体积小巧15mm x29mm;7) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便;8) 内置专门稳压电路,使用各种电源包括dc/dc 开关电源均有很好的通信效果;9) 标准dip间距接口,便于嵌入式应用;10)工作于enhanced shockburst 具有automatic packet handling, auto packet transaction handling,具有可选的内置包应答机制,极大的降低丢包率。 nrf2401包括:频率发生器、增强型模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过spi接口进行设置。极低的电流消耗:当式作在发射模式下发射功率为-6dbm时电流消耗为9ma,接收模式为12.3ma。掉电模式和待机模式下电流的消耗更低。第3章 硬件电路设计 3.1 温度采集系统温度采集系统直接使用ds18b20,其操作及电路简单,管脚排列如图所示。1脚为gnd为电源地,2脚为 dq为数字信号输入输出端,3脚为vdd外接供电电源输入端(在寄生电源接线方式时接地)。由此得温度采集系统的电路图如下所示:i/o接口3.2 光照采集系统光照采集系统采用on9658光电集成传感器,电路如下图所示:3.3 无线传输系统无线传输系统采用单片无线收发芯片nrf2401,其工作电路如下图所示:第4章 软件设计4.1 温度数字信号采集ds18b20的基本描述已经出现在本文第二部分,下面将要详细讨论的是ds18b20的程序实现。msp430系统中,ds18b20的控制框图:1.由于ds18b20不是mcu,我们只能通过对msp430的程序书写来控ds18b20。2.由于前端硬件接口充裕,本系统并没有使用单总线挂多个ds18b20的方法,而是采用了一个i/o对应一个ds18b20的方法,用pos参数控制相应的ds18b20。比如,在px.0口的ds18b20的pos参量值为0x01,在px.1口的ds18b20的pos参量为0x02,依次类推,对于px.y口pos 0x01y (0 y 8)以下就是ds18b20的控制程序介绍,由于ds18b20程序比较繁杂,下面将给出核心的函数设计。1.)延时精确控制模块void delay(unsigned int n) /延时程序,参数n为延时参数 ccr0 = n; /装入计数值 tactl |= mc_1; /设置为增计数模式 while(!(tactl&bit0); /等待计数至n,此时tactl/第一位为标志位 tactl &= mc_1; /关闭本次计数,等待下次计数 tactl &= bit0; /清楚计数标识位int main( void ) /延时程序在主函数中的设置 tactl |= tassel_2 + id_3; /使用8mhz,8分频由于本系统采用的是c语言进行开发,而一条c语句在编译过程中会编译出多条汇编指令,导致使用软件延时无法精确实现延时,所以,本延时模块就没有使用软件延时的手段。而该延时精确控制模块的核心思想就是利用msp430内部的计数器,依靠硬件电路计数进行定时。由于msp430外部工作频率可选,我们选择使用8mhz的工作频率,同时,经过8分频之后送给片内计数器模块,使其工作在1mhz的频率上,这样,计数器每数一个数就耗时1/1mhz 1us因此,delay函数的参变量n就决定了延时时间,即n * 1/1mhz n usdelay (n) = 延时n us除去在delay函数中其他的控制命令,该模块的延时性能确实能精确到us量级。2.)初始化命令模块unsigned char dbinitial(unsigned char pos) /pos为端口位置参量 _dint(); /关闭中断,防止影响延时准确性 p2out &= pos; /对应i/o拉低 delay(500); / 延时480us p2out |= pos; /对应i/o拉高 delay(55); /延时55us p2dir &= pos; /改变输出为输入,准备接受ds18b20的响应 _nop(); /短暂延时 if(p2in & pos) /如果ds18b20回应高电平,则出错 error=1; /错误标志位(用于检测初始化错误)置高 p2dir |= pos; /i/o方向改变为输出 else error = 0; /ds18b20回复低电平,初始化正确 p2dir |= pos; /改变i/o为输出方向 p2out |= pos; /响应位置输出为高,回到默认状态 _eint(); /初始化程序结束,可以打开中断 delay(400); /延时400us,等待系统稳定 return error; /返回初始化错误标志位,进行后续判断如此控制时序逻辑,是依照ds18b20的模块要求,其基本初始化时序要求为:由图可以看出,其基本的时序逻辑为:1.主机拉低,延时480us左右;2.主机拉高,等待丛机响应;3.丛机拉低,维持60240us,主机检测响应;4.总线拉高,回复原始状态3.)写命令模块,模块程序可以与初始化类似,这里不再赘述。ds18b20采用的单总线协议,所以其数据书写不可能采用并行方式,因此,只能采用串行数据输入的方式。即在程序中体现出来,为按位发送。向ds18b20书写数据应首先发送lsb。ds18b20有自己的写时序逻辑,其时序图为:由图可以看出,其基本的写时序逻辑为:1.主机将总线拉低,维持15us;2.若写0,则主机持续拉低45us,等待从机采样;若写1,则主机在第一步之后将总线拉高45us,等待采样;3.总线拉高。4.)读程序模块,模块程序可以与初始化类似,这里不再赘述。ds18b20的读时序同样必须串行接受。ds18b20首先向主机发送lsb,所以temp向右移位。其基本的读时序图为:由图可见,ds18b20基本的读时序逻辑为:1.总线拉低15us左右;2.ds18b20发送数据,主机采样保持45us;3.拉高回到初始态。刚才说到的仅仅是读模块中的字节读取命令,实际上ds18b20发回的数据不只一字节,而总共要读两个字节,以下是读程序中的整合1字数据模块。unsigned int readtemp(unsigned char pos) /读取操作 unsigned int temp_low,temp; /设置低字节以及高字节存储空间 temp_low = read(pos); /先读低字节 temp = read(pos); /再读高字节 temp = (temp8)|temp_low; /合成温度信息 return temp; /返回temp为2字节温度信息5.)前台控制程序中的部分控制函数,值得说明的是,模块中的一些子模块为:void skip(unsigned char pos) /跳过阅读rom指令 write(0xcc,pos);void conver(unsigned char pos) /开始转换命令 write(0x44,pos);void read_sp(unsigned char pos) /自从机临时空间取数据 write(0xbe,pos);这些程序都是向ds18b20写rom指令(比如0xcc,0x44,0xbe),作用与ds18b20的内部指令集有关。1. skip命令:在单总线单机下,使用此命令跳过读取从机rom序列号以及匹配操作。由于我们的系统实质上是采用多线单机方式,所以需要skip命令,相应的序列号以及匹配操作已经通过pos参量的引入得到了解决。2. conver命令:就是出发从机开始采样转换。3. read_sp命令:从机转化后不会主动向主机发送数据,因此,需要这个命令通知从机,主机对转换的数据有需求,从机应该随时准备发送。6.)主函数中的控制部分在主函数中,我们只需要调用convert_sum,就可以轻松地实现温度信息的采集,例如:convert_sum(bit0); /不断从0,1,2端口收集数据 convert_sum(bit1); /转化中可以有其他的执行处理程序convert_sum(bit2);由此看出,由于模块化程序的运用,使主函数中的转化控制命令相当简洁。4.2 光照信号的模数转换系统adc部分主要用于将光敏电阻上的电信号转换为数字信号,采用4路输入,不间断地转换模拟信号。此外,adc采用中断处理。另外,值得一提的是,在ds18b20转换部分,等待转换耗费的时间非常长,接近1s,而adc完场一次序列转换的时间不超过30ms,所以,我们采用了在等待ds18b20转换期间,进行adc的转换采集。其基本的程序结构如图所示:下面给出完整的adc的程序框图:另外值得说明的是,adc转换的结果会有一定的偏移量,这部分修正随具体电路具体情况而定,修正部分在lcd显示部分给出。adc模块有集成内部稳定电阻,当然,依靠外接稳定电阻可以实现稳定的信号从上图我们可以看出,转换结果成线性,其中offset正是要具体考虑的。4.3 无线发送模块nrf24l01 的状态机见所示,对于 nrf24l01 的固件编程工作主要是参照nrf24l01 的状态机。主要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论