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

2023-05-16

聊聊单片机实现 0~10V 输出电路的几种方案   ......  by 矜辰所致
...更新测试结果 ,文中电路全部完成测试,都是可行电路    				2023/5

目录

  • 前言
  • 一、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。

更新测试效果,第一种使用 DAC 直接放大3倍,感觉直接看起来还是挺满意的,直接上测试图:

在这里插入图片描述

上面我通过自己手动设置 DAC 的值,输出的不同状态效果。

二、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 滤波器

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

在这里插入图片描述

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

测试:

在上文我们说过,我们可以算出 RC低通滤波器的截止频率,我们要保证 PWM 的频率 远大于 RC 低通滤波器的截止频率。

如果 PWM 的频率比较低会怎样,比如,我 PWM 周期为 1HZ,然后占空比设置为50% ,直接给大家看一个图:

在这里插入图片描述

进一步的修改一下,把 PWM 的频率稍微修改一下,对于我测试的其实也就是 定时器的频率,如下:

在这里插入图片描述

根据公式

Tout = ((arr+1)*(psc+1))/Tclk ; // 32MHz 主频

定时器周期为 1 ms, 其实也就表示频率为 1KHz,为了方便表示占空比 0~ 100 对应,上面的 arr 改成了100, 实际上也是 1KHz 左右,再来看看效果:

在这里插入图片描述

实际上我测试的时候没有特意的去调整阻容的值,就直观上看起来效果还是可以的(上图的毛刺多是因为示波器 GND 的线夹得太远了)。

方案二:三极管

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

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

在这里插入图片描述

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

如果要保证输出不超过 10V ,那么偏置电压最好也选择 10V ,去掉上面的 D3 比较合适,因为这样最高接近 12V 输出了。

三、专用转换芯片

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

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

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

在这里插入图片描述

测试其实和上面一样,设置不同的占空比,看示波器,结果还是很好的。

结语

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

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

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

推荐阅读:

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机 0~10V 输出电路的实现 的相关文章

  • grub2引导linux内核,启动流程、模块管理、BootLoader(Grub2)

    系统启动是一项非常复杂的程序 xff0c 因为内核得先检测硬件并加载适当的驱动程序后 xff0c 接下来则必须要调用程序来准备好系统运行的环境 xff0c 让用户能够顺利操作主机系统 如果你能够理解开机的原理 xff0c 那么将有助于你在系
  • freertos串口中断使用HAL_UART_RxCpltCallback问题记录

    项目场景 xff1a 在MX USART1 UART Init中调用HAL UART Receive IT amp huart1 RxBuffer 1 当串口接收1字节后会调用HAL UART RxCpltCallback函数 记录1 HA
  • STM32 CAN知识总结

    STM32 CAN知识总结 一 CAN物理特性 can总线显性为0 xff0c 隐形为1 xff0c 类似线与的特点 二 CAN帧有五种 xff1a 数据帧 远程帧 错误帧 过载帧 帧间隔 其中数据帧最为常见 CAN数据帧结构上由7个段组成
  • 【STM32】STM32CubeMX使用FreeRTOS教程1----定时器学习

    STM32 STM32CubeMX使用FreeRTOS教程1 定时器学习 前言 本教程将对应外设原理 xff0c HAL库 STM32CubeMX和FreeRTOS结合在一起讲解 xff0c 分析学习过程中遇到的问题和一些注意事项 知识概括
  • base64测试图片(图片转base64转图片)

    可用这个网站将图片转换成base64数据 xff1a http www ab173 com gongju ui image2base64 php data span class token operator span image span
  • ubuntu系统拷贝到另外一台电脑上的VMware上(详细简单)

    1 找到原始电脑上ubuntu的文件夹 xff0c 并将整个文件夹拷贝至U盘 打开VMware 右键原电脑中的ubuntu系统 设置 选项 工作目录 回到windows打开E盘找到文件夹ubuntu进行拷贝 2 将U盘内容拷贝到另一台电脑
  • 15款c语言编译器,C/C++开发者必备的15款编译器+IDE推荐

    Web开发者可选择的编程语言有很多比如 xff0c Java Net PHP Ruby Perl Python等等 xff0c 但是今天我们要讨论的是两个古老且非常流行的语言 xff0c 即C C 43 43 正是由于其迷人的特性 xff0
  • 钉钉机器人定点执行制作流程

    一 钉钉机器人的实现主要分为三个步骤 xff1a 1 钉钉群机器人制作 xff1b 2 钉钉群机器人接口开发 xff1b 3 服务器shell脚本与计划任务编写 二 钉钉群机器人的制作 进入要添加机器人的目标群后 到这里群机器人已经添加完成
  • HiveQL:查询(五)

    select field from table select from sogou 20111230 limit 3 select from sogou sogou 20111230 limit 3 可以在别的数据库下 xff0c sele
  • Linux 学习笔记(四)

    grup引导文件 root 64 localhost 桌面 vim boot grub grub conf default 61 0 timeout 61 5 splashimage 61 hd0 0 grub splash xpm gz
  • MySQL 常用sql语句

    1 navicat讲解 1 安装navicat xff0c 破解软件 2 Access denied for user 39 root 39 64 192 168 48 10 using password YES 的解决办法如下 xff1a
  • 搭建vsftp虚拟用户

    一 xff1a 基本知识 1 xff1a 虚拟用户 xff1a 与系统无关联 xff0c 不能登入系统 xff0c 只能访问FTP服务器 2 xff1a vsftp的服务进程是vsftpd 3 xff1a vsftpd的配置文件是 etc
  • Mysql: Access denied for user 'root'@192.168.48.10(using password:YES)

    Access denied for user 39 root 39 64 192 168 48 10 using password YES 的解决办法如下 xff1a mysql gt GRANT ALL PRIVILEGES ON TO
  • 根据日期判断当前是周几

    span class token comment 64 method 根据日期判断今天周几 64 param date 日期格式为字符串2018 01 01 span span class token keyword function sp
  • if、while、for及break、continue终止循环操作

    if while for及break continue终止循环操作 吃了一次while与if的亏 xff0c 让程序陷入死循环 xff0c 现在来分享总结一下 xff0c 顺便说说终止循环的操作 1 if 条件判断 if 通常用与条件判断
  • 键盘轴知识(点触式、线性式、段落式)

    文章目录 点触式 线性式 段落式轴命名简介 点触式 线性式 段落式 点触式 线性式和段落式是机械键盘轴的三种常见触发方式 xff0c 它们的区别主要在于按键触发的方式和手感表现上 点触式 xff1a 点触式轴是指按下按键时需要先克服一定的阻
  • word里面公式自动编号和按章节自动编号

    众所周知 xff0c word里面实现公式的排版 xff0c 确实是一件很难的事情 传统做法就是通过公式的居中 xff0c 然后手写编号 xff0c 不断地进行enter 43 空格键来实现编号对齐右侧 这种做法即使浪费了大量的时间经理也仅
  • 树莓派3B+squid3搭建http代理服务器

    欢迎移步博主小站 xff1a 白亮吖雅黑丫 小站 树莓派3B 43 squid3搭建http代理服务器 树莓派3B 43 squid3搭建http代理服务器1 安装squid32 配置squid3 打开squid3配置文件 修改配置文件 3
  • FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)

    目录 1 STM32CubeMX下配置第一个FreeRTOS工程问题1 为什么不能使用System tick 分析问题2 为什么选择CMSIS v1 分析 2 STM32CubeMX中 FreeRTOS 的配置说明2 1 Config Pa
  • 嵌入式常用总线协议记录(I2C,SPI, Modbus 485, CAN...)

    常用的总线协议 xff0c I2C xff0c SPI xff0c CAN xff0c MODBUS RTU485 xff0c 随笔记录 xff0c 除了CAN总线 xff0c 其他都用过无数次了 xff0c 有时间再补一补把 xff0c

随机推荐