9G 舵机是微型舵机的一种类型,“9G” 通常指其自身重量约为 9 克,因小巧轻便、成本低廉,成为电子爱好者、学生及小型项目开发者的常用选择。它通过接收 PWM(脉冲宽度调制)信号,精确控制输出轴角度,实现机械部件的精准转动,在小型机器人、航模、智能车等领域应用广泛。
结构与工作原理(说明:舵机只能用信号去驱动它,千万不要用手去强行转动舵机的摇臂。这样会卡齿或者损坏内部结构! )
9G 舵机主要由电机、减速齿轮组、控制电路板、电位器和外壳组成。电机作为动力源,提供转动动力;减速齿轮组降低电机转速,同时增大扭矩,使输出轴能够带动负载;电位器用于检测输出轴的实际角度,并将信息反馈给控制电路板;控制电路板则根据接收到的 PWM 信号和电位器反馈信号,控制电机的转动方向和角度。
舵机接收周期为 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度;
9G 舵机通常有三根引出线,分别为红色(电源线,接电源正极)、黑色或棕色(地线,接电源负极)、黄色或白色(信号线,连接控制器的 PWM 输出引脚) 。在连接时,需确保电源线和地线连接正确,否则可能导致舵机无法正常工作甚至损坏。通常需要将舵机的信号线连接到单片机开发板的信号引脚,通过编程输出 PWM 信号来控制舵机角度。
技术参数 | 参数值 | 说明 |
工作电压 | 4.8~6v | 一般建议使用 5V,电压过高可能损坏舵机,过低则会导致扭矩不足、运转异常 |
空载电流 | 35mA | 无负载时舵机运行的电流 |
堵转电流 | 180mA | 输出轴被阻止转动时的电流,长时间堵转会发热,甚至烧毁舵机 |
旋转角度 | 0~180° | 9g舵机的实际转动范围可能略小于 180°,有一定差距,需实际测试确认 |
扭矩 | 约1.6KG.cm | 衡量舵机带负载能力的指标,数值越大,带动负载的能力越强 |
响应速度 | 约0.18s/60° | 输出轴转动 60° 所需的时间,速度越快,舵机响应越灵敏 |
已知舵机有三根线,分别为红色(电源线,接电源正极)、黑色或棕色(地线,接电源负极)、黄色或白色(信号线,下面用树莓派Pico开发板来测试。将舵机的信号线我们接到树莓派Pico的GP0引脚上
树莓派Pico | 9g舵机 |
3.3V | 正极(红线) |
GND | 负极(棕线) |
GP0 | 信号(黄线) |
以下代码分别控制舵机旋转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程序已停止")
运行程序查看结果如下:
使用注意事项:
电源稳定性:确保供电电源稳定,避免电压波动过大影响舵机性能。若使用电池供电,需注意电池电量下降导致的电压降低问题。
负载匹配:9G 舵机扭矩较小,避免让其带动过重负载,否则可能出现无法转动、齿轮磨损甚至舵机损坏的情况。
安装固定:安装舵机时,要确保固定牢固,防止在运行过程中因震动等原因导致松动,影响角度控制精度。
避免堵转:尽量避免舵机输出轴被卡住或堵转,若出现堵转情况,应及时断电检查,防止舵机过热烧毁。
信号兼容:确保控制器输出的 PWM 信号参数(频率、脉宽范围)与舵机兼容,否则舵机可能无法按预期转动。
旋转问题:舵机只能用信号去驱动它,千万不要用手去强行转动舵机的摇臂。这样会卡齿或者损坏内部结构!