从固定 100 Hz 的网页实验开始,将占空比从 35% 调到 60%。画面里的高电平部分变宽了,方波却仍然以相同的节奏重复。第一次看这种变化,很容易觉得“信号更快了”;仔细数一数完整周期,才会发现,变的其实是另一件事。
这篇示例文章从网页里的归一化波形讲起,只讨论理想周期信号的数学表达。文中的参数不是舵机、电机或其他器件的推荐驱动条件,也不代表任何板卡已经输出了这些波形。把图看明白,是理解真实系统的起点;真实系统还有自己的边界。
先找一轮,别急着看整张图。
观察周期信号时,先找两个相邻、相同方向的边沿。例如,从一次上升沿到下一次上升沿,这段时间就是一个周期 T。它包括高电平和低电平两部分,不能只把较亮的那一段当成整轮。图形换了颜色、线条变粗,或者画面缩放了,周期的定义都不变。
频率 f 描述单位时间内重复多少次,周期描述一次重复需要多久,两者满足 T = 1 / f。频率以 Hz 表示时,周期先得到秒,再按需要换算成毫秒。100 Hz 对应 0.01 秒,也就是 10 ms;这个例子只是方便心算,和某个硬件的适用范围无关。
原创观察提示:先指出“一整轮”在哪里,再谈它有多宽、有多快。
写给实践时的自己
占空比,说的是这一轮怎样分配。
占空比 D 是高电平持续时间与完整周期的比值。写成公式,就是 D = t_high / T。输入界面通常用百分数,计算时则常用 0 到 1 的比例。35% 对应 0.35,而不是把 35 直接代入乘法。单位与表达方式先约定好,才能避免看起来合理、数值却差一百倍的错误。
仍以 100 Hz 为例,周期保持 10 ms:35% 对应 3.5 ms 高电平,60% 对应 6 ms 高电平,剩下的部分是低电平。占空比变大,高电平在每轮里占的份额增加;重复次数没有因此变化。反过来,保持 35% 而增加频率,每轮更短,高电平时间也会一起缩短。
// 纯数学换算。浏览器或 Node.js 中运行,不访问硬件。
function describePwm(frequencyHz, dutyPercent) {
if (!Number.isFinite(frequencyHz) || frequencyHz <= 0) {
throw new RangeError('频率必须是大于 0 的有限数值');
}
if (!Number.isFinite(dutyPercent) || dutyPercent < 0 || dutyPercent > 100) {
throw new RangeError('占空比必须在 0% 到 100% 之间');
}
const periodMs = 1000 / frequencyHz;
const highMs = periodMs * dutyPercent / 100;
return { periodMs, highMs, lowMs: periodMs - highMs };
}
describePwm(100, 35); // { periodMs: 10, highMs: 3.5, lowMs: 6.5 }一次只改一个量,变化才有方向。
比较两个量时,先固定其中一个会更容易理解。当前网页的 PWM 实验固定 100 Hz,只开放占空比滑块,可以直接比较一轮内部的分配。固定占空比、改变频率则是另一组计算练习:把不同频率代入上面的函数,比较时间尺度。每次计算前,先用一句话预测结果,再核对数字和图形。
比较时还要保持横轴尺度一致。假如界面永远自动铺满两个周期,不同频率可能看起来完全一样;假如时间窗口固定,频率改变时就会出现不同数量的周期。两种画法都可以使用,但必须告诉读者横轴在表示什么。图形怎样排布,也会影响我们怎样理解数据。
- 在当前 PWM 实验中,把占空比从 35% 改为 60%,核对周期仍为 10 ms。
- 作为代码计算练习,固定 35%,给函数传入不同频率,比较周期和高电平时间;网页未提供频率滑块。
- 使用网页复位按钮回到 35%,确认恢复的是演示参数,不是某个真实设备。
边界值,也应该讲清楚。
在理想数学模型中,0% 可以画成始终为低,100% 可以画成始终为高。这时图上没有普通方波的交替边沿,因此不能像中间占空比那样靠数上升沿估计周期。界面仍可保留配置的频率值,但需要分清“参数定义”与“当前画面能观察到的重复边沿”。
绘图还要处理时间和像素的区别。屏幕每秒能显示的画面有限,不能为了表现较高的信号频率,让整块页面按真实频率闪烁。更合适的方式是静态展示周期结构,让扫描线或参数过渡使用舒适的动画节奏。减少动态效果时,停掉扫描,也不应该失去读数与操作能力。
回到项目,图与硬件之间还差几步。
从数学关系到真实输出,仍需要确认定时器或输出模块能力、时钟与分频、分辨率、逻辑电平、输出使能方式,以及连接对象允许的范围。对舵机而言,实际控制条件必须核对具体型号资料和标定结果;不能因为网页里某个滑块可以拖动,就把它当作器件的安全区间。
所以这条小波形先做一件事:帮我们把频率、周期、占空比与脉宽分别说清楚。理解之后,再带着明确的问题读资料、查工程、做测量。TRACE 的简化控制表达和 STRIDE 的控制链路都可以从这里继续,但它们的真实输出仍要由各自的工程条件决定。
写下来,是为了下一次更快找到线索。
返回文章列表