单片机 0~10V 输出电路的实现

news2024/9/20 18:39:15
聊聊单片机实现 0~10V 输出电路的几种方案   ......  by 矜辰所致

目录

  • 前言
  • 一、MCU 的 DAC
  • 二、PWM 加滤波电路
    • 2.1 PWM 输出 DAC
    • 2.2 PWM 接滤波器的RC值选择说明
    • 2.3 0~ 3.3V PWM 输出 0 ~10V
      • 方案一:RC 滤波器
      • 方案二:三极管
  • 三、专用转换芯片
  • 结语

前言

好久没有上电路小课堂的课了,也是最近项目遇到的需求,想着正好做个电路记录总结。

当然本文的电路以前我也不是全部用过,但是既然写了,那么我肯定给他画个实际的板子,每个都测试一遍。

本次的电路小课堂主要内容就是: 使用单片机如何实现 0 ~ 10V 的信号输出。

我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!

一、MCU 的 DAC

第一种方式,利用单片机自带的DAC模块,现在很多的单片机都自带了 DAC 模块,我们可以直接使用 DAC 模块的输出进行实现。

比如我们最常见的单片机供电系统为: 0 ~ 3.3V。 那么我们就可以将 0 ~ 3.3 V 放大 3倍,实现 0~ 10V 的输出。

放大电路当然是使用运放实现,在我的另外一篇博文里面总结过运放的常用电路:

常用运放电路总结记录

这里我们用到的是同相比例运放电路,如下图:

在这里插入图片描述

DAC1 为单片机的 DAC 输出,0 ~ 3.3V ,放大 3 倍。

R2 选择 3.3K 还是因为运放的对称性,选择与 R4 和 R3 并联电阻相等的阻值。

本文是电路总结记录,至于电路的效果,我需要看一看是否需要后续补充到文中,因为除了专用芯片,这种用 单电源供电的 普通运放 搭建的电路多少会存在一些问题,最典型的一个问题就是能否输出 0 V。

二、PWM 加滤波电路

第二种方式,使用 PWM 加滤波电路。

2.1 PWM 输出 DAC

如何让 PWM 波形变成模拟量输出,那就是加上滤波电路,经过一个滤波电路,可以使得PWM变成DAC输出。如下图:

在这里插入图片描述

对于具体的 滤波器的基础分析,我应该会单独写一篇文章来说明,这里我们只是提一下,知道使用 RC 滤波器可以使得 PWM 输出变成模拟电压。

上图只使用一个 RC 的滤波电路称为一阶滤波电路。

为了使得输出更加平滑,我们会使用二阶甚至多阶滤波电路。

为了使得带载能力更强,我们会使用后面接电压跟随器等运放电路。

2.2 PWM 接滤波器的RC值选择说明

对于 RC 滤波器的 RC值选择,是新手难以理解处理的一个点,这也是滤波器设计的重点之一。

我们都知道,RC低通滤波电路的截止频率:

fc=1/2πRC

这个公式非常重要,了解 RC 滤波器必须牢记的公式,截止频率公式。

截止频率实际上是输入信号幅度降低 3dB 的频率。截止频率也称为 -3 dB频率

简单几点说明(当然,如果要具体算式分析,可自行网上搜索,博主还没有写过 RC 滤波器的文章 = =!):

  • R 越小,输出损耗越大
  • R 越大,噪声纹波越大
  • C 越小(比如到达 pf 级别后),越容易被寄生电容影响
  • C 越大(比如比较大的 uf 级别后),因为电容越大,普通情况下就只能使用电解电容,但是电解电容的高频特性很差,在 RC 滤波器中尽量不要使用电解电容

说来说去,这不是这也不行那也不行? = =! 实际上就是这样,这种低成本的电路没有完美的,我们总做的就是一个权衡,在有限的成本规定范围内,设计出一个满足需要的电路。

对于本文我们的 PWM 而言,其本质上是一种高频脉冲信号,其中的高频分量会被低通滤波器滤掉,只有低频分量才能通过滤波器,形成模拟信号输出。我们要保证 PWM 的频率 远大于 RC 低通滤波器的截止频率,至少在 10 倍以上甚至数十倍,因为越往上的频率信号,滤波的效果越来越好。

很遗憾在给 PWM 信号做滤波的时候并没有一个完美的固定值范围告诉大家,一般来说 ,保持电阻在 K 级别,数百欧姆到 K级别都可以,然后电容 nf 级别,nf 到 1uf,当然这只是普通情况,还是具体情况具体分析。

涉及到的细节需要经过很多的分析,但是大家放心,在一般使用中,即便你不知道如何选择,根据网上你能找到的参考 “经验值” ,你也可以完成电路的设计。

重要的是在你按照经验值设计完电路发现问题了以后知道如何去查找问题,如何去调整参数,这是硬件设计的关键所在。

