STM32 DA数字模拟转换原理

单片机学习!

目录

前言

一、AD与DA

二、AD与DA硬件电路模型

三、运算放大器

四、运放电路

4.1 电压比较器

4.2 反相放大器

4.3 同相放大器

4.4 电压跟随器

五、DA原理

总结


前言

        之前文章讲述了STM32中AD模拟数字转换器的内容,文中AD原理中涉及DA原理的内容。本文就介绍了DA数字模拟转换的基础内容。


一、AD与DA

  • AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号。
  • DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号。
  • AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理提供了可能。

二、AD与DA硬件电路模型

  • AD转换通常有多个输入通道,用多路选择开关连接至AD转换器,以实现AD多路复用的目的,提高硬件利用率。
  • AD/DA与单片机数据传送可使用并口(速度快、原理简单),也可使用串口(接线少、使用方便)。
  • 可将AD/DA模块直接集成在单片机内,这样直接写入/读出寄存器就可进行AD/DA转换,单片机的IO口可直接复用为AD/DA的通道。

        一般传感器的电阻阻值会随着传感器的参量变化而变化。AD是对电压进行转换,AD只能读取电压。想要把传感器电阻的变化转化为电压的变化就需要在可变电阻上再串一个电阻,如上图所示,两个电阻两边一头接正极,一头接负极。可变电阻的变化就会引起两电阻中间电压的变化,电压变化的模拟量通过AD转换后就可以得到数字量。读取数字量之后就可以知道电压了。

        模拟量和数字量的转化0V对应0,4V对应255,中间都是一一对应的线性正比关系。

        DA就是AD的反过程,单片机输出一个数字量,数字量通过DA转换后就可以得到一个对应的模拟量输出电压。

        图中所示的是一个8位的AD\DA转换,当然也有更高位的转换,如12位、16位等。位数越高转换越精确。


        为了增加AD的复用性,AD转换通常会有多个输入通道。多个AD输入会由选择开关来选择需要转换的一路进行AD转换。这样一个AD转换的硬件资源就可以转换多个通道的输入。

        而DA转换只有一个输入通道。因为模拟量是连续的,数字量是离散的。AD转换是输出离散的数字信号,可以取模拟信号的某一点输出为数字信号;而DA转换中需要输出模拟信号是连续的,不能间断交替通道输出。

        AD/DA与单片机数据传送可使用并口,图中所示就为并口转换。AD/DA与单片机数据传送也可使用串口,串口传送就是一位一位数据进行传送,如使用I2C、SPI等一位一位的进行传送,

  • 并口传送优点:速度快、原理简单。
  • 串口传送优点:接线少、使用方便。

三、运算放大器

        因为DA转换里面经常会有运算放大器的知识,所以先来了解一下运算放大器。

  • 运算放大器(简称“运放”)是具有很高放大倍数的放大电路单元。内部集成了差分放大器、电压放大器、功率放大器三级放大电路,是一个性能完备、功能强大的通用放大电路单元,由于其应用十分广泛,现已作为基本的电路元件出现在电路图中。
  • 运算放大器可构成的电路有:电压比较器、反相放大器、同相放大器、电压跟随器、加法器、积分器、微分器等。
  • 运算放大器电路的分析方法:虚短、虚断(负反馈条件下)。

        运算放大器本身是个集成电路,并不是像电阻电容这样单独的元件。运放内部集成了较为复杂电路。因为运放经常会使用到,内部形式比较固定,所以就将运放内部的复杂电路集成起来封装在一起。

运放特性:

  • 运算放大器输入阻抗特别大,输入端几乎是不流进电路也不流出电流,以避免运算放大器对前极电路的影响。
  • 运算放大器内部有功率输出这一极,它的输出端是有驱动能力的。
  • 运算放大器为了可以调节它的放大倍数,就将它的放大倍数也就是放大增益设置为无穷大。

        放大倍数的调节需要加一个负反馈,运算放大器的放大倍数不由它内部的放大倍数决定,而是由它外部的放大系数决定。

虚短: 集成运算放大器的开环放大倍数很大,一般通用型的运算放大器的开环电压放大倍数都在80dB以上,但是运放的输出电压是有限制的,一般在10V~14V,然而运放的差模输入电压不足1 mV,因此可以输入两端可以近似等电位,就相当于短路。 开环电压放大倍数越大,两输入端的电位越接近相等,这种特性称之为虚短。

虚断: 集成运算放大器具有输入高阻抗的特性,一般同向输入端和反向输入端的输入电阻都在1MΩ以上,所以输入端流入运放的电流往往小于1uA,远小于输入端外电路的电流。所以这里通常可把运放的两输入端视为开路,并且运放的输入电阻越大,同向和反向输入两端越接近开路。在运放处于线性状态时,根据这个特性可以把两输入端视为等效开路,简称虚断。

四、运放电路

4.1 电压比较器

        电压比较器:将运算放大器的正输入端(同相输入端)和负输入端(反相输入端)的两个电压大小进行比较。

  • 若IN+的电压大于IN-的电压,则OUT输出高电平;
  • 若IN+的电压小于IN-的电压,则OUT输出低电平;
  • 若IN+的电压等于IN-的电压,则OUT输出的电平高低不定,出现震荡。

4.2 反相放大器

        反向放大器:输入和输出的信号相位相反,放大倍数由R1和R2共同决定。

        反相放大器是一个放大倍数可调的放大器,反相放大器在负反馈情况下的应用,由上述公式可以看出,控制电阻R2和R1就可以控制放大倍数。

例如在方向放大器输入端电压信号只有0V到0.1V很微弱的变化,

  • 此时如果R1接1k电阻,R2接20k电阻,那么电压信号就可以进行2倍放大;
  • 此时如果R1接1k电阻,R2接20k电阻,那么电压信号就可以进行20倍放大。

        反相放大器的放大倍数可以通过R1和R2很灵活的调节,反相放大器内部实现的原理首先看运算放大器,运算放大器最基本的作用还是做电压比较器:如果同相输入端+大于反相输入端-就输出高电平;如果反相输入端-大于同相输入端+就输出低电平。

        在运算放大器上加上负反馈电路构成反相放大器之后,整个电路的输入输出电压就会不一样。

        假设输入一个0.1v的电压,那在初始状态下A点电压也是0.1V,那在初始状态下反相输入端-的输入电压就是0.1V,同相输入端+接GND,所以是0V。反相输入端-的0.1V大于同相输入端+的0V,就会输出一个负的最大电压,负的最大电压又会通过R2电阻反馈,反馈回到A点,相当于一个下拉,就会抑制0.1V,所以0.1V电压就会下降。输入端IN到A点的电路相当于对电压上拉;B点到A点的电路相当于对电压下拉。当电压下降到0V以下的时候,同相输入端+的0V就会大于反相输入端-的电压,那输出就会输出正的最大电压,正的最大电压又会通过R2电阻反馈,反馈回到A点,这时B点到A点的电路就相当于一个上拉,就会拉高A点电压,电压又会上升,升到大于0V时,又会被抑制下拉,下降到0V以下又会被上拉,电压上升,... ...,直到达到稳态。这个稳态的状态下反相输入端-的电压和同相输入端+的电压相等时,这里也就是都等于0V时,输出才停止。这时形成的状态就叫做虚短。

        虚短就是电路负反馈状态下,反相输入端-和同相输入端+的电压是相等的。

        虚断就是电路的输入阻抗比较大,电流既不流入也不流出。

4.3 同相放大器

同向放大器:输入和输出的信号相位相同,放大倍数由R1和R2共同决定。

4.4 电压跟随器

        电压跟随器效果:输出电压等于输入电压,就是输入电压波形怎么变,输出电压的波形就跟着怎么变。

        电压跟随器作用:在电路中使用电压跟随器可以提高信号的驱动能力。因为运算放大器内部有功率放大器,运算放大器加一个电阻R2构成电压跟随器后,可以把没有驱动能力的信号变成一个有驱动能力而且和原来一模一样的信号。

五、DA原理

        图中D7、D6、D5、D4、D3、D2、D1、D0是8位的输入数字量,输入数字量这里给的是高低电平,可以控制上方模拟开关,模拟开关可以接0或1。电路最终的输出是运算放大器的输出。

        在第二个公式中,VREF是参考电压,如果VREF接5V电压的话,就会对5V进行256等分,取多少份就是由D7~D0数字量控制。如果数字量组合出来的数字是128,根据公式128/256也就是1/2,那输出的电压就是5V的1/2,2.5V。

        AD转换就是按数字量的比例来从参考电压中等分出模拟电压。


总结

        以上就是今天要讲的内容,本文仅仅简单介绍了DA数字模拟转换的原理和DA原理所涉及的一些电路知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/562935.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用python selenium实现短视频一键推送

https://github.com/coolEphemeroptera/VIVI 效果如下 demo 支持youtube视频搬运

【数据结构】顺序表:与时俱进的结构解析与创新应用

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 数据结构与算法 先赞后看,已成习惯 创作不易,多多支持! 目录 一、数据结构的概念 二、顺序表(Sequence List) 2.1 线性表的概念以及结构 2.2 顺序表分类 …

华为开源自研AI框架昇思MindSpore应用案例:数据处理性能优化

如果你对MindSpore感兴趣,可以关注昇思MindSpore社区 数据是整个深度学习中最重要的一环,因为数据的好坏决定了最终结果的上限,模型的好坏只是去无限逼近这个上限,所以高质量的数据输入,会在整个深度神经网络中起到积极…

嵌入式Linux开发实操(十八):Linux音频ALSA开发

应用程序程序员应该使用库API,而不是内核API。alsa库提供了内核API 100%的功能,但增加了可用性方面的主要改进,使应用程序代码更简单、更美观。未来的修复程序或兼容性代码可能会放在库代码中,而不是放在内核驱动程序中。 使用ALSA API和libasound进行简单的声音播放: /*…

用全连接对手写数字识别案例(附解决TensorFlow2.x没有examples问题)

数据集介绍 数据集直接调用可能出现问题,建议从官网直接下载下来,下载存在这四个文件 手写数字识别数据集下载: 链接:https://pan.baidu.com/s/1nqhP4yPNcqefKYs91jp9ng?pwdxe1h 提取码:xe1h 55000行训练数据集&a…

CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 本文介绍如何使用Linux docker方式快速安装Plik并且结合Cpolar内网穿透工具实现远程访问,实现随时随地在任意设备上传或者…

Asciinema:一款强大的终端录屏工具

最近看见一个好的终端录屏工具,现在记录一下并进行分享。 终端录屏工具asciinema是一个免费和开源的解决方案,用于记录终端会话并在网上分享。它支持在终端内直接录制,提供播放、复制粘贴和嵌入功能。安装方面,支持多种操作系统&…

Git 原理及使用 (带动图演示)

文章目录 🌈 Ⅰ Git 安装🌙 01. Linux - centos 🌈 Ⅱ Git 工作区、暂存区和版本库🌙 01. 认识工作区、暂存区和版本库🌙 02. 使用 Git 管理工作区的文件 🌈 Ⅲ Git 基本操作🌙 01. 创建本地仓库…

使用代理绕过网站的反爬机制

最近在尝试收集一些网络指标的数据, 所以, 我又开始做爬虫了。 :) 我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么的美好,然而一杯茶的功夫可能就会出现错误…

YOLOv9改进策略 | Conv篇 | 利用YOLO-MS的MSBlock二次创新RepNCSPELAN4(全网独家创新)

一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块),我们将其用于RepNCSPELAN中组合出一种新的结构,来替换我们网络中的模块可以达到一种轻量化的作用&#xff…

Vue3+TS版本Uniapp:项目前置操作

作者:前端小王hs 阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主 环境:使用vscode进行开发 如果一开始是使用的HbuilderX,请看hbuilderX创建的uniapp项目转移到vscode 为什么选择vscode?有更好…

Ceph 分布式文件系统 搭建及使用

一、Ceph 介绍 在当今数据爆炸式增长的时代,企业对于可靠、可扩展的存储解决方案的需求日益迫切。Ceph 作为一种开源的、可伸缩的分布式存储解决方案,正逐渐成为企业级存储领域的热门选择。Ceph是一种由Radicalbit公司开发的开源分布式存储系统&#xf…

学习微服务nacos遇到的问题

在学习微服务注册到nacos的时候&#xff0c;所有过程都正确了&#xff0c;注册也成功了&#xff0c;但是访问不了调用的地址报错出现问题。 一、引入依赖 在cloud-demo父工程的pom文件中的<dependencyManagement>中引入SpringCloudAlibaba的依赖 1、springboot <pa…

【系统分析师】软件工程

文章目录 1、信息系统生命周期2、软件开发模型2.1 原型及其演化2.2 增量模型和螺旋模型2.3 V模型、喷泉模型、快速应用开发2.4 构件组装模型2.5 统一过程-UP2.6 敏捷方法 3、逆向工程4、净室软件工程 【写在前面】 记录了一系列【系统分析师】文章&#xff0c;点击下面的链接&a…

Python 全栈安全(二)

原文&#xff1a;annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第二部分&#xff1a;认证与授权 本书的第二部分是最具商业价值的部分。我这样说是因为它充满了大多数系统需要具备的实用工作流示例&#xf…

Linux 系统systemd(pid=1)占用80端口导致web程序无法启动

背景 linux系统内安装了例如nginx的网站程序&#xff0c;但是无法正常启动&#xff0c;netstat 查看下 80端口被 systemd 占用。 处理方法 注意务必组好快照备份后再操作。 做好备份后将/usr/lib/systemd/system 内http相关的配置文件重命名后重启主机恢复正常。 重启后正常 sy…

分类神经网络2:ResNet模型复现

目录 ResNet网络架构 ResNet部分实现代码 ResNet网络架构 论文原址&#xff1a;https://arxiv.org/pdf/1512.03385.pdf 残差神经网络(ResNet)是由微软研究院的何恺明、张祥雨、任少卿、孙剑等人提出的&#xff0c;通过引入残差学习解决了深度网络训练中的退化问题&#xff…

【FFmpeg】视频与图片互相转换 ( 视频与 JPG 静态图片互相转换 | 视频与 GIF 动态图片互相转换 )

文章目录 一、视频与 JPG 静态图片互相转换1、视频转静态图片2、视频转多张静态图片3、多张静态图片转视频 二、视频与 GIF 动态图片互相转换1、视频转成 GIF 动态图片2、 GIF 动态图片转成视频 一、视频与 JPG 静态图片互相转换 1、视频转静态图片 执行 ffmpeg -i input.mp4 …

云原生Kubernetes: K8S 1.29版本 部署ingress-nginx

目录 一、实验 1.环境 2. K8S 1.29版本 部署ingress-nginx 二、问题 1.kubectl 如何强制删除 Pod、Namespace 资源 2.创建pod失败 3.pod报错ImagePullBackOff 4.docker如何将镜像上传到官方仓库 5.创建ingress报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表…

数据结构 - 顺序表

一. 线性表的概念 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的…