嵌入式面试题:一般来说,对于舵机和电机,PWM的高电平和频率分别决定什么?
下面按180° 角度舵机和360° 连续旋转舵机分开把PWM 高电平脉宽和频率分别决定什么讲清楚。一、通用基础PWM 周期 1 / 频率标准舵机周期20ms → 50Hz控制核心是高电平持续时间脉宽1. 180° 角度舵机最常见只能转 0~180°1高电平脉宽 → 决定转动角度标准对应关系0.5ms → 0°1.0ms → 45°1.5ms → 90°中位2.0ms → 135°2.5ms → 180°本质舵机内部解码脉宽与内部电位器比对转到对应角度并锁死保持。脉宽不变 → 角度不变脉宽变化 → 角度变化只要供电正常会强力保持角度外力掰动会自动顶回去2频率 → 决定响应速度、稳定性、功耗标准频率50Hz20ms不同频率的影响频率偏低50Hz周期变长舵机刷新慢容易抖动、反应迟钝、 holding 力变弱标准 50Hz最通用、最稳定适合绝大多数模拟 / 数字舵机频率偏高数字舵机常用 100~300Hz每秒修正角度次数变多优点响应更快、 holding 力矩更强、更稳缺点电流更大、发热更高模拟舵机不建议高频会异常甚至烧毁总结180° 舵机脉宽 角度频率 响应速度 稳定性 功耗2. 360° 连续旋转舵机可以一直转不能锁固定角度这种舵机没有角度反馈内部没有电位器只有减速电机 驱动板。1高电平脉宽 → 决定旋转方向 转速标准对应关系1.5ms →停止小于 1.5ms →顺时针转脉宽越小 → 转速越快大于 1.5ms →逆时针转脉宽越大 → 转速越快常见范围~1.3ms → 顺时针全速~1.7ms → 逆时针全速本质它不是定位而是调速 换向。脉宽固定 → 以固定转速一直转1.5ms → 静止偏离 1.5ms 越多 → 转得越快2频率 → 决定转速平滑度、响应、兼容性标准依然是50Hz20ms影响频率过低转速会有顿挫、抖动不够平滑50Hz通用、稳定频率偏高转速更平滑、响应更及时但同样更耗电、发热更大部分廉价 360 舵机不支持高频会乱转总结360° 舵机脉宽 方向 转速频率 转动平滑度 响应速度最终极简对比表类型高电平脉宽决定频率决定180° 角度舵机转动角度响应速度、保持力、稳定性、功耗360° 连续旋转舵机旋转方向 转速转动平滑度、响应速度、兼容性一句话记180°脉宽定角度频率定稳不稳360°脉宽定方向转速频率定顺不顺畅先说结论普通直流电机带驱动模块比如 L298N、L293D、TB6612的 PWM高电平占空比不是单纯高电平时间→ 决定电机转速 **PWM 频率 → 决定电机噪音、发热、平滑度、效率 **下面分开讲清楚和舵机做个对比你一下就懂了。一、先分清电机 vs 舵机 PWM 的本质区别舵机 PWM看的是高电平绝对时间ms比如 1.5ms、2.0ms。电机 PWM看的是高电平占整个周期的比例占空比和绝对时间无关。二、普通直流电机带 H 桥驱动1. 高电平占空比 → 决定转速PWM 本质快速开关电源平均电压 占空比 × 电源电压占空比 0% → 平均电压 0V → 电机停转占空比 25% → 平均电压 ≈ 1/4 VCC →慢速转占空比 50% → 平均电压 ≈ 1/2 VCC →中速转占空比 100% → 全电压 →全速转一句话占空比越大电机越快占空比越小电机越慢。注意电机方向不由 PWM 决定而是由 ** 两根电源线的正反转H 桥** 决定。2. PWM 频率 → 决定噪音、发热、平滑度电机常用频率范围几 kHz ~ 20kHz1频率太低比如 1kHz电机有明显嗡嗡声、哒哒声转速波动大不够平滑电流波动大电机 / 驱动发热2频率适中1k ~ 10kHz声音变小转速平稳发热适中最常用3频率很高16kHz ~ 20kHz进入人耳听不到的范围超音频几乎无噪音转速非常平滑但开关损耗增加驱动芯片发热略大三、无刷电机 / 电调ESC控制的电机这种其实和舵机逻辑一样PWM 高电平时间0.5~2.5ms→ 决定转速频率一般固定 50Hz 或 400Hz频率主要影响响应速度不直接调速四、极简对比表帮你彻底区分对象PWM 看什么高电平 / 占空比决定频率决定180° 舵机高电平绝对时间转动角度响应速度、保持力、稳定性360° 连续舵机高电平绝对时间方向 转速转动平滑度、响应普通直流电机高电平占空比转速快慢噪音大小、平滑度、发热、效率五、一句话记忆舵机看高电平多少毫秒 → 定角度 / 转速电机看高电平占比例多少 → 定快慢频率对电机主要管声音顺不顺、烫不烫一、先讲舵机内部有什么两种舵机都一样内部 4 大件控制板芯片接收 PWM、做计算、驱动电机直流小电机转得快、力气小减速齿轮组降转速、增大力气电位器可变电阻和输出轴连在一起实时测当前角度二、180° 角度舵机标准 SG90PWM ↔ 角度 是怎么固定对应的核心闭环位置控制内部硬编码对应关系1. 内部 “规定死” 的对应表出厂就写死在芯片里PWM 周期固定20ms50Hz内部只认这个频率脉宽 ↔ 目标角度芯片内部固化0.5ms → 目标 0°1.0ms → 目标 45°1.5ms → 目标 90°中点2.0ms → 目标 135°2.5ms → 目标 180°2. 内部执行流程一步一步外部给 PWM比如 2.0ms控制板读到脉宽 → 换算成目标角度135°电位器实时测当前角度比如 90°算误差135° − 90° 45°控制板驱动电机正转慢慢转到 135°转到后误差 0 → 电机停、锁死角度保持力只要 PWM 不变就一直锁在这个角度3. 为什么 “固定对应”芯片内部有AD 采样把 0.5~2.5ms 脉宽 → 转成数字值同时把电位器电压→ 转成当前角度内部是比例控制简单 PID误差大就快转误差小就慢转机械限位内部齿轮有挡块真的只能转到0~180°一句话180° 舵机脉宽 目标角度内部闭环 “死追” 到这个角度并锁住。三、360° 连续旋转舵机SG90 改 / 360 版PWM ↔ 转速 / 方向 怎么对应本质把 “位置闭环” 改成了 “速度开环”内部对应关系完全变了1. 内部怎么改的出厂 / 改装去掉 / 固定电位器不让它反馈真实角度要么电位器粘死在中点一直反馈 90°要么直接拆掉、改电路去掉机械限位齿轮能无限转控制板逻辑改写不再算 “角度差”而是算 “速度差”2. 内部固定的对应表芯片写死依然是20ms 周期50Hz脉宽 ↔ 转速 方向完全和角度无关1.5ms → 停止误差 0 → 不转1.5ms如 1.3ms→ 顺时针转脉宽越小越接近 0.5ms→ 转速越快1.5ms如 1.7ms→ 逆时针转脉宽越大越接近 2.5ms→ 转速越快3. 内部执行流程外部给 PWM如 1.2ms控制板1.2ms 1.5ms → 判定 “顺时针低速”电位器一直反馈中点90°→ 误差永远存在控制板持续输出电机顺时针转转速由脉宽决定只要 PWM 不变就一直以这个速度、方向转给 1.5ms → 误差 0 → 立即停一句话360° 舵机脉宽 方向 转速内部变成 “速度控制器”不再定位。四、180° vs 360° 内部对应关系最清晰对比项目180° 角度舵机SG90360° 连续旋转舵机PWM 脉宽决定角度位置方向 转速内部闭环位置闭环追角度速度开环不追角度电位器作用测真实角度固定中点 / 无效1.5ms 含义90°中间角度停止1.5ms角度变小如 0°~90°顺时针转1.5ms角度变大如 90°~180°逆时针转机械结构有限位0~180°无限位无限转五、你最关心的为什么 “一给脉宽就对应角度 / 转速”因为出厂时芯片内部已经把「脉宽范围」和「角度 / 速度」写死了不是你自己定的是舵机厂商固化的标准180° 舵机0.5~2.5ms 0~180°线性360° 舵机0.5~1.5~2.5ms 正快→停→反快线性六、一句话总结彻底分清180° 舵机PWM 脉宽 目标角度内部闭环锁死角度360° 舵机PWM 脉宽 方向 转速内部一直转、不定位