0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PWM 控制 LED、蜂鸣器、电机:你真的用对了吗?

信盈达 2026-01-04 09:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在做嵌入式开发的时候,PWM(脉宽调制)几乎是必学技能。LED 想要呼吸效果?PWM。蜂鸣器要发“滴滴”的提示音?PWM。电机需要调速?还是 PWM。

问题是:同样一个HAL_TIM_PWM_Start(),有人做出来的 LED 灯效果柔和自然,有人却像手电筒闪烁;有人做的电机转速平稳安静,有人却抖得像要散架。

为什么差别这么大?答案就在频率、占空比和应用场景的差异上。今天我们就结合 LED、蜂鸣器和电机,讲透 PWM 的核心要点。

c74c2cfc-e90a-11f0-8ce9-92fbcf53809c.png

一、PWM 原理回顾

PWM 的本质:通过改变高电平持续时间,来控制平均电压。

  • 周期(Period):决定频率。
  • 占空比(Duty Cycle):决定平均电压。

比如:3.3V 的信号,频率固定,改变占空比:

  • 10% → 平均电压 ≈ 0.33V
  • 50% → 平均电压 ≈ 1.65V
  • 90% → 平均电压 ≈ 2.97V


二、LED 调光:呼吸灯怎么才能柔和?

1. 常见错误:线性调节占空比

很多人写一个循环:

  1. for(intduty=0;duty<=100;duty++){
  2. __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,duty);
  3. HAL_Delay(20);
  4. }

结果:前半段几乎看不到亮度变化,后半段突然“闪瞎”。

原因:人眼对光的感知不是线性的,而是对数曲线。

2. 正确做法:Gamma 校正

  1. floatgamma=2.2;// 常见 Gamma 值
  2. for(inti=0;i<=100;i++){
  3. floatpercent=pow((float)i/100.0,gamma);
  4. __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,percent*htim3.Init.Period);
  5. HAL_Delay(20);
  6. }

这样才能实现真正的“呼吸灯”。

3. 频率选择

  • 推荐 200Hz ~ 1kHz
  • <100Hz 会闪烁,人眼能察觉

三、蜂鸣器:频率决定音调

蜂鸣器分为:

  • 有源蜂鸣器:上电就响,不需要 PWM。
  • 无源蜂鸣器:需要 PWM,不同频率 → 不同音调。

1. PWM 频率与音调对应

  1. // 让无源蜂鸣器发出 "Do Re Mi"
  2. voidbuzzer_play(){
  3. set_pwm_freq(262);// Do
  4. HAL_Delay(500);
  5. set_pwm_freq(294);// Re
  6. HAL_Delay(500);
  7. set_pwm_freq(330);// Mi
  8. HAL_Delay(500);
  9. }

2. 占空比决定音量

  • 占空比 50% → 声音最响
  • 占空比 <30% → 声音较小
  • 占空比 >70% → 容易失真


四、电机控制:PWM 是核心调速手段

1. 直流电机

转速 ≈ 电压 ≈ PWM 占空比 × 电源电压。

  • 低频 PWM:电机会抖动
  • 高频 PWM(>20kHz):更平稳,人耳听不到噪音
  1. // 控制直流电机转速
  2. voidmotor_set_speed(uint8_tpercent){
  3. uint32_tduty=percent*htim2.Init.Period/100;
  4. __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,duty);
  5. }

2. 步进电机

PWM 用来调电流,而转速靠脉冲序列,不是直接调占空比。

3. 无刷电机BLDC

需要三相 PWM + 换相控制,常用 FOC 算法


五、常见坑点总结

  1. LED:亮度变化不平滑? → 加 Gamma 校正。
  2. 蜂鸣器:声音刺耳? → 频率不对,或者占空比过高。
  3. 电机:转速不稳? → 频率太低,选高于 20kHz。
  4. 通用错误:用软件延时做 PWM,波形抖动严重 → 应该用定时器硬件 PWM。

六、调试小技巧

  • 示波器看波形,确认频率与占空比是否正确。
  • 用LED 替代电机测试 PWM,直观判断调速效果。
  • 给蜂鸣器输出波形,用音频软件测频率,验证是否对上音符。


七、结语

PWM 的套路远不止“点灯”,它背后有着不同应用的门道。搞懂了频率和占空比的关系,理解不同器件对 PWM 的敏感性,你就能做出柔和的呼吸灯、悦耳的蜂鸣器提示音、以及平稳高效的电机调速。

下次写HAL_TIM_PWM_Start()的时候,别只想着“能跑起来就行”,要先问自己:这个 PWM 的参数,适合我现在的应用吗?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    244

    文章

    24779

    浏览量

    693395
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5904

    浏览量

    227098
  • 电机
    +关注

    关注

    145

    文章

    9743

    浏览量

    155017
  • 蜂鸣器
    +关注

    关注

    12

    文章

    900

    浏览量

    47889
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    电机负载率对了吗

    电机能效管理的必要性电机负载率与能效的关系智能电机负载率的计算方法智能电机负载率能效匹配原则智能电机负载率匹配意义
    发表于 03-18 06:45

    如何利用PWM实现对LED灯亮度的控制/对电机转速的控制?

    如何利用PWM实现对LED灯亮度的控制/对电机转速的控制?
    发表于 01-21 07:54

    水泵电机对了吗

    水泵的使用寿命离不开电机的功劳,现在市场上的水泵电机产品琳琅满目,按工作电源分类可以分为水泵直流电机和水泵交流电机,那么怎样选择一款适合我们所需的水泵
    的头像 发表于 07-19 13:48 1.4w次阅读

    Python爬虫 真的会写爬虫吗?

    以为真的会写爬虫了吗?快来看看真正的爬虫架构!
    的头像 发表于 05-02 17:02 4805次阅读
    Python爬虫 <b class='flag-5'>你</b><b class='flag-5'>真的</b>会写爬虫吗?

    “互联网+”真的过时了吗

    “互联网+”真的过时了吗
    的头像 发表于 05-24 16:42 6750次阅读

    阻抗的概念,真的了吗

    阻抗的概念,真的了吗
    的头像 发表于 07-02 11:40 1.7w次阅读

    干货 | 电机负载率对了吗

    节能减排在当今世界是一个无法回避的话题,影响着世界经济的发展。作为节能减排重点工业领域的电机,用电量约占全国用电量的60%,节能潜力巨大。因此电机的能效管理引起了国内外各方的关注。
    发表于 01-21 09:54 5次下载
    干货 | <b class='flag-5'>你</b>的<b class='flag-5'>电机</b>负载率<b class='flag-5'>用</b><b class='flag-5'>对了吗</b>?

    STM32——PWM控制电机

    最近在研究电机,于是想写一篇文章来记录我的学习历程。下面是PWM来驱动电机,涉及的电机驱动是L298N。大概的思路:初始化连接
    发表于 01-14 12:02 10次下载
    STM32——<b class='flag-5'>用</b><b class='flag-5'>PWM</b><b class='flag-5'>控制</b><b class='flag-5'>电机</b>

    stm32电机控制控制两路直流电机!看完了吗

    小车使用的电机是12v供电的直流电机,带编码器反馈,这样就可以采用闭环速度控制,这里电机使用PWM驱动,速度
    发表于 01-14 12:38 43次下载
    stm32<b class='flag-5'>电机</b><b class='flag-5'>控制</b>之<b class='flag-5'>控制</b>两路直流<b class='flag-5'>电机</b>!看完<b class='flag-5'>你</b>会<b class='flag-5'>了吗</b>

    连拓精密气密性测试仪操作步骤,对了吗

    人们对防水性能的要求提高很多,比如智能穿戴,手机行业,户外照明等都需要防水功能。所以厂家在生产过程中,后续验收过程都会进行对其产品的气密性防水性能测试。那对于正确的气密性测试仪正确操作步骤,真的对了吗?如何延长气密性测试仪的
    的头像 发表于 10-29 16:06 1747次阅读
    连拓精密气密性测试仪操作步骤,<b class='flag-5'>你</b>做<b class='flag-5'>对了吗</b>?

    蜂鸣器制作多彩的LED

    电子发烧友网站提供《蜂鸣器制作多彩的LED流.zip》资料免费下载
    发表于 11-10 14:43 0次下载
    <b class='flag-5'>用</b><b class='flag-5'>蜂鸣器</b>制作多彩的<b class='flag-5'>LED</b>流

    PWM输出控制电机

    PWM 输出控制电机电机系列 一、PWM 输出控制电机 1 、相关 IO 介绍 2 、编写
    发表于 05-06 11:03 9次下载
    <b class='flag-5'>PWM</b>输出<b class='flag-5'>控制</b><b class='flag-5'>电机</b>

    肖特基二极管,真的对了吗

    肖特基二极管,真的对了吗
    的头像 发表于 12-07 14:27 1432次阅读
    肖特基二极管,<b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>用</b><b class='flag-5'>对了吗</b>?

    IGBT和MOSFET该用谁?对了吗

    IGBT和MOSFET该用谁?对了吗
    的头像 发表于 12-08 18:25 5832次阅读
    IGBT和MOSFET该用谁?<b class='flag-5'>你</b>选<b class='flag-5'>对了吗</b>?

    如何使用PWM控制电机

    PWM(脉冲宽度调制)是一种常用的电机控制方法,通过调整脉冲信号的占空比(即高电平时间占总时间的比例)来控制电机的电压和电流,从而实现对
    的头像 发表于 11-28 16:30 6458次阅读