[工学]AD DA 1.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]AD DA 1

ACL-8112数据采集板卡 模拟量输入通道(AI或A/D) 任务:把被控对象的模拟量信号(如温度、压力、流量、料位或成分等)转换成计算机可以接收的数字量信号; 组成:一般由信号调理、多路模拟开关、前置放大器、采样保持器、模/数转换器、接口和控制电路组成; 核心:模/数转换器,简称A/D或ADC(analog-to-digital converter),通常也把模拟量输入通道(AI)简称为A/D通道。 A/D通道内部工作原理 A/D转换的触发及传输方式 采样触发方式: 软件触发:简单,但采样间隔精度低、不稳定,查询等待占用CPU的时间(训练中采用) 板上定时器触发:精确、稳定 外部脉冲触发 A/D转换结果的传输方式 查询A/D转换完成标志位 ?从寄存器读数据 (训练中采用); A/D转换完成后发中断请求 ?中断服务程序读取 DMA方式 PCL812PG的模拟量通道技术参数 A/D转换——16路单端 分辨率:12位 输入范围:双极性,硬件跳线±5V或±10V,可以通过增益得到其它范围 过载电压:±30V 转换速度:最大30kHz(33μs) D/A转换——2路 分辨率:12位 输出范围:使用内部参考电压时为0~5V或0~10V 驱动能力:最大5mA 转换时间:30μs A/D通道多路开关寄存器 A/D增益定义 A/D转换模式控制寄存器 模拟量输入的实现 问题7:如何将高字节和低字节合并为一个12 位二进制数? 解决:将高字节左移8位后,与低字节相加。 temp=Hbyte8 +Lbyte A/D转换公式 问题7:如何将读入的12位二进制数转换为十进制电压值? 十六路A/D通道均可将模拟电压信号转换成12位数字信号。被转换电压的范围有六种(±10V、±5V、 ±2.5V、 ±1.25V、 ±0.625V、 ±0.3125V ),可以在程序中配合板卡上的跳线开关设定; 训练中采集卡的最大输入电压跳线为±10V,增益为1。 模拟量输出通道(AO或D/A) 任务:把计算机输出的数字量信号转换成模拟电压或电流信号,以便去驱动相应的执行机构,达到控制目的; 组成:一般由接口电路、数/模转换器和电压/电流变换器组成; 核心:数/模转换器,简称D/A或DAC (digital-to-analog converter),通常也把模拟量输出通道(AO)简称为D/A通道。 D/A转换公式 D/A通道内部工作原理 ACL-8112PG采集卡在工控机中的安装 采集卡和端子板对应关系 采集卡和端子板对应关系 训练接线图 A/D转换过程 选择A/D通道,通过写多路转换控制寄存器(Base+10); 确定增益,通过写增益控制寄存器(Base+9); 选择工作模式,通过写模式控制寄存器(Base+11); 启动软件触发,通过写软件触发寄存器(Base+12) ; 判断DRDY是否为零,等待A/D完成; 从数据寄存器(Base+5)(Base+4)中读数据(inportb),先读高字节,再读低字节; 将整数值转换成模拟电压值,用作计算机显示。 模拟量通道的读写控制-A/D软件触发方式操作流程图 模拟量通道的读写控制-D/A输出操作流程 注意: 输出时,必须先写低字节,后写高字节。低字节送缓冲寄存器,当写高字节时,一起送入A/D转换器。 A/D转换需要时间(30μs),如果循环送出,对于高速的CPU,必须有延时 最简单的 D/A流程 注意: 1. D/A输出必须“先写低字节,后写高字节”。 2. D/A转换需要时间(30μs),对于高速的CPU,相邻两次D/A操作之间可能需要加等待延时。 DA转换公式 Outportb(Base+4,lbyte); Outporb(base+5,hbyte); 先写低字节,后写高字节,写完高字节,转换结束 端口地址分配 译码 A/D转换 A/D初始化 选择通道 设置增益 设置触发模式 触发A/D转换 转换完成? 读取A/D寄存器数据 转换为浮点数 Y N base+10, channel base+9, gain base+11, 1 base+12, 1 DRDY=0? base+5, base+4?A/D_word A/D_value =( A/D_word -2047)*20/4095 Y N 把浮点数转换为12位整数 把12位整数送出 延迟30μs D/A_word = D/A_value*4095/10 D/A_word?base+4(6), base+5(7) delay(30) 拆卸成高字节和低字节 将两个字节送出 outportb(Base+4+port*2,low); outportb(Base+5+port*2,high); 得到一个十进制数

您可能关注的文档

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档