发布时间: 2026-03-19
不少友人头一回运用操控舵机之际,常常会遭遇转不动、胡乱转或者全然没反应的情形。实际上弄明白舵机运作的原理,问题便解决了一多半。舵机内部存有一个电机以及一套反馈电路,它要接收一个周期约20毫秒的PWM信号,借助改变高电平的宽度(即占空比)来告知它该转到哪个角度。
你手中所具有的开发板,最为不缺少的便是定时器,这个家伙从生来就全是用以产生PWM信号的。你所需要去开展做到的,乃是选用挑选一个定时器,把其中里边的的一个通道设定设置形成设为PWM输出模式。随后接着设置将定时器的重装载的值为20000(对应于折合20毫秒),再又一次设置把比较寄存器的的值在500到2500之间变动变化,如此这般这样便就能够让舵机在0到180度之间进行摆动了。
在往昔,编写代码配置寄存器会将人弄得晕头转向,而如今运用则便捷许多。你仅需于软件内选好你所使用的芯片型号,寻找到你打算运用的定时器,将通道模式改换为PWM CHx。随后在下方的参数设置当中,把(预分频器)以及 (计数周期)计算妥当,使得PWM的频率恰好为50Hz。
比如说,要是你所使用的系统时钟为72MHz舵机厂家伟创动力,那么可以按照这样的方式来计算:将预分频器设置成71(实际上是72分频),如此一来定时器时钟便会变为1MHz,这意味着每经过一微秒就计一个数。要是期望周期达到20毫秒,那么计数周期就要设置成20000。如此在输出比较寄存器里写入1000,那就是1毫秒的高电平,这与0度相对应;写入2000,就是2毫秒,对应着180度。整个这个进程是可视化的操作,能够节省时间和精力。
![]()
费劲周折才使得舵机转动起来,然而却发觉它在那里不停地抖动,又或者动作出现卡顿,这般状况十有八九是电源供电不足所导致的。舵机启动的瞬间电流极大,要是利用开发板的USB口进行供电,电压一旦被拉低,STM32便会重启,可想而知舵机自然也就转动得不理想。解决的方式其实很简便,给舵机单独配备一个外接电源,将地线与开发板连接在一起即可。
存在一个容易被忽视的要点,那便是PWM信号自身需保持稳定。去检查一下你的定时器配置情况,保证PWM频率为50Hz,占到空比的变化连续且平滑。要是你于主循环之中直接通过延时来跳转角度,舵机将会剧烈地弹跳。最为适宜的做法是运用定时器中断或者状态机,促使角度值能够缓慢地发生变化,从而模拟营造出平滑运动的效果。
这事得依据你项目具体所从事的内容来判断。要是仅仅是制作一个简易的云台或者小型玩具,那么塑料齿的9g舵机便能够满足需求,其具备价格低廉且质地轻便的特点。然而要是应用于机械臂或者机器人腿上,鉴于受力较大、需要频繁进行动作,那就非得使用金属齿轮的舵机,就像参考内容里所提及的微型全铝舵机那样,这东西具有耐用的特性,不容易出现扫齿的情况,在关键的时候不会出现故障。
舵机扭力参数,除齿轮材质外也要留意。一般舵机参数表中,会标明在何种电压下可提供多少公斤·厘米的扭力。你的 能输出 3.3V 信号,然而很多舵机需 5V 或 6V 供电,选舵机时要记得看其兼容性与你的信号电平,或在控制信号线上添加一个简单的电平转换电路。
![]()
针对项目中需控制六七个舵机的情况该如何处理呢?的定时器方面具备丰富资源,有一个高级定时器,还存在几个通用定时器,这些定时器能够输出十几个独立通道的PWM呢。可以将同频率的舵机分配至一个定时器的不同通道之上,对于每个通道单独去设置比较值,如此便能够独立控制每个舵机的角度,且彼此之间互不干扰。
技巧在代码方面也是需要讲究的。不要在中断服务函数当中去写过多耗费时间的计算,将每个通道的目标角度存储到数组里面,再搞一个定时器,每过20毫秒就对所有通道的比较值进行一次更新就可以了。要是想要去做更为复杂的动作组,能够预先计算好每一帧所有舵机的角度,把这些角度存于数组之中,随后逐帧进行刷新,这般你的机器人或者便能够跳出连贯的动作了。
将舵机与STM32相联合,所能达成的创意极为繁多。你能够利用它为家中的摄像头打造一个自动云台,达成人脸跟踪。也能够给3D打印机增添一个自动调平装置。最为经典的仍是制作双足或者六足机器人,十几个舵机相互配合,走路、跳舞均可实现。关键之处在于运用STM32强大的处理能力去进行运动学解算舵机品牌伟创动力,以使舵机协同展开工作。
时有不少友朋以微型全铝舵机制机翼折叠机构伟创动力,抑或为航模造投掷装置,缘铝舵机强度高、虚位小,适用于精度要求高之场景。唯能将机械结构设计妥善,复以编就流畅之控制逻辑,诸多有趣之产品原型便能于君手诞生。君以为己之首个舵机项目将用以何为?诚邀于评论区分享君之创意。