深入理解如何利用PWM驱动舵机:ESP32驱动DS1115舵机
- DS1115舵机技术规格
- 举例说明
之前做了一个项目,关于ESP32驱动DS1115舵机,但是在项目运行的过程中由于学艺不精,导致电机抽搐 😵💫,所以特意拜访电机大佬并与之交流,发现其实做电机驱动程序同样要关注电机技术规格(原谅本小白之前不懂 😶🌫️),在深入理解电机技术规格与PWM之间的关系后,可谓是行云流水,水到渠成了~
关于如何利用ESP32输出PWM可以参考我之前文章:ESP32的脉宽调制PWM 。这篇我们主要来谈谈如何利用ESP32输出的PWM控制相应舵机。
DS1115舵机技术规格
我们先一起来看看DS1115舵机的技术规格,如下:
DS3115 datasheet.pdf
我们重点关注一下它的电气特性和控制特性
可以看到,DS3115舵机的工作电压为5V~6.8V,因此我们对其的输入电压起码要达到5V以上。
(笔者先前是利用降压模块想要输出5V电压,但是无奈电池没电了输入给降压模块的电压就小于5V,利用万用表测量之后才发现问题 🤔,之后就直接用随身电源输出5V电压,完美 🥳)
像舵机扭矩啥的也是需要关注的,像这个舵机的输出扭矩为15kg-cm~17kg-cm。但是这里我们把注意力先放在驱动方面。
接下来我们可以看到它的控制特性,这里至关重要,脉冲范围、中点位置、控制频率与后面的PWM输出息息相关。
我们以一张图来看看:
至此,可以看到我们需要注意几个地方:
-
控制频率决定脉冲周期;
此处的控制频率以50Hz举例,脉冲周期即为20ms
-
脉宽范围0.5ms2.5ms对应角度0°180°;
-
在脉宽范围内,每一个占空比对应一个角度;
之前我们有提过PWM的分辨率,以分辨率为2的10次方份举例,简单来说就是把脉冲周期分成1024份(0~1023),分辨率越大,在脉宽范围内每一份对应的角度就越小,控制就越精细。
因此,我们如果要控制输出舵机转到对应的角度的话就输出对应的占空比即可。
举例说明
我要控制舵机转到0°,在分辨率为2的10次方份的情况下,我应该输出占空比为:
0 ° D u t y C y c l e = 0.5 m s ÷ 20 m s × 1024 − 1 = 24.6 0°DutyCycle=0.5ms÷20ms×1024-1=24.6 0°DutyCycle=0.5ms÷20ms×1024−1=24.6
其中,0.5ms指舵机转到0°的脉宽(脉宽范围0.5ms2.5ms对应角度0°180°),20ms指的是控制频率也就是脉冲周期;1024指的是脉冲周期被分为了1024份(0~1023,所以最后要减1);所以整个原理其实是我转到指定角度需要多少份。
关于PWM控制说明可以参考如下: