SG90 模块
模块介绍
用于驱动标准微型舵机 SG90,通过 PWM 信号精确控制舵机旋转角度(0°–180°)。适用于机械臂、云台、门锁等需要角度调节的项目。基于 MicroPython 的 machine.PWM 模块实现,支持任意 GPIO 引脚输出 PWM 信号。适用于 TowerPro SG90 及兼容型号。
硬件引脚说明
| 引脚名称 | 全称/含义 | 接线颜色 | 功能描述 |
|---|---|---|---|
| S | Signal/信号 | 黄色 | 数据传输引脚,利用 PWM 信号传输舵机角度目标(需支持 PWM 输出) |
| V | Voltage/电源 | 红色 | 电源电压输入,为设备提供工作电压 |
| G | Ground/地线 | 黑色 | 接地引脚,完成电路回路 |
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| pin | Pin | 无 | 连接 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 | 将舵机转动至指定角度(单位:度)。角度值保留两位小数,若目标角度与当前角度相同,则不执行操作 |
| angle | 无 | float | 可读写属性。读取时返回当前目标角度(保留两位小数);赋值时(如 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_angle和max_angle属性调整 - 无论是否通电都不要用手调整舵机角度,避免损坏齿轮或错位
使用技巧
- move_to 方法内部做了角度去抖和重复判断,避免频繁写入相同角度
- 在编程时,尽量让舵机角度变化平滑,避免突然的大角度转动,减少对电机和齿轮的冲击