这 SG90伺服电机 是一款在机器人技术,自动化和DIY项目中常用的小型,轻巧的伺服器。它允许精确控制角位置 脉冲宽度调制(PWM)。本指南将向您展示如何控制 SG90伺服电机带有覆盆子Pi 使用Python。
你需要什么
- 覆盆子pi (任何具有GPIO支持的模型,例如PI 3,PI 4)
- SG90伺服电机
- 外部电源(5V,多个伺服器的可选)
- 面包板和跳线电线
- 安装了Python 在覆盆子pi上
步骤1:将SG90伺服器接线到Raspberry Pi
这 SG90伺服电机有三个销钉:
SG90针 | 覆盆子Pi Pin | 功能 |
---|---|---|
VCC(红色) | 5V(引脚2) | 电源 |
GND(棕色) | GND(引脚6) | 地面 |
信号(橙色) | GPIO18(引脚12) | PWM信号控制 |
笔记: 如果使用多个伺服器,请使用 外部5V电源 为了避免超载Raspberry Pi的5V针。
步骤2:在Raspberry Pi上启用PWM
覆盆子pi 生成PWM信号 控制伺服位置。
- 安装 覆盆子PI GPIO库 (如果尚未安装):
sudo apt update && sudo apt install python3-rpi.gpio
- 打开Python脚本编辑器:
nano servo_control.py
- 将以下python脚本复制到 控制SG90伺服电机:
步骤3:控制伺服器的Python代码
import RPi.GPIO as GPIO
import time
# Set up the GPIO pin for PWM
SERVO_PIN = 18 # Use GPIO18 (Pin 12)
GPIO.setmode(GPIO.BCM)
GPIO.setup(SERVO_PIN, GPIO.OUT)
# Start PWM with 50Hz frequency
pwm = GPIO.PWM(SERVO_PIN, 50)
pwm.start(0)
def set_angle(angle):
duty_cycle = (angle / 18) + 2.5 # Convert angle to duty cycle
GPIO.output(SERVO_PIN, True)
pwm.ChangeDutyCycle(duty_cycle)
time.sleep(0.5) # Wait for servo to move
GPIO.output(SERVO_PIN, False)
pwm.ChangeDutyCycle(0)
try:
while True:
angle = int(input("Enter angle (0-180): "))
if 0 <= angle <= 180:
set_angle(angle)
else:
print("Invalid angle! Enter a value between 0 and 180.")
except KeyboardInterrupt:
print("Exiting...")
pwm.stop()
GPIO.cleanup()
步骤4:运行伺服控制脚本
-
保存脚本并退出:
- 按 Ctrl+X, 然后 y, 然后 进入.
-
运行脚本:
python3 servo_control.py
-
输入0到180之间的角度 移动伺服器。
步骤5:了解PWM用于伺服控制
- PWM频率: SG90在 50Hz.
-
占空比计算:
- 0°→2.5%占空比
- 90°→7.5%占空比
- 180°→12.5%占空比
-
公式:
duty_cycle = (angle / 18) + 2.5
步骤6:SG90伺服器与Raspberry Pi的应用
- 机器人的武器 - 移动控制接头。
- 自动门和锁 - 使用伺服器打开/关闭机制。
- 板倾斜摄像头系统 - 移动相机进行监视或摄影。
- 智能家庭自动化 - 远程控制杆,锁和开关。
故障排除
-
伺服器不动?
- 确保 正确接线 (信号的VCC,GND和GPIO18)。
- 如果使用多个伺服器,请使用 外部5V电源.
-
不稳定的动作?
- 确保稳定的力量;使用 电容器(100µF) 如果需要。
- 使用 更高的精度PWM控制,例如 PCA9685 PWM模块 用于多个伺服器。
-
允许拒绝错误?
- 运行脚本
sudo
:sudo python3 servo_control.py
- 运行脚本
结论
这 SG90伺服电机 是添加的好方法 运动控制 覆盆子PI项目。通过使用 PWM信号,您可以精确控制伺服器的位置 机器人技术,自动化和物联网应用程序。尝试不同的角度和应用,以解锁其全部潜力! 🚀