PWM信号是如何控制舵机的?

电子说

1.4w人已加入

描述

 PWM(脉冲宽度调制)信号控制舵机的核心原理是通过固定周期内高电平的持续时间(脉宽)对应舵机的旋转角度,舵机内部电路根据检测到的脉宽驱动电机转动到目标位置并保持。以下是具体实现过程:

一、核心控制逻辑

舵机的控制依赖于特定频率和脉宽的 PWM 信号,关键参数如下:

PWM 信号频率:固定为 50Hz(周期 20ms),这是舵机的标准接收频率,频率过高或过低会导致舵机无响应或角度偏差。

高电平脉宽与角度对应关系:舵机通过检测一个周期内高电平的时长来确定目标角度,典型对应关系为:

0.5ms 脉宽 → 0°(占空比 2.5%,即 0.5ms/20ms)

1.0ms 脉宽 → 45°(占空比 5.0%)

1.5ms 脉宽 → 90°(占空比 7.5%,中位角度)

2.0ms 脉宽 → 135°(占空比 10.0%)

2.5ms 脉宽 → 180°(占空比 12.5%)

二、舵机内部工作流程

当 PWM 信号通过信号线输入舵机后,内部电路会执行以下步骤:

信号检测:舵机内部的控制电路接收 PWM 信号,解析高电平持续时间,确定目标角度。

电压比较:将检测到的脉宽转换为对应的偏置电压,与舵机内部电位器(随输出轴同步转动)的电压进行比较,产生电压差。

电机驱动:电压差触发电机转动,通过减速齿轮组带动输出轴旋转,同时电位器也随之转动,改变自身电压。

位置锁定:当电位器电压与目标偏置电压相等(电压差为 0)时,电机停止转动,舵机保持在目标角度。

三、硬件连接与实现步骤

以 Arduino 控制器为例,具体操作如下:

硬件准备:

控制器:Arduino UNO(需支持 PWM 输出,引脚标有 “~”)。

舵机:如 SG90(3 线制:红色 VCC、棕色 GND、黄色信号线)。

电源:小舵机可直接接 Arduino 的 5V 电源,大扭矩舵机需外接独立电源(避免烧毁控制器)。

接线方式:

舵机 VCC → Arduino 5V(或外接电源正极)。

舵机 GND → Arduino GND(必须共地,否则信号紊乱)。

舵机信号线 → Arduino PWM 引脚(如~9)。

软件编程:

使用 Arduino 自带的Servo.h库简化控制,示例代码如下:

若需更精准控制,可使用writeMicroseconds()直接指定脉宽:

四、关键注意事项

共地原则:控制器、舵机、电源的 GND 必须连接在一起,否则 PWM 信号无法正常传输。

电源匹配:大扭矩舵机(如 MG996R)需外接 6V/12V 电源,避免直接使用控制器 5V 供电导致过载。

角度校准:不同舵机的脉宽 - 角度对应关系可能存在差异,需通过实际测试微调(如某些舵机 180° 需 2.2ms 脉宽)。

机械保护:避免强行让舵机转动超过物理极限角度(如部分舵机最大角度为 120°),防止齿轮损坏。

审核编辑 黄宇

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

全部0条评论

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

×
20
完善资料,
赚取积分