找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于LPC2468的水质监测系统数字采集设计

[复制链接]
admin 发表于 2013-3-23 03:36:14 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 介绍了利用LPC2468处理电导率、温度传感器等所采集的信号,使传感器的测量由手控转变为自动化,且其精度大大提高。提出使用传感器、ADC7656芯片、AD7502芯片等建立基于LPC2468的水质监测系统,利用DM9000芯片实现单片机与计算机之间的通信,同时用μC/OS-II开发采集系统的控制程序。
关键词: LPC2468;AD7656; μC/OS-II;水质监测
    中国是一个严重缺水的国家,目前全国多数城市地下水受到一定程度的点状和面状污染,严重威胁到城市居民的饮水安全和人民群众的健康。水质监测是水资源管理与保护的重要基础,是保护水环境的重要手段,所以对水质监测系统的研究就显得尤为的重要[1]。本文以LPC2468为CPU,利用AD7656进行A/D转换、通过DM9000进行以太网通信,实现的水质监测系统具有体积小巧、测量精度高、反应速度快等优点。
1 系统总体设计方案
 水质监测系统采用ARM单核处理系统,其总体设计方案如图1所示。水温、电导率等8路模拟量经过传感器转换为电压信号,经数据采集模块进行信号滤波调理与A/D转换后,通过SPI总线进入ARM。对ARM扩展了一片铁电存储器和一片RAM进行数据缓存,还扩展了一片DM9000用于实现以太网通信。另外,人机接口模块中的液晶显示模块以及按键控制模块使得系统能够脱离PC机作为独立的便携装置使用。
   
   1.1 CPU模块
 本设计采用NXP公司的一款具有极高集成度的以ARM7TDMI-S为内核的32位微控制器LPC2468,该微控制器支持实时仿真和嵌入式跟踪,处理器时钟高达72 MHz。该芯片片内集成了10/100 M以太网媒体访问控制器、USB2.0全速Device/Host/OTG控制器、UART、CAN-bus等众多资源,同时它还具有98 KB RAM、512 KB FLASH,使其非常适合于通信网关、协议转换器、嵌入式软件调制解调器以及其他各种类型的应用[2]。
1.2 A/D转换模块
 在水质监测装置中,为了达到测量精度,采用了ADI公司16 bit、6通道、高集成度逐次逼近型同步采样ADC。AD7656采用iCMOS工艺,功耗比最接近的同类双极型ADC降低了60%,采样率每通道达250 kb/s,并且在片内包含一个+2.5 V内部基准电压源和缓冲器,因此能很好地满足电能质量装置对高分辨率、多通道、高转换速率和低功耗的要求。AD7656接口电路如图2所示。图中V1~V6为6路经信号调节电路处理的模拟信号,通过低通滤波器滤除高频分量。VDD与VSS为采样保持开关工作的电源,为保证AD7656正常工作,需保证VDD和VSS大于模拟输入电压范围,这里取-12 V~+12 V。AVcc与DVcc是AD7656模拟电压输入端和数字电压输入端。系统提供+5 V给AVcc模拟电压端,然后将DVcc和AVcc连接在一起,AVcc与DVcc通过磁珠隔离,以减少工作过程中DVcc引起的数字噪声对AVcc的影响。由于对实时性要求不高,因此A/D转换器与LPC2468之间采取SPI通信,大大简化了硬件接线。
    20121107051550678602888.gif
    模拟量总共有8路,而AD7656只有6路通道,因此采用一片双4通道多路开关AD7502进行扩展。同时,由于AD7656为双极性输入,且输入电压为-5 V~+5 V,而经调理电路传到AD7656的电压信号为0~10 V,这将导致采样丢失。为了解决这一问题,进行了如图3所示的电压转换设计,把0~10 V电压转换为-5 V~+5 V电压,从而提高了准确度。
    20121107051550709852889.gif
   1.3 其他模块
 (1)看门狗电路以及存储器模块。本系统看门狗采用CAT1161,因其无上电复位功能,所以在复位端应另加RC复位电路。此外,给ARM外扩了一片512 KB的RAM和一片256 KB的铁电存储器FM31256。其中铁电存储器为I2C接口,因其非易失性用来存储一些设定值,FM31256内部具有时钟伴侣功能,可同时为系统提供实时时钟。
 (2)开关量及电源模块。接口电路一律采用光耦隔离,避免外界干扰进入CPU模块。电源模块采用两级供电方式,首先经过一层DC/DC将15 V电压转换成直流5 V、12 V、24 V的电压,然后再经过一层DC/DC,将电压转换成+3.3 V和+2.5 V供器件使用。
 (3)通信模块。用DM9000扩展以太网接口,实现与站控层连接。
 (4)人机交互模块。人机界面采用320×240大屏幕彩色LCD显示器,配有3×2的按键,同时还有6个LED显示灯来反映装置的运行情况。
2 软件设计
 软件部分采用源码公开的嵌入式操作系统μC/OS-II作为软件平台,其具有易移植、可靠、稳定等特点,并可编写文件管理系统和相关的通信协议栈[3]。主要流程包括系统初始化和系统任务编写两大部分,如图4所示。系统初始化包括μC/OS-II操作系统初始化与系统外设初始化。操作系统初始化包括操作系统启动代码、任务函数的定义和初始化、文件系统及相关协议栈的安装;系统外设初始化包括定时器初始化、SPI和串口控制器初始化等。该系统共有4个任务,根据其轻重缓急分配了任务优先级和任务堆栈的大小。安装的协议栈包括USB协议栈和TCP/IP协议栈[4]。
    20121107051550725472890.gif
   2.1 AD7656软件的设计
 进入定时器中断,初始化AD7656,软件延时产生一定频率的CONVST采样信号,用来启动AD7656的数据转换[5],等待BUSY信号。在接收到BUSY信号后读取数据,采样完成,关闭定时器中断。图5为采样流程图。
    20121107051550756722891.gif
   


    A/D转换电路是一个模拟输入模块,μC/OS-II内核把它作为一个独立的任务ADTask()来调用[6]。A/D的初始化、读取等要用到以下几个函数:
 (1)ADInit(),初始化所有的模拟输入通道、硬件ADC以及应用程序调用A/D模块参数,并且ADInit()创建任务ADTask()。
 (2)ADTbl[],使一个模拟输入通道信息、ADC硬件状态等参数配置以及转换结果存储表。
 (3)ADUpdate(),负责读取所有模拟输入通道,访问ADRd(),并给它传递一个通道数。
 (4)ADRd(),负责通过多路复用器选择合适的模拟输入,启动并等待ADC转换,以及返回ADC转换结果到ADUpdata()。
 (5)AD_in(int x,int y),x为模拟量输入起始通道,y为模拟量输入个数。
2.2 数据打包
 系统共转换了8路不同类型模拟量,防止接收数据时混乱,在数据传送时需对数据进行打包。数据的类型、长度等用一个结构体来表示,即
typedef struct
{
unit8 STATE_Type;
//数据类型,0x01表示温度,0x02表示电导率,等
unit8 len;//数据长度
uint16 CRC; //CRC校验码
};
2.3 尺度变换
 由于经过A/D转换后的量为数字信号,而不是所熟悉的工程量,因此要将这些数字量转换为相应的带有量纲的数值,以方便使用。
 尺度变换有软件实现法、硬件实现法、实物定标法和综合实现法四种方法[7]。由于硬件实现法费用高且占用线路板面积,因此不采用。综合考虑价格、实现的难易以及信号转变的精度等因素,选择了软件实现法中的多项式变换公式法。这是一种最简单实用的方法,适用于绝大多数场合。

20121107051550787972892.gif
 本文设计了水质监测数字采集系统,该采集系统以LPC2468为核心,采用高度集成的AD7656转换器,大大简化了系统硬件和软件设计,减小了体积,提高了系统工作的可靠性。此系统具有很高的数据采集精度,由于采用了低功耗的微处理器作为控制芯片,因此整个系统功耗低,电路简单易且实现。
参考文献
[1] 董甲彬,王金鑫,李玲,等.GPRS技术在水库水质监测系统中的应用研究[J].信息与技术,2007(7):122-125.
[2] 周立功.ARM嵌入式系统软件开发实例[M].北京:北京航空航天大学出版社,2004.
[3] LABROSSE J J. MicroC/OS-II the real-time Kernel Second Edition[M].北京:北京航空航天大学出版社,2007.
[4] 任哲.嵌入式实时操作系统μC/OS-II原理及应用[M].北京:北京航空航天大学出版社,2009.
[5] 崔艳林,赵焕军.基于AD7656和ADSP21369的多路信号采集系统[J].电子技术应用,2008(12):54-56.
[6] 夏靖波,王航,陈雅蓉.嵌入式系统原理与开发[M].西安:西安电子科大出版社,2006.
[7] 仆玉明.智能仪表测量信号的尺度变换及实现[J].自动化仪表,2000(2):47-48.
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-24 03:14 , Processed in 0.056128 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表