Ul Servomotor SG90 este un servo mic și ușor utilizat în mod obișnuit în proiecte de robotică, automatizare și bricolaj. Permite controlul precis al poziției unghiulare folosind Modularea lățimii impulsului (PWM). Acest ghid vă va arăta cum să controlați un Servomotor SG90 cu un Raspberry Pi folosind Python.
De ce veți avea nevoie
- Zmeura Pi (orice model cu suport GPIO, de exemplu, Pi 3, Pi 4)
- Servomotor SG90
- Sursă de alimentare externă (5V, opțional pentru mai multe servo-uri)
- Breadboard și Jumper Wires
- Python instalat pe Raspberry Pi
Pasul 1: Cablarea SG90 Servo la Raspberry Pi
The SG90 servo motor are trei ace:
Pin SG90 | Pin Raspberry Pi | Funcţie |
---|---|---|
VCC (Roșu) | 5V (Pin 2) | Alimentare cu Energie |
GND (Brun) | GND (Pin 6) | Pământ |
Semnal (Orange) | GPIO18 (Pin 12) | Control Semnal PWM |
Notă: Dacă utilizați mai multe servos, utilizați un sursă de alimentare externă de 5V pentru a evita supraîncărcarea pinului de 5V Raspberry Pigetings.
Pasul 2: Activați PWM pe Raspberry Pi
Raspberry Pi generează semnale PWM pentru a controla poziția servo.
- Instalați Raspberry Pi GPIO bibliotecă (dacă nu este deja instalat):
sudo apt update && sudo apt install python3-rpi.gpio
- Deschideți un editor de script Python:
nano servo_control.py
- Copiați următorul script Python pentru controlați servomotorul SG90:
Pasul 3: Codul Python pentru a controla Servo
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()
Pasul 4: Rularea Servo Control Script
-
Salvați scenariul și ieșiți:
- Apăsa CTRL+X, În acest caz Y, În acest caz INTRODUCE.
-
Rulați scenariul:
python3 servo_control.py
-
Introduceți unghiuri între 0 și 180 pentru a muta servo.
Pasul 5: Înțelegerea PWM pentru Servo Control
- PWM Frecvență: SG90 operează la 50Hz.
-
Calculul Ciclului de Duty:
- 0° → 2,5% Ciclul de Duty
- 90° → 7,5% Ciclul de Duty
- 180° → 12,5% Ciclul de Duty
-
Formula:
duty_cycle = (angle / 18) + 2.5
Pasul 6: Aplicații ale Servo SG90 cu Raspberry Pi
- Braţe Robotice – Control articulații pentru mișcare.
- Uși și Încuietori Automate – Mecanisme deschise/închise folosind un servo.
- Sisteme de camere Pan-Tilt – Mutați camerele pentru supraveghere sau fotografie.
- Automatizarea Smart Home – Control pârghii, încuietori și comutatoare de la distanță.
Depanare
-
Servo Nu Mutați?
- Asigura cablare corectă (VCC, GND și GPIO18 pentru semnal).
- Dacă utilizați mai multe servos, utilizați un sursă de alimentare externă de 5V.
-
Mișcări Eratice?
- Asigurați o putere stabilă; utilizare condensatoare (100F) dacă este necesar.
- Folosi control PWM de precizie mai mare, În acest fel, ca un modul PCA9685 PWM pentru servos multiple.
-
Permisiune Negată Eroare?
- Rulați scenariul cu
sudo
:sudo python3 servo_control.py
- Rulați scenariul cu
Concluzie
Raportul Servomotor SG90 este o modalitate excelentă de a adăuga motion control la proiecte Raspberry Pi. Folosind PWM semnals, puteți controla cu precizie poziția servo-ului pentru robotică, automatizare și aplicații IoT. Experimentați diferite unghiuri și aplicații pentru a-i debloca întregul potențial! 🚀