Uso del motor SG90 Servo con la Raspberry Pi

Using the SG90 Servo Motor with the Raspberry Pi

El Sg90 servo motor es un servo pequeño y liviano comúnmente utilizado en robótica, automatización y proyectos de bricolaje. Permite un control preciso de la posición angular utilizando Modulación de ancho de pulso (PWM). Esta guía le mostrará cómo controlar un SG90 Servo Motor con Raspberry Pi Usando Python.


Lo que necesitarás

  1. Frambuesa pi (Cualquier modelo con soporte de GPIO, por ejemplo, PI 3, PI 4)
  2. Sg90 servo motor
  3. Fuente de energía externa (5V, opcional para múltiples servos)
  4. Cables de placa y jersey
  5. Python instalado en la frambuesa pi

Paso 1: Cableado el servo SG90 al Raspberry Pi

El SG90 Servo Motor tiene tres pines:

Pin de SG90 Pin de frambuesa Pi Función
VCC (rojo) 5V (pin 2) Fuente de alimentación
GND (marrón) GND (pin 6) Suelo
Señal (naranja) GPIO18 (pin 12) Control de señal PWM

Nota: Si usa múltiples servos, use un fuente de alimentación externa de 5V Para evitar sobrecargar el pasador de 5V de Raspberry Pi.


Paso 2: Habilite PWM en la Raspberry Pi

La frambuesa pi genera señales PWM para controlar la posición del servo.

  1. Instalar el Raspberry Pi GPIO Biblioteca (si no está instalado):
    sudo apt update && sudo apt install python3-rpi.gpio
    
  2. Abra un editor de guiones de Python:
    nano servo_control.py
    
  3. Copie el siguiente script de Python a controlar el servomotor SG90:

Paso 3: Código de Python para controlar el 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()

Paso 4: Ejecutando el script de control de servo

  1. Guardar el script y salir:

    • Prensa CTRL+X, entonces Y, entonces INGRESAR.
  2. Ejecute el guión:

    python3 servo_control.py
    
  3. Ingrese ángulos entre 0 y 180 para mover el servo.


Paso 5: Comprensión de PWM para el servo control

  • Frecuencia PWM: El SG90 funciona en 50Hz.
  • Cálculo del ciclo de trabajo:
    • 0 ° → 2.5% Ciclo de trabajo
    • 90 ° → 7.5% Ciclo de trabajo
    • 180 ° → 12.5% ​​Ciclo de trabajo
  • Fórmula: duty_cycle = (angle / 18) + 2.5

Paso 6: Aplicaciones de SG90 Servo con Raspberry Pi

  1. Brazos robóticos - Control de las juntas para el movimiento.
  2. Puertas y cerraduras automatizadas - Abrir/cerrar mecanismos utilizando un servo.
  3. Sistemas de cámara de inclinación - Mueva cámaras para la vigilancia o la fotografía.
  4. Automatización inteligente del hogar - Controle las palancas, los bloqueos y los interruptores de forma remota.

Solución de problemas

  1. Servo no se mueve?

    • Asegurar Cableado correcto (VCC, GND y GPIO18 para la señal).
    • Si usa múltiples servos, use un Fuente de alimentación externa de 5V.
  2. Movimientos erráticos?

    • Asegurar la potencia estable; usar condensadores (100 µF) si es necesario.
    • Usar Control PWM de mayor precisión, como un Módulo PCA9685 PWM para múltiples servos.
  3. ¿Error de permiso denegado?

    • Ejecute el guión con sudo:
      sudo python3 servo_control.py
      

Conclusión

El Sg90 servomotor es una excelente manera de agregar control de movimiento a los proyectos de Raspberry Pi. Utilizando Señales de PWM, puede controlar con precisión la posición del servo para Robótica, automatización e aplicaciones IoT. ¡Experimente con diferentes ángulos y aplicaciones para desbloquear su máximo potencial! 🚀

Escribir un comentario

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.