基于ARM的温度采集系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于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.1 ARM 核心板
本核心板采用 NAND FLASH 芯片 K9F1208 作为存储器,用来存储数据和程序。
一片 K9F1208 的容量为 64M,能够满足系统的需要。
K9F1208 和 S3C2410 接口电路图如图所示。
2.2 K9F1208 和 S3C2410 接口图
在本系统中,ARM 核心板主要起到对前端采集到的温度数据的收发。
核心板的接口电路如下:
2.3 ARM 核心板接口图
2.2.2 信号输入电路
该信号为温度板采集得到的信号,通过 4PIN 的外接端子接入。
由于信号之间有相互干扰,故需要采取隔离措施。
ISO7221 是双通道数字隔离器,该系列器件有一个由 SiO2隔离栅组成的逻辑输入输出缓冲区,隔离电压达 4KV。
若在独立的电源系统中联合应用,它们可以阻止高电压,隔离地平面和阻止噪声流入数据总线或者其它线路,预防干扰或者破坏敏感线路。
隔离后的信号直接与 ARM 相连进行通信。
2.4信号输入电路
2.2.3ARM 与串口和网口连接电路
对于数据的传输,我们采取两种方式分别是:网口方式和串口方式。
对于网口方式,我们选用 RJ45 接口为网卡接口。
10/100base tx RJ45 接口是常用的
以太网接口,支持10M 和 100M 自适应的网络连接速度,10/100base tx RJ45 接口引脚定义如下:
2.5 RJ45接口引脚定义
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 中启动操作系统;擦除 NAND FLASH 分区;设置启动参数等。
这个 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.5 RS-232 串口流程图
结论
针对温度测量系统的要求,本文开发出了基于 ARM+Linux 的多通道温度采集系统,该系统可以实时的将不同通道的温度数据采集、保存并通过两种方式上传给上位机。
在硬件方面,本文设计了温度检测系统主板和 ARM 通信板,温度检测板由电源电路、信号放大及调理电路以及 AD 转换电路与单片机接口电路三部分组成。
ARM 通信板完成对数据的上传。
为了确保高精度测温实现,本设计在硬件调理电路中加入了可靠恒流源,精密电阻校正通道以及公共端校正通道。
软件方面设计了 AD7715 的连续采集程序,数字 I/O 控制程序和算法处理程序等。
软件方面实现了 A/D 数据采集,温度转换算法,刷新测量结果等实时任务。
将通用 Linux 操作系统成功移植到 ARM 微处理器上,按照结构化、模块化的方式进行系统软硬件的设计、调试和最终实现,系统具备嵌入式控制,温度数据实时采集处理,在工业测量与控制领域具有较高的上程价值和广阔的应用前景。