一、简介

PWM就是Pulse Width Modulation,脉冲宽度调制。

假设一个PWM信号,V = +5V,CLK = 13KHz,Duty = 50%,那么它输出的信号就可以看成是一个+2.5V的直流信号。

二、PWM的分辨率

假设(1)芯片自带的PWM模块分辨率为10bit

(2)PWM信号参数为:Voltage = +5V,CLK = 13KHz,Duty = 50%

分析:

(1)PWM模块的分辨率为10bit,那么它的可以分为1024个等级,所以一个周期可以分为1024个刻度。所以说,每一个刻度对应的电压可以是5V的1/1024,即4.88mV左右。所以可以在0-5V区间内,实现4.88mV的步进。

(2)若PWM的时钟为25MHz的话,其输出的PWM信号最高频率可达24.4KHz左右。

计算过程:分辨率为10bit,那么PWM内部的计数cnt最高就从0-1023,而每次计数的间隔周期是1/25MHz,所以得出PWM信号频率为24.4KHz左右。

(3)也就说,在同一个输入时钟情况下,若要到达同一个电压,分辨率越高,所需要的计数cnt就越多,波形就越精细

三、PWM信号转换成直流信号

PWM信号可以使用RC低通滤波器(如下图所示)来实现将PWM信号转换成等效的直流信号。

RC滤波器的截止频率计算公式为f = 1/(2π×RC),也就是-3dB,换算过来为0.707倍,即输入1V,输出0.707V。  衰减增益的计算公式为 X dB = 20×lg(Au)。其中Au为增益。若增益Au为10^(-3/20),换算过来分别就是0.707倍,-3dB。

原理:PWM信号的正周期会对RC滤波电路中的电容充电,而负周期则是电容对外放电。这样,电容随着PWM信号而充电、放电,从而使电容的电压在PWM信号等效的直流信号附近波动。

由于电容C需要充电,而且充电的时间常数为RC,存在充电电阻R,所以电容C无法跟随输入电压的高频部分变换而变换,从而将高频部分滤除掉。

具体来说,就是PWM信号经过傅立叶变换后,2.5V是直流分量,高频分量就被滤除掉了。或者这样理解,就是一个周期内积分的平均值。如下图所示,经过滤波后,直流部分的增益为4dB左右,也就是说,直信号的振幅为10^(4/10)=2.5V。

接下来,我们使用FilterLab软件来模拟一个特定滤波器的增益曲线:

该低通滤波器的截止频率为48.3Hz,对应的增益曲线如上图所示。当频率为13KHz时候,对应的增益为-46dB左右,也就是10^(-46/20) = 0.005倍左右。

也就是说,我们对一个13KHz的PWM信号滤波,使其成为直流信号,使用该参数的低通滤波器是可以的,其纹波信号会衰减到0.005倍。

四、电路模拟

我们用Multisim软件来进行仿真。需要注意的是时间常数τ=RC会影响电容的充电时间,也就是会影响到达稳点电压的时间。

那么,用LTspice软件进行模拟来得到更精细的波形,对滤波后的波形放大来看,可以发现其纹波是比较小的。之所以有纹波,是因为RC滤波器的截止频率不够低,滤不掉所有的噪声。

