MCS-51模拟量输入输出
概述
非电物理量(温度、压力、流量、速度等),须经传感器转换成模拟电信号(电压或电流),必须转换成数字量,才能在单片机中处理。
数字量,也常常需要转换为模拟信号。
A/D转换器(ADC):模拟量->数字量的器件;
D/A转换器(DAC):数字量->模拟量的器件。
只需合理选用商品化的大规模ADC、DAC芯片,了解引脚及功能以及与单片机的接口设计。
ADC的基本原理及性能指标
1.A/D转换器的分类
根据转换原理可将A/D转换器分成两大类。
(1)直接型A/D转换器
(2)间接型A/D转换器
逐次逼近式A/D转换器
将输入模拟信号与推测信号比较,调节推测信号逼近输入信号,直至两者相等。精度、速度和价格都适中,是最常用的A/D转换器件。
双积分式A/D转换器
采用输入模拟信号与标准电压反向积分的方法,完成模拟信号的转换。精度高、抗干扰性好、价格低廉,单转换速度慢,得到广泛应用。
V/F变换式A/D转换器
将输入模拟信号转化为线性对应的频率信号,通过测量频率实现模拟信号的转化。适用于转换速度要求不太高,远距离信号传输。
2.A/D转换器的主要技术指标
(1)转换时间和转换速率
完成一次转换所需要的时间。转换时间的倒数为转换速率。
并行式:20~50ns,速率为50~20M次/s(1M=10^6)
逐次比较式:0.4us,速率为2.5M次/s。
(2)分辨率
用输出二进制位数或BCD码位数表示。例如AD574,二进制12位,即用2^12个数进行量化,分辨率为1LSB,百分数表示1/2^12 = 0.24%.
又如双积分式A/D转换器MC14433,分辨率为三位半。若满字位为1999,其分辨率为1/1999=0.05%。
量化误差
量化过程引起的误差为量化误差,是由于有限位数字对模拟量进行量化而引起的误差。量化误差理论上规定为1个单位分辨率,提高分辨率可减少量化误差。
(3)转换精度
定义为一个实际ADC与一个理想ADC在量化值上的差值。可用绝对误差或相对误差表示。
绝对精度
在转换器中,任何数码所对应的实际模拟电压与其理想电压值之差的最大值称为绝对精度。
相对精度
绝对精度的百分数表示。
3. A/D转换器的选择
按输出代码的有效位数分:8位、10位、12位等。
按转换速度分为超高速(≤1ns)、高速(≤1us)、中速(≤1ms)、低速(≤1s)等。
A/D转换器的发展趋势:为适应系统集成需要,将多路转换开关、时钟电路、基准电压源、二/十进制译码器和转换电路集成在一个芯片内,为用户提供方便。
(1)A/D转换器位数的确定
系统总精度涉及的环节较多:传感器变换精度、信号预处理电路精度和A/D转换器及输出电路、控制机构精度,还包括软件控制算法。
A/D转换器的位数至少要比系统总精度要求的最低分辨率高1位,位数应与其他环节所能达到的精度相适应。
只要不低于它们就行,太高无意义,且价高。
8位以下:低分辨率,9~12位:中分辨率,13位以上:高分辨率。
(2)A/D转换器转换速率的确定
从启动转换到转换结束,输出稳定的数字量,需要一定的时间,这就是A/D转换器的转换时间。
低速:转换时间从几ms到几十ms。
中速:逐次比较型的A/D转换器的转换时间可从几us~100us左右。
高速:转换时间仅20~100us.适用于雷达、数字通讯、实时光谱分析、实时瞬态记录、视频数字转换系统等。
AD转换时间对模拟信号的要求
如用转换时间为100us的集成A/D转换器,其转换速率为10千次/秒。根据采样定理和实际需要,一个周期的波形需采10个点,最高也只能处理1KHz的信号。
把转换时间减小到10us,信号频率可提高到10KHz。
(3)是否加采样保持器
直流和变化非常缓慢的信号可不用采样保持器。其他情况都要加采样保持器。
根据分辨率、转换时间、信号带宽关系,决定是否要加采样保持器:
如果是8位ADC,转换时间100ms,无采样保持器,信号的允许频率是0.12Hz;
如果是12位ADC,该频率为0.0077Hz。如果转换时间是100us,ADC是8位时,该频率为12Hz,12位时是0.77Hz。
(4)工作电压和基准电压
选择使用单一+5v工作电压的芯片,与单片机系统共用一个电源比较方便。
基准电压源是提供给A/D转换器在转换时所需要的参考电压,在要求较高精度时,基准电压要单独用高精度稳压电源供给。
A/D转换的实现(ADC0809)
MCS-51与ADC 0809的接口
逐次逼近式A/D转换器基本原理:推测信号由D/A转换器输出获得,比较器输出决定每一位的锁存状态,完成所有位的比较后,D/A转换器输入即为A/D转换器的输出。
ADC0809功能特点为:
--分辨率为8位
--ADC0808最大不可调误差1/2LSB,ADC0809最大不可调误差1LSB
--模拟输入电压范围为0~5V,单电源供电
--锁存控制的8路模拟开关
--转换速度取决于芯片的时钟频率,其范围10~1280KHz,当频率为500KHz时,转换速度位128us。
逐次逼近式8路模拟输入、8位输出的A/D转换器 管脚图
共28脚,双列直插式封装。主要引脚功能如下:
(1)IN0~IN7:8路模拟信号输入端
(2)D0~D7:8位数字量输出端
(3)C、B、A:控制8路模拟通道的切换,C、B、A=000~111分别对应IN0~IN7通道。
(4)OE、START、CLK:控制信号端,OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。
(5)Vr(+)和Vr(-):参考电压输入端
ADC0809结构框图
ADC0809编程要点
选通模拟量输入通道
发出启动信号
用查询或中断方法等待转换结束
初学阶段建议采用延时的方法
读取转换结果
A/D转换的实现(LM331)
MCS-51与LM331的接口
在即要求数据长距离传输又要求精确度较高的场合,可使用V/F转换器代替A/D器件。
V/F转换器是把电压信号转变为频率信号的器件,有良好的精度、线性度。
电路简单,外围元件性能要求不高,适应环境能力强。
用V/F转换器实现A/D转换的原理
输出频率的测量:
把V/F转换器输出的频率信号作为计数脉冲,进行定时计数,这样计数器的计数值与V/F转换器输出的脉冲频率信号之间的关系为:f = D/T
D:计数值,T:计数时间,就可求出V/F转换器的输出频率f。
输入电压的计算:根据V/F转换器的输入电压V与输出频率f的关系:f = KV
k:V/F转换系数,是一个常数
从而知道输入电压V,这就实现了A/D转换。
**定时/计数器可用单片机内部的,也可使用外部扩展的,用单片机把计数值取入内存即可进行数据处理,获得模拟电压的大小。
常用V/F转换器LMX31简介
包括LM131/LM231/LM331,适用于A/D转换器,高精度V/F变换器。
1.主要特性
(1)频率范围:1~100KHz
(2)低的非线性:±0.01%
(3)单电源或双电源供电
(4)单电源供电电压为+5v时,可保证转换精度
(5)温度特性:最大±50ppm/℃
(6)低功耗:Vs=5V时为15mw
2.电特性参数:
(1)电源电压:+15v
(2)输入电压范围:0~10v
(3)输出频率:10Hz~11KHz
(4)非线性失真:±0.03%
V/F转换器与MCS51单片机接口
被测电压转换为与其成比例的频率信号后送入单片机进行处理。
(1)直接与MCS-51接口。接口简单,频率信号接入单片机的定时器/计数器输入端即可。
(2)在一些电源干扰大、模拟电路部分容易对单片机产生电气干扰等恶劣环境中,可采用光电隔离的方法使V/F转换器与单片机无电信号联系。
(3)与单片机之间距离较远时需要采用驱动电路以提高传输能力。可采用串行通讯的驱动器和接收器来实现。
DAC的基本原理及性能指标
1.概述
输入:数字量 输出:模拟量
转换过程:送到DAC的各位二进制数按其权的大小转换为相应的模拟分量,再把各模拟分量叠加,其和就是D/A转换的结果。
使用D/A转换器时,要注意区分:
**D/A转换器的输出形式
**内部是否带有锁存器
(1)输出形式
两种输出形式:电压输出形式与电流输出形式。电流输出的D/A转换器,如需模拟电压输出,可在其电流输出端加一个D/A转换器,
MCS-51模拟量输入输出相关推荐
- s71200模拟量输入输出_模拟用户输入并检查输出的简单方法
s71200模拟量输入输出 最近,我的一些学生向我询问了赫尔辛基大学MOOC提供的单元测试的机制,我检查了它们的实现,并认为这对于初学者了解实际发生的情况是有帮助的,因此在此发表了这篇小文章. 我们将 ...
- TIA博途_基于SCL语言制作模拟量输入输出全局库的具体方法
TIA博途_基于SCL语言制作模拟量输入输出全局库的具体方法 一. 模拟量输入块:创建FB,定义块的接口,如下图所示: 程序中包含了高报警,低报警,一般上位机报警需要这个变量. 极性选择,适合更广的应 ...
- PLC 200 Smart模拟量输入输出编程应用
200 Smart模拟量输入输出编程应用 0-20mA大部分是四线制.一小部分是三线制 4-20mA大部分是二线制.一部分是四线制 三线制的抗干扰能力弱,所以使用的比较少 模拟量输入模块的正负端 二线 ...
- S7-300/400 PLC 模拟量输入/输出的量程转换
1 模拟量输入/输出量程转换的概念................................................................................... ...
- 西门子1200plc罐装线项目,程序包括modbus通讯,模拟量输入输出,西门子程序画面精彩,程序编辑分类清晰
西门子1200plc罐装线项目,程序包括modbus通讯,模拟量输入输出,西门子程序画面精彩,程序编辑分类清晰,非常具有参考学习意义,支持博图V13及以上版本打开 :1215653304609479工 ...
- 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 如何读写数字量模拟量输入输出(DI,DO,AI,AO)
常见的模拟量模块(还有更高端和更低端的,使用方法都一样) EL3054和EL4024(4路模拟量输入和输出模块) 常见的数字量模块(还有更高端和更低端的,使用方法都一样) EL1809和EL2809( ...
- S7-200SMART 模拟量输入输出
当我们在实际的应用中需要对当前的温度或是压力进行采集显示的时候,我们需要用到模拟量模块来对模拟量信号进行采集,在这里我们以S7-200smart PLC的EMAE04模拟输入模块为例来说明如何使用这个 ...
- 博图SCL编程——常规模拟量输入/输出的处理
本文只对SCL中模拟量处理程序的编写进行说明,详细的应用原理请参考博图中热电阻/热电偶(RTD/TC)模拟量信号的处理和博图电压/电流(U/I)模拟量信号的处理 1. 热电阻/热电偶(RTD/TC) ...
- PLC控制模拟量输入\输出方式
PLC控制模拟量输入方式 目前大部分是采用模拟量输入(A/D)转换模块进行模拟量输入. 也可以用采集脉冲方式输入模拟量信号,这时必须先通过压频变送器把电压转换成频率可调的脉冲序列送入. PLC控制模拟 ...
最新文章
- 2022-2028年中国文化产业园投资分析及前景预测报告(全卷)
- MySQL · 性能优化· CloudDBA SQL优化建议之统计信息获取
- HTTP/2 h2 协议简介
- 这是一篇能让你升职加薪,赢娶白富美的文章
- 40. Combination Sum II **
- java 可视化_可视化Java 9模块关系
- C#中WebBrowser控件的使用
- 英特尔 开源降噪库 api_Google的新操作系统,英特尔的开源VR耳机以及更多新闻
- python能编游戏吗_python能做游戏吗
- 苹果公司发布TestFlight Groups,放宽二进制版本提交限制
- github可以刷星吗_国内某知名社区居然也在GitHub上玩起了刷星活动
- 123 Python程序中的线程操作-协程
- iOS开发中的火星坐标系及各种坐标系转换算法
- 如何给linux添加新硬盘(转)
- TCP/IP常见协议及协议号及端口号
- 小程序利用云函数获取手机号码
- 深度学习在美团搜索广告排序的应用实践
- 定积分(黎曼和)的编程实现(java和python实现)
- GBase 8c数据库登陆
- 2017 ACM/ICPC 北京赛区小结 By jsb @Reconquista