linux控制pwm输出个数,使用PWM控制来实现电压的变化控制
一、简介
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控制来实现电压的变化控制相关推荐
- linux控制pwm输出个数,树莓派精确控制pwm输出,控制步进电机
首先需要wiringPi,我自己的系统有,如果你没有,自行下载,很简单,可以看看 /usr/include/wiringPi.h,有的话就是OK, 其次介绍几个pwm相关的主要设置函数 1:pwmS ...
- 单片机 c语言 pwm输出,单片机中PWM程序工作原理图文详解
描述 #include//程序是基于KEIL-C51编写,引入8051头文件sbit P10=P1^0; sbit P11=P1^1;unsigned int scale; //占空比控制变量vo ...
- stm32f407 四路pwm输出_STM32之---PWM
什么是PWM PWM..英语好的人估计又知道这三个大写字母代表哪三个英语单词了.小弟不才,就说中文意思好了:脉冲宽度调制, STM32的PWM,可谓是小强中的小强,STM32的PWM,就是由定时器产生 ...
- 使用PWM控制来实现电压的变化控制
一.简介 PWM就是Pulse Width Modulation,脉冲宽度调制. 假设一个PWM信号,V = +5V,CLK = 13KHz,Duty = 50%,那么它输出的信号就可以看成是一个+2 ...
- Linux驱动-使用软定时器实现PWM输出
Linux驱动-使用软定时器实现PWM输出 在没有pwm外设的情况下,可以使用定时器+GPIO的方法来实现pwm输出,实现pwm频率和占空比可控的功能.本文实现了一个Linux内核驱动,使用两个软 ...
- 树莓派c语言输出pwm波,树莓派硬件PWM输出程序
一:实验现象 对于树莓派硬件PWM只有1号引脚(wiringPi),单独测试该引脚时,可以输出不同占空比控制led灯成呼吸灯的效果 二:程序步骤 1,初始化wiringPi的库函数; 2,设置对应的P ...
- STM32入门笔记(02):定时器之定时器中断、输入捕获和PWM输出(SPL库函数版)
目录 定时器 8个定时器 定时器功能 定时器中断 常用通用定时器的寄存器 定时器中断实验目的: 定时器库函数及步骤 实验程序讲解 PWM 简介 STM32 PWM工作过程 PWM模式1 与 PWM模式 ...
- STM32CubeMX之定时器PWM输出
STM32CubeMX之定时器PWM输出 知识百科 – PWM简介 PWM是一种对模拟信号电平进行 数字编码的方法.通过高 分辨率计数器的使用,方波的占空比被调制 ...
- STM32 PWM输出实验
定时器用来产生PWM输出: STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通 ...
- NXP JN5169使用定时器进行PWM输出和定时功能
NXP JN5169使用定时器进行PWM输出和定时功能 一.定时器介绍 1.定时器介绍 2.定时器可操作的模式 3.定时器DIO 4.定时器和PWM模式 5.定时器中断 二.实现代码 1.PWM输出 ...
最新文章
- 红旗linuxcentos_用红旗Linux 11的体验报告,附使用红旗Linux 11截图
- 在VMware Workstation上安装Ubuntu 16.04 Server操作系统
- 独立开发者:新手做2D手游该用哪些工具?
- Salted Password Hashing
- python中使用什么注释语句和运算_Python基础知识
- Swift基础之方法实战
- 介绍开源的.net通信框架NetworkComms
- 企业实战(Jenkins+GitLab+SonarQube)_10_Jenkins通过Depoly插件热部署Java程序
- 利用request库请求api
- [Erlang危机](4.4)命名管道
- 跟随冒号畅游编程世界
- php垂直居中代码_纯css实现水平和垂直居中
- 监理延期 验收工程款制约三方
- python自动化办公教程-Python自动化办公之操作Excel文件
- file js new 传到后台_JS读取文件且AJAX传输到后台
- matlab 数字水印攻击 jpeg压缩,基于DFT的数字水印技术研究及模拟.doc
- C# Message类的属性Msg所关联的消息ID
- Unresolveable build extension: Plugin...or one of its dependencies could not be resolved: Failed to
- 楚留香获取服务器信息卡主,楚留香手游沧海主线任务bug原因及解决方法一览
- 关于Axure-9组合交互内联框架问题