温湿度监测系统新_第1页
温湿度监测系统新_第2页
温湿度监测系统新_第3页
温湿度监测系统新_第4页
温湿度监测系统新_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式课程综合实训报告书课题名称: 温湿度监测系统 系 (部): 信息工程系 专业班级: 嵌入式专业方向09班 学生姓名: 学 号: 完成日期: 山东科技大学泰山科技学院实习类型课程实训实训地点组成原理实验室组 别实习课题温湿度监测系统实训人姓名同组人员指导教师实习日期2012-08-27至 2012-10-07实训成绩指导教师评语指导教师签名:_年 _ 月_日1 绪论嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。简单的说就是系统的应用软件与系统的硬件一体化,类似与BIOS的工作方式。具有软件代码小,高度自动化,响应速度快等特点。特别适合于要求实时的和多任务的体系。 嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:工业控制、交通管理、信息家电、家庭智能管理系统、POS网络及电子商务、环境工程与自然等。本课题就是把嵌入式系统的优势利用到仓库的温湿度监控系统中。 在仓库的货物的管理中,防潮、防霉、防腐、防爆是衡量仓库管理质量的重要指标,它直接影响到储备物资的使用寿命和工作可靠性。为保证日常工作的顺利进行,我们需要实时知道温湿度的具体变化,因此首要问题就是加强仓库内温度和湿度的监测工作。传统的方法是用与湿度表、毛发湿度表、双金属式测量计和湿度试纸等测试器材,通过人工进行监测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。这种人工测试方法费时费力、效率低、测试的温度湿度误差大随机性大,而且库区的面积越来越大,因此我们需要一种造价低廉、使用方便、测量准确、传输能力强和通信距离远的监控系统来有效地对仓库货物进行监管。 本课题的目的就是利用ARM控制器来实现工业现场温度、湿度的采集和无线传输,在远程可以显示温度和被送到上位机。1.1设计目的注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。了解所选择的ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。通过软硬件设计实现利用ARM芯片对周围环境温度信号的采集及显示。1.2设计意义嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由以下几部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种需要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。数据采集(DAQ),是指从传感器和其它待测设备等模拟和数字被测单元中自动采集非电量或者电量信号,送到上位机中进行分析,处理。数据采集系统是结合基于计算机或者其他专用测试平台的测量软硬件产品来实现灵活的、用户自定义的测量系统。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。采集一般是采样方式,即隔一定时间(称采样周期)对同一点数据重复采集。采集的数据大多是瞬时值,也可是某段时间内的一个特征值。准确的数据量测是数据采集的基础。数据量测方法有接触式和非接触式,检测元件多种多样。不论哪种方法和元件,均以不影响被测对象状态和测量环境为前提,以保证数据的正确性。传统的温度采集系统由于存在响应慢、精度低、可靠性差、效率低、操作繁琐等弊端,已经不能完全适应现代化工业的高速发展。随着嵌入式技术的迅猛发展,设计高速度、高效率、低成本、高可靠性、操作方便的温度采集系统成为当务之急。基于ARM的温度采集系统就成为了解决传统温度采集系统各种弊端的优先选择方案。2 系统可行性与需求分析2.1 课题意义目前,国内大中型库房在仓储管理和花房等需要温湿度控制的场所的现状,多数仅限于对温度进行监测和控制,而没有对湿度采取相应的措施。当温度不正常时(过低或者过高)便进行强制通风或者加温,但是这样会因为处理不及时(设备、人力、条件有限)仍然造成大量损失。湿度和温度是众多领域中需要检测的重要环境参数。不仅在工业、现代农业,还是在气象卫星、仓库保管等领域,对温度和湿度的测量都是随处可见的。对温度和湿度的测量与监控也是十分有意义的。对湿度和温度进行合理有效的调控不仅可以节约能源还更有利各行业安全健康的发展。查阅资料得知人体适宜的健康温度为1825,健康湿度为4070RH,在此环境下人体感觉最舒适。而在温度介于2430,湿度小于60RH时,人体的感觉是热而不闷;在温度高于30,湿度大于70RH时,人体就会感觉到闷热;在温度高于36,湿度大于80RH时,人体的感觉则是严重闷热,而且发汗机制受阻,容易因体内蓄积大量的余热而中暑;工作出错率比平时高十倍,意外工伤事故比率上升。许多疾病都与温湿度有密切的关系,尤其与过低的湿度有关。现代医学发现:在4555RH的相对湿度下,病菌平均寿命最短,过高或过低的湿度都会导致病菌寿命延长。当空气湿度为35RH时,鼻部和肺部呼吸道粘膜上的纤毛运动减缓,灰尘、细菌等容易附着在粘膜上,刺激喉部引发咳嗽和其它呼吸道疾病。空气湿度低的时候,流感病毒和能引发感染的革兰氏阳性菌的繁殖速度会加快,而且容易扩散,引发疾病。此外,过敏性皮炎、哮喘、皮肤瘙痒等过敏性疾病也都和空气干燥有关。因此检测人们工作空间内的温湿度值,并进行合理的调控对人们的身体健康是十分有意义的。仓库储藏领域必须对湿度和温度进行检测与控制。国家的储备粮仓库对温度湿度控制更是非常严格的。如果储藏粮油等副食品地方的湿度过大、温度过高,就容易导致储藏的粮食发霉变质。这些地方的温湿度一但出现问题,不仅仅是粮食资源的浪费,更关乎到市场供应、社会秩序的安全与稳定。故而,需要定期的对仓库内的温湿度值进行监测。花房内的温度和湿度也需要定期监测,对湿度和温度的控制要求也很高。这是因为温湿度值的高低直接影响到植物的正常生长发育。合适的温度和湿度,不仅可以节约植物生长必须的养分和化肥,而且植物开出花朵会更美更大。科学实验的实验室对温湿度的要求则更高,实验室内温湿度值控制的合适与否,直接影响科学家能否得出正确的实验结果。库房储藏物和花房的温度变化主要是由于湿度引起的,库房储藏物和花房植物本身水分过高或连续的潮湿天气将导致储藏物和植物新陈代谢加快而放出热量,从而引起的温度变化又使新陈代谢进一步加剧以至发霉变质和植物枯萎。这种恶性循环一旦形成很难进行有效控制。因此,库房和花房在进行温度监测的同时,必须重视对空气湿度的检测。为了更好地测量、控制温度和湿度等影响物品和植物储存的因素,本文设计了以AT89C51单片机为控制器的智能测控系统,通过该系统可以对环境温度、湿度等观测值进行自动控制和适时监测,并利蜂鸣器进行报警及相应的处理。2.2国内外发展现状及趋势最近几年,国内外库房温湿度测控系统正从结构复杂、功能单一、成本高昂向着集成化、智能化、多参数检测、成本低廉的方向迅速发展,随着科研人员的不断努力,该类型的系统取得了巨大的成就。这也为开发新一代温湿度测控系统奠定了基础,同时将温度、湿度的测量、控制技术提高到新的水平。现代温湿度测控系统技术主要以数据采集为依据,主要类型包括:虚拟仪器、智能仪器、数字式仪器等等。伴随着科学技术及计算机的进一步发展,数据采集系统也发生了日新月异的变化,其整体的性能、实用性方面都有所改进。因此,依托于数据采集结构而发展的温湿度传感器测量系统在实际应用中也发挥这越来越重要的作用。目前,国内温湿度测控系统采用的方法主要有:“温阻”法和“湿阻”法,即采用电阻型的温湿度传感器,利用其阻值随温湿度的变化测定空气的温度和相对湿度。然而受传感器灵敏度的影响,这类温湿度测控系统的精度不可能很高 ,难以满足实验室设备等对精度要求颇高的场合。近些年来,国内许多机构也在传感器测试装置的研发上不断探索、实践。例如通过采用传统电子仪器进行设计研发而成的多种动态测试系统、自动装置的气体传感器智能测试系统等等,这些成绩都体现了我国在传感器领域取得的成就。3 总体设计3.1硬件设计3.1.1设计思路本设计的基于ARM 的嵌入式数据采集和显示装置的原理框图如图3-1 所示。由图可见,本系统采用“电源部分ARM 核心控制模块温度采集模块”实现所需功能。并考虑到系统的可扩展性和延伸性,本系统采用主从CPU协同工作,实现了数据的实时采集、传输与显示,具有处理速度快、精度高、人机交互界面友好、稳定性高、扩展性好等优点。本设计的基于ARM 的嵌入式数据采集和显示装置的原理框图如图3-1 所示。由图可见,本系统采用“电源部分ARM 核心控制模块温度采集模块”实现所需功能。SD RAM存储器ARM处理器Flash ROM存储器LCD显示器键 盘RS-232协控制器多路温度传感器ARM核心控制模块温度采集模块电源电路电源部分图3-1 系统原理框图3.1.2电源电路设计本系统的电源电路由两部分组成:系统总电源电路和RAM核心模块电源电路。如图3-2:+12V恒定直流电源经电容滤波,分别进入7809和7805稳压,得到+9V和+5V的稳定电压输出后分别供给ARM核心控制模块和其余电路部分使用。图中IN4148是为了防止输出端并接高于本稳压模块的输出电压而烧坏7809和7805而特别设计,达到了可靠性电源设计目的。另外,由于系统正常工作电流较大,因此使用时均应在7809和7805上加散热片散热。 由图可见,系统采用双电源供电,提供了系统正常工作所需的电源电压。另外,由于考虑到便携目的,本系统采用+12V铅蓄电池提供系统所需的恒定直流电源。图3-2 系统电源电路原理图如图3-2:I/O 口提供了相应的稳定直流电源。其中的IN4004是为了防止电源输入反接烧坏集成稳压块而设计的。由于S3C2440采用2.5V作为ARM 内核电源,使用3.3V作为I/O 口电压,故ARM核心控制模块电源需要另外单独设计,其电源电路如图3-2所示。由系统总电源电路提供的+9V稳压电源作为输入,分别经AS1117-5.0、AS1117-3.3、 AS1117-2.5稳压后,输出5.0V、3.3V和2.5V恒定电源,为RAM 内核和I/O口提供了相应的稳定直流电源 。其中的IN4004是为了防止电源输入反接烧坏集成稳压块而设计的。3.1.3温度采集电路设计温度采集模块电路采用AT89S52单片机作为模块的协控制器。对于温度传感器的选用DS18B20,因为DS18B20是Dallas公司最新单总线数字温度传感器,该传感器集温度变换、A/D转换于同一芯片,输出直接为数字信号,大大提高了电路的效率。由于现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,且提高了CPU的效率。AT89S52单片机的P0 口与8路温度传感器相连,用于采集温度数据;另外,模块提供RS-232串行口与RAM核心控制模块通信,达到数据传输的目的。温度采集模块电路原理图如图3-3。图3-3 温度采集电路原理图3.2软件设计3.2.1设计思路本系统软件设计是在CodeWarrior for ADS开发环境下完成的。本温度数据采集与显示装置的主体由S3C2440核心控制模块和温度数据采集模块构成,所以系统软件也是围绕这两个模块来编写的。而又由于系统采用了S3C44Box和AT89S52两个CPU协同工作,所以软件的编写需要对这两个CPU分别编写,以实现所要求的功能。程序流程图如图4-1。开始ARM初始化硬件装置初始化通信初始化LED显示初始化键盘初始化扫描键盘有键按下处理数值相应显示数据获取数据处理数据显示YN图3-4程序流程图由该流程图可看出,刚上电时,S3C2440要先进行ARM 内部的初始化,以使ARM进入相应的状态和模式;然后初始化硬件装置,以使硬件系统可以正常支持温度数据采集;接着通信初始化,以确定温度采集模块与ARM核心控制模块连接正常,并通过UART复位温度数据采集模块,确保其进入正常温度数据采集状态;然后初始化LCD显示和键盘,在LCD上显示相应的菜单列表,供用户通过键盘选择操作;至此,系统初始化完成,并进入正常主程序循环状态。在正常主程序循环状态中,首先扫描键盘,以快速的响应用户的按键操作;若没有键值按下,则ARM立即进行数据的采集、处理与显示,以实现实时数据采集与显示等功能。 其主程序包括温度采集程序、ARM获取温度子程序、温度处理和转换子程序。当ARM 处理器接收到正确的温度数据后,立即进行相应的温度数据处理与转换,变成可被LCD直接显示的正确温度值。3.2.2程序清单温度处理与转换子程序如下: /存放读取到的当前温度值,未转换 Static U16 a-temp-now8=8*0 /存放经精度计算后的实际温度值,高8位整数部分,低8位小数部分 static U16 b-temp-now8=8*0; /存放8路转换后温度值,分别为百位,十位,个位,小数位 static U8 temp-convent-all32=32*0; /- /温度处理与转换子程序/- void temp-change(void) U8 negtive=0x00; /存放数的符号,若为正=0;若为负,=0xff U8 j=0; U8 *pt=temp-convent-all; U16 *p1=a-temp-now; U16 *p3=b-temp-now;U16 temp=0; for(j=0;j8;j+) negative =0x00; temp=*p1; /若温度为负值,进行相应处理 if(temp&0xf80) !=0) temp=(temp)+1;/转为正的原码 negative=0xff; / 同时置符号为0xff /根据精度消除无关数据 switch(a-temp-prec) case 0x1f: /精度为9位,则清除最低3位无效位 temp=temp&0xfff8;break; case 0x3f: /精度为10位,则清除最低2位无效位 temp=temp&0xfffc;break;case 0x5f: /精度为11位,则清除最低1位无效位 temp=temp&0xfffe;break; case 0x7f: /精度为12位 break; /换算成实际温度,并扩大10倍,去掉小数部分temp=(U16)(float)(temp)*0.625);/折算放入b-temp-now 数组中/高8位放整数部分,低8位放小数部分,最高位放符号位if(negtive= 0xff) /若为负值 *p3=(temp/10)8)|(temp%10)|0x8000; else *p3=(temp/10)0;j-) *p1+=0x0; 4 详细设计4.1 Mini2440 开发板的介绍我们这次实训用的板子是Mini2440,Mini2440是一款基于ARM9的开发板,采用 Samsung S3C2440 芯片,并采用专业稳定的 CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。在进行器件地址说明之前,有一点需要注意,nGCS0 片选的空间在不同的启动模式下,映射的器件是不一样的。在NAND Flash启动模式下,内部的 4KBytes BootSram被映射到nGCS0 片选的空间;在Nor Flash启动模式下( 非Nand Flash 启动模式) ,与nGCS0 相连的外部存储器Nor Flash 就被映射到nGCS0 片选的空间 SDRAM 地址空间:0x 0x。Supervivi 在出厂的时候已经预装入板子的Nor Flash中,设置拨动开关 S2为NOR Flash启动,即可进入 BIOS模式,此时开发板上的绿色LED1 会呈现闪烁状态,其启动界面如下图:图4-1双击运行光盘中的“windows 平台工具usb 下载驱动 FriendlyARM USB Download Driver Setup_.exe”安装程序,开始安装USB 下载驱动。功能主菜单如下图:图4-24.2 BootLoader移植4.2.1 确定supervivi的版本版本为supervivi-0945-2K,supervivi的功能可通过USB下载配合DNW这个程序使用。功能如图所示:图4-34.2.2 获取Linux内核源代码对于Linux-,我们是基于Ubuntu10.04平台做开发的,所有的配置和编译脚本也基于此平台,并使用符合 EABI 标准的新型编译器: arm-linux-gcc-4.3.2。4.2.3 克隆建立自己的目标平台一般步骤(1)获取mini2440.c我们要参考SMDK2440 加入自已的开发板平台,我们使用的是mini2440 ,因此取名为MINI2440。在linux-/arch/arm/tools /mach_types 文件中,我们可以看到mini2440 的机器码为1999。接下来,我们注意到linux-/arch/arm/mach-s3c2440 目录下有个mach-mini2440.c文件,把它直接删除。将linux-/arch/arm /mach-s3c2440/ 目录下的mach-smdk2440.c 复制一份。命名为mach -mini2440.c ,找到MACHINE_START(S3C2440, “SMDK2440”) ,修改为MACHINE_START(MINI2440, “FriendlyARM Mini2440 development board”)。开发板运行后,在命令行终端输入:cat /proc/cpuinfo 可以看到我们添加的开发板信息。(2)修改时钟源频率在 mach-mini2440.c (就是我们刚刚通过复制mach-smdk 2440.c 得到的)的第 160 行static void _init smdk2440_ map_io(void)函数中,把其中的(代表原 SMDK 2440 目标板上的晶振是 16.9344MHz)改为 mini2440 开发板上实际使用的(代表 mini2440 开发板上的晶振 12MHz,元器件标号为 X2)。(3)从SMDK2440 到MINI2440制作自己的 mini2440 平台体系,需要把mach-mini2440.c 中所有的smdk2440 字样改为mini2440 ,可以使用批处理命令修改,在 vim 的命令模式下输入:%s/smdk2440/mi ni2440/g 。(把所有和“smdk2440”匹配的字符串全部替换为“mini2440 ”,前面的“%s“代表字符串匹配,最后的“g”代表 global,是全局的意思),除此之外,还有一个地方需要改动,在 mini2440_machin e_init(void)函数中,把smdk_machine_init() 函数调用注释掉。(因为我们后面会编写自己的初始化函数,不需要调用smdk2440 原来的)。(4)编译测试在 Linux 源代码根目录下执行 #make mini2440_defconfig(使用 Linux 官方自带的 mini2440 配置); #make zImage ; 重新编译并把生成的内核文件zImage(位于 arch/arm/boot 目录)下到板子中,可以看到内核已经可以正常启动了(但此时大部分硬件驱动还没加,并且也没有文件系统,因此还无法登陆)。(5)关于内核配置菜单中的mini2440选项在命令行执行: #make menuconfig(前面已经执行了make mini2440_de fconfig 加载了缺省配置,因此这里可以直接执行该命令);可根据一下步骤找到MINI2440选项:System Type-S3C2440 Machines-MINI2440 development board,在Linux-/arch/arm/mach-s3c2440/Kconfig文件中可查看到内核配置菜单中MINI2440选项的一些定义。这里的显示信息只是在内核配置菜单中出现的,要让选择的配置实际起效,还需要根据此配置在Makefile中添加相应的代码文件,请看该目录下的Makefile。4.2.4 移植Nand驱动并更改分区信息一般步骤(1)Linux- 内核所支持的Nand Flash 类型Linux-已经自带了大部分的驱动。在linux-/drivers/mtd/nand/nand_ids.c文件中,定义了所支持的各种 Nand Flash 类型,如下图图4-4(2)修改Nand Flash 分区表打开/arch/arm/plat-24xx/common-smdk.c可以看到Nand Flash 的分区表在 Linux- 中,nand 驱动是被注册为平台设备的,这同样可在/arch/arm/plat-24xx/common-smdk.c 文件中看出。因此,在mach-mini2440.c 中加入为各个分区信息的代码(包含此分区的名字,大小、偏移地址)。(3)从启动信息中查看分区表至此,就完成了 nand flash 驱动的移植,此时在内核根目录执行“make zImage”,把生成的 zImage 烧写到开发板。4.2.5 让linux支持yaffs2文件系统(1)获取yaffs2的源代码在/node/346 可以下载到最新的yaffs2 源代码,需要使用git工具,在命令行输入: #git clone git:/www.aleph1.co.uk/yaffs 2 稍等片刻,就可以下载到最新的yaffs2 的源代码目录,本光盘中也有单独的yaffs2 源代码包(文件名为:yaffs2-src-.tar.gz) 。(2)为内核打上yaffs2的补丁进入yaffs2 源代码目录执行: #cd yaffs2 #./patch-ker.sh c /opt/FriendlyARM/mini2440/linux-图4-5此时进入linux-/fs 目录,可以看到已经多了一个yaffs2 目录。(3)配置和编译带yaffs2支持的内核在Linux 内核源代码根目录运行:make menuconfig按照如下步骤进行配置:File Systems Miscellaneous filesystems YAFFS2 file system support按空格选中它,这样我们就在内核中添加了yaffs2 文件系统的支持,按“Exit ”退出内核配置。最后在命令行执行: #make zImage。(4)烧写到开发板运行测试最后会生成linux-/arch/arm/boot/zImage ,使用 supervivi 的“k“功能把它烧写到nand flash,按“b“启动系统,这时,如果 nand flash已经存在文件系统( 可以使用supervivi的“y“功能烧写友善之臂提供的现成的 yaffs2 文件系统映像root_qtopia-128M.img 用以测试) ,就会看到下图信息了,这说明yaffs2 已经移植成功。 图4-64.2.6 移植DM9000网卡驱动步骤(1)设备资源初始化Linux-已经自带了完善的DM9000 网卡驱动驱动( 源代码位置:linux-/ drivers/net/dm900 0.c) ,它也是一个平台设备,因此在目标平台初始化代码中,只要填写好相应的结构表即可,具体步骤如下:a.首先添加驱动所需的头文件dm9000.h;b.再定义DM9000 网卡设备的物理基地址;c.再填充该平台设备的资源设置,以便和DM9000 网卡驱动接口配合起来;这样,DM9000 平台设备的接口就填完了。(2)调整DM9000所用的位宽寄存器因为Linux- 的DM9000 网卡驱动并不是专门为mini2440 准备的,所以还要在其源代码中做一些移植工作,如下步骤。a、打开linux-/ drivers/net/dm9000.c ,头文件处添加2410相关的配置定义,如下红色部分:

温馨提示

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

评论

0/150

提交评论