2.3 0~ 3.3V PWM 输出 0 ~10V

方案一:RC 滤波器

上面简单的说明了一下,那么上一下我们本次测试的电路:

在这里插入图片描述

图中的阻容大家可以根据自己的需求修改。

方案二:三极管

三极管的方案是参考 B 站 Eric文老师 视频中的电路,因为某些原因,不放链接,大家可以自行搜索,这里也当做借鉴分享给大家!

有一个问题,偏执电压老师讲的图上好像是 11V ,这个并不好满足,我使用一个 12 V 串联一个 二极管测试一下:

在这里插入图片描述

因为上图为借鉴,仅供参考!

三、专用转换芯片

前面的两种方式成本相对都比较低,和电平转换电路一样,0 ~10V 输出也有专门的转换芯片。

但实际上我没用过,但是既然都要测试了,那也不能落下,那么一下子也不知道什么芯片好,只能去网上搜索(虽然按我的理解是度娘搜索的芯片只能说广告做得多,并不见得好),但是也没有其他办法,于是乎经过一通搜索, 那就是这款芯片了: GP8101 。

看了一下介绍,这个芯片有一个系列,不仅有 PWM 输入的,还有 I2C 结口的:在这里插入图片描述
这里就不贴太多说明了,大家自行可以搜索,本文也就把他当做一种方案,我们直接根据推荐电路设计电路图即可:

在这里插入图片描述

结语

本文列出了使用单片机如何实现 0 ~ 10V 输出电路的不同方案。

要说最稳定省心的,肯定是使用专用芯片,如果确实对成本敏感,那就得结合实际需求考虑了。对于文章列出的几个电路,后续如果在实际测试中有新的发现,博主也会第一时间更新文章。

好了,本文就到这里,谢谢大家!

推荐阅读:

全面认识MOS管,一篇文章就够了

全面认识二极管,一篇文章就够了

聊聊电源自动切换电路(常用自动切换电路总结)

结合实际聊聊防反接电路(防反接电路总结)

结合实际聊聊电平转换电路(常用电平转换电路总结)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统(3.1)--处理机调度和作业

目录 一、处理机调度层次 1.高级调度(High Level Scheduling) 2.低级调度(Low Level Scheduling) 3.中级调度(Intermediate Scheduling) 二、处理机调度算法的目标 1.处理机调度算法的共同目标 2.批处理系统的目标 3.分时系统的目标 三、批处理系统中的作业…

【k8s完整实战教程3】k8s集群部署kubesphere

系列文章:这个系列已完结,如对您有帮助,求点赞收藏评论。 读者寄语:再小的帆,也能远航! 【k8s完整实战教程0】前言【k8s完整实战教程1】源码管理-Coding【k8s完整实战教程2】腾讯云搭建k8s托管集群【k8s完…

【C++】海量数据面试题

海量数据面试题 文章目录 海量数据面试题一、哈希切割二、位图应用1.给定100亿个整数,设计算法找到只出现一次的整数2.求两个文件交集3.在100亿个整数中找到出现次数不超过2次的所有整数 三、布隆过滤器1.求两文件交集(近似算法)2.求两文件交…

气传导和骨传导耳机哪个好?简单科普这两种蓝牙耳机

在生活中,我们经常会用到耳机,特别是在日常娱乐听歌、运动休闲、户外通勤的时候,一款舒适的耳机是必不可少的。 而最近几年,随着科技的发展,各大品牌也相继推出了各种类型的耳机,其中比较热门的就有气传导…

如何在电脑上使用wink一键高清优化短视频画质

如何在电脑上使用wink一键高清优化短视频画质 文章目录 如何在电脑上使用wink一键高清优化短视频画质1.软件简介1.1痛点1.2解决方案 2.实际操作2.1准备工作2.1.1下载雷电模拟器2.1.2下载wink 2.2.安装软件2.2.1安装雷电模拟器2.2.2在雷电模拟器中安装wink 2.3雷电模拟器基本设置…

软件测试实验:Junit单元测试

目录 前言 实验目的 实验内容 实验要求 实验过程 题目一 题目一测试结果 题目二 题目二实验结果 总结 前言 软件测试是软件开发过程中不可缺少的一个环节,它可以保证软件的质量和功能,发现并修复软件的缺陷和错误。软件测试分为多种类型&…

《数据结构》---术语篇

目录 前言: 一.术语 1.1数据 1.2数据结构 1.3逻辑结构和物理结构 二.数据类型和抽象数据类型 ​​​​​​​ ❤博主CSDN:啊苏要学习 ▶专栏分类:数据结构◀ 学习数据结构是一件有趣的事情,希望读者能在我的博文切实感受到&#xff0c…

Numpy从入门到精通——随机生成数组|特定生成数组|规则生成数组

