Skip to content

SG90 模块

模块介绍

用于驱动标准微型舵机 SG90,通过 PWM 信号精确控制舵机旋转角度(0°–180°)。适用于机械臂、云台、门锁等需要角度调节的项目。基于 MicroPython 的 machine.PWM 模块实现,支持任意 GPIO 引脚输出 PWM 信号。适用于 TowerPro SG90 及兼容型号。

硬件引脚说明

引脚名称全称/含义接线颜色功能描述
SSignal/信号黄色数据传输引脚,利用 PWM 信号传输舵机角度目标(需支持 PWM 输出)
VVoltage/电源红色电源电压输入,为设备提供工作电压
GGround/地线黑色接地引脚,完成电路回路

初始化参数

参数类型默认值说明
pinPin连接 SG90 数据引脚的 GPIO 引脚(需支持 PWM 输出)

导入和实例创建

python
from machine import Pin  # 导入Pin模块
from sg90 import SG90  # 导入SG90驱动模块

# 初始化 SG90 舵机,信号线连接至 GPIO4(需支持 PWM 输出)
servo = SG90(Pin(4))  # 创建SG90实例,传入Pin对象

核心属性方法

属性或方法参数返回类型说明
move_to()angle (float 0-180)None将舵机转动至指定角度(单位:度)。角度值保留两位小数,若目标角度与当前角度相同,则不执行操作
anglefloat可读写属性。读取时返回当前目标角度(保留两位小数);赋值时(如 servo.angle = 45.0)等效于调用 move_to(45.0)
deinit()None停止 PWM 信号输出,使舵机释放扭矩(进入"自由"状态)

使用示例

python
from machine import Pin
from sg90 import SG90
from time import sleep_ms

# 初始化 SG90 舵机,信号线连接至 GPIO4(需支持 PWM 输出)
servo = SG90(Pin(4))

servo.move_to(0)                   # 旋转至 0 度
print(f"当前角度: {servo.angle}°")  # 输出当前角度
sleep_ms(1000)                     # 等待 1 秒
servo.angle = 180                  # 旋转至 180 度
print(f"当前角度: {servo.angle}°")  # 输出当前角度
servo.deinit()                     # 释放舵机扭矩

注意事项

硬件与电源要求

  • 确保所用引脚支持 PWM 输出(如 ESP32/ESP8266 多数 GPIO 均支持)
  • 推荐供电电压为 4.8V–5V,避免使用主控板 3.3V 直接供电导致力矩不足
  • 多个舵机建议使用独立电源供电,防止电流过大导致主控复位

重要提示

  • 角度范围默认 0°~180°,可通过修改 min_anglemax_angle 属性调整
  • 无论是否通电都不要用手调整舵机角度,避免损坏齿轮或错位

使用技巧

  • move_to 方法内部做了角度去抖和重复判断,避免频繁写入相同角度
  • 在编程时,尽量让舵机角度变化平滑,避免突然的大角度转动,减少对电机和齿轮的冲击