PWM的几种产生方法

本文介绍了五种常见的PWM产生方式:波形发生器、单片机、可编程逻辑器件、专用PWM芯片以及关于LED闪烁和示波器观察的解释。特别提到了UC3842芯片在开关电源中的应用以及视觉暂留原理对LED闪烁的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注+星标公众,不错过精彩内容

623ad5b580947499ae720a646128006b.gif

转自 | 电子电路

PWM产生的方法是有多种的,小编将常用的几种产生方法作了一个整理以及分类,下面我们来了解一下。

1

波形发生器产生PWM

产生PWM最简单的方式是使用波形发生器,只需要在发生器上设置一下,就能轻易获取我们想要的PWM了。

ea61d85d50a5dc23368ce8925001fc75.jpeg

不过相信很多人不会为了产生PWM而购买一个波形发生器,比如我们想要使用PWM来驱动LED,总不能要一直拖着一个发生器吧?所以,这时使用发生器是不经济不方便的。

2

单片机产生PWM

使用单片机产生PWM是常用的方法,现在很多单片机都配置了能产生PWM的端口,或者通过单片机的端口进行模拟产生PWM,我们只需要通过编写一些程序,就能产生出我们想要的PWM了。

86fd5599fd074506860d69d51406807c.jpeg

3

可编程逻辑器件产生PWM

就是以可编程的逻辑器件,如CPLD或FPGA为硬件基础,编写专用程序来产生PWM,这种方式产生的PWM频率、占空比比较准确。

7c2d096006db9973751be8cbc4ead5af.jpeg

4

专用PWM芯片产生PWM信号

很多厂家都设计、生产了一些能产生PWM的芯片,使用这些芯片就能很方便产生PWM了,也方便应用到产品设计中。

9d3f9751cee6ec994ed5fb7d7fb94658.jpeg

如上图的UC3842芯片,是一种性能优良的电流控制型脉宽调制芯片,常用在开关电源的设计中。

5

关于PWM的疑问

有些朋友可能会有疑问,这样一通一断的PWM输出到LED上,LED不是会闪烁吗?下图是一个仿真实验,用占空比50%,频率10Hz的PWM来点亮一个LED,可以看到LED在不停地闪烁。

bf243b684cab616a32fc525af1b85dcd.gif

我们试试把PWM的频率提高到60Hz试试,我们可以看到这时LED好像没有了闪烁的迹象了。(下图)

9be4807a3566a51bd4137d60e3068aa2.png

这是为什么呢?其实这时LED还是闪烁的,只不过我们的眼睛观察不到而已,这是因为“视觉暂留”造成的,也就是我们人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,这一现象则被称为“视觉暂留”,早在1824年时候,有个老头子(皮特‘马克’罗葛特)就发现了这种现象了。所以,用频率太低的PWM驱动LED时会明显感到闪烁的,频率至少要在46Hz以上才能让眼睛感觉不到闪烁。

还有些朋友有这样的疑问:100%占空比时示波器显示是一条直线,0%占空比时也是直线,那怎么进行区分是高电平还是低电平?

767cfb1f1f3904b3609c4611efde81ff.gif

其实这个涉及到示波器使用的相关知识了,只要这条线是在水平基线之上的,则是高电平,如果是与基线重合的就是低电平,需要注意的是,如果调节过水平偏移,那么基线不一定在屏幕中间的,这时候我们就要找找基线在哪了,方法是按下“接地”按钮,水平基线就会出现,将基线调整回屏幕中间的坐标轴位置就方便观察了。

00038a4622a11dd65ddebe124bf6ddf7.gif

------------ END ------------

bb66307cd8906ac728d1f4ec20efeddd.gif

●专栏《嵌入式工具

●专栏《嵌入式开发》

●专栏《Keil教程》

●嵌入式专栏精选教程

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

4ccd63e9fd4ea43fa263ce5c1e03648d.jpeg

621b659d6ae88f9a94ccdc6b698d2a30.png

点击“阅读原文”查看更多分享。

### STM32 PWM 波形生成方法 #### 使用定时器配置PWM输出 STM32通过内置的高级控制定时器(TIMx)来实现PWM波形的输出。这些定时器支持多种工作模式,包括向上计数模式、向下计数模式以及中心对齐模式[^1]。 对于PWM功能而言,在初始化阶段需设置定时器的工作参数,如预分频系数(PSC),自动重装载寄存器(ARR),捕获/比较寄存器(CCRx),并指定具体的通道用于PWM信号输出。具体操作如下: - **设定时钟源频率**:确保外部或内部时钟已正确连接至定时器模块。 - **计算PSC和ARR值**:根据期望的PWM周期确定这两个重要参数。其中`PSC=(f_clk/f_pwm)-1`, `ARR=Period-1` (这里f_clk表示输入到定时器的时钟频率,f_pwm为目标PWM频率, Period代表一个完整的PWM周期内的脉冲数量). - **选择合适的CCRx值**:该数值决定了占空比大小,即CCRx越接近于ARR,则占空比较高;反之则低。通常情况下,可以通过改变这个比例关系动态调整PWM输出电平高低变化规律. ```c // 初始化TIMx外设结构体变量 TIM_HandleTypeDef htimX; htimX.Instance = TIMx; htimX.Init.Prescaler = PSC; // 设置预分频器 htimX.Init.CounterMode = UP_MODE; // 向上计数方式 htimX.Init.Period = ARR; // 自动重载值 HAL_TIM_PWM_Init(&htimX); // 调用库函数完成初始化过程 __HAL_TIM_SET_COMPARE(&htimX,TIM_CHANNEL_1, CCR1_VALUE); ``` 上述代码片段展示了如何利用STM32 HAL库来进行基本的PWM配置流程。实际应用中可能还需要考虑更多细节因素,比如死区时间插入等功能特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值