这个专栏名为《Numpy从入门到精通》,顾名思义,是记录自己学习numpy的学习过程,也方便自己之后复盘!为深度学习的进一步学习奠定基础!希望能给大家带来帮助,爱睡觉的咋祝您生活愉快! 这一篇介绍《…

Qt内存管理及泄露后定位到内存泄漏位置的方法

Qt内存管理机制 Qt使用对象父子关系进行内存管理。在创建类的对象时,为对象指定父对象指针。当父对象在某一时刻被销毁释放时,父对象会先遍历其所有的子对象,并逐个将子对象销毁释放。 Qt内存管理代码示例 QLabel *label new QLabel;这里…

【==是判断相等吗?---错辣】C++和JAVA中判断字符串值相等的区别

文章目录 先上结论C中stringJAVA中String回顾结论 参考文章:这里;这里;这里 先上结论 C中的string类型可以使用和!来判断两个字符串的值是否相等;而JAVA不行,JAVA中和!是用来判断两个字符串的地址是否相同&#xff08…

c++学习之类与对象3

目录 成员变量和函数的存储 this指针 this指针的工作原理 this指针的应用 const修饰的成员函数 友元 友元的语法 1.普通全局函数成为类的友元 2.类的某个成员函数作为另一个类的友元 整个类作为另一个类的友元 运算符重载 1 运算符重载的基本概念 2 重载加号运算符…

MySQL数据库学习笔记之存储引擎

存储引擎 MySQL体系结构 连接层 最上层是一些客户端和连接服务,主要完成一些类似于连接处理、授权认证、以及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 第二层架构主要完成大多数的核心服务功能,如SQL接口&am…

【JavaScript】6.DOM

文章目录 DOM1. 简介2. 获取元素2.1 根据 ID 获取2.2 根据标签名获取2.3 通过 HTML5 新增的方法获取2.4 特殊元素获取 3. 事件基础3.1 事件概述3.2 事件三要素3.3 执行事件步骤 DOM 1. 简介 文档对象模型(Document Object Model,简称 DOM)&…

web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)

一、什么是web自动化测试? Web自动化测试是指使用自动化工具模拟用户在Web浏览器中执行的操作,通过编写脚本来自动化执行测试用例,以验证Web应用程序的功能、性能和兼容性等方面的质量。其主要目的是降低测试成本和时间,并提高测试效率和准…

LDAP未授权漏洞验证

因为工作需要,这里验证了下LDAP未授权。 以下是收集到的资料,最后是具体使用!!!!! 更新 2)连接ad域有两个地址: ldap://http://XXXXX.com:389 和 ldap://http://XXXXX.…

算法的时间复杂度和空间复杂度(2)

计算斐波那契递归Fib的时间复杂度&#xff1f; long long Fib(size_t N) { if(N < 3) return 1; return Fib(N-1) Fib(N-2); } 因为递归先递推后回归&#xff0c;看起来规律像等比数列&#xff0c;也可以用错位相减法&#xff0c;因为斐波那契数列到第二项就不会再计算了&a…

传输层重点协议之【UDP协议】

1. UDP协议端格式 2. UDP的特点 2.1 无连接 知道对端的IP和端口号就直接传输&#xff0c;不需要建立连接 2.2 不可靠 没有任何的安全机制&#xff0c;发送端发送数据报后&#xff0c;如果因为网络故障数据报无法发送对方&#xff0c;UDP协议层也不会给应用层返回任何错误信…

第六章 Linux实际操作——实用指令

第六章 Linux实际操作——实用指令 6.1 指定运行级别6.2 找回root密码6.3 帮助指令6.3.1 man获得帮助信息6.3.2 help指令6.3.3 搜索引擎帮助更直接 6.4 文件目录类6.4.1 pwd指令6.4.2 ls指令6.4.3 cd指令6.4.4 mkdir 指令6.4.5rmdir指令删除空目录6.4.6 touch 指令6.4.7 cp 指令…

火山引擎边缘云,助力业务敏捷创新

[中国&#xff0c;上海&#xff0c;4 月 18 日]2023 春季火山引擎 FORCE 原动力大会正式举办。大会主论坛&#xff0c;火山引擎总裁谭待围绕云上增长三要素发表了重要演讲。在敏捷迭代专题中&#xff0c;谭待分享了火山引擎边缘云连接与计算无处不在的理念&#xff0c;并于现场…

【fluent udf】定义源项宏时,在迭代计算过程中UDM变量变inf、NAN、发散时如何解决?

一、问题背景 最近做的一个fluent仿真算例里用到源项宏&#xff0c;源项宏里用UDM定义了树脂固化度场。 在迭代计算的过程中&#xff0c;UDM的取值发散成了无穷大inf&#xff08;第一次计算取值是NAN&#xff09;&#xff0c;如下图所示。 由于每一次迭代计算过程中&#xf…