基于单片机的数模转换器设计教材.docx

上传人:b****9 文档编号:25225525 上传时间:2023-06-06 格式:DOCX 页数:22 大小:356.87KB
下载 相关 举报
基于单片机的数模转换器设计教材.docx_第1页
第1页 / 共22页
基于单片机的数模转换器设计教材.docx_第2页
第2页 / 共22页
基于单片机的数模转换器设计教材.docx_第3页
第3页 / 共22页
基于单片机的数模转换器设计教材.docx_第4页
第4页 / 共22页
基于单片机的数模转换器设计教材.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于单片机的数模转换器设计教材.docx

《基于单片机的数模转换器设计教材.docx》由会员分享,可在线阅读,更多相关《基于单片机的数模转换器设计教材.docx(22页珍藏版)》请在冰豆网上搜索。

基于单片机的数模转换器设计教材.docx

基于单片机的数模转换器设计教材

摘要

1.模拟信号的处理采用都是数字信号处理方式,AD;2.非线性;3.对非线性的数模转换提出了要求。

在日常的小型工业现场设计和控制过程中,温度,压力,流量,电压和电流等模拟信号成为主要的被控参数,而这些参数大都具有非线性的特征;对现场这些需要控制的参数一般采用单片机构成的最小数据采集和处理系统对其进行采集和处理,以满足工业控制的要求。

本论文结合经典的最小数据采集和处理系统,在此基础上,前向通道上仍旧使用模拟多路开关,A/D0809,80c51单片机对数据的采集和初步的数字化处理。

论文中重点在后向通道的改进和设计上:

通过采用软件拟合的方法将非线性信号转换为线性电信号,在不占用硬件资源的情况下,较好的完成数字信号到模拟信号的关系转换。

利用单片机的编程过程及后向放大电路实现对数据的拟合及放大使其最大程度的满足信号的平滑性和通用性。

本论文重点在于后向通道的非线性数据的拟合过程和编程实现信号的拟合过程,实现控制信号的通用性和平滑性,完成本次的设计目的。

 

关键词:

单片机;数模转换器;非线性拟合;信号处理

 

1引言··························································4

1.1问题提出····················································4

1.2解决方案···················································5

1.3整体安排····················································6

2硬件系统电路设计··············································7

2.1系统硬件的总体设计·········································7

2.2系统硬件电路组成···········································8

3非线性理论···················································13

3.1非线性理论介绍············································13

3.2数据拟合方法··············································13

4软件系统设计·················································14

4.1单片机软件设计············································15

4.2软件预处理················································16

4.3程序命令··················································17

5总结·························································22

参考文献·······················································23

附录·························································24

 

第一章引言

1.1问题研究提出

经典的基于单片机的数据采集和处理系统被广泛应用于现代工业生产现场,以及各种小型设备前向通道中的数据采集过程之中,该系统往往是对现场的温度、湿度、光照强度、电压和电流进行采集和控制,利用模拟多路开关和单片机以及一些外围的放大滤波电路进行参数的控制和处理。

在此过程中,单片机起在核心部件作用,连接模拟信号和数字信号,使整个处理过程既简单又高效,同时功率消耗不大,环境适应能力强,体积小,抗干扰能力强等诸多优点。

在经典的采集系统中,单片机内部集成了数据的存储,数模转换,及程序设计和处理的过程。

这次论文研究的重点就在于第一单片机中集成的数模功能的应用上,众所周知,数模转换原理,简单的说就是把单片机处理的数字信号转换成可以供机器使用的电压或者电流信号。

现在简述下数模转换的原理:

数模转换器是将输入的每一位二进制代码按其权值大小转换成相应的模拟量,然后将代表各位的模拟量相加,则所得的总模拟量与数字量成正比,这样便实现了从数字量到模拟量的转换;

(1.1)

(1.2)

数模转换器主要电路形式为权电阻网络和到T型电阻网络,实现数字量到模拟量的转化。

在转化过程中,数模转换器有本身的分辨率,其值的计算方法为:

(1.3)

分辨率越高转换时对输入量的微小变化的反应越灵敏,输入的数字量越高转换精度越高。

问题就在于当输入位数越高时,伴随而来的转换时间变慢,要求的数据存储就会增大,同时转换精度受温度的影响;当输入的位数比较小时就会导致模拟量变化幅度大,控制精度不高,波动影响严重。

第二方面由于不同的工业现场信号强度不同,同时对于不同的控制参数其信号曲线也不尽相同。

因此,不同的控制参数和不同的控制场合都需要改变对应的驱动电压。

要使我们的驱动电路能工作于任何一个控制现场或者适应不同的控制信号,所以就必须在数据进入电路之前进行加工处理,将电路不可用的非线性信号转变为电路可用的线性电信号。

1.2解决方案

本次可编程的非线性数模转换器就是介绍一种软件预处理办法,实现一种主要由单片机构成的将数字量转变成为一种易于控制,通用的模拟量。

其思想过程主要是借助数学中的一次计数直接拟合法,通过编程实现数据的线性拟合,经过MATLAB仿真,和放大电路的来增强信号的通用性,在此介绍下驱动电路的设计思想。

图1.2软件预处理设计:

图1.2软件预处理设计

软件预处理单元的设计如图1.2所示。

首先,它根据不同的控制参数,构造出其不同的曲线。

继而计算相应的偏置电压值,这些值就是驱动电路所要使用的驱动电压。

软件预处理单元根据所求的偏置电压值,对数据进行处理,计算出驱动电路要产生这些偏置电压所需的二进制数据。

1.3论文整体安排

第一章节,主要说明问题的提出过程,与自己的解决方案,并且对设计做一个预期的设想结果。

第二章节,主要说明硬件电路的总体实际方案,和各个部件的连接图,并且绘制系统总原理图。

第三章节,主要说明线性拟合的过程和原理。

第四章节,介绍系统硬件原理图中,各个部分的软件实现过程和部分软件设计说明。

第二章硬件系统电路设计

2.1系统硬件的总体设计

单片机为核心的数据采集和控制系统是现代工业现场使用最多的一种简单的微型系统。

它主要用来采集工业现场或者工作环境中的温度,压力,光照,流量和电压电流等非线性的模拟信号作为控制参数,通过ADC把模拟信号转换成数字信号送入单片机;再通过串行口连接计算机对数据进行大规模的存储和处理,或者经过自身的DA转换功能将数字量转换成模拟量,然后经过外围的放大电路对工业现场进行控制。

图2.1.1经典数据采集和处理结构简图:

图2.1.1经典数据采集和处理结构简图

本论文基于传统的数据采集与处理系统,在此基础上,对单片机输出的数字信号进行数据拟合,实现数字信号的模拟化,使信号更趋于平滑,具有更强的通用性。

通过模拟多路开关与现场结合获取所需的模拟信号即控制参数,把得到的信号经过滤波器的处理和放大电路的放大再经过ADC0832对其进行数字化处理,把模拟信号转化成为二进制码的机器语言传送到单片机80C51中,经过软件预处理,将得到的数据进行拟合,使信号更具平滑性和通用性,将处理后信号经由外部电路的放大送入继电器单元进行控制,进而克服数模转换后信号的波动。

图2.1.2经过加工改造后的数据采集和处理结构简图:

图2.1.2经过加工改造后的数据采集和处理结构简图

2.2系统硬件电路组成

2.2.1单片机

因为本系统是典型的单片机数据采集控制系统,因此所选用单片机的类型是否合适,对整个系统显然起着至关重要的作用。

选择哪种型号的单片机作为控制核心,一般根据计算机的有关参数及经济效益与成本来决定的。

往往以单片机的速度、精度、内在容量,驱动能力、扩展能力和总系统所需价格几个方面来考虑。

根据本系统的设计要求,在选择微处理器时,我们考虑了各种微处理器的价格情况,和我们学校的设备情况,经过分析,现有设备中,我们利用伟福的H51/S仿真器,所以我们经过论证,决定选用ATMEL公司的AT89C51芯片来完成我们对系统的设计。

而且价格低廉,容易买到,所以我选用了MCS-51系列中的AT89C51单片机,其主要特性如下:

a)4K字节可编程闪烁存储器,基本可以完成简单程序的存储和运行

b)操作简单,适用性强,可以兼容多种存储和转换芯片

c)内置多种集成电路,减少接线和外部设计工作

d)低功耗的闲置和掉电保护模式

2.2.2单片机最小系统实现

a)晶振电路和复位电路

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

采用外部时钟驱动单片机,XTAL2空置即可。

由于输入到内部时钟信号要通过一个12分频触发器,保证脉冲的高低电平要求就行了。

复位过程是单片机的初始化操作,其主要作用是使单片机从0000H单元开始执行程序。

除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为了摆脱困境,也需要按复位键以重新启动。

图2.2.1为单片机的最小系统:

图2.2.1单片机的最小系统

b)I/O电路和存储扩展

对于无内部ROM的单片机或者程序较大,内部ROM不够用时,需要外接程序存储器芯片;数据量较大,内部RAM不够用还需扩展外部数据存储器RAM芯片。

在MCS-51单片机应用系统中,程序存储器的扩展,对于片内无ROM的单片机是不可缺少的工作,程序存储器扩展的容量根据应用系统的需要可在64KB范围内随意选择。

用一片ROM2764做8KB片外程序存储器,27256的片选端接地。

用一片6264片外数据存储器。

6264的片选端接74LS138,当Y0为低电平时选通。

再用一片8255芯片实现单片机与PC机及外部设备的连接和外部设备的连接等。

图2.2.2单片机的内存扩展电路:

图2.2.2单片机的内存扩展电路图

图2.2.3为单片机的I/O扩展电路连接图:

图2.2.3为单片机的I/O扩展电路连接图:

2.2.3模拟输入通道组成

模拟通道即将现场中的模拟信号进行采集和数字化处理,主要包括传感器、多路开关、AD转化器、放大器及采样保持器五个部分组成。

图2.2.3为模拟信号采集和转换原理图:

图2.2.4模拟信号采集和转换原理图

2.2.4AD0809芯片介绍和使用

在单片机数据采集和处理的控制过程中,首先要对传感器传过来的信号进行处理,然而单片机只能接受数字信号,而传感器中的信号为连续的电压或者电流信号,在这个过程中需要模数转换器对其进行转化再送到单片机中进行加工处理。

A/D转换器芯片的种类很多,在此我选择了较为常用的A/D转换芯片ADC0809。

ADC0809是逐位逼近型8位单片A/D转换芯片。

片内含8路模拟开关,可允许8个模拟两输入。

片内带有三态输出缓冲器,因此可直接与系统总线相连,是目前应用较为广泛的模数转换芯片之一。

图2.2.5模数转换器与单片机的连接图:

图2.2.5数模转换器与单片机的连接图

2.2.5控制电路设计

本论文使用单片机输出数字信号,经由一片CD4013输出数字信号,经过软件预处理过程和放大实行对外部电路即继电器实行控制。

第三章非线性数据处理

3.1非线性理论介绍

在生产实践和科学实验中,经常会遇到大量的不同类型的数据(data).这些数据提供了有用的信息,可以帮助我们认识事物的内在规律等.在一项工程实践中,通过观测,得到了一个离散的函数关系(xi,yi)i=1,2,…,n。

由于工程的需要,我们希望揭示出反映这组离散数据的一个解析的函数关系。

再用几何术语来表达:

根据平面上的观测点,要求确定一个函数曲线y=f(x),使曲线尽量接近这些点。

实现这个愿望的方法简称为曲线拟合(fittingacurve).曲线拟合是根据实验获得的数据,建立自变量与因变量之间的函数关系,为进一步的深入研究提供工具。

由于不同的工业现场信号强度不同,同时对于不同的控制参数其信号曲线也不尽相同。

因此,不同的控制参数和不同的控制场合都需要改变对应的驱动电压。

要使我们的驱动电路能工作于任何一个控制现场或者适应不同的控制信号,所以就必须在数据进入电路之前进行加工处理,将电路不可用的非线性信号转变为电路可用的线性电信号,软件预处理单元就是为此而设的。

它采用软件拟合的方法将非线性光信号转换为线性电信号,在不占用硬件资源的情况下,较好的完成了信号的关系转换。

软件预处理采用MATLAB软件编程,对不同的处理对象,进行不同的处理;对不同的系统要求,可以随时进行调整,因此,可以大大增强了驱动电路的通用性和信号的实用性。

3.2数据拟合的方法

所谓数据拟合就是想办法找到某种光滑的曲线最佳的拟合数据。

这个过程中,并不要求经过每一个数据点,其思想是能够反应这些数据的变化趋势,也就是平时所用的最小二乘法原理思想。

数据拟合的途径多种多样,本论文采用简单的matlab软件拟合数据的方法进行说明,以及一次计数直接拟合和二次计数逐步拟合方法的介绍。

3.2.1matlab仿真拟合

在matlab仿真拟合时,主要有两种方法:

一种是使用matlab软件中提供的函数命令对数据进行拟合,另外一种就是图形界面操作窗口进行拟合。

a)函数形式的拟合方法

使用非线性拟合数据命令lsqcurvefit,首先定义main函数文件,使用命令c=lsqcurvefit(‘fun’,x0,x,y),其中x,y为实验数据,fun为main函数,x0为初始值,c为非线性拟合系数。

b)窗口形式拟合

此种方法在熟悉matlab软件的基础上,可以简单快速的实现非线性数据的拟合。

3.2.2一次计数法直接拟合预处理单元

a)首先根据控制现场的特征参数,拟合出参数的曲线形式

b)计算系统所需的n个系数对应的驱动电压值Vdrive,n的个数由被控参数决定;

c)计数器的最大值为2W-1,W为计数器的位数。

由驱动电压的摆幅范围和W,计算一个时钟周期CLK的驱动电压值V=(Vdrive,max-Vdrive,min)/(2W-1),在本文中Vdrive,min=0,所以V=Vdrive,max/(2W-1)。

从关系式U=(I×(CLK/2))/C得出,积分电流I和积分电容C是成正比的,电流越大,稳定性越高,但是积分电容C就越大,所占用的版图面积也就越大;时钟越快,它的最小积分电压值越小,电压精度越高,但是时钟的高频影响就越大。

综合考虑各方面因素,对V进行有效位数取舍得V1,以V1为单位驱动电压,重构Vdrive,n得,Vdrive,n便是驱动电路所求。

(3.1)

其中

的值取正整数

c)计算Vdrive,n和V‘drive,n之间的误差

(3.2)

将计数器的位数W从1开始递增改变,步长为1。

重复步骤(3),(4),直到error满足系统要求的误差范围,保存此时的M:

M=[m1m2…mn];

d)将M转化为二进制数值Mbin=[m1,bin,m2,bin…mn,bin],并存储在RAM当中,以备电路工作使用。

第四章系统软件设计

系统硬件电路在第三章中已经说明,本章主要进行单片机系统的初始化和外部设备连接控制的程序说明,及软件预处理的过程和程序流程图的说明。

4.1单片机系统

单片机系统的软件编程主要是包括单片机的初始化,外部芯片AD0809的初始化,8255的初始化过程;中断服务程序主要包括数据采集,输出,串口通信等功能模块的驱动部分。

在本论文中基于对单片机的认识,选择汇编语言对其进行编程。

图4.11为系统软件总的流程图:

图4.1.1系统软件总的流程图

a)AD转换程序流程图

图4.1.2AD转换程序流程图

b)中断程序,在单片机系统中,利用中断服务程序,单片机分时复用,对各外部信号进行处理和读写。

4.2软件预处理

由于matlab中已经提供了足够的非线性数据拟合函数,在此不多做说明,仅介绍主要涉及第三章中的数据拟合方法中一次计数直接拟合法的流程图。

根据一次计数直接拟合的思想和数学算法,涉及软件预处理程序流程图,助于软件的编写。

图4.2为软件预处理程序流程图:

图4.2为软件预处理程序流程图

4.3程序命令

上位机(PC机)相关通信程序:

#include

#include

#include

#include

FILE*P;

Voidunsignedsend();

Voidcharreceive();

Voidunsignedsendgroup();

Time_T1,T2;

IntI,data[10];

Unsignedcharst,st1,sum,sumi,addr_send,addr_receive,Head;

main()

{

outportb(0x2FBH,0X80H);

outportb(0x2F8H,0X60H);

outportb(0x2F9H,0X00H);

outportb(0x2FCH,0X00H);

while

(1)

{

if(kbhit())exit(0;

sendgroup();

receivegroup();

}

}

unsignedcharreceivedata()

{

TI=time(NULL);

While

(1)

{T2=time(NULL);

IF(DIFFERTIME(T2,T1)>=2.00)

Printf(“overtime\n”);

Exit(0);

}

st1=inportb(0x2FDH);

IF((ST1&0X01H)!

0)

{Head=intportb(0x2f8h);

}}return(Head);}

下位机(单片机)相关通信子程序:

#include

#include

#include

#include

FILE*P;

Voidunsignedsend();

Voidcharreceive();

Voidunsignedsendgroup();

Time_T1,T2;

IntI,data[10];

Unsignedcharst,st1,sum,sumi,addr_send,addr_receive,Head;

Main()

{

outportb(0x2FBH,0X80H);

outportb(0x2F8H,0X60H);

outportb(0x2F9H,0X00H);

outportb(0x2FCH,0X00H);

while

(1)

{

if(kbhit())exit(0;

sendgroup();

receivegroup();

}

}

unsignedcharreceivedata()

{

TI=time(NULL);

While

(1)

{T2=time(NULL);

IF(DIFFERTIME(T2,T1)>=2.00)

Printf(“overtime\n”);

Exit(0);

}

st1=inportb(0x2FDH);

IF((ST1&0X01H)!

0)

{Head=intportb(0x2f8h);

}}return(Head);}

ADC0809采样子程序:

#PROGRAMAASM

MOVR1,#30h

MOVR4,#8

MOVR2,@00h

SETBEA

SETBIT1

MOVR0,#0F0H

MOVA,R2

MOVX@R0,A

SJMP$

ORG0013H

CINT:

MOVR0,#0F0H

MOVXA,@R0

MOV@R1,A

INCR1

INCR2

MOVA,R2

MOVX@R0,A

DJNZR4,LOOP

CLREX1

LOOP:

RET

#PROGRAMAASM

液晶显示LCM1602驱动子程序

voidDelayL()

{unsignedcharI,j;

I=0xA0;

J=0Xff;

While(i--)

While(j--);

}

voidDelayS()

{unsignedcharI;

I=0x1F;

While(i--);

}

voidWriteCommand(unsignedcharc)

{

DelayS();

XBYTE[LCD-COMMAND]=c;

}

voidWriteData(unsignedcharc)

{

DelayS();

XBYTE[LCD-DATA-W]=c;

}

voidShowString(unsignedcharline,char*ptr)

unsignedcharl,I;

l=line<<4;

for(I=0;I<16;I++)

{

ShowChar(l++,*ptr+i);

}

voidInitLcd()

{DelayL();

WriteCommand(0x38)

WriteCommand(0x38)

WriteCommand(0x06)

WriteCommand(0x0c)

WriteCommand(0x01)

WriteCommand(0x80)

第五章总结

总结

本次论文是在现有的基于单片机数据采集和处理系统的基础上对其进行的改动设计。

主要是针对工业现场信号的繁杂程度,和数据的非线性较大的情况,并且单片机处理虽然可以做到准确,但对于不同的数据控制参数要进行不同的初始化外部电路,这样对于复杂的信号控制一片单片机不好完成工作任务,所以提出了利用单片机和PC机联通的形式,在计算机上对采集的非线性数据进行软件的预处理,使信号足系统的需要单片机的需要,从而节省转换时间和转换精度。

软件预处理过程主要是利用数学原理,采用一次计数线性拟合的方法,并且做成软件存储在电脑中,对现场信号进行采集,使数据采集系统具有更具有通用性。

毕业设计基本上能够达到预期的目的。

这次毕业设计是对自己整个大学四年的检验,虽然经过了四五各月的准备与学习,但是在这次的设计中,自己仍旧没有突破自己的所学知识,并没有多收独创性在其中,仅仅是自己四年来简单知识的堆积,转眼间大学四年就要过去了,回头想想时间真的挺快,自己马上就要离开这片净土了难免有些伤心难过。

总的来说这次毕业设计自己废了九牛二虎的力量,其中有不会,不懂,不想做的纠结心情也有最后几个星期的临时抱佛脚的无奈···不过,一切事物都有好的一面,这次的毕业设计真正的锻炼了自己的收索知识,自己努力去专研的能力。

最后,仍然要感谢吴兰老师这个学期的教诲,在她的帮助下完成了这次毕业设计,在她的一步一步的指导下,对我大学四年的知识做了一个小小的总结。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1