智能仪器设计.docx
《智能仪器设计.docx》由会员分享,可在线阅读,更多相关《智能仪器设计.docx(27页珍藏版)》请在冰豆网上搜索。
智能仪器设计
前言
随着社会的进步和发展和人们生活水平的不断提高,智能化已经成为我们生活的一部分。
它是现代仪器仪表的发展趋势,许多嵌入式系统,电子技术和现场总线领域的新技术被应用于智能仪器仪表的设计,尤其是许多嵌入式系统的许多新理念极大的促进了智能仪器仪表技术的发展,近年来,智能仪器已开始从较为成熟的数据处理向知识处理发展。
使智能仪器的功能向更高的层次发展。
同时,人工智能的创始者之一,诺贝尔金奖者认为,人工智能的研究可以视为计算机科学技术的分支。
本次设计的总体设计方案共分为4个部分:
(1)电子秤的设计方案
(2)设计思路(3)部分电路设计(4)软件组成,这4个部分涵盖了本次设计的全部过程。
本系统采用单片机AT89S52为控制核心,实现电子秤的基本控制功能。
系统的硬件部分包括最小系统板,数据采集、人机交互界面三大部分。
最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号的前级处理和A/D转换部分组成。
人机界面部分为键盘输入和128
64点阵式液晶显示,可以直观的显示中文,使用方便。
设计过程中还有许多不足之处,望老师给予批评指正。
第一章几种软件的介绍
1.1MATLAB概述
应用MATLAB的Simulink仿真实验方法可以建立仿真的实验环境。
直接应用MATLAB工具箱中的测量仪器或构建满足工作需要的测量仪器,既能提高仿真实验工作的效率,又使仿真实验丰富多彩。
本章介绍应用Simulink构建和使用测量仪器的方法。
1.2电压测量
1.2.1正弦波示波器
用计算机仿真的示波器应用的是数字技术,可以观测单次现象,正确设置参数后,可以保持结束时的波形。
如图1-1所示
图1-1正弦波仿真框图
正弦波的示波显示如图1-2所示
图1-2正弦波示波显示
1.2.2数字式电压表
数字式电压表取自LED(自发光)二极管模块如图1-3所示
图1-3数字式电压表仿真框图
1.2.3指针式电压表
指针式仪表将输入的量值用图形化的指针与相应的刻度表示出来,并通过参数设置对话框来设置仪表的外观、量程、刻度、颜色及字型等。
如图1-4所示
图1-4指针式电压表
1.2.4多踪示波器(Scope)的仿真
示波器显示七踪信号的仿真。
如下图所示:
图1-5多踪示波器仿真框图
图1-6多踪示波器仿真显示图
1.3proteus概述
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
其功能特点
Proteus软件具有其它EDA工具软件(例:
mulTIsim)的功能。
这些功能是:
(1)原理布图
(2)PCB自动或人工布线
(3)SPICE电路仿真
革命性的特点:
(1)互动的电路仿真
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
(2)仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
具有4大功能模块:
(1)智能原理图设计(ISIS)
丰富的器件库:
超过27000种元器件,可方便地创建新元件;
智能的器件搜索:
通过模糊搜索可以快速定位所需要的器件;
智能化的连线功能:
自动连线功能使连接导线简单快捷,大大缩短绘图时间;
支持总线结构:
使用总线器件和总线布线使电路设计简明清晰;
可输出高质量图纸:
通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、PowerPOINT等多种文档使用。
(2)完善的电路仿真功能(Prospice)
※ProSPICE混合仿真:
基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;
※超过27000个仿真器件:
可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件;
※多样的激励源:
包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入;
※丰富的虚拟仪器:
13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等;
※生动的仿真显示:
用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动;
※高级图形仿真功能(ASF):
基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析;
(3)独特的单片机协同仿真功能(VSM)
※支持主流的CPU类型:
如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;
※支持通用外设模型:
如字符LCD模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信;
※实时仿真:
支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、*/E*仿真;
※编译及调试:
支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源码级仿真和调试;
(4)实用的PCB设计平台
※原理图到PCB的快速通道:
原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计;
※先进的自动布局/布线功能:
支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理;
※完整的PCB设计功能:
最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D可视化预览;
※多种输出格式的支持:
可以输出多种格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和PCB板的设计和加工。
Proteus提供了丰富的资源:
(1)Proteus可提供的仿真元器件资源:
仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
(2)Proteus可提供的仿真仪表资源:
示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
理论上同一种仪器可以在一个电路中随意的调用。
(3)除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。
这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。
这些都尽可能减少了仪器对测量结果的影响。
(4)Proteus可提供的调试手段Proteus提供了比较丰富的测试信号用于电路的测试。
这些测试信号包括模拟信号和数字信号。
电路功能仿真:
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
PROTEUS是单片机课堂教学的先进助手:
PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计、毕业设计是学生走向就业的重要实践环节。
由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台
随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。
它具有设计灵活,结果、过程的统一的特点。
可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。
相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。
使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用Proteus开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。
实践证明,在使用Proteus进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。
因此,Proteus有较高的推广利用价值。
PROTEUS设计单灯闪烁电路图
电路原理图如图1-7所示
图1-7单灯闪烁的单片机系统仿真设计图
1.4Keil介绍
Keil是德国知名软件公司Keil(现已并入ARM公司)开发的微控制器软件开发平台,是目前ARM内核单片机开发的主流工具。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(uVision)将这些功能组合在一起。
uVision当前最高版本是uVision3,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。
因此很多开发ARM应用的工程师,都对它十分喜欢。
使用Keil来开发嵌入式软件,开发周期和其他的平台软件开发周期是差不多的,大致有以下几个步骤:
1.创建一个工程,选择一块目标芯片,并且做一些必要的工程配置。
2.编写C或者汇编源文件。
3.编译应用程序。
4.修改源程序中的错误。
5.联机调试。
uVision3是一款集编辑,编译和项目管理于一身的基于窗口的软件开发环境。
uVision3集成了C语言编译器,宏编译,链接/定位,以及HEX文件产生器。
uVision3具有如下特性:
功能齐全的源代码编辑器,用于配置开发工具的设备库,用于创建工程和维护工程的项目管理器,
所有的工具配置都采用对话框进行,集成了源码级的仿真调试器,包括高速CPU和外设模拟器,
用于往FlashROM下载应用程序的Flash编程工具,完备的开发工具帮助文档,设备数据表和用户使用向导。
uVision3具有良好的界面风格,下图是一个典型的调试时的窗口如图1-8所示
图1-8典型的调试时的窗口
第二章设计方案
1.设计要求
设计一个实用电子称电路。
要求用仿真软件对电路进行验证,使其满足:
能用简易键盘设置单价,对采集到的代表重量的信号能同时显示重量、金额和单价;重量显示的单位为公斤,最大称重为9.999公斤;单价和总价的单位为元,最大金额数值为9999.99元;具有去皮功能和总额累加计算功能。
自拟10种商品名称,能显示购物清单,清单内容包括:
商品名称,数量,单价,金额,本次购物总金额、购货日期、收银员编号和售货单位名称,具有中文显示功能。
2.方案设计
2.1设计思路
根据设计要求,首先要实现电子秤的称重基本功能,需要通过重量传感器采集到的重量信号,经处理后由模数转换转换成数字量,因此每一数字量就对应着一个物体的重量(在一定精度范围内),所以只要将转换的数字量与物体重量建立映射的关系即可完成称重的要求。
而其他功能这可通过程序运算来实现。
总体结构框图如下:
2.2设计方案
2.2.1.控制器部分
本系统基于51系列单片机来实现,因为系统需要大量的控制液晶显示和键盘。
不宜采用大规模可编程逻辑器件:
如CPLD、FPGA来实现。
(因为大规模可编程逻辑器件一般是使用状态机方式来实现,即所解决的问题都是规则的有限状态转换问题。
本系统状态较多,难度较大。
)另外系统没有其它高标准的要求,我们最终选择了AT89S52通用的比较普通单片机来实现系统设计,其内部带有8KB的程序存储器,可以满足系统设计需求。
2.2.2数据采集部分
1)传感器
题目要求称重范围9.999Kg,考虑到秤台自重、振动和冲击分量,还要避免超重损坏传感器,所以传感器量程必须大于额定称重—9.999Kg。
我们选择的是L-PSIII型传感器,量程20Kg,精度为
,满量程时误差
0.002Kg。
可以满足本系统的精度要求。
其原理如下图2-1所示:
图2-1传感器
称重传感器主要由弹性体、电阻应变片电缆线等组成,内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式给出:
2)前级放大器部分
压力传感器输出的电压信号为毫伏级,所以对运算放大器要求很高。
通过综合考虑我们采用专用仪表放大器芯片,如:
INA126,INA121等。
此类芯片内部采用差动输入,共模抑制比高、差模输入阻抗大、增益高、线性度好,并且外部接口电路简单。
以INA126为例,引脚电路如下图所示:
放大器增益
,通过改变
的大小来改变放大器的增益。
2.2.3A/D转换器
由上面对传感器量程和精度的分析可知:
A/D转换器误差应在
以下。
12位A/D精度:
10Kg/4096=2.44g
14位A/D精度:
10Kg/16384=0.61g
考虑到其他部分所带来的干扰,12位A/D无法满足系统精度要求。
所以我们需要选择14位或者精度更高的A/D。
方案一、逐次逼近型A/D转换器,如:
ADS7805、ADS7804等。
逐次逼近型A/D转换,一般具有采样/保持功能。
采样频率高,功耗比较低,是理想的高速、高精度、省电型A/D转换器件。
高精度逐次逼近型A/D转换器一般都带有内部基准源和内部时钟,基于89C52构成的系统设计时仅需要外接几个电阻、电容。
但考虑到所转换的信号为一慢变信号,逐次逼近型A/D转换器的快速的优点不能很好的发挥,且根据系统的要求,14位AD足以满足精度要求,太高的精度就反而浪费了系统资源。
所以此方案并不是理想的选择。
方案二、双积分型A/D转换器:
如:
ICL7135、ICL7109等。
双积分型A/D转换器精度高,但速度较慢(如:
ICL7135),具有精确的差分输入,输入阻抗高(大于
),可自动调零,超量程信号,全部输出于TTL电平兼容。
双积分型A/D转换器具有很强的抗干扰能力。
对正负对称的工频干扰信号积分为零,所以对50HZ的工频干扰抑制能力较强,对高于工频干扰(例如噪声电压)有良好的滤波作用。
只要干扰电压的平均值为零,对输出就不产生影响。
尤其对本系统,缓慢变化的压力信号,很容易受到工频信号的影响。
故而采用双积分型A/D转换器可大大降低对滤波电路的要求。
积分型A/D转换器可大大降低对滤波电路的要求。
作为电子秤,系统对AD的转换速度要求并不高,精度上14位的AD足以满足要求。
另外双积分型A/D转换器较强的抗干扰能力,和精确的差分输入,低廉的价格。
综合的分析其优点和缺点,我们最终选择了ICL7135。
2.3人机交互部分
2.3.1键盘输入
键盘输入是人机交互界面中最重要的组成部分,它是系统接受用户指令的直接途径。
我们通过综合考虑采用了专用的键盘管理芯片74C922。
在电子计价秤中,带有16个按键矩阵组设置,其中0—9数字键用于输入单价及商品代码,DEL用于单价清空,累计键用于费用累计,去皮键用于重量去皮,还设置有一个转换键和退出键。
鉴于此,我们采用专用键盘管理芯片74C922。
74C922为CMOS工艺技术制造,工作电压为3—15V,“二键锁定”功能,编码输出为三芯输出,可直接与微处理器数据线相连,内部振荡器完成4×4矩形键盘扫描,有按键时,DA变高,通过非门接到AT89C51的INT1口,并且设INT1为边沿触发方式,当DA变高时,经过非门变为低电平跳变产生INT1外部中断,使AT89S52从数据总线读按键值,判断键值从而完成相应的程序功能。
根据接线图及74C922芯片真值表,我们可以将数字键0—9、键DEL、转换键、退出键、累加键和去皮键与ABCD输出(0000—1111)建立一一对应的关系,接线图见下图。
2.3.2显示输出
由于设计题目要求中文显示,而数码管无法满足,只能考虑用带有中文字库的液晶显示器。
由于可以分页显示,无需太大屏幕,我们选择了点阵式128×64型LCD。
第三章电路的设计
1.部分电路设计
3.1前端信号处理
INA126构成的放大器及滤波电路:
通过调节
的阻值来改变放大倍数。
微弱信号Vi1和Vi2被分别放大后从INA126的第6脚输出。
A/D转换器ICL7135的输入电压变化范围是-2V~+2V,传感器的输出电压信号在0~20mv左右,因此放大器的放大倍数在200~300左右,可将
接成
的滑动变阻器。
由于ICL7135对高频干扰不敏感,所以滤波电路主要针对工频及其低次谐波引入的干扰。
因为压力信号变化十分缓慢,所以滤波电路可以把频率做得很低。
3.2模数转换电路
基于ICL7135的A/D转换器实现电路:
由于ICL7135内部没有振荡器,所以需要外接。
ICL7135的时钟频率典型值为200kHz最高允许为1200kHz,时钟频率越高,转换速度越快。
每输出一位BCD码的时间为200个时钟周期,选通脉冲位于数据脉冲的中部,如果时钟频率太高,则数据的接受程序还没有接受完毕,数据就已经消失了。
考虑到此系统频率要求不是太高,且单片机的工作频率也不是很高,因此我们取时钟频率的典型值:
200kHz。
此外ICL7135外部还需要外接积分电阻、积分电容,由于A/D转换器精度与外接的积分电阻、积分电容的精度无关,因而可以降低对元件质量的要求。
ICL7135还需要外接基准电源,这是因为芯片内部的基准源一般容易受到温度的影响,而基准电源的变化会直接影响转换精度。
所以当精度要求较高时,应采用外接基准源。
一般接其典型值1V。
第四章软件组成
4.1程序流程
如下图4-1程序流程图所示:
图4-1程序流程
4.2键盘服务程序
键盘段程序采用中断方式,单有键按下时,引入一个外部中断,单片机响应中断后立即查询所按键值,并对应存入相应的全局变量中。
中断返回后,通过在主程序中不断判断个功能标志位的值来实现在各个功能间的切换;数字键则用来输入单价和选择商品名称。
4.3模数转换程序
模数转换子程序主要功能是实现对转换结果的处理,包括转换的启动、等待转换完成并读入转换结果,以及对转换结果的换算,使之与所要达到的要求建立一一对应的关系。
4.4使用操作说明
本系统采用16键键盘来实现,分为10个数字键0-9及6个控制键。
数字键:
用于输入单价和选择所存商品;
累加键:
相当于确认,可以将当前信息保存至购物清单;并且将金额累加,得到所购买商品的总金额。
去皮键:
用于去除皮重;
清除键:
用于输入单价错误的时,重新输入;
退出键:
用于退出当前模式,回到普通模式;
模式转换键:
按下后可直接输入商品代码,并可以显示购物清单。
另外,已存入的10种商品的单价均可重新设置,直接输入其单价即可,方便实用。
如果所称重物超过了系统最大量程10Kg,则蜂明器发出报警声音。
4.5调试与检测
通过分块调试和整体调试相结合,发现不足并逐步调整,最后各部分工作正常。
所设计的电子秤仿真系统能基本的满足设计要求,能较好的实现普通称重、累加计费、去皮以及输入商品并显示购物清单的功能。
以下为部分功能下的LCD显示:
设计小结
本仿真设计虽能基本上满足设计要求,但很大程度上仍需较大的改进。
首先,数模转换只能作为演示程序以实现功能之用,而要使精度达到要求,至少要使用14位或以上的AD;
其次,程序比较冗杂,仍需优化。
再次,通过此次设计,深感一个团队的重要性。
由于组队仓促,再加上相互间了解不多,以至同组队员中途放弃。
个人之力总有局限,难以完成所有要求。
附录1
附录1仿真电路图
附录2部分源程序
1.LCD显示程序:
voidpulse()
{
e=1;e=0;
}
voidbusy_check(charright)
{
P0=0xff;
if(right==1)
{
P2=0x13;//P2=0x13;
while(!
busy);
}
if(right==0)
{
P2=0x0b;//0b
while(!
busy);
}
}
voidcmd_w(charcmd,charright)
{
busy_check(right);
if(right==1)
P2=0x10;
if(right==0)
{
P2=0x08;
P2=0x08;
}
P0=cmd;
pulse();
}
voiddata_w(chardat,charright)
{
busy_check(right);
if(right==1)
P2=0x14;//0x14
if(right==0)
P2=0x0c;//0c
P0=dat;
pulse();
}
voidlcd_init()
{
uinti;
cmd_w(0x3e+1,0);//显示开关
cmd_w(0xc0+0,0);//修改显示起始行
cmd_w(0xb8+0,0);//修改页地址
cmd_w(0x40+0,0);//修改列地址
cmd_w(0x3e+1,1);
cmd_w(0xc0+0,1);
cmd_w(0xb8+0,1);
cmd_w(0x40+0,1);
for(i=0;i<256;i++)
data_w(0x00,0);
cmd_w(0xb8+4,0);
cmd_w(0x40+8,0);