0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

舵机如何控制?

jf_72272044 ? 来源:jf_72272044 ? 作者:jf_72272044 ? 2025-08-15 10:23 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

舵机是一种高精度的角度控制执行器,广泛应用于机器人、遥控模型、自动化设备等场景。其控制核心是通过PWM(脉冲宽度调制)信号调节角度,配合内部闭环反馈实现精准定位。以下从原理、控制方式、关键参数及注意事项展开说明:

一、舵机控制的核心原理

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

信号接收:外部输入 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. 单片机 / 微控制器直接控制(适合单舵机或少量舵机)

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

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

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

cpp

#include 
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 
#include 
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)),避免未到位时再次发送信号。


审核编辑 黄宇

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

    关注

    17

    文章

    311

    浏览量

    42143
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    舵机的原理

    一、舵机控制的核心原理 舵机内部集成了 直流电机、减速齿轮组、电位器(角度传感器)和控制电路 ,形成闭环控制系统: ? 信号接收 :外部输入
    的头像 发表于 08-15 10:25 ?97次阅读

    PWM 型号舵机控制方法!

    一、PWM 舵机控制原理 PWM 舵机的核心是 脉冲宽度与旋转角度的对应关系 : 舵机接收周期性的 PWM 信号(通常周期为 20ms,即频率 50Hz),信号由高电平(有效电平)和低
    的头像 发表于 08-12 18:37 ?119次阅读

    【RA-Eco-RA6M4开发板评测】+PWM与舵机控制

    舵机是一种靠占空比来控制摆动位置伺服电机,因此以PWM是恰如其份的选择。它之所以可以由占空比来控制摆动位置是与它的结构密不可分的。当信号进入内部电路后会产生一个偏置电压来触发电机,并由减速齿轮
    发表于 07-26 21:53

    【RA-Eco-RA6M4开发板评测】+01+开箱测评+UART+PWM+LED

    ) 02篇【RA-Eco-RA4E2-64PIN-V1.0开发板试用】+02+舵机控制+串口通讯 - 瑞萨单片机论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 03篇
    发表于 07-17 23:43

    【嘉楠堪智K230开发板试用体验】01 Studio K230开发板Test1——舵机控制

    这次的测试贴近一些比赛,从小项目入手,我们将舵机部分融合到板子中。 首先介绍一下舵机舵机(Servo Motor,有时也简称 Servo)是一种可以精确控制旋转角度或位置的电机装置
    发表于 07-10 09:07

    江苏润石推出RS8473-Q1运算放大器

    旋变驱动是一种用于控制旋转变压器的控制技术,广泛应用于需要高可靠性和抗干扰能力的运动控制系统中,比如伺服电机、永磁同步电机和无刷直流电机的高精度位置反馈、机器人关节、数控机床和飞行器舵机
    的头像 发表于 07-01 16:34 ?1574次阅读
    江苏润石推出RS8473-Q1运算放大器

    什么是脉宽调制?

    PWM(脉宽调制)通过调节数字信号高电平时间比例实现模拟控制,广泛应用于LED调光和舵机控制。LED亮度由占空比(高电平时间百分比)决定,50Hz以上频率可避免肉眼可见闪烁;舵机角度则
    的头像 发表于 06-16 16:57 ?640次阅读
    什么是脉宽调制?

    智能车电磁组——基本控制

    智能车电磁组——基本控制篇前言电磁车的控制比较简单,可以分为信号采集,舵机控制和电机控制三部分,电磁车的
    的头像 发表于 05-20 19:34 ?3228次阅读
    智能车电磁组——基本<b class='flag-5'>控制</b>篇

    从模拟到数字:舵机控制技术的飞跃!

    在科技浪潮的汹涌推动下,自动化领域正经历着一场悄无声息却又影响深远的变革,而舵机控制技术从模拟到数字的跨越,无疑是这场变革中的关键一跃。 传统模拟舵机,曾是自动化设备中的“老将”。它依赖模拟信号进行
    的头像 发表于 04-21 15:47 ?266次阅读
    从模拟到数字:<b class='flag-5'>舵机</b><b class='flag-5'>控制</b>技术的飞跃!

    舵机的类型及其特点

    : 高响应速度: 直流舵机响应速度快,适合需要快速反应的应用。 高扭矩: 直流舵机可以提供较大的扭矩,适合需要较大力量输出的应用。 控制简单: 直流舵机
    的头像 发表于 01-08 17:41 ?2854次阅读

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】+03+UART+控制舵机+控制LED

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】+03+UART控制舵机 1、引言 本来想完成CAN的测试发现控制板上没有CAN的驱动,所以本篇测评报告主要完成通过串口助手实现对
    发表于 12-18 22:39

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】+02+舵机控制+串口通讯

    1、引言 本篇测评报告主要完成串口通讯以及舵机PWM控制的实现。 上篇 【RA-Eco-RA4E2-64PIN-V1.0开发板试用】+初次见面+MDK生成代码+点灯地址如下
    发表于 12-18 11:06

    安信可Ai-WB2+舵机控制(SG90)

    以下作品由安信可社区用户 WangChong 制作 01、SG90舵机介绍 首先介绍说一下什么是舵机舵机是一种位置(角度)伺服的驱动器。适用于一些需要角度不断变化的,可以保持的控制
    的头像 发表于 11-06 16:10 ?2026次阅读
    安信可Ai-WB2+<b class='flag-5'>舵机</b><b class='flag-5'>控制</b>(SG90)

    开源项目!基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测

    声音,非常适合万圣节使用。 这个项目是一个很好的起点,特别适合那些想控制眼球运动和播放特定音频文件的小伙伴们。通过协调PIR传感器检测到的运动、舵机的移动和DFPlayer的音频播放,你可以实现一个
    发表于 10-28 10:18

    【CW32开发】初探四足机器人

    本项目使用8自由度舵机控制的四足机器人。主要用于爱好者学习参考。可实现基本控制姿态:前进、左转、右转、打滑、伸展、站立、躺平、摆手。有兴趣的朋友,也可以增加新步态控制
    的头像 发表于 09-25 12:08 ?2220次阅读
    【CW32开发】初探四足机器人