linux控制pwm输出个数,使用PWM控制来实现电压的变化控制相关推荐

  1. linux控制pwm输出个数,树莓派精确控制pwm输出,控制步进电机

    首先需要wiringPi,我自己的系统有,如果你没有,自行下载,很简单,可以看看  /usr/include/wiringPi.h,有的话就是OK, 其次介绍几个pwm相关的主要设置函数 1:pwmS ...

  2. 单片机 c语言 pwm输出,单片机中PWM程序工作原理图文详解

    描述 #include//程序是基于KEIL-C51编写,引入8051头文件sbit P10=P1^0; sbit P11=P1^1;unsigned int scale;   //占空比控制变量vo ...

  3. stm32f407 四路pwm输出_STM32之---PWM

    什么是PWM PWM..英语好的人估计又知道这三个大写字母代表哪三个英语单词了.小弟不才,就说中文意思好了:脉冲宽度调制, STM32的PWM,可谓是小强中的小强,STM32的PWM,就是由定时器产生 ...

  4. 使用PWM控制来实现电压的变化控制

    一.简介 PWM就是Pulse Width Modulation,脉冲宽度调制. 假设一个PWM信号,V = +5V,CLK = 13KHz,Duty = 50%,那么它输出的信号就可以看成是一个+2 ...

  5. Linux驱动-使用软定时器实现PWM输出

    Linux驱动-使用软定时器实现PWM输出 ​ 在没有pwm外设的情况下,可以使用定时器+GPIO的方法来实现pwm输出,实现pwm频率和占空比可控的功能.本文实现了一个Linux内核驱动,使用两个软 ...

  6. 树莓派c语言输出pwm波,树莓派硬件PWM输出程序

    一:实验现象 对于树莓派硬件PWM只有1号引脚(wiringPi),单独测试该引脚时,可以输出不同占空比控制led灯成呼吸灯的效果 二:程序步骤 1,初始化wiringPi的库函数; 2,设置对应的P ...

  7. STM32入门笔记(02):定时器之定时器中断、输入捕获和PWM输出(SPL库函数版)

    目录 定时器 8个定时器 定时器功能 定时器中断 常用通用定时器的寄存器 定时器中断实验目的: 定时器库函数及步骤 实验程序讲解 PWM 简介 STM32 PWM工作过程 PWM模式1 与 PWM模式 ...

  8. STM32CubeMX之定时器PWM输出

    STM32CubeMX之定时器PWM输出 知识百科 – PWM简介   PWM是一种对模拟信号电平进行​​ ​​数字编码​​​​​的方法.通过高​​ ​​分辨率​​​​计数器的使用,方波的占空比被调制 ...

  9. STM32 PWM输出实验

    定时器用来产生PWM输出: STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通 ...

  10. NXP JN5169使用定时器进行PWM输出和定时功能

    NXP JN5169使用定时器进行PWM输出和定时功能 一.定时器介绍 1.定时器介绍 2.定时器可操作的模式 3.定时器DIO 4.定时器和PWM模式 5.定时器中断 二.实现代码 1.PWM输出 ...

最新文章

  1. 红旗linuxcentos_用红旗Linux 11的体验报告,附使用红旗Linux 11截图
  2. 在VMware Workstation上安装Ubuntu 16.04 Server操作系统
  3. 独立开发者:新手做2D手游该用哪些工具?
  4. Salted Password Hashing
  5. python中使用什么注释语句和运算_Python基础知识
  6. Swift基础之方法实战
  7. 介绍开源的.net通信框架NetworkComms
  8. 企业实战(Jenkins+GitLab+SonarQube)_10_Jenkins通过Depoly插件热部署Java程序
  9. 利用request库请求api
  10. [Erlang危机](4.4)命名管道
  11. 跟随冒号畅游编程世界
  12. php垂直居中代码_纯css实现水平和垂直居中
  13. 监理延期 验收工程款制约三方
  14. python自动化办公教程-Python自动化办公之操作Excel文件
  15. file js new 传到后台_JS读取文件且AJAX传输到后台
  16. matlab 数字水印攻击 jpeg压缩,基于DFT的数字水印技术研究及模拟.doc
  17. C# Message类的属性Msg所关联的消息ID
  18. Unresolveable build extension: Plugin...or one of its dependencies could not be resolved: Failed to
  19. 楚留香获取服务器信息卡主,楚留香手游沧海主线任务bug原因及解决方法一览
  20. 关于Axure-9组合交互内联框架问题

热门文章

  1. OpenGl图元基本操作之点选高亮
  2. 流迭代器实现文件操作(读取和写入)
  3. 使用WIN32汇编语言实现一个基本windows窗口的过程分析
  4. 微软制作win7启动U盘的工具
  5. 【微信小程序】小程序代码基本组成结构
  6. php html ubb,PHP写的UBB代码转换HTML代码
  7. 网络设备自动化运维工具——ansible入门笔记
  8. C语言 数据结构 结构体 LinkList
  9. 如何下载微信开发者工具?
  10. Python游戏汇总:三十个pygame游戏代码【附源码免费分享】