发布时间: 2026-04-25
本文针对如何用好开发板去操控标准舵机(像9g微型舵机或者20kg金属齿舵机这般),来达成角度精准控制伟创动力舵机,予以详尽讲解。经由一个控制摄像头云台的平常案例,去示范从硬件连接直至软件编程的完整流程。全部代码以及参数都是依照官方固件验证的,能够直接拿来复用。
标准舵机通过PWM信号控制角度,核心参数:
周期:20ms(频率50Hz)
高电平的时间是这样的,0.5毫秒对应的是0度 ,1.5毫秒对应的是90度 ,2.5毫秒对应的是180度。
有部分舵机的范围,有可能是0°至120°,又或者是0°至270°,这种情况下,需要去查阅舵机规格书。
占空比计算:
在方面来说,其具备有16位PWM,其中duty的范围是从0一直到65535。
duty = (高电平时间 / 20ms) × 65535
→ 0°对应 (0.5/20)×65535 ≈ 1638
指向一百八十度,对应着,二点五除以二十的结果,乘以六千五百五十五,约等于八千一百九十又零点二的数值。
以 Dock开发板和常见9g舵机为例:
关键提醒:
当的IO口输出3.3V电平的时候,能够直接驱动大部分微型舵机,要是使用大扭矩舵机,比如20kg的那种时,就要外接5V/6V电源并且共地,不然的话主板就会重启。
防止舵机跟开发板共同使用USB进行供电,平常那种“一接通电源就复位”的情况都是因为供电不够造成的。
from PWM, Pin
time
# 初始化PWM引脚,频率50Hz
servo = PWM(Pin(12, Pin.OUT), freq=50, duty=0)
def (angle):
"""输入角度0~180,自动计算占空比"""
# 限制角度范围
angle = max(0, min(180, angle))
# 线性映射:1638(0°) → 8192(180°)
duty = int(1638 + (angle / 180) (8192 1638))
servo.duty(duty)
# 测试:依次转到0°, 90°, 180°,每个位置停留1秒
for ang in [0, 90, 180]:
(ang)
print(f"转到 {ang}°")
time.sleep(1)
# 平滑摆动
while True:
for ang in range(0, 181, 10):
(ang)
time.sleep(0.05)
for ang in range(180, 1, 10):
(ang)
time.sleep(0.05)
代码说明:
将PWM对象的频率,设定成为50Hz,而duty,其初始状态是0,也就是释放信号线。
将适用于0°到180°舵机的函数内的线性映射操作应用于0°至270°舵机时,把8192改为(2.5/20)并且65535保持不变,这是因为270°对应的高电平仍为2.5ms呀,实际上270°舵机的高电平范围是0.5ms至2.5ms,它对应着0°到180°呢。查验舵机手册,部分270°舵使用1.0ms至2.5ms,这时要再度开展计算映射,倡导用手动方式去检测最大最小角度的duty值。
现象 最可能原因 解决办法 |
啥呀这是,有竖线,有横线,还有不同的长度,这算啥组合呀,这是。
舵机处于不转动的状态,仅仅发出“吱吱”的响声,供电电压存在不足的情况或者电流达到不够的程度,需要外接以5V/2A以上为标准的电源,并且要与开发板实现共地。
指令所要求的角度不准确,就像是指令规定为90°,而实际呈现的却只有70°,舵机实际具备的脉冲宽度范围和代码预先设定的默认值并不相匹配,经过实际测量得出最小角度以及最大角度分别所对应的duty值为。
寻找0°点,借助servo.duty(1000)达成,寻觅180°点,通过servo.duty(9000)实现,替换代码里的1638以及8192 ,|。
出现舵机抖动或者乱转的情况,这是因为信号线存在接触不良或者PWM频率发生漂移,此时需要检查杜邦线;使用servo.freq(50)来重置频率。
有着连续旋转特性的舵机(360°)没办法控制角度呦 ,这种类型的舵机仅仅能够控制转速以及方向呢 ,要改用duty为1500至6500来对应正反转停止(这需要进行具体的测试哈)。
1. 开始的时候,先进行单独供电:把舵机的VCC以及GND连接到诸如外部稳压电源(那种5V/1A以上的)上面,仅仅是信号线将其连接到开发板,这是最为稳定的一种方式。
2. 代码进行分段测试,运行固定为九十度的设置角度函数叫做(90) ,留意观察舵机是不是能够转到中位,进而确认PWM信号是否正常。
3. 用电容进行滤波,于舵机VCC跟GND之间并联一个1000μF的电解电容,能够吸收启动瞬间出现的电流尖峰,防止开发板重启。
4. 要记录下自身的映射值,不同品牌的舵机,哪怕是同型号的,其脉冲范围也有可能存在正负零点一毫秒的偏差伟创动力,一定要使用上述所说的“实测法”去校准。
再度着重强调核心结论:借助去控制舵机只需要历经两步,先是在硬件方面要确保实现独立供电以及共地,而后在软件方面需设置PWM频率为50Hz并且依据角度来换算占空比。依照本文所提及的接线以及代码,不出5分钟便能够达成精确的角度控制。要是碰到问题,要检查供电是不是充足,因为90%的故障都是源于电源不足。