精品文档精品文档基于ARM的温度采集系统设计2013554013王义涛精品文档精品文档一.引言本文针对试验对温度监控系统的要求,设计、开发了基于嵌入式操作系统Linux和S3C2410处理系统软硬件平台的嵌入式多通道高精度温度测量系统的软、硬件设计与实现方法,研究并实现热电阻的多通道高精度监测电路。本文在对测温技术发展研究的基础上,根据本课题设计的任务要求,设计了基于PT100(铂电阻)传感器的新型多通道温度检测板(8通道)。在该多点温度测量系统中,要求温度监测点12个,测量范围:0℃~+50℃,分辨力:±0.1℃,准确度:±0.2℃。温度检测系统将实现多点温度数据的采集、保存、上传。该系统主要包括两个部分:多通道温度检测板和ARM通信电路。温度检测板由电源电路、信号放大及调理电路以及AD转换电路与单片机接口电路三部分组成。基于ARM的通信电路通过两种方式:串口及网口方式实现对温度数据的采集、上传、读取、保存。完成Linux操作系统在嵌入式系统上的移植,以及Linux实时性能改造;软件任务划分与设计,包括A/D数据采集任务,算法任务,编制构成本温度多路测量仪的嵌入式程序,并对各部分电路进行实验、调试。二.系统硬件设计2.1温度检测系统架构框图温度检测系统将实现多点温度数据的采集、保存、上传。其系统结构图如下:2.1基于四线制接法和自校正设计的电阻测量电路精品文档精品文档当温度探头附近环境温度发生改变的时候,引起了温度探头PT100电阻值的改变。由于流经PT100的电流为恒定值,因此温度采集板通过对PT100两端的电压值采集便可以计算出环境温度。本温度采集板中的温度探头采用了4线制解法,可以避免因导线过长带来的电阻误差。6路采样信号和2路标准电阻信号通过多路模拟开关分时段被进行采样,采样得到的值依次通过信号放大电路和A/D转换电路进入微控制器(MCU)。通过自校准算法,从而得到精确温度值采集到的温度测量值可以通过串口或网口的方式与上位机相连。2.2基于ARM的通信电路2.2.1ARM核心板本核心板采用NANDFLASH芯片K9F1208作为存储器,用来存储数据和程序。一片K9F1208的容量为64M,能够满足系统的需要。K9F1208和S3C2410接口电路图如图所示。2.2K9F1208和S3C2410接口图精品文档精品文档在本系统中,ARM核心板主要起到对前端采集到的温度数据的收发。核心板的接口电路如下:2.3ARM核心板接口图2.2.2信号输入电路该信号为温度板采集得到的信号,通过4PIN的外接端子接入。由于信号之间有相互干扰,故需要采取隔离措施。ISO7221是双通道数字隔离器,该系列器件有一个由SiO2隔离栅组成的逻辑输入输出缓冲区,隔离电压达4KV。若在独立的电源系统中联合应用,它们可以阻止高电压,隔离地平面和阻止噪声流入数据总线或者其它线路,预防干扰或者破坏敏感线路。隔离后的信号直接与ARM相连进行通信。2.4信号输入电路2.2.3ARM与串口和网口连接电路对于数据的传输,我们采取两种方式分别是:网口方式和串口方式。对于网口方式,我们选用RJ45接口为网卡接口。10/100basetxRJ45接口是常用的精品文档精品文档以太网接口,支持10M和100M自适应的网络连接速度,10/100basetxRJ45接口引脚定义如下:2.5RJ45接口引脚定义2.6网口连接电路由于ARM与PC机的传输协议不同,因此需要将RS232转换为TTL。这里我们选用MAX3232为转换元件。原理图如下:精品文档精品文档2.7串口连接图三.系统软件设计3.1单片机系统软件单片机软件系统的设计与开发是实现对于温度数据实时采集的重要保证,温度数据采集结果的好坏与单片机软件系统的编写密切相关。本节将会详细的介绍系统软件开发的设计思想、程序设计和编写、各个功能模块的实现以及各个功能模块的流程图。3.1.1主体程序设计系统的主程序设计主要完成整个系统的初始化、中断优先级设定以及调用各个模块程序,既主要实现各个模块程序的连接。3.1主程序控制流程图精品文档精品文档3.1.2数据采集子程序设计该子程序功能是将PT100所检测到的温度模拟信号转换为数字信号。完成以下主要操作:分时段轮询8测温通道、启动AD7715、延时等待A/D转换结果、读取转换结果并将结果存入RAM和上传给上位机等。程序框图如下:3.2数据采集流程图3.2嵌入式Linux操作系统的建立3.2.1开发前的准备工作(1)交叉编译环境的建立交叉编译器选用的是集成交叉编译器cross-3.4.1。程序下载方式选择串口方式。程序编写调试在台式计算机集成开发环境下进行,编译生成可执行代码后,通过串口下载到嵌入式目标板上。(2)基于S3C2410的BootLoader移植本项目选用的BootLoader是由深圳优龙公司自行开发的、专门针对S3C2410运用的ST2410_BIOS_V2.36。该BootLoader具有的功能是:配合三星公司开发的DNW软件,利用USB或者串行口下载文件;执行FLASH烧写功能;从NANDFLASH中启动操作系统;擦除NANDFLASH分区;设置启动参数等。这个BootLoader运行稳定可靠,使用简单方便,而且源码开放,可以根据自己的应用需求任意修改BootLoader源码,满足了项目需求。(3)Linlux内核移植所谓Linux内核移植,就是针对具体的目标平台对Linux做必要的改写后,精品文档精品文档安装到该目标平台并使其正确运行的过程。基本内容包括:①获取某一版本的Linux内核源码。②内核裁剪:根据具体的目标平台和系统要求,对源码进行量身定做的改写(主要是有关体系结构的部分);然后添加一些驱动模块,构成一款合适目标平台的新的操作系统。③对该系统进行针对目标平台的交叉编译,生成一个内核映像文件(Makefile文件),该文件可以在目标平台运行。④对该映像文件烧写、安装到目标平台中。(4)Linux文件系统文件系统是文件存储的物理空间,Linux操作系统的运行离不开对文件的操作。文件系统的任务是对逻辑文件进行管理,包括复制、删除、修改等操作,方便用户操作文件和目录。为适应便携与移动的需求,嵌入式系统一般采用Flash作为存储介质。考虑到Flash的持久存储能力、可写性、压缩性和掉电保护能力等因素,Flash必须使用专门的文件系统。本项目采用的文件系统是cramfs+yaffs文件系统的形式,cramfs文件系统是一种只读文件系统,用来存储系统运行所必须的一些配置、环境变量、数据等;yaffs文件系统是一种可读写的文件系统,用来存储用户的程序、数据等。yaffs文件系统挂接在cramfs文件系统/mnt目录下,完整的目录路径名为/mnt/yaffs。/mnt/yaffs目录可读可写,用户可以将自己的程序下载到这里运行,同时也可以在这个目录下配置用户级的环境变量、启动参数等。3.2.2系统应用程序的设计为了实现本系统功能,需要对系统划为多个不同的子任务,并且要分配不同的优先级别。在嵌入式实时系统中,对任务合理的划分和优先级合理的设置是至关重要的。任务划分得越准确,不仅可以减少软件设计的工作量,而且也可以增强系统的稳定性。对任务优先级的合理设置,则是对嵌入式系统实时性的主要保障,可以保证任务调度的合理性。具体到本系统的基本功能划分如下几个子任务:温度量数据采集任务,数据串行通信给上位机任务,以太网模块数据传输任务,用户配置任务。应用程序编写、调试完毕后,编译成模块,然后将模块下载到/mnt/yaffs目录下,编辑相关启动脚本,使操作系统启动后自动加载这三个程序模块。以模块的形式加载应用程序,应用灵活,方便升级。精品文档精品文档3.3应用程序总体框架图由于时间的制约,该版本的温度测量系统只包含基本的温度量采集和将采集到的数据上传给网络的功能。关于用户配置功能,待以后继续完善。线程一:温度量采集,通过采集前端部分与ARM系统采用串口通讯连接。线程二:采集数据上传给网络,利用S3C2410通过串口调用采集前端的各种数据,然后通过基于DM9000A的100M以太网接口传送给远程的网络监控系统。线程三:数据串行通信给上位机,利用上位机自带的串口与ARM进行数据的传递。1.温度量输入采集线程开关量输入采集线程的整体流程如图所示。该线程首先利用标准系统函数open()打开各温度测量通道输入设备,再调用标准系统函数read()读取各温度采集通道的值,然后申请对互斥锁net_wr_buf_mutex上锁,来实现将各温度采集通道结果写入net_wr_buf结构体。若此时有其它线程对互斥锁net_wr_buf_mutex已上锁,该线程将阻塞,直到互斥锁net_wr_buf_mutex解锁为止;等到该线程对互斥锁net_wr_buf_mutex上锁后,将各通道的逻辑状态更新到结构体成员net_wr_buf.di[8]中;net_wr_buf.di[0]~net_wr_buf.di[7]分别存储着温度采集输入通道1到通道8的温度值。该线程约每隔1s循环进行一次各输入通道温度值采集。3.4温度输入采集线程流程图2.串口通信线程精品文档精品文档由于串行口为8位异步通信接口,一帧信息为10位:1位起始位(0),8位数据位(低位先)和1位停止位(1),TXDI为发送端,RXDI为接收端。这些都是对UART寄存器的初始化。完成初始化后,图4-7是通讯程序流程图。3.5RS-232串口流程图结论针对温度测量系统的要求,本文开发出了基于ARM+Linux的多通道温度采集系统,该系统可以实时的将不同通道的温度数据采集、保存并通过两种方式上传给上位机。在硬件方面,本文设计了温度检测系统主板和ARM通信板,温度检测板由电源电路、信号放大及调理电路以及AD转换电路与单片机接口电路三部分组成。ARM通信板完成对数据的上传。为了确保高精度测温实现,本设计在硬件调理电路中加入了可靠恒流源,精密电阻校正通道以及公共端校正通道。软件方面设计了AD7715的连续采集程序,数字I/O控制程序和算法处理程序等。软件方面实现了A/D数据采集,温度转换算法,刷新测量结果等实时任务。将通用Linux操作系统成功移植到ARM微处理器上,按照结构化、模块化的方式进行系统软硬件的设计、调试和最终实现,系统具备嵌入式控制,温度数据实时采集处理,在工业测量与控制领域具有较高的上程价值和广阔的应用前景。