【PWM】舵机问题解决方案
问题描述
我们发现2025年12月16日~2026年3月13日期间采购的舵机中,有部分内部带有上拉电阻。这会与学习板上的保护电路冲突,从而导致驱动信号被阻断无法传到舵机。
解决方案
- 可以使用右侧 DRV8833接口 连接有内部上拉的舵机,如下图所示:
如有其他需要,请在会员群联系技术支持或客服获取帮助,给您造成困扰非常抱歉
- 更换接口后,舵机驱动引脚变为:PB8 -> PA1,因此需要在CubeIDE中重新分配引脚、定时器:
系统时钟配置不变,仍为72MHz(可参考舵机例程)
- 将代码中的 TIM4 TIM_CHANNEL_3 替换为 TIM2 TIM_CHANNEL_2,即可正常控制舵机
C语言
1// 启动PWM输出2HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);34// 旋转到中点,占空比7.5%,即2000 * 7.5% = 1505__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, 150);6HAL_Delay(1000);
直接下载改好的代码
为方便快速验证,您可以直接下载使用 DRV8833接口 连接舵机的例程代码
详细原因说明
- 学习板的保护电路是肖特基二极管(位号D8,原理图第三页),它用于限制电流方向仅允许 STM32 -> 舵机,以防止将舵机插头插反时,高压5V灌入引脚而烧毁单片机。
- 然而它也限制了只能由STM32将舵机信号引脚拉高,一旦舵机内部存在上拉电阻,信号引脚就会被彻底钳位在高电平,STM32无法拉低信号引脚,从而无法控制舵机。
- 连接到 DRV8833接口 后,信号引脚不再经过肖特基二极管的保护,因此不会被钳位,可以正常控制带内部上拉电阻的舵机。
- 如您需要其他帮助和支持,请在会员群内联系技术支持或客服,给您造成困扰非常抱歉。