舵机的原理

电子说

1.4w人已加入

描述

一、舵机控制的核心原理

舵机内部集成了直流电机、减速齿轮组、电位器(角度传感器)和控制电路,形成闭环控制系统:


 

信号接收:外部输入 PWM 信号,控制电路解析信号中的脉冲宽度,确定目标角度。

反馈对比:电位器实时检测当前角度,并将信号反馈给控制电路。

驱动调节:控制电路对比目标角度与当前角度,驱动直流电机正转或反转,通过减速齿轮组带动输出轴转动。

停止定位:当当前角度与目标角度一致时,电机停止转动,实现精准定位。

二、控制信号:PWM 参数的关键要求

舵机的控制完全依赖 PWM 信号的参数,核心参数包括频率(周期)脉冲宽度

1. 频率(周期)

标准舵机的 PWM 信号频率为 50Hz(即周期为 20ms),这是行业通用标准。

部分高性能舵机支持更高频率(如 100Hz),但需参考具体型号手册,过高频率可能导致舵机过热或失控。

2. 脉冲宽度与角度的对应关系

PWM 信号的脉冲宽度(高电平持续时间)直接决定舵机的输出角度,不同脉冲宽度对应不同角度,典型范围如下(不同型号可能略有差异):


 

脉冲宽度(ms) 对应角度(°) 说明
0.5ms 最小角度(左极限)
1.5ms 90° 中间角度(中立位)
2.5ms 180° 最大角度(右极限)


 

脉冲宽度与角度呈线性关系:例如,1.0ms 对应 45°,2.0ms 对应 135°,可通过公式计算任意角度对应的脉冲宽度:脉冲宽度(ms)=0.5+180目标角度(°)​×2.0

注意:不同舵机的角度范围可能不同(如 90°、270°),需根据型号调整脉冲宽度范围(例如 90° 舵机可能对应 1.0ms~2.0ms)。

三、常见控制方式与硬件实现

舵机的控制需通过硬件生成符合参数的 PWM 信号,常见方式包括单片机直接控制、专用模块控制等:

1. 单片机 / 微控制器直接控制(适合单舵机或少量舵机)

通过单片机(如 Arduino、STM32、ESP32 等)的 PWM 输出引脚直接生成信号,步骤如下:


 

硬件连接:舵机的信号线(通常为橙色 / 黄色)接单片机 PWM 引脚,电源线(红色)接 5V 电源,地线(棕色 / 黑色)接单片机地线(共地)。

软件编程:通过代码配置 PWM 频率为 50Hz,并设置对应角度的脉冲宽度。
示例(Arduino 使用Servo库):

cpp

运行

 

#include < Servo.h >
Servo myservo;  // 创建舵机对象
int angle = 0;  // 目标角度

void setup() {
  myservo.attach(9);  // 舵机信号线接数字引脚9
}

void loop() {
  for (angle = 0; angle <= 180; angle += 1) {  // 从0°转到180°
    myservo.write(angle);  // 发送角度信号(内部自动转换为PWM)
    delay(15);  // 延迟等待转动到位
  }
  for (angle = 180; angle >= 0; angle -= 1) {  // 从180°转回0°
    myservo.write(angle);
    delay(15);
  }
}

 

原理:Servo库自动将角度转换为对应脉冲宽度(如write(90)对应 1.5ms 脉冲),并生成 50Hz 的 PWM 信号。

2. 专用舵机控制模块(适合多舵机或高精度场景)

当需要控制多个舵机(如机器人关节)时,单片机的 PWM 引脚可能不足,此时可使用专用模块(如 PCA9685):


 

优势:通过 I2C 通信控制,单个模块可驱动 16 路舵机,且支持频率和脉冲宽度精准调节,减少单片机资源占用。

硬件连接:模块通过 I2C 引脚(SDA、SCL)与单片机连接,舵机电源需外接(避免单片机供电不足)。

控制逻辑:通过 I2C 指令设置模块的频率(50Hz)和每路舵机的脉冲宽度,示例代码(Arduino 控制 PCA9685):

cpp

运行

 

#include < Wire.h >
#include < Adafruit_PWMServoDriver.h >
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();  // 初始化模块

#define SERVOMIN  150  // 0.5ms对应的脉冲值(需校准)
#define SERVOMAX  600  // 2.5ms对应的脉冲值(需校准)

void setup() {
  pwm.begin();
  pwm.setPWMFreq(50);  // 设置频率为50Hz
}

void loop() {
  // 控制第0路舵机转到90°(脉冲宽度1.5ms,对应(150+600)/2=375)
  pwm.setPWM(0, 0, 375);  
  delay(1000);
}

 


 

3. 其他控制方式

遥控器控制:遥控模型中,通过接收机输出 PWM 信号直接驱动舵机,无需编程。

PLC 或工业控制器:工业场景中,通过 PLC 的 PWM 模块或模拟量转 PWM 模块控制舵机。

四、控制中的关键注意事项

电源供电
舵机转动时电流较大(尤其是大扭矩型号),需单独供电(5V/2A 以上),避免与单片机共用电源导致电压跌落,影响控制信号稳定性。

角度范围校准
不同舵机的实际角度范围可能与理论值有偏差,需通过测试确定最小 / 最大脉冲宽度(例如部分舵机 0° 对应 0.6ms,180° 对应 2.4ms),避免强行转动导致齿轮损坏。

信号干扰
PWM 信号线应远离强电或高频信号线路(如电机线),必要时使用屏蔽线,防止信号干扰导致角度漂移。

负载与转速
舵机的扭矩和转速有额定值,负载超过扭矩会导致无法转动或过热;快速转动时需预留足够延迟时间(如delay(15)),避免未到位时再次发送信号。

五、总结

舵机控制的核心是精准的 PWM 信号,通过调节 50Hz 频率下的脉冲宽度(0.5ms~2.5ms)实现 0°~180° 的角度控制。实际应用中需根据舵机数量和场景选择控制方式(单片机直接控制或专用模块),并注意供电、校准和抗干扰设计,以确保稳定运行。

舵机原理

舵机是一种集驱动、传感和控制于一体的高精度角度执行器,其核心优势在于能通过简单信号实现精准的角度定位,广泛应用于机器人关节、遥控模型、自动化设备等场景。以下从结构组成、工作原理、核心特性三个维度详细解析舵机的原理:

一、舵机的核心结构组成

舵机的高精度控制依赖于内部集成的机械和电子组件,形成一个完整的闭环控制系统。典型结构包括以下关键部分:

1. 驱动单元:提供动力输出

直流减速电机:作为动力源,输出高转速、低扭矩的动力。

减速齿轮组:由多个齿轮组成(如金属齿轮或塑料齿轮),将电机的高转速降低,同时将扭矩放大(减速比通常为 1:100~1:300),最终驱动输出轴转动。

2. 传感单元:实时检测角度

电位器(可变电阻):与输出轴机械连接,当输出轴转动时,电位器的电阻值随角度变化而改变,从而将机械角度转换为电信号(电压),实现角度反馈。

3. 控制单元:实现闭环调节

控制电路:包括信号接收模块、比较器、电机驱动电路等。其作用是解析外部控制信号、对比目标角度与当前角度,并驱动电机正反转以消除角度偏差。

二、舵机的工作原理:闭环控制的实现过程

舵机的核心是通过 **“指令 - 反馈 - 调节” 的闭环逻辑 ** 实现精准定位,具体过程可分为 4 个步骤:

1. 接收外部控制信号

舵机通过信号线接收外部输入的PWM(脉冲宽度调制)信号,这是一种周期性的方波信号。


 

标准舵机的 PWM 信号周期固定为20ms(频率 50Hz),其中高电平的持续时间(脉冲宽度)决定目标角度(例如 0.5ms 对应 0°,1.5ms 对应 90°,2.5ms 对应 180°)。

2. 解析目标角度

控制电路中的信号处理模块将 PWM 脉冲宽度转换为对应的目标角度值(例如通过内部逻辑计算:脉冲宽度每增加 0.011ms,目标角度增加 1°)。

3. 检测当前角度并对比

电位器实时检测输出轴的当前角度,并将角度转换为对应的电压信号(例如 0° 对应 0.5V,90° 对应 2.5V,180° 对应 4.5V)。

控制电路中的比较器将目标角度对应的电压与当前角度的反馈电压进行对比,计算出角度偏差(目标角度 - 当前角度)。

4. 驱动电机调节角度

根据角度偏差,控制电路驱动电机正转或反转:


 

若目标角度 > 当前角度:电机正转,通过齿轮组带动输出轴转动,同时电位器电阻变化,反馈电压升高。

若目标角度 < 当前角度:电机反转,输出轴反向转动,反馈电压降低。

当偏差为 0(目标角度 = 当前角度)时,电机停止转动,输出轴稳定在目标角度,完成定位。

三、舵机的核心特性与参数

舵机的性能由以下关键参数决定,这些参数也直接影响其控制逻辑:

1. 角度范围

常见舵机的角度范围为0°~180°,部分特殊型号支持 90°、270° 甚至 360° 连续旋转(但连续旋转舵机严格来说是 “伺服电机”,无角度定位功能)。

角度范围由机械结构(如齿轮限位)和控制电路共同限制,超过范围会导致齿轮卡滞或损坏。

2. PWM 信号与角度的对应关系

脉冲宽度与角度呈线性关系,标准对应如下(不同型号可能略有差异):


 

脉冲宽度(ms) 目标角度(°) 反馈电压(典型值)
0.5 0 0.5V
1.0 45 1.5V
1.5 90(中立位) 2.5V
2.0 135 3.5V
2.5 180 4.5V


 

公式换算:脉冲宽度(ms)= 0.5 +(目标角度 ÷180)×2.0。

3. 扭矩与转速

扭矩:舵机输出的旋转力(单位:kg・cm 或 N・m),决定其带动负载的能力(例如 5kg・cm 的舵机可带动 5kg 重物在 1cm 半径处转动)。

转速:输出轴从 0° 转到 180° 的时间(单位:s/60°),例如 “0.1s/60°” 表示每转动 60° 需要 0.1 秒,转速越高响应越快。

4. 供电电压

标准舵机供电电压为4.8V~6V(通常用 5V),电压升高时扭矩和转速会略有提升,但需注意型号耐压范围,避免过压烧毁电路。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分