树莓派资料
显示屏资料
系统下载
树莓派Pico
首页 动态 发帖 版块 我的
 退出
游客  
等级:
金币:
经验值:

9g舵机使用介绍 树莓派Pico开发板Python控制旋转

  112 
 0
 1
趣    

一:舵机介绍

     9G 舵机是微型舵机的一种类型,“9G” 通常指其自身重量约为 9 克,因小巧轻便、成本低廉,成为电子爱好者、学生及小型项目开发者的常用选择。它通过接收 PWM(脉冲宽度调制)信号,精确控制输出轴角度,实现机械部件的精准转动,在小型机器人、航模、智能车等领域应用广泛。


结构与工作原理​(说明:舵机只能用信号去驱动它,千万不要用手去强行转动舵机的摇臂。这样会卡齿或者损坏内部结构! )

1.内部结构

9G 舵机主要由电机、减速齿轮组、控制电路板、电位器和外壳组成。电机作为动力源,提供转动动力;减速齿轮组降低电机转速,同时增大扭矩,使输出轴能够带动负载;电位器用于检测输出轴的实际角度,并将信息反馈给控制电路板;控制电路板则根据接收到的 PWM 信号和电位器反馈信号,控制电机的转动方向和角度。​

Image

2.工作原理

     舵机接收周期为 20ms 的 PWM 信号,通过信号脉冲宽度来确定转动角度。一般情况下,1ms 脉宽对应 0°,1.5ms 脉宽对应 90°,2ms 脉宽对应 180°。控制电路板将接收到的 PWM 信号脉宽与电位器反馈的实际角度信息进行比较,当两者不一致时,控制电机转动,直至输出轴达到目标角度。


控制舵机一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms--------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

Image


3.舵机线序

9G 舵机通常有三根引出线,分别为红色(电源线,接电源正极)、黑色或棕色(地线,接电源负极)、黄色或白色(信号线,连接控制器的 PWM 输出引脚) 。在连接时,需确保电源线和地线连接正确,否则可能导致舵机无法正常工作甚至损坏。通常需要将舵机的信号线连接到单片机开发板的信号引脚,通过编程输出 PWM 信号来控制舵机角度。

Image

Image

技术参数参数值说明
工作电压4.8~6v一般建议使用 5V,电压过高可能损坏舵机,过低则会导致扭矩不足、运转异常
空载电流35mA无负载时舵机运行的电流
堵转电流180mA输出轴被阻止转动时的电流,长时间堵转会发热,甚至烧毁舵机
旋转角度0~180°9g舵机的实际转动范围可能略小于 180°,有一定差距,需实际测试确认
扭矩约1.6KG.cm衡量舵机带负载能力的指标,数值越大,带动负载的能力越强
响应速度约0.18s/60°输出轴转动 60° 所需的时间,速度越快,舵机响应越灵敏

二:硬件连接

已知舵机有三根线,分别为红色(电源线,接电源正极)、黑色或棕色(地线,接电源负极)、黄色或白色(信号线,下面用树莓派Pico开发板来测试。将舵机的信号线我们接到树莓派Pico的GP0引脚上

树莓派Pico9g舵机
3.3V正极(红线)
GND负极(棕线)
GP0信号(黄线)

Image

三:Python程序

以下代码分别控制舵机旋转0°, 90°,180°,具体的旋转参数可以自行修改。请根据自己舵机的初始化位置进行调整相关参数。

from machine import Pin, PWM
import time

# 定义舵机引脚(GP0)
servo_pin = Pin(0)
servo = PWM(servo_pin)

# 设置PWM频率为50Hz(20ms周期)
servo.freq(50)

# 舵机角度映射函数 - 针对9G舵机优化
def set_angle(angle):
    """
    设置舵机角度
    
    参数:
    - angle: 目标角度 (0, 90, 180)
    """
    # 针对9G舵机的PWM参数(根据您的舵机微调)
    if angle == 0:
        duty = 900  # 0度位置
    elif angle == 90:
        duty = 4500  # 90度位置(中间位置)
    elif angle == 180:
        duty = 8100  # 180度位置
    else:
        print(f"不支持的角度: {angle},请使用0, 90, 180")
        return
    
    # 应用占空比
    servo.duty_u16(duty)
    
    # 等待舵机到达位置
    time.sleep(0.5)  # 增加等待时间确保舵机稳定到位

try:
    # 测试三个关键角度
    print("舵机测试程序 - 0°, 90°, 180°")
    
    # 循环测试多次
    for cycle in range(3):
        print(f"\n循环 {cycle+1}/3:")
        
        set_angle(0)
        print("舵机位置: 0°")
        time.sleep(1)
        
        set_angle(90)
        print("舵机位置: 90°")
        time.sleep(1)
        
        set_angle(180)
        print("舵机位置: 180°")
        time.sleep(1)
    
    # 回到中间位置
    set_angle(90)
    print("\n测试完成,舵机停在90°位置")
    
except KeyboardInterrupt:
    # 清理资源
    servo.deinit()
    print("\n程序已停止")


运行程序查看结果如下:


Image


使用注意事项​:

电源稳定性:确保供电电源稳定,避免电压波动过大影响舵机性能。若使用电池供电,需注意电池电量下降导致的电压降低问题。​

负载匹配:9G 舵机扭矩较小,避免让其带动过重负载,否则可能出现无法转动、齿轮磨损甚至舵机损坏的情况。​

安装固定:安装舵机时,要确保固定牢固,防止在运行过程中因震动等原因导致松动,影响角度控制精度。​

避免堵转:尽量避免舵机输出轴被卡住或堵转,若出现堵转情况,应及时断电检查,防止舵机过热烧毁。​

信号兼容:确保控制器输出的 PWM 信号参数(频率、脉宽范围)与舵机兼容,否则舵机可能无法按预期转动。​

旋转问题:舵机只能用信号去驱动它,千万不要用手去强行转动舵机的摇臂。这样会卡齿或者损坏内部结构! 

标签:
作者签名:    楼主  2025-06-11 15:06:22
回复列表
Powered by RASPI _VERSION
© 2017-2025 树莓派极客版权
您的IP: 18.97.14.82 , 2025-06-19 14:02:02
Powered by RASPI _VERSION
© 2017-2025 树莓派极客版权