基于单片机系统的多路数据采集控制器的设计.docx
《基于单片机系统的多路数据采集控制器的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机系统的多路数据采集控制器的设计.docx(36页珍藏版)》请在冰点文库上搜索。
![基于单片机系统的多路数据采集控制器的设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/11/5a77a7f4-e8bb-4e7e-8fa2-a4a449f45980/5a77a7f4-e8bb-4e7e-8fa2-a4a449f459801.gif)
基于单片机系统的多路数据采集控制器的设计
摘要
本文就基于单片机系统的多路数据采集控制器的设计进行阐述,数据采集系统是模拟域和数字域之间必不可少的纽带。
本文详细论述了数据采集系统的工作原理,及各种元器件和设计方案的选择。
通过对数据采集的工作原理的分析和方案的比对,选择合理的方案,来达到各个功能模块的实现。
设计了一种采用51单片机为核心来实现多路数据采集控制器的方案。
该方案将8路被测电压通过ADC0809模数转换来实现对采集到的数据进行模拟量到数字量的转换,然后由单片机对数据进行处理,最后对处理完的数据进行多种形式的显示。
一种是把数据直接在数码管上显示,另一种是把数据通过DAC0832进行转换后通过示波器进行显示,以及通过8盏LED小灯来显示控制功能。
最后,本文描述了在多通道数据采集控制器硬件实现后,整体性能的调试过程,并希望对本方案能有更好的改进。
由于时间的限制及其本人的水平有限,设计中难免出现不妥或错误,恳请各位老师给予批评指教。
关键字:
数据采集;D/A转换;A/D转换;AT89C51;LED
Abstract
Inthispaper,basedonthesinglechipmicrocomputersystemformulti-channeldataacquisitioncontrollerdesignof,dataacquisitionsystemistheanalogdomainanddigitaldomainbetweenessentiallink.Thispaperdiscussesindetailtheworkingprincipleofdataacquisitionsystemandavarietyofcomponentsandtheselectionofdesignscheme.Basedonthedataacquisitionprincipleofworkanalysisandschemecomparison,reasonableselectionofscheme,toachievetherealizationofvariousfunctionalmodules.
Designofa51singlechipmicrocomputerasthecoretoachievemulti-channeldataacquisitioncontrollerscheme.Theprogramwillbe8thevoltagetobemeasuredthroughtheADC0809conversiontoachievethedatawascollectedandanalogtodigitalconversion,thenbythesingle-chipmicrocomputerfordataprocessing,theprocesseddatatocarryoutvariousformsofdisplay,attheendoftheprocesseddatatocarryoutvariousformsofdisplay.Oneistoputthedatadirectlyinthedigitaltubedisplay,anotheristousethedatathroughDAC0832convertedthroughtheoscilloscopedisplay,andby8LEDlightstodisplaycontrolfunction.
Finally,thispaperdescribesthemultichanneldataacquisitioncontrollerhardwareimplementation,theoverallperformanceofthedebuggingprocess,andtheyhopetothisschemecanhavebetterimprovement.
Duetotimeconstraintsanditsownlevelislimited,inthedesignistheemergenceofinappropriateorwrong,pleaseteachertogivethecriticism.
Keyword:
dataacquisition;A/Dconvert;MCS-AT89C51;D/Aconvert;LED
第一章绪论
1.1选题意义和论文任务
数据采集系统是计算机与外部世界联系的桥梁,是获取信息的重要途径。
数据采集技术是信息科学的重要组成部分,已广泛应用于国民经济和国防建设的各个领域,并且随着科学技术的发展,尤其是计算机技术的发展与普及,数据采集技术将有广阔的发展前景[1]。
前端数据采集能够及时获取被控对象和生产过程的有效信息,在某些实时性要求高的场合尤为重要。
工业生产过程中,为了清晰地反映出生产过程的详细信息,往往需要获得多个参量的动态数据,这就有必要对被控对象和生产过程进行多路数据采集。
由于外界输入的信号都是模拟信号,而计算机只能处理数字信号。
所以外界信号需要经过数据采集器,才能被计算机处理。
而且,由于外界的信号往往不止一路,所以多路数据采集器的设计就显得十分的必要。
1.2国内外研究现状及发展趋势
近年来,数据采集及应用受到了人们越来越多广泛的关注,数据采集系统也有了迅速的发展,它可以广泛应用于各种领域。
20世纪90年代至今,在国际上技术先进的国家,数据采集系统已成功的运用到军事、航空电子设备及宇航技术、工业等领域。
由于集成电路制造技术的不断提高,出现了高性能、高可靠的单片机数据采集系统(DAS)。
数据采集技术已经成为一种专门的技术,在工业领域得到了广泛的应用。
该阶段的数据采集系统采用模块式结构,根据不同的应用要求,通过简单的增加和更改模块,并结合系统编程,就可扩展或修改系统,迅速组成一个新的系统[2]。
目前国外数据采集技术已经有很大的发展,从近年来国外公司展示的新产品中可以看出,主要的发展可以概括为体积小、功能多样和使用方便等三方面。
例如可以利用传感器或过程传感器或电量传感器等输入多种物理量,如振动加速度、位移、相位、转速、温度、压力、流量、电压、电流和功率等,形成多参数监测系统。
在国内一些仪器厂已研制出了多种数据采集器,其中单通道的有SP201、SC247型,双通道的有EG3300、YE5938型,超小型的有911、902和921型。
但目前国内数据采集器与国外数据采集器相比,在技术上仍然存在着一定的差距,例如:
分析频率范围不宽,数据采集器内存不大,现场精密诊断功能较弱等。
1.3论文结构
第一章详细论述了近些年来,数据采集器领域的动态及整个数据采集行业的发展状况,同时分析了所面临的问题与解决方案,从而提出了本论文的研究任务。
第二章从研究任务着手,选择符合设计要求的常用芯片及其它元器件,详细论述了各接口电路的设计与连接,以模块化的形式进行论述,整个数据采集控制器硬件的设计从小到大,从局部到整体,循序渐进,最终实现一个功能齐全的数据采集控制器。
第三章根据系统设计要求,着手对数据采集控制器进行软件编程,将各功能模块有机结合,实现各个功能。
第四章按照设计思路,在调试过程中,同样以组件化方式进行调试,从模拟到数字,检查并改正电路中的错误,将调试过程作重点的记录。
第五章对全文的总结,对本系统硬件制作过程中需要注意的方面,及整个硬件制作中所吸取的经验教训进行论述,同时,也对整个研究应用进行展望。
第二章硬件电路设计
在硬件的设计前期,根据框图对系统中可能出现的电路,进行了模拟实验,并根据实验结果对后期的硬件设计进行了合理化的修改完善。
把多路数据采集系统硬件设计部分采用模块化的设计思想,将整个系统分成几大模块:
单片机控制模块、模拟量采集接口模块、开关量采集接口模块、LCD显示模块和电源模块。
通过模块化的方法先焊接和调试各个单元模块,最后进行组装和测试,从而使复杂的问题简单化,提高了系统设计的效率。
2.1数据采集控制器硬件整体分析及数据采集控制器的方案
在实际生产生活中的得到的电压是模拟量,但单片机需要的是数字量,所以我们需要用A/D转换器将模拟量转换成数字量,然后送到单片机进行处理。
单片机接口还会接入键盘,根据不同的场合实习不同的功能。
单片机处理完数据后,一般会用LED管进行显示;有时也会使用D/A转换器把输出信号转换成模拟量送入示波器以完成其他的用途。
在数据采集系统中有时会添加报警系统,例如在采集压力时,若所采集压力值大于设定的值时,系统会启动报警功能。
本文的数据采集控制器硬件系统的实现原理如下:
1.由ADC0809将0-5V模拟信号转换为00H-FFH的数字信号并传送给51单片机。
2.由51单片机进行数据存储及数据处理。
3.在数码管上进行显示。
4.对单片机的数据通过DAC0832进行数模转换最后在示波器上进行显示。
5.用8盏LED灯来实现顺序控制。
2.2系统主要芯片及元器件选型
在确定了数据采集控制器的实现原理及流程后,需要根据设计要求选择合适的器件,这是硬件电路设计的重中之重。
元器件选择除了符合设计要求的参数指标外,还要考虑性能、成本等其它方面的因素。
2.2.1单片机控制模块
嵌入式系统中的微控制器中主要成员之一是单片机SCM(SingleChipMicrocomputer),单片机控制模块是整个系统的核心。
通用单片机主要有8位、16位或32位[1]。
我采用的是AT89C51单片机来做这个系统的微控制器。
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
图2-1为AT89C51管脚图。
图2-1AT89C51管脚图
其主要特点如下[2]:
1.工作电压:
5.5V-3.3V
2.用户应用程序空间4KB
3.片内256字节数据存储器RAM/SFR
4.共2个16位定时器/计数器
5.具有5个中断源、两个中断优先级的中断控制系统
6.一个全双工UART(通用异步接收发送器)的串行口
7.节电工作法式,即休闲方式及掉电方式。
2.2.2A/D转换器
在由微型计算机或单片机组成的生产过程控制系统和数据采集系统中,可编程模数转换器的功能是把从生产现场各种物理量传感器、变送器传送过来的连续变化的模拟电量转换成离散的数字量,然后再提供给计算机系统进行分析、处理和控制。
A/D转换芯片按转换原理分类,有逐次逼近型、双积分型、并行型等[1]。
我主要采用了ADC0809,ADC0809是八通道的八位逐次逼近式A/D转换器。
由单一的5V电源供电,片内带有锁存功能的8选1的模拟开关,能够对0~+5V的8路输入模拟电压进行分时转换的通用型可编程模数转换器。
由C、B、A的编码来决定所选的模拟通道。
转换时间为100us,转换误差为1/2LSB。
在这个系统里ADC0809将采集到的0-5V模拟信号转换为00H-FFH数字信号,这样就可以传送给AT89C51进行处理。
2.2.3D/A转换器
D/A转换器的作用是将数字量转换为相应的模拟量。
我主要采用了DAC0832,DAC0832芯片是市面上常见的八位D/A转换器,价格便宜,也是大家熟悉的常用芯片。
它是一个8位的D/A转换芯片,内部包含一个T形电阻网络,输出为差动电流信号。
DAC0832的内部有两级锁存器,根据这两个锁存器使用方法的不同,有三种工作方式,即单缓冲工作方式,双缓冲工作方式,直通工作方式。
DAC0832在单缓冲方式下可以直接与系统总线相连,亦可以将它看作一个输出端口。
每向该端口送一个8位数据,其输出端就会有相应的输出电压。
可以通过编写程序,利用D/A转换器生产各种不同的输出波形,如锯齿波、三角波、方波、正弦波等。
在这个系统里DAC0832将AT89C51的数字信号00H-FFH经过数模转换利用查表等程序,在示波器上输出不同的波形。
2.2.4按键
按键是人机对话的输入通道,嵌入式产品开发应用过程用到的主要设计方法,①独立式按键;②矩阵式按键;③简易单片机构成编码键盘;④用专用芯片;⑤用PC机键盘[3]。
整个电路里我一共用了4按键。
第一个按键是以一定的步进值来调节频率。
第三个按键是切换波形,分别可以切换正弦波、三角波和方波。
第三个键则表示开启顺序控制,体现在LED灯的亮与暗上。
第四个按键是复位键。
2.2.5显示模块
显示主要有三大块,第一块就是数码管,我用八个数码管来显示第X路的电压值,例如:
013.3就是表示第一路电压值为3.3V;第二块就是示波器,用示波器来显示波形,频率;第三块就是8个LED灯,用它来显示顺序控制。
2.2.6蜂鸣器
用一个驱动电路外接一个蜂鸣器,编写程序用来控制电压的上下限,即当某一路电压值超过上限或低于下限时,会发出报警声。
2.3硬件电路设计
硬件系统整体设计框图如图2-2。
图2-2系统框图
2.3.1A/D转换设计
ADC0809具有8路模拟输入端口,地址线A、B、C用来决定对哪一路模拟输入作A/D转换;ALE为地址锁存控制,当输入为高电平时,对地址信号进行锁存;START为测试控制,当输入一个2us宽高电平脉冲时就开始A/D转换;EOC为A/D转换结束标志,当A/D转换结束时,EOC脚输出高电平并送入单片机RD非引脚;OE为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出;具体如图2-3所示。
图2-3ADC0809的连接
2.3.2单片机设计
单片机通过总线,将P0、P1口与D锁存器的数据口、138译码器及外部扩展RAM连接,并将P0口连接到键盘、显示接口芯片8279上。
单片机时钟电路由12MHz晶振提供,连接到XTAL1。
连接电路如图2-4。
图2-4单片机及扩展RAM
单片机正常工作还需时钟电路、复位电路、串口通讯等辅助电路。
单片机的定时控制功能是用片内的时钟电路和定时电路来完成的,而片内的时钟产生有两种方式:
内部时钟方式和外部时钟方式。
采用内部时钟方式时,片内高增益反向放大器通过XTAL1外接作为反馈元件的晶体(呈感性)与电容组成的并联谐振回路构成一个自激振荡器向内部时钟电路提供震荡时钟,如图2-5所示。
振荡器的频率主要取决于晶体的振荡频率,一般晶体可在1.2-12MHz之间任选。
电容的值有微调作用,通常取30pF左右。
在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
图2-5AT89C51管脚图
为确保单片机系统中电路稳定可靠工作,复位电路是必不可少的一部分。
一般单片机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。
由于微机电路是时序数字电路,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,单片机电路开始正常工作。
手动按钮复位需要人为在复位输入端RST上加入高电平。
一般采用的办法是在RST端和正电源Vcc之间接一个按钮,如图2-6所示。
当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。
VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。
工作期间,按下按键,C放电。
按键松手,C又充电,在10K电阻上出现电压,使得单片机复位。
几个毫秒后,单片机进入工作状态。
由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
图2-6AT89C51管脚图
2.3.3D/A转换设计
D/A0832输出端输出的是电流,所以我在输出端接两个放大器相接,先把电流变为电压,再把电压反相,最后把反相的电压送示波器。
具体如图2-7所示。
图2-7DAC0832的连接图
2.3.4键盘接口设计
1.键盘按键数
键盘是人机对话通道的输入部分核心,因此,键盘接口的设计是至关重要的。
在这个设计中,我总共需要三个按键,复位键,步进键,波形选择键。
复位键故名思意是复位用的,步进键就是以50HZ为步进值依次递增知道最大500HZ,当达到最大时又回到最小50HZ,波形选择键就是选择波形的,可以在正弦波、方波、三角波之间切换。
如图2-8所示。
图2-8键盘接口
2.按键连接方式
按键的设计有很多种,我主要运用了最简单的一种,直接接上拉电阻,通过中断的形式进行按键,在中断前通过延时进行去抖。
2.3.5显示模块设计
显示模块用到了数码管(LED),但是由于设计的数码管有八个,如果每个引脚直接接到C51上的话,不但引脚不够而且会给焊接带来很大的难度。
经过查阅大量得资料,最后采用MAX7219。
MAX7219是美国MAXIM(美信)公司生产的串行输入/输出共阴极显示驱动器。
它采用了3线串行接口,传送速率达10M数据,能驱动8位七段数字型LED或条形显示器或64只独立的LED。
MAX7219内置BCD码译码器、多路扫描电路、段和数字驱动器和存储每一位的8*8静态RAM。
能方便的用模拟或数字方法控制段电流的大小,改变显示器的数量;能进入低功耗的关断模式(仅消耗150uA电流,数据保留);能方便地进行级联。
可广泛用于条形图显示、七段显示、工业控制、仪器仪表面板等领域。
而且其最重要的一点是,每个显示位都能个别寻址和刷新,而不需要重写其他的显示位,这使得软件编程十分简单且灵活。
1.引脚说明
MAX7219的引脚排列如图2-9所示,各引脚功能叙述如下:
(1)脚:
DIN,串行数据输入。
在CLK的上升沿到来时,数据被移入到内部的16位移位寄存器中。
(2)、(3)、(5)~(8)、(10)、(11)脚:
DIG0—DIG7,输入。
8位数字位位选线,从共阴极显示器吸收电流。
(4)、(9)脚:
GND,地。
两个引脚必须连接在一起。
(12)脚:
LOAD,数据装载输入端。
在LOAD上升沿,移位寄存器接受的数据被锁存。
(13)脚:
CLK,时钟输入端,最高时钟频率10MHz。
在CLK的上升沿,数据被移入到内部的16位移位寄存器中。
在CLK的下降沿,数据从DOUT脚输出。
(14)~(15)、(20)~(23)脚:
输出。
七段驱动器和小数点驱动器。
它供给显示器电流。
(18)脚:
ISET,电流调节端。
通过一个电阻和VCC相连,来调节最大段电流。
(19)脚:
VCC。
电源输入端。
(24)脚:
DOUT。
串行数据输出。
输入到DIN的数据在16.5各时钟周期后,在DOUT端有效。
该脚常用于几个MAX7219的级联。
图2-9MAX7219
根据MAX7219的各个引脚和每个引脚的性能,与八位数码管的连接如图2-10所示。
正因采用了MAX7219这块芯片使得八位数码管得连接就变得很简单,使得焊接的工作也大大的减少了,布线也少了,这样既简便,又美观。
图2-10数码管连接
2.4软件设计方案
程序开始运行后,首先对8279进行初始化,再初始化LCD显示模块,然后设置中断,并进行循环检测(包括执行中断),最后送达显示,程序总流程(如图2-11)循环运行。
图2-11总程序的总框图
主程序和定时中断服务程序通过全局变量进行数据传递。
定时中断服务程序向主程序递AD转换结果,供主程序计算模拟电压值。
LCD显示程序接收数据,显示模拟电压值和X路。
主程序开始后,进行系统初始化,初始化过程包括设置堆栈、定时器0初始化、定时器1初始化、ADC初始化、串口初始化和开启中断等。
之后进入循环,在循环中读取用户按键值,根据用户按键值,计算和显示相应的数据。
2.4.1AD转换部分
本设计的具体软件结构主要包括一个主程序和显示功能程序。
主程序采用查询方式,查询单片机的P3.2口,若为低电平,则忙,AD还未转换完毕,继续不断查询,直到状态口显示为闲状态,即高电平为止。
查询传送方式的流程图,如图2-12所示。
图2-12总程序的总框图
第三章硬件电路的调试与实验数据
3.1模拟部分
调试前仔细检查电路连接是否正确,电路焊接是否存在虚焊现象,检查是否存在短路,确认无误后进行上电调试。
插槽方向很重要,不能认为只要自己知道,即使反方向了也没有关系。
3.2数字部分
数字电路部分的调试需要结合软件。
在检测硬件电路时,要保证的前提是程序是正确的。
A/D转换:
给ADC0804的输入端一个电压值,从0V缓慢增加至+5V,可以调试A/D转换是否存在问题。
单片机系统:
单片机系统调试时,结合程序,运行最小系统,检查按键是否正常,是否存在按键抖动、多键同时按下出现未锁定的状态,若无,则表明单片机按键接口及单片机芯片正常,检查两个显示模块,看显示是否正常。
全部模块通过测试后,将整机进行测试,检查性能是否良好。
在焊接完全部原件后,开始进行局部调试。
在现有的实验条件下,对电压进行测试,其中,测试的信号范围为1~5V。
用万能表测ADC0809电源端,显示电压为AD的供电电压,说明AD正常工作。
给AD的零端口输入电压信号,开始测试,并记录测试数据,如表3-1。
表3-1电压采集结果显示
输入电压/V
显示电压/V
输入电压/V
显示电压/V
0.00
0.00
2.6
2.63
0.20
0.21
2.8
2.78
0.40
0.40
3.0
3.00
0.60
0.59
3.2
3.21
0.80
0.80
3.4
3.43
1.00
1.01
3.6
3.58
1.20
1.20
3.8
3.75
1.40
1.40
4.0
4.03
1.60
1.59
4.2
4.20
1.80
1.80
4.4
4.41
2.00
2.02
4.6
4.60
2.20
2.20
4.8
4.78
2.40
2.43
5.0
5.00
将采集到的显示结果与实际输入的电压值相比较,可以得到测试的绝对误差。
图3-1误差分析
由表3-1可知,输入输出之间的绝对误差较小,最大误差为0.05,平均误差为0.0119,误差在可允许的范围内。
这说明测量结果基本正确,那些跳变点可能是由于受到各种干扰的影响,如被测信号再传入的时候可能会受到周围一些电子元器件的影响使得信号有所变化,或者电源本身就不可避免的有一定误差。
为了尽量减少误差,可以进行如下改进:
1)可适当简化电路,并使布局更加合理化。
各元器件之间不可避免要相互产生各种干扰,所用的器件越少,那么器件与器件之间造成的干扰也就越小。
2)改进数据采集模块之前的滤波抗扰处理,使得被测数据尽量保持原始数据。
3)增加A/D转换的精度。
4)对各模块进行封装。
3.3运行结果
3.3.1数码管显示
按照图纸要求,接入正负5V电压,12电压,以及接地,然后我在第7路接线柱上接入3.5V电压值,此时在数码管上显示073.45,具体如图3-1所示。
这表示此时第7路接的电压为3.45V,存在0.05V的误差。