Upload
agalia
View
101
Download
4
Embed Size (px)
DESCRIPTION
第 7 章 数/模与模/数转换. 7.1 数/模( D/A) 转换 7.2 模 / 数( A/D) 转换 7.3 典型 A/D 转换器芯片 7.4 数据采集系统. 数字量 :从键盘读入的字符代码,送往磁盘存储的文 件信息等。 模拟量 :语音信号,送往 VGA 显示器的视频信号,以 及工业生产过程中温度、流量等物理量。它们随 着时间连续变化。 - PowerPoint PPT Presentation
Citation preview
第 7 章 数 / 模与模 / 数转换 7.1 数 / 模( D/A )转换 7.2 模 / 数( A/D )转换 7.3 典型 A/D 转换器芯片 7.4 数据采集系统
数字量(Digit )和模拟量(Analog)
•数字量:从键盘读入的字符代码,送往磁盘存储的文 件信息等。• 模拟量:语音信号,送往 VGA 显示器的视频信号,以及工业生产过程中温度、流量等物理量。它们随着时间连续变化。• 为了使用计算机对模拟量进行采集、加工和输出,需要把模拟量转换成便于数字计算机存储和加工的数字量( A/D 转换, ADC ),或者把数字量转换成模拟量 (D/A 转换, DAC) 。
• D/A 与 A/D 转换是计算机用于多媒体、工业控制等领 域的一项重要技术。
图 7-1
模拟量输入输出通道
工业生产过程
温度
流量
传感器
变送器
多路开关
采样保持器
A/D转换器
数字量
微机系统控制
数字量I/O接口
锁存器
D/A转换
放大驱动
模拟量
电压量
信号处理
信号处理
1 . 传感器(变送器)• 把外部的物理量(例如:声音、温度、压力、流量 等)转换成电流或电压信号。2 . A/D 转换器( Analog Digit Converter, ADC)
• 将电压表示的模拟量转换成数字量,送计算机处理, 它是输入通道的核心环节。• AD 转换器输入模拟信号通常有以下几种电压范围: 单极性 0~5V 、 0~10V 、 0~20V; 双极性 ±2.5V 、 ±5V 、 ±10V 等。
3 . 信号处理• 传感器输出的信号比较微弱,需要经过放大,获得ADC 所要求的输入电平范围。• 安装在现场的传感器及其传输线路容易受到干扰信号的 影响,需要加接滤波电路,滤去干扰信号。4 . 多路开关( Multiplexer)
• 需要监测或控制的模拟量往往多于一个。可以使用多路 模拟开关,轮流接通其中的一路,使多个模拟信号共用 一个 ADC 进行 A/D 转换。
5 . 采样 / 保持器( Sample Holder)
• 如果在一次转换期间,输入的模拟量有较大的变化, 那么转换得到的结果会产生误差,甚至发生错误。• A/D 转换期间保持输入信号不变的电路称为采样 / 保持 电路。• 转换开始之前,采样 / 保持电路采集输入信号(采样)• 转换进行过程中,它向 A/D 转换器保持固定的输出 (保持)。6 . D/A 转换器( Digit Analog Converter, DAC) :
• D/A 转换器将成数字量转换成模拟量输出。
7.1 数 / 模( D/A )转换7.1.1 数 / 模转换原理7.1.2 D/A 转换芯片— DAC0832
图 7-2
1. 权电阻 D/A
Rf
A-+ 模拟量
输出运算放大器
Vo
权电阻位切换开关d3
d2
d1
d0
VR
二进制输入
2R
4R
8R
R
2. R-2R T 型电阻网络 D/A 转换器
二进制输入
2R
-+A
2R
2R
2R
R
2R
R
R
2R
VRef
R
A
B
C
D
d3
d2
d1
d0
I
I1I2 Vo
• D/A 转换器进行一次数字量到模拟量的转换需要的时间, 称为 D/A 转换时间,一般在 500ns( 纳秒 , 1ns=10-9s) 左右。• 为了保存由计算机送来的数字信号,通常还需要配置一 个“数据寄存器”,向 D/A 转换器提供稳定的数字信号。
)2·2·2·2·(2·2
2 40
31
22
13
Re0 dddd
RVR
IRV fi
)2·2·2·2·(2
00
11
22
334
Re ddddV f
7.1.2 D/A 转换芯片—DAC0832
8位输入寄存器
8位DAC寄存器
8位DAC
&
&
LE2LE1
VREFIout2
Rfb
Vcc
AGND
Iout1
DGND
D0~D7
ILECS
WR1
WR2XFER
12
3
456
7
8
910 11
1213
14
1516
1718
19
20
DAC0832
CS
WR1
AGND
D3D2D1
D0
VREF
RfbDGND IOUT2
IOUT1
D7
D6
D5D4XREF
WR2
ILE
Vcc
(a) DAC0832引脚 (b) DAC0832内部结构
1 . DAC0832 的引脚信号• DI0~DI7 : 8 位数字量输入。• ILE :数据锁存允许信号,高电平有效;• CS# :输入寄存器选择信号,低电平有效;• WR1# :输入寄存器的“写”选通信号,低电平有效。• 输入寄存器的锁存信号LE1#=(CS#+WR1#)#·ILE 。
LE1#=1 ,输入锁存器状态随数据输入状态变化; LE1#=0 时,锁存输入数据。
• XFER# :数据转移控制信号,低电平有效;• WR2# : DAC 寄存器的“写”选通信号。• DAC 寄存器的锁存信号 LE2#=WR2#+XREF# 。 LE2# =1 时, DAC 寄存器的输出跟随输入变化; LE2# =0 时,锁存输入寄存器状态。• VREF :基准电压输入。(+ 10V ~- 10V )
DAC0832 的引脚信号
• Rfb :反馈信号输入,芯片内已连接有反馈电阻。• IOUT1 和 IOUT2 :电流输出引脚。 IOUT1 与 IOUT2 的和为常数, IOUT1 随 DAC 寄存器的内容线性变化。• Vcc 是工作电源; DGND 是数字地, AGND 为模拟 信号地。
DAC0832 的引脚信号
• 为了保证转换精度,模拟信号部分应使用高精度基 准电源 VREF 和独立的地线。• 为了避免数字信号对模拟信号的干扰,提高输出的 稳定性,减少误差,应把数字地和模拟地分开:
模拟地:模拟信号及基准电源的参考地; 数字地:工作电源地,数据、地址、控制等数字 信号逻辑地。
• D/A 转换器的输出一般都要接运算放大器,微小信 号经放大后才能驱动执行机构的部件。
DAC0832 的引脚信号
图 7-5
DAC0832 的连接DAC0832
D7-D0 D7-D0
PORT0
PORT1
译码器
CS
XFER
WR1WR2IOW
ILE
Vref
+5V
Iout1
Iout2
Rfb
模拟地
R
2R
Vref
-+
2R
Vout
-
+
地址
M/IO
2. DAC0832 的应用• 直通输入:把 CS#, WR1# , WR2#, XREF#都接地,由 微机的并口(例如 8255 )向 0832 输出。• 单缓冲:地址选通 PORT0 连接 CS# 。 I/O 写信号IOW#同 时连接到 WR1# 、 WR2# 和 XREF# 。执行一次输出指令可 以将数据写入。• 双缓冲方式: 在输出一个模拟信号的同时,可送入下一个数据,实现多个 DAC同时输出新的模拟量。 DAC0832占用两个端口地址,地址线 A0=0 时选中第一级, A0=1 时选中第二级。 输出一个数据需要执行两条输出指令:
第一条指令将数据写入 0832的输入寄存器;第二条指令将数据从输入寄存器送入 DAC寄存器
图 7-5
DAC0832 的应用DAC0832
D7-D0 D7-D0
PORT0
PORT1
译码器
CS
XFER
WR1WR2IOW
ILE
Vref
+5V
Iout1
Iout2
Rfb
模拟地
R
2R
Vref
-+
2R
Vout
-
+
地址
M/IO
MOV AL , NUM ;被转换的数据送 AL
MOV DX, PORT0 ;输入寄存器偶地址送 DX
OUT DX, AL ;数据送到输入寄存器 INC DX ; A0=1
OUT DX, AL ;数据送入 DAC 寄存器
双缓冲方式输出程序
输出锯齿波的程序段
MOV AL, 0
J1 : CALL OUTPUT ;输出当前值 INC AL ;产生下一个输出值 JMP J1
输出三角波的程序段S0 : MOV AL , 0 ; AL 中置初值 0 ,S1: CALL OUTPUT ;输出三角波的上升段
INC ALJNZ S1DEC AL
S1 : CALL OUTPUT ;输出三角波的下降段DEC AL ;产生下降段下一个值JNZ S2 ; JMP S1 ;下降段结束,
; 输出下一个三角波
OUTPUT PROC NEAR MOV DX, PORT0 ; DAC0832端口地址
OUT DX, ALINC DXOUT DX, AL ;PUSH AXMOV AX, N ;延时的时间常数
WT: DEC AXJNZ WT ;延时POP AXRET
OUTPUT ENDP
子程序“ OUTPUT”
7.2 A/D 转换
7.2.1 信号变换中的采样、量化和编码 7.2.2 A/D 转换原理 7.2.3 A/D 转换器的主要技术指标
7.2.1 信号变换中的采样、量化和编码1. 采样
• 采样:模拟信号的大小随着时间不断地变化, A/D转换实际上是按一定的周期对各瞬时值进行转换。• 采样保持:对于变化较快的输入模拟信号, A/D 转换前可采用采样保持器,使得在转换期间保持固定的模拟信号值。• 采样定理:采样频率要高于或至少等于输入信号最高频率的 2倍。实际应用中,采样频率可以达到信号最高频率的 4~ 8倍。
2. 量化• 量化是把采样值取整为最小单位 Δ 的整数倍。• 量化的最小单位称为量化单位 Δ ,它等于输入 信号的最大值 / 数字量的最大值,对应于数字量 1 。• 输入信号的最大值一般等于所使用的“参考电压 (VREF )”
0 1Δ 2Δ 3Δ 4Δ 5Δ 6Δ 7Δ 待转换模拟量
转换后数字量000 001 010 011 100 101 110
000001010011100101110111
t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t
采样量化结果
量化区间
010 101 110 111 111 110 100 011 010 001
V(t)
图 7-7
000001010011100101110111
DN
0
理想A/D关系直线
转换曲线1
(a) 转换曲线1,量化误差1LSB
(b)理想转换曲线,量化误差: ± (1/2)LSB
18
28
38
48
58
68
78
VIVREF
000001010011100101110111
DN
0
理想转换曲线
18
28
38
48
58
68
78
VIVREF
理想A/D关系直线
3. 编码• 量化得到的数值通常用二进制表示。• 对有正负极性(双极性)的模拟量一般采用偏移码表示。 例如, 8 位二进制偏移码 10000000 代表数值 0 , 00000000 代表负电压满量程, 11111111 代表正电压满量程 (数值为负时符号位为 0 ,为正时符号位为 1 ) 。
7.2.2 A/D 转换原理
这种方式的转换中有两个积分时间: T0 :用模拟输入电压对电容积分(充电)的时间 这个时间是固定的; T1 :以电容充电后的电压为初值,对参考电源 VRef 反向积分,也就是积分电容被放电至 零所需的时间(或 T2 )。
1. 双积分型 A/D 转换器
图 7-8
双积分型 A/D 转换器
基准电压
输入电压
K Vout -+
。。。
积分器
CF
R 检零比较器
数据输出
(a) 双积分A/D转换器结构
VA1
VA2
V1V2
V1>V2
T0 T2T1
t
(b) 模拟信号大小与积分时间的关系
时钟
控制逻辑
计数器
VRef
Vi
• Vi/VRef = T1/T0 。 由于 VRef 、 T0 固定,通过测量放电时间 T1 ,可求出输入模拟电压 Vi 的大小。• 双积分型 A/D 转换测量输入电压 Vi 在 T0 时间内的平均值,所以对常态干扰(串模干扰)有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。• 双积分型的 A/D 转换器电路简单,抗干扰能力强,精度高,但是转换速度比较慢,通常为 ms级,一般用于低频信号的测量。
双积分型 A/D 转换器
图 7-9
2. 逐次逼近式 A/D 转换器+
-
比较器
VRef
START EOC
数字量
输出
D3 D2 D1 D0
Vx
终值
Vc
0t时序及控制逻辑
D/A
Vx
SAR
(1000)
(0100)
(0110)
(0101)
0010
0100
0110
1000
1100
逐次逼近式 A/D 转换器的特点( 1 ) 转换速度较快,转换时间在 1~ 100μs 以内,分辨率可达 18 位,适用于高精度、高频信号
的 A/D 转换;( 2 ) 转换时间固定,不随输入信号的大小而变化;( 3 ) 抗干扰能力较双积分型弱。采样时,干扰信号会 造成较大的误差,需要采取适当的滤波措施。
图 7-10
3. 跟踪计数式模数转换器
D7D6D5D4D3D2 D1 D0
Vo
Vx
CLK
C
比较器+-
8位D/A转换器
8位可逆计数器
图 7-11
4. ∑-△型模数转换器(设输入模拟量 Vin=1/4VREF)
D
-VREF
+VREF
+
-A B
C
CLKVIN
+-
1位DAC
1位数据流
Σ
Σ -Δ调制器
∫1位比较器
积分器 A
B
C
D
+(5/4)VREF
-(3/4)VREF
0 1 0 1 11 1 0
+VREF
-VREF
=5/8
• ∑-△型模数转换器以串行数据流方式输出结果;• 转换精度为 1LSB ;
• 转换完成后,比较器输出 0/1相间的数字流;• 输入模拟量 Vin 发生变化,输出数字流随之变化。• 模拟量输入端接有多路开关时,通道切换后要等 待足够长的时间,才能读取转换结果。• ∑-△型模数转换器抗干扰能力强,转换精度高,常用于高分辨率(常见为 16 、 18 、 24 位)的中、低频信号测量。• AD7714 是一个∑ -△型模数转换器芯片,转换精度 24 位。
∑-△型模数转换器
1. 分辨率 分辨率反映 A/D 转换器对输入微小变化的响应能力,用数字量最低位( LSB )所对应的模拟输入电平值(Δ) 表示。 分辨率直接与转换器的位数有关,也可以用数字量的位数来表示分辨率。注意:分辨率与精度是两个不同的概念。 分辨率高的转换器,精度不一定高。
7.2.3 A/D 转换器的主要技术指标
2. 精度 ( 有绝对精度和相对精度两种 )
( 1 )绝对误差 绝对误差等于实际转换结果与理论转换结果之差。 也可以用数字量的最小有效位( LSB)的分数值表示。例如 : ±1LSB , ±1/2 LSB , ±1/4 LSB 等( 2 )相对误差 相对误差是指数字量所对应的模拟输入量的实际值与 理论值之差,用模拟电压满量程的百分比表示。例: 10 位 A/D 芯片,输入满量程 10V , 绝对精度 ±1/2LSB (△= 9.77mV ) 绝对精度为: 1/2△(= 4.88mV ) 相对精度为: 4.88mV/10V = 0.048 %。
3. 转换时间完成一次 A/D转换所需要的时间。(发出转换命令信号到转换结束的时间)转换时间的倒数称为转换速率。例: AD574 的转换时间 25μs ,
转换速率为 40KHz ( =1/25 μs )
4. 量程量程:被转换的模拟输入电压范围, 分单极性、双极性两种类型。单极性常见量程为 0~ 5V , 0 ~ 10V , 0 ~ 20V ;
双极性量程常为- 5V ~+ 5V ,- 10V ~ +10V 。
5. 逻辑电平与输出方式多数 A/D 转换器输出的数字信号与 TTL 电平兼容,以并行方式输出。∑-△A/D 转换芯片以串行方式输出数据,这对单片机类 CPU 连接是很方便的。
6. 工作温度范围温度会对比较器、运算放大器、电阻网络等部件的工作产生影响。A/D 转换器的工作温度范围一般为 0~ 70℃。军用品为- 55℃~+ 125℃。
7.3 典型 A/D 转换器芯片 逐次逼近型 8 位 A/D 转换芯片; 片内有 8 路模拟开关,可以同时连接 8 路模拟量; 单极性,量程为 0~ 5V ; 典型的转换速度 100μs ; 片内有三态输出缓冲器,可直接与 CPU总线连接; 有较高的性能价格比,适用于对精度和采样速度要求 不高的场合或一般的工业控制领域。
7.3.1 ADC0809
图 7-12
IN7
IN0D7
D0
数字量输出ADDA
ADDBADDC
ALE
VCCGND REF(+) REF(-) OE
EOC
START CLK
三态输出锁存缓冲器
电阻网络
SAR
8路模拟开关
地址锁存与译码
控制与时序
树状开关
1. 模拟输入部分模拟输入部分由 8 选 1 多路开关,地址锁存与译码逻辑组成。从 IN0~IN7 引脚输入 8 路单端模拟信号;由三位地址输入 ADDA , ADDB , ADDC译码选择 8 路中的一路, ALE 为高电平时,三个地址信号被锁存。
2 . A/D 变换器部分由逐次逼近寄存器 SAR ( 8 位)、比较器、电阻网络等控制逻辑组成。
3. 基准电压输入 VREF(+)和 VREF(- )它们决定了输入模拟电压的最大值和最小值对转换精度要求不高时,可以把 VREF(+) 接到Vcc ( +5V )电源上, VREF( - ) 接 GND (地)为了避免数字脉冲信号对基准电源的干扰,可以设置独立的 VREF(+) 和 VREF( - ) ,加在两个引脚的电压必须满足以下条件:
VREF(+)+VREF( - ) =Vcc ,偏差值≤ ±0.1V
Vcc≥VREF(+)≥VREF( - ) ≥0
图 7-13
4 . ADC0809 的时序
( 1 ) ALE 信号锁存地址信号 ADDA~ADDC 。对应的模拟信号进入 0809( 2 ) START脉冲启动 A/D 转换( 3 ) 转换完成后,转换结束信号 EOC 变为高电平:
可以作为状态信号由 CPU查询; 可以作为中断请求信号通知 CPU 。
( 4 ) CPU 在查询式 I/O 程序或中断服务程序中: 执行输入指令(读 ADC0809 数据端口); 该指令经地址译码电路产生 OE 信号, 0809 内三态缓冲器被打开, 转换结果通过数据总线进入 CPU 。
ADC0809 的工作过程
ADC0809与系统有三种常见的连接方法:( 1 ) 占用三个 I/O端口:
端口 1 用来向 0809 输出模拟通道号并锁存;端口 2 用于启动转换;端口 3 读取转换后的数据结果。
( 2 ) 占用二个 I/O端口: 端口 1 输出模拟通道号并锁存,同时启动转换;端口 2 读取转换后的数据结果。
( 3 ) 通过并行接口芯片(例如 8255A )连接。
5. ADC0809 芯片应用举例
图 7-14
ADC0809 芯片应用举例
RD
WR
A0A1
Intel 8255
PB4
PB2
PB1
PB0
PC4
PB3
START
ADDC
ADDB
ADDA
EOC
ALE
ADC 0809
IN3
D0~D7PA0~PA7
CS
A0A1
地址译码
IOR
IOW
START: MOV AL, 98H ; 8255A方式字:方式 0 , A口输入, B口输出MOV DX, 03FFFH ; 8255A 控制端口地址OUT DX, AL ; 送 8255A方式字MOV AL, 0BH ; 通道号 3 、 ALE 信号MOV DL, 0FDH ; 8255A 的 B口地址OUT DX, AL ; 送通道号 3 及 ALE 信号MOV AL, 1BH ; 增加启动信号 START OUT DX, AL ; 启动 A/D 转换
ADC0809 转换程序
MOV AL, 0BH ; OUT DX, AL ; 撤销 START 信号MOV DL, 0FEH ; 8255A 的 C口地址
TST: IN AL, DX ; 读 C口状态AND AL, 10H ; 查询 EOC 状态 JZ TST ; 如未转换完,再测试MOV DL, 0FCH ; 8255 PA端口地址IN AL, DX ; 从 A端口读入转换结果………
ADC0809 转换程序(续)
1. AD 转换器 AD574 的主要特性: 美国 AD公司的产品 12 位逐次逼近式 A/D 转换器, 8 位 /12 位 A/D 转换 12 位数据可以一次输出,也可以分二次输出 三态缓冲输出; 带有基准源和时钟; 转换时间: 25μs ( 12 位); 分辨率: 12 位; 精度: ±1LSB 。
7.3.2 AD574A
AD574 共有 28根引脚, DIP封装( 1 ) 12 位数字量输出: DB11~DB0
( 2 ) 模拟量输入: 10VIN 及 20VIN ,双极性 ±5V 或 ±10V 输入,单极性 0~+ 10V 或 0~+20V 输入
AD574 的引脚信号
CS# - 片选信号,低电平有效。CE - 芯片允许信号,高电平有效。R/C# - 读出和转换控制信号, =1 为读, =0 为转换。12/8#-数据输出格式选择控制线,
= 1 时 12 位同时输出; = 0 时 高 8 位、低四位分两次输出,左对齐格式
A0 - 字节方式下的高 / 低字节选择控制线。STS-状态输出信号线
转换过程中, STS 为高电平 转换完成后,该脚为低电平。
BIP-输入信号极性选择, 接地时输入单极性信号; 接 +10V 时输入双极性模拟信号(输出偏移码)
( 3 ) AD574 的控制信号:
图 7-15
AD574 的引脚信号12
+5V电源VLOGIC
3数据方式选择 12/8
片选 CS字节地址/短循环 4
56789
1011121314
A0
2827262524232221201918171615
读/转换 R/C片使能 CE
+12/+15V电源VCC
+10V 基准输出模拟地 AG
基准输入REFIN-12/-15V 电源VEE
双极性偏移 BIP OFF10V量程输入10VIN
20V量程输入20VIN
STSDB11 (MSB)DB10
DB0 (LSB)
DB9
DB8
DB7
DB6DB5
DB4
DB3
DB2
DB1
数字地 DG
AD574A
图 7-16
3. AD574 的输入连接REFIN
REFOUT
10VIN
20VIN
BIP
+12V
-12V
100Ω
100Ω
0~10V
0~20V
模入
AD574
REFIN
REFOUT
AD574
100Ω
BIP
10VIN
20VIN
-5V~+5V
-10V~+10V
模入
100Ω
100Ω增益
增益
失调 失调
图 7-17
4. AD574A 的输出接口(字节方式)D11D10D9D8D7D6D5D4D3D2D1D0
CE
R/C
CS
A0
D7
.
.
.
.
D0
地址译码
&IOW
IOR
80H~81HA0
12/8
AD574
以 8 位总线接口为例,直接读取(固定延时)方式实现一次转换的程序如下:OUT 80H, AL ; 启动 12 位转换CALL DELAY ; 延时,等待转换结束IN AL, 80H ; 读入高 8 位MOV AH, AL IN AL, 81H ; 读入低位字节,转换值在 AX 的高 12 位中
MOV CL, 4SHR AX, CL ; 把转换值移入 AX 低 12 位
7.4 数据采集系统某公司电镀线微机集散控制系统:一个以工控 PC ( PC - Bus industrial computer )为核心的数据采集系统。系统功能:
检测电镀工艺参数(温度、电流、安培小时累计)电镀槽温度控制,加料控制。行车控制
图 7-18
电镀线微机集散控制系统
工业控制数据采集系统以往用单片机,单板机配以各种AD , DA 芯片自行设计模拟量输入输出通道。
优点:成本低,结构紧凑。缺点:软硬件开发周期长,难度大。
工控 PC 特点:• 使用标准化的机箱,整机抗震、防尘能力强;• 有抗干扰能力极强的电源和主板,能 24小时连续工作。• 软件开发以高级语言为主,设计周期短,软件的调试、移植 较汇编语言方便。• 配有有各种商品化的 I/O 、 A/D 、 D/A 接口卡 , 结构紧凑 , 性能稳 定 , 用户可迅速组装成一套完整数据采集系统 ,系统升级方便。
7.4.1 工控 PC 简介
多功能 ISA总线接口卡:• 16 路开关量 I/O
• 16 路 A/D ( 12 位)• 1 路 D/A
• A/D 转换使用 AD574 ,配以 16 路模拟开关及量程切换• 占用 16 个端口地址,基地址由开关设定
7.4.2 PCL818 多功能接口卡
1. 定时中断方式采样及数字滤波 对 8 个点的温度数据定时巡回采集
在 1CH 定时中断服务程序中 (每 55ms 进入一次 )对 8 路温度模拟量进行查询式输入,一路 A/D 转换时间小于 40μs , 8 路采样所耗费的时间小于 0.5ms 。
7.4.3 数据采集软件设计
采用移动算术平均方法进行“数字滤波”。构造一个“先进先出( FIFO ”) 队列,每采样一次,把 15 个数据顺序向前移动一个位置,新的数据放入这个队列的尾部。 将本次的采样值与前 15 次采样值相加,求出的平均值作为本次的采样值。 本例中,对于 8 个点的数据采集,构造了二维数组ti[8][16] ,每一路温度存入数组的一行 ti[i] ,滤波后
2. 非线性标度变换• 实际的传感器存在着“非线性”,可以把温度 K 和转换值 AD 之间的关系近似看作由 3 个点表示的二条“折线”。• 测量每个传感器的三点 6 个坐标值, N 路 A/D 有N×6 个参数,将这些数据存放在 TEMP.TXT 文件中。 根据每个传感器的 6 个坐标值(k1 , k2 , k3 , ad1 , ad2 , ad3) 计算相应的物理量。测量值 AD 和它所对应的温度 K 之间的转换公式为:AD >AD2 时:K=K2+(K3-K2) (AD-AD2) /(AD3-AD2)• AD <AD2 时:
K=K1+(K2-K1) (AD-AD1) /(AD2-AD1)
/* 符号名、全局变量和函数声明 */ # include “dos.h” # define N 8 /* 采样点数 */ # define BASE 0x300 /* AD818卡基地址 */ # define INTERRUPT 0x1c /* 定时中断类型号 */ static unsigned t[N],sum[N]={0},sample[N][16]={0} ,sp=0;Void interrupt far (* oldhandler)( );
/* 定义 oldhandler 为指向中断服务程序的指针*/
3. 温度数据采集程序
main( ){ int i, j ; void far handler( ); /* 函数 handler( ) 声明 */oldhander = getvect ( INTERRUPT ); /* 读出原 1CH 中断向量 */setvect (INTERRUPT , handler ); /* 把新的 1CH 中断向量写入向量表 */ …………..}
主函数( 1 ) ---- 设定中断向量 */
unsigned int AD818( int scan ) /* 函数 AD818从 AD818 卡采集一次数据, scan 为通道号 */{ int lbit, hbit, it=0, result ; outportb (BASE+2, scan) ; /* 向 AD818 输出通道号 */ outportb (BASE +1, 0) ; /* AD 输入量程控制 */ outportb (BASE +9, 0) ; /* 不使用中断或 DMA */ outportb (BASE +0, 0) ; /* 启动 AD 转换 */
数据采集函数 ---- AD818( ) (1)
do { it = it+1; result = inportb(BASE +8)&128; /* 读出 AD 状态寄存器,查询 EOC ,等待 AD 转换完成*/ } while (result!=0 && it<=10000); lbit=inportb (BASE + 0) & 0xf0;
/* 读入低 8 位,清除其中无效的最低 4 位 */ hbit=inportb (BASE + 1); /* 读入高 8 位 */ if (it<=10000) return (hbit*16+lbit/16); /* 采集正常,拼接二段数据 */ else return (0); /* 采集数据超时, 818 卡有故障 */ }
数据采集函数 ---- AD818( ) (2)
void interrupt far handler( ) /* 55ms 定时中断服务程序,采集每个点的数据 */{ int isp, s ; for ( isp=0 ; isp<=N- 1; isp++) { s = AD818( isp ) ; /* 采集一个点的数据 */ sum[isp] = sum[isp] - sample[isp][sp] + s ; /* 求 16 个采样值的和 */ sample[isp][sp] = s; /* 将本次采样值替换最早的采样值 */ t[isp] = nonlinear(sum[isp] / 16) ; /* 求平均并非线性补偿后得到现场温度 */ } if ( ++sp == 16) sp = 0; /* 移动 FIFO 队列未指针 */ oldhandler( ); } /* 进入原 1CH 中断服务程序,此后返回断点 */}
定时中断服务(数据采集)函数
习题 7
1. A/D 和 D/A 转换在微机应用中分别起什么作用?2. 怎样将 D/A 转换器连接到微型计算机?3. 修改图 7-5 ,将 DAC0832 的两级锁存合为一级使用,画出连接图,并编写输出三角波和锯齿波的程序。4. 一个 8 位 D/A 转换器的满量程(对应于数字量 255 )为 10V 。分别确定模拟量 2.0V 和 8.0V 所对应的数字量。5. 简述逐次逼近式 A/D 转换器的工作原理,并将它和 Σ-
ΔA/D 转换器进行比较。
6. 若 ADC 输入模拟电压信号的最高频率为 100KHZ ,采样频率的下限是多少?完成一次 A/D 转换时间的上限是多少?7. 在使用 A/D 和 D/A 转换器的系统中,地线连接时应注意什么?8. 怎样用一个 A/D 芯片测量多路信息 ?9. 一 台 工 控 PC 有 两 块 818 卡 , 基 地 址 分 别 为
base1,base2,试编制采样 24 路(一块卡 16 路,一块卡8 路)模拟量的 C 语言程序。