zoukankan      html  css  js  c++  java
  • [iBoard 电子学堂][第八卷 设计任意波发生器] 第四篇 低速 DAC 扩展技术

    一、Board 系统D/A转换器需求

     

    数字到模拟转换器(Digital to Analog Converter,DAC),或者叫D/A 转换器,是常用的电子元器件,常用于模拟信号调理、传感器校准、波形输出、自动控制中间环节等。这一篇,我们就从实际应用出发,以iBoard 为对象,来学习DAC扩展技术。

    iBoard 包含数字存储示波器和任意波形发生器,DAC主要应用于这两个部分。系统需求如下:

     

    1. 任意波发生器幅度控制;
    2. 任意波发生器直流偏移量控制;
    3. 示波器程控增益放大控制(需要两路);
    4. 示波器直流偏移量控制;
    5. 示波器触发电平调节;
    6. 一路外扩DAC输出。

    综上所述,系统总共需要7路低速DAC。市面上,多通道、高分辨率DAC价格不菲,而且iBoard 主控处理器 STM32F103VC 包含两路 12Bit DAC输出,所以我们利用STM32F103VC 内置的DAC,通过单通道到多通道的扩展技术,来满足系统需求。

    二、一阶RC电路的瞬态响应

     

    为了更好地理解本篇所描述的DAC扩展技术,我们需要了解一下一阶RC电路的零状态和零输入相应。也可以理解为RC电路的充电、放电过程。学习本节的知识需要明白以下几个基本概念。

    n 一阶RC电路:指能通过一阶微分方程描述的动态RC电路。通俗的讲,也就是此电路经过简化后,只含有一个电容(C)的RC 电路。

    n 零状态响应:在动态电路中,如果储能元件(C或者L)的初始状态为零,仅靠输入引起的响应,称为零状态响应。

    n 零输入相应:在动态电路中,如果电路的输入为零,仅靠储能元件存储的能量激发的响应,称为零输入响应。

    n 时间常数:表征电路瞬态过程变化快慢的物理量,具有时间量纲。RC电路中,时间常数 τ=R×C,如果R单位为欧姆(Ω),C单位为法拉(F),则τ的单位为秒(s)。

    1、一阶RC电路的零状态响应

     

    图一为一阶RC电路零状态响应示意图,E为电压源,S为开关,R为电阻器,C为电容器。我们假设S闭合前电容器C中没存储电能,并定义S闭合瞬间为时间起点,即t=0。

    image

    图一 RC零状态响应示意图

    E、R、C构成回路,根据基尔霍夫电压定律,我们可以列方程式(1):

    image

    由于初始状态电容器不包含能量,所以可以得到公式(2),把公式(2)带入公式(1)可得:

    image

    求解可以得到电容C上电压 可表示为:

    image

    根据公式(3)可以算出,当t等于时间常数的时候,电容电压为 的63.2%;当t等于三倍时间常数的时候,电容电压将达到 的95%;当t等于五倍时间常数的时候,电容电压将达到 的99.3%,一般认为此时电容充电完成。

    2、一阶RC电路的零输入响应

     

    图二为一阶RC电路零输入响应示意图,E为电压源,S为开关,R为电阻器,C为电容器。我们首先把开关S打到节点 1 处,等完全充电完毕后,我们把开关S打到节点2处,并定义闭合瞬间为时间起点,即t=0。

    image

    图二 RC零输入响应示意图

    与一阶RC电路零输入响应推导过程类似,我们可以得到电容C上电压 可表示为公式(4):

    image

    根据公式(4)可以算出,当t等于时间常数的时候,电容电压为 的36.8%;当t等于三倍时间常数的时候,电容电压剩余为 的5%;当t等于五倍时间常数的时候,电容电压仅剩余0.7%,一般认为此时电容放电完成。

    三、DAC扩展电路原理

     

    图三为DAC 扩展电路硬件原理示意图,它包含三个部分:单路DAC输出、多路模拟复用器(也叫多路开关)及控制电路以及RC充放电电路。

    DAC电路利用STM32F103VC 内置的 12bit DAC,这样即简化了设计,也节约了成本。但由于其输出能力有限,我们在输出端需要加电压跟随器,来增加驱动能力。多路复用器采用74HC4051,通过STM32F103VC通用I/O端口,控制开关闭合与断开。多路开关输出后,经过RC电路保持,并经过运放缓冲输出。由于我们采用J-FET结构的运算放大器,其同相端输入阻抗高达1012 Ω,所以其影响对RC电路微乎其微。

    工作过程: STM32通过软件设置7个DAC寄存器,用于保存7路DAC的输出值;利用STM32的定时器,设定一定的溢出时间,定时器溢出后,我们首先把当前DAC寄存器的值写进内置DAC,然后通过GPIO 控制端选择多路复用器七个当中的一个端口,对RC电路进行充电,这样就完成了一个通道的电容充电。下一次定时器溢出后,同样的方法我们再写入下一个通道,逐个完成7个通道DAC输出。由于多路开关在“关”的状态下有微小的漏电流,所以我们必须周而复始的“刷”RC电路,才能保持DAC的输出值。这样,就完成了7个通道DAC扩展。

    image

    图三 DAC扩展示意图

    _______________________________________

    关于 《iBoard 电子学堂》……

    image

    《iBoard 电子学堂》是一个综合型的电子研发开发平台,适合在校学生、一线工程师及电子爱好者等。

    交流方式:

    官方博客:XiaomaGee.cnblogs.com

    官方论坛:www.oshcn.com

    官方淘宝店铺:i-Board.taobao.com

    QQ群:

    《iBoard 电子学堂 群【A】》:204255896(500人,满)
    《iBoard 电子学堂 群【B】》:165201798(500人超级群)
    《iBoard 电子学堂 群【C】》:215053598(200人高级群)
    《iBoard 电子学堂 群【D】》:215054675(200人高级群)
    《iBoard 电子学堂 群【E】》: 215055211(200人高级群)
    《iBoard 电子学堂 群【F】》: 78538605 (200人高级群)

  • 相关阅读:
    前端Tips#3
    前端Tips#2
    图算法
    【Javascript】重新绑定默认事件
    【Yeoman】热部署web前端开发环境
    添加远程链接MySQL的权限
    background-clip 背景图片做适当的裁剪
    linux系统下将php和mysql命令加入到环境变量中的方法
    background-size 设置背景图片的大小
    multiple backgrounds 多重背景
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/2405248.html
Copyright © 2011-2022 走看看