资源描述
*******************
实践教学
*******************
兰州理工大学
计算机和通信学院
春季学期
嵌入式系统开发技术课程设计
题 目: 嵌入式压力采集系统设计
专业班级:
姓 名:
学 号:
指导老师:
成 绩:
摘要
以单片机为控制关键,采取压力传感器和高精度A/D转换器等器件对外界压力信息进行
采集和转换。将压力进行物理采集并转换为数字量后,再由计算机进行存放、处理、显示和打印过程,对应系统称为数据采集系统。软件设计方面则采取功效模块化设计思想;键盘模数转换等采取中止方法来实现,从而大大提升了单片机效率和实时处理能力。本文设计了一个压力传感器采集控制系统,介绍了该系统基础原理,系统分析,具体设计及实现步骤图,并关键介绍了串口数据搜集原理,经过嵌入式设备完成室内环境信息采集至网关设备,经过上下位机实现终端嵌入式设备信息搜集及相关设备控制。
关键词:嵌入式,压力,数据采集,精度
目录
一 序言 1
二 基于ARM嵌入式系统设计思想 2
三 基础原理 3
3.1 硬件系统概述 3
3.2 CC2530 结构及实现原理 3
3.3 压力模块 6
四 系统分析 7
4.1系统硬件组成及工作原理 7
4.2程序步骤图 7
4.3 软件子系统设计 8
五 总结 9
六 参考文件 10
七 附录 11
一 序言
传统压力数据采集系统因为存在响应慢、精度低、可靠性差、效率低、操作繁琐等弊端,已经不能完全适应该代化工业高速发展。伴随嵌入式技术迅猛发展,设计高速度、高效率、低成本、高可靠性、操作方便数据采集系统成为当务之急。而现在ARM处理器不仅廉价而且性能较传统51单片机高得多,集成度也大大提升,为单芯片处理方案提供了很方便平台,在很多场所全部能够用一个芯片就包容了你所需要全部资源,根本不用扩展其它资源了。不仅电路简单易行风险减小而且产品价格也能控制在最理想状态。这些优势也正是ARM处理器风靡全球理由所在。
压力和大家生活息息相关,所以,开发一个高精度压力采集检测系统是适应该代发展必不可少。
压力,垂直作用于物体表面上力。界面能够是指流体内部任意划分分离面,也能够流体和固体之间接触面。任意流体元表面全部受到来自外界作用力,称表面力。不少学科常常把压强叫做压力,同时把压力叫做总压力。这时压力不表示力,而是表示垂直作用于物体单位面积上力。在工程上压力和压强叫法有时不严格区分。
压力传感器是是工业实践中最为常见一个传感器,是一个将压力转换成电流、电压器件,可用于测量压力,位移等物理量。其广泛应用于多种工业自控环境,包含水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。通常一般压力传感器输出为模拟信号,模拟信号是指信息参数在给定范围内表现为连续信号。 或在一段连续时间间隔内,其代表信息特征量能够在任意瞬间展现为任意数值信号。而我们通常使用压力传感器关键是利用压电效应制造而成,这么传感器也称为压电传感器。
二 基于ARM嵌入式系统设计思想
有很多客观需求促进了ARM处理器设计改善。首先,便携式嵌入式系统往往需要电池供电。为降低功耗,ARM处理器已被特殊设计成较小核,从而延长了电池使用时间。高代码密度是嵌入式系统又一个关键需求。因为成本问题和物理尺寸限制,嵌入式系统存放器是很有限。所以,高代码密度对于那些只限于在板存放器应用是很有帮助。
另外,嵌入式系统通常全部是价格敏感,所以通常全部使用速度不高、成本较低存放器。ARM内核不是一个纯粹RISC体系结构,这是为了使它能够愈加好适应其关键应用领域--嵌入式系统。在某种意义上,甚至能够认为ARM内核成功,正是因为它没有在RISC概念上沉入太深。现在系统关键并不在于单纯处理器速度,而在于有效系统性能和功效、
三 基础原理
3.1 硬件系统概述
在本系统设计过程中,依据嵌入式系统基础设计思想,系统采取了模块化设计方法;而且依据系统功效要求和技术指标,系统遵照自上而下、由大到小、由粗到细设计思想;根据系统功效层次,在设计中把硬件和软件分成若干功效模块分别设计和调试,然后全部连接起来统调。
3.2 CC2530 结构及实现原理
CC2530是一个兼容IEEE 802.15.4真正片上系统,支持专有802.15.4市场和ZigBee、ZigBee PRO和ZigBeeRF4CE标准。CC2530提供了101dB链路质量,优异接收器灵敏度和健壮抗干扰性,四种供电模式,多个闪存尺寸,和一套广泛外设集——包含2个USART、12位ADC和21个通用GPIO,和更多。除了经过优异RF性能、选择性和业界标准增强8051MCU内核,支持通常低功耗无线通信,CC2530还能够配置TI一个标准兼容或专有网络协议栈(RemoTI, Z-Stack, 或SimpliciTI)来简化开发,使你愈加快取得市场。CC2530能够用于应用包含远程控制、消费型电子、家庭控制、计量和智能能源、楼宇自动化、医疗和更多领域。依据芯片内置内存不一样容量,CC2530拥有三种不一样版本:CC2530-F32/F64/F128/F256,编号后缀分别代表了芯片具32KB,64KB,128KB或256KB闪存。
比起第一代CC2430,CC2530提供了改善RF性能,多达256KB闪存以支持更大应用,强大地址识别和数据包处理引擎, 能够很好匹配RF前端,封装更小,IR一代电路,和支持ZigBee PRO 和ZigBee RF4CE。
图3.1框图显示了 CC2530 器件系列不一样结构模块。可大致分为 3 类模块:CPU和相关存放器模块,外设、时钟和电源管理模块,无线模块。
CC2530 是基于2.4-GHz IEEE802.15.4、ZigBee 和RF4CE 上一个片上系统处理方案。其特点是以极低总材料成本建立较为强大网络节点。CC2530 芯片结合了RF 收发器,增强型8051 CPU,系统内可编程闪存,8-KB RAM 和很多其它模块强大功效。现在CC2530 关键有四种不一样闪存版本:CC2530F32/64/128/256,分别含有32/64/128/256KB 闪存。其含有多个运行模式,使得它能满足超低功耗系统要求。同时CC2530运行模式之间转换时间很短,使其深入降低能源消
下图是CC2530 方框图,图中模块大致能够分为三类:CPU 和内存相关模块;外设、时钟和电源管理相关模块,和无线电相关模块。
图1 CC2530方框图
图 2 CC2530引脚图
利益:
支持Zigbee / Zigbee PRO , Zigbee RF4CE, 6LoWPAN, WirelessHART 及其它全部基于802.15.4标准处理方案;
卓越接收灵巧敏度和可编程输出功率;
在接收、发射和多个低功耗模式下含有极低电流消耗,能确保较长电池使用时间;
一流选择和阻断性能(50-dB ACR)
应用:
智能能源/自动化仪表读取
远程控制
居家及楼宇自动化
消费类电子产品
工业控制及监测
关键特点:
高达256kB闪存和20kB擦除周期,以支持无线更新和大型应用程序
8kB RAM用于更为复杂应用和Zigbee应用
可编程输出功率达+4dBm
掉电模式下,在睡眠定时器运行时,仅有不到1uA电流损耗
CC2530前瞻及应用
CC2530实施了IEEE 802.15.4 标准,所以它是一款通用性极强芯片高级计量和Zigbee智能能源、家庭和适适用于包含消费类电子和RF4CE远程控制、楼宇自动化、照明、工业控制和监控、保健和医疗等在内很多市场。CC2530搭配最新Zigbee PRO协议栈和我们支持,到现在为止成为业界最好市场处理方案概念。
另一个基于IEEE标准被称为RF4CE,最近在国外人气急升,因为拥有非视距操作,全球多家大型消费类电子企业协力推进RF远程控制技术进入一般家庭。更大遥控范围、双向确定通信等功效,所以RF4CE将会根本改变您家庭影院体验。
3.3 压力模块
、
图 3压力模块硬件图
压力传感器模块采取桥上轻触传感器,能检测出0‐1500g正压力。
FSS小型力传感器:FS系列传感器含有精密可靠力传感性能,它封装在小型商品等级包装中,其价格廉价。该传感器特色是采取了已被证实可靠传感技术,即使用专门设计精制压敏电阻硅传感元件。小功率,无放大、无赔偿惠斯顿电桥电路设计可在力范围内。
力传感器依据埋入硅片压电电阻,在其受到任何外力而挠曲时,其电阻会增加原理工作。该传感器经过不锈钢球,将施加力直接集中到硅‐传感元件上,电阻值改变是随施加力大小而成百分比改变。电路电阻改变致使mV输出电平也作对应改变。
传感器封装设计结合了获专利模块结构。采取创新弹性技术工艺和模制工程塑料,使过力大小可达4.5/5.5kg。不锈钢球提供了极佳机械稳定性,它适应于多种应用。FSS传感器在50°C(122°F)时,故障平均周期(MCTF)可靠性测试中可提供2千万次操作。可靠性测试确定了传感器在出故障前,在满量程情况下可能工作次数。多种电气互连接头,可接收预接线连接器,印刷电路板安装和表面安装。独特传感器设计还可提供包含安装架在内多种安装形式选项,和可满足应用时多种具体安装要求。
四 系统分析
4.1系统硬件组成及工作原理
图 4 高精度压力数据采集系统框图
高精度压力数据采集系统框图如上所表示,压力传感器输出模拟信号被放大调理后经模数转换模块转换为数字量,传送给单片机,经过标定,运算及零点赔偿等处理,在液晶显示模块上显示出来,同时可经串行接口传送到上位机,实现良好人机交换,键盘提供人机交换手段。
4.2程序步骤图
图 5 程序步骤图
4.3 软件子系统设计
为了能够进行系统初始化.采取一个汇编文件做肩动代码,用它实现向量表定义、堆栈初始化、系统变量初始化、中止系统初始化、I/O初始化、外同初始化、地址重映射等操作。系统初始化步骤图所表示。
图 6 系统初始化步骤
给智能主板供电(USB外接电源或2节干电池)。将一个无线节点模块插入到带LCD智能主板对应位置。将压力传感器模块插入到智能主板传感及控制扩展口位置。将CC2530仿真器一端经过USB线(A型转B型)连接到PC机,另一端经过10Pin下载线连接到智能主板CC2530 JTAG口(J203)。将智能主板上电源开关拨至开位置。按下仿真器上按钮,仿真器上指示灯为绿色时,表示连接成功。使用IAR7.51打开“…\OURS_CC2530LIB\lib10(HumiTempLight)\ IAR_files”下HumiTempLight.eww文件,下载运行程序。观察LCD上压力强度改变。
五 总结
课程设计是培养学生综合利用所学知识,发觉,提出,分析和处理实际问题,锻炼实践能力关键步骤,是对学生实际工作能力具体训练和考察过程. 伴随网络在大家生活中利用越来越广泛和嵌入式技术在日常生活中地位日益凸显,这对我们这些学习相关网络和计算机专业学生来说既是一个挑战,又是一个难得机会。经过这次嵌入式课程设计让我们初步了解了嵌入式系统设计过程和工作原理,掌握了部分编程能力。对我们网络编程有了很大提升,和此同时,我们还学到了部分专业知识之外东西。
在课程设计过程中,我们了解到课程设计不光光是埋头做设计,也是同学之间相互学习和相互交流经验和知识机会。也是我们大家向老师提出疑问和学以致用机会,这让我们不会成为只知道理论而不会将理论化为实践中去书呆子。我认为课程设计就是一个复习课堂上学到知识机会,也是一个加强学生动手能力设计机会。更是一个让学习得到升华过程。
在该次课程设计早期,我们将任务分配好,每个人各就其职,各尽所能。当然,在一开始我们就碰到了部分问题,处理问题方法是跑到图书馆查看相关书籍,或上网查阅相关信息,或请教老师。最终在大家相互帮组和大家齐心协力下,我们最终完成了该次课程设计。
这次课程设计不仅考察了我们对课堂上所学专业知识了解程度,也锻炼了我们动手能力。提升了我们独立思索文理,处理问题能力。总体上看,我认为这次课程设计是我本身知识丰富了不少,但同时也发觉了自己不足之处。比如在动手方面,和知识融合方面,不能和实践相结合。软件操作不够熟练,不能灵活利用。是我了解要先学好理论知识才能很好地和实践相结合,才能熟练地利用到生活中。
六 参考文件
[1] 谭会生.ARM嵌入式系统原理和应用开发[M].西安:西安电子科技大学出版社,
[2] 何文华,梁竞敏. Linux操作系统试验和实训. 北京:人民邮电出版社,.
[3] 李蔚泽. Fedora Core 3 Linux安装和系统管理. 北京:中国铁道出版社,.
[4] 朱居正,高冰. Red Hat Linux(Fedora Core 3)实用培训教程. 北京:清华大学出版社,
[5] 周立功. 《ARM嵌入式系统基础教程》北京:北京航天航空大学出版社,
[6] 陈丽蓉等.《嵌入式微处理器系统及应用》北京:清华大学出版社;.
[7] 汪明虎. 《ARM嵌入式Linux系统开发丛书》 北京:中国电力出版社;
[8]孟祥莲.《嵌入式系统原理及应用教程》北京:清华大学出版社;.
[9] 马维华.《嵌入式系统原理及应用》北京:北京邮电大学出版社,
[10] 孙媛.《嵌入式系统基础及应用》北京:机械工业出版社,
七 附录
程序代码
压力处理和转换子程序以下:
//存放读取到目前压力值,未转换
Static U16 a-pres-now[8]={8*0}
//存放经精度计算后实际压力值,高8位整数部分,低8位小数部分
static U16 b- pres -now[8]={8*0};
//存放8路转换后压力值,分别为百位,十位,个位,小数位
static U8 pres -convent-all[32]={32*0};
//-------------------------------
//压力处理和转换子程序
//----------------------------------
void pres-change(void)
{
U8 negtive=0x00; //存放数符号,若为正=0;若为负,=0xff
U8 j=0;
U8 *pt= pres-convent-all;
U16 *p1=a- pres-now;
U16 *p3=b- pres-now;
U16 pres=0;
for(j=0;j<8;j++)
{
negative =0x00;
pres=*p1;
//若压力为负值,进行对应处理
if((pres&0xf80) !=0)
{
pres =(~ pres)+1;//转为正原码
negative=0xff; // 同时置符号为0xff
}
//依据精度消除无关数据
switch(a- pres-prec)
{
case 0x1f: //精度为9位,则清除最低3位无效位
{
pres= pres&0xfff8;break;
}
case 0x3f: //精度为10位,则清除最低2位无效位
{
pres= pres&0xfffc;break;
}
case 0x5f: //精度为11位,则清除最低1位无效位
{
pres= pres&0xfffe;break;
}
case 0x7f: //精度为12位
{
break;
}
}
//换算成实际压力,并扩大10倍,去掉小数部分
pres=(U16)((float)(pres)*0.625);
//折算放入b- pres-now 数组中
//高8位放整数部分,低8位放小数部分,最高位放符号位
if(negtive== 0xff) //若为负值
{
*p3=(( pres/10)<<8)|( pres %10)|0x8000;
}
else
{
*p3=(( pres/10)<<8)|( pres %10)&0x7fff;
}
if(negative==0xff) //若为负值
{(*pt++)=0x80;}
else
{
(*pt++)= pres/1000%10+0x30;
}
(*pt++)= pres/100%10+0x30;
(*pt++)= pres/10%10+0x30;
(*pt++)= pres%10+0x30;
p1++;
p3++;
}
//转换完成后清除读回原始压力
p1=a- pres-now;
for(j=8;j>0;j--)
{
*p1++=0x0;
}
展开阅读全文