二、什么是舵机
舵机是伺服电机的一种,伺服电机就是带有反馈环节的电机,我们可以通过伺服电机进行精确的位置控制或者输出较高的扭矩;
一般舵机的旋转范围是0°~ 180°。舵机是由可变宽度的脉冲控制。脉冲的参数有最小值、最大值和频率。一般而言,舵机的基准信号周期为20ms,所以频率为50kHz。脉冲宽度和舵机的转角0°~ 180°相对应的。舵机转动角度与占空比的关系:
二、PWM对舵机的控制
舵机的控制就是通过一个固定的频率,给其不同的占空比的,来控制舵机不同的转角
舵机的频率一般为频率为50HZ,也就是一个20ms左右的时基脉冲,而脉冲的高电平部分一般为0.5ms-2.5ms范围。来控制舵机不同的转角
500-2500us的PWM高电平部分对应控制180度舵机的0-180度
以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
三、控制函数
1、ledcSetup()函数,设置 LEDC通道对应的频率和计数位数(占空比分辨率)
double ledcSetup(uint8_t chan, double freq, uint8_t bit_num)
其第一个参数chan表示通道号,取值为0 ~ 15即可设置16个通道,其中高速通道(0 ~ 7)由80MHz时钟驱动,低速通道(8 ~ 15)由 1MHz 时钟驱动;第二个参数freq为期望设置的频率;第三个参数为占空比分辨率的计数位数,其取值为0 ~ 20(该值决定后面 ledcWrite 方法中占空比可写值,比如该值写10,则占空比最大可写1023 即(1< 2、ledcAttachPin()函数,将指定的 LEDC 通道绑定到指定的 IO 口上以实现PWM的输出 第一个参数pin表示我们需要输出的IO口,第二个参数channel为我们指定的LEDC通道。 3、ledcWrite()函数,为指定的 LEDC 通道的输出占空比 第一个参数chan为我们指定的LEDC通道,第二个参数duty表示占空比,其取值范围与ledcSetup()函数的bit_num有关。 四、ESP32使用PWM实现对舵机的控制 资料引用: (98条消息) esp32+舵机的学习案例_HL?的博客-CSDN博客_esp32 舵机 (98条消息) ESP32 Arduino开发之路(2)— 使用PWM实现LED呼吸灯_Willliam_william的博客-CSDN博客_ledcsetup函数void ledcAttachPin(uint8_t pin, uint8_t channel);
void ledcWrite(uint8_t chan, uint32_t duty)