Usando o motor servo SG90 com o Raspberry Pi

Using the SG90 Servo Motor with the Raspberry Pi

Motor servo SG90 é um servo pequeno e leve comumente usado em projetos de robótica, automação e bricolage. Permite controle preciso da posição angular usando Modulação de largura de pulso (PWM). Este guia mostrará como controlar um Motor servo SG90 com um Raspberry Pi usando python.


O que você precisará

  1. Raspberry Pi (Qualquer modelo com suporte GPIO, por exemplo, PI 3, PI 4)
  2. Motor servo SG90
  3. Fonte de energia externa (5V, opcional para vários servos)
  4. Fios de pão e jumper
  5. Python instalado No Raspberry Pi

Etapa 1: Fiação do servo SG90 para o Raspberry Pi

O SG90 Servo Motor tem três pinos:

Pino sg90 Pino de framboesa pi Função
VCC (vermelho) 5V (pino 2) Fonte de energia
GND (marrom) GND (pino 6) Chão
Sinal (laranja) GPIO18 (pino 12) Controle de sinal PWM

Observação: Se estiver usando vários servos, use um Fonte de alimentação externa de 5V Para evitar sobrecarregar o pino de 5V do Raspberry Pi.


Etapa 2: Ativar PWM no Raspberry Pi

O Raspberry Pi gera sinais PWM Para controlar a posição do servo.

  1. Instale o Biblioteca Raspberry Pi GPIO (se ainda não estiver instalado):
    sudo apt update && sudo apt install python3-rpi.gpio
    
  2. Abra um editor de script Python:
    nano servo_control.py
    
  3. Copie o seguinte script python para Controle o motor servo SG90:

Etapa 3: Código Python para controlar o 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()

Etapa 4: executando o script de controle servo

  1. Salve o script e a saída:

    • Imprensa Ctrl+x, então Y, então DIGITAR.
  2. Execute o script:

    python3 servo_control.py
    
  3. Entre ângulos entre 0 e 180 para mover o servo.


Etapa 5: Entendendo o PWM para controle de servo

  • Frequência PWM: O SG90 opera em 50Hz.
  • Cálculo do ciclo de trabalho:
    • 0 ° → 2,5% Ciclo de trabalho
    • 90 ° → 7,5% do ciclo de trabalho
    • 180 ° → 12,5% Ciclo de trabalho
  • Fórmula: duty_cycle = (angle / 18) + 2.5

Etapa 6: Aplicações do servo SG90 com Raspberry Pi

  1. Braços robóticos - Controle juntas para movimento.
  2. Portas e bloqueios automatizados - Mecanismos abertos/próximos usando um servo.
  3. Sistemas de câmera de inclinação - Mova câmeras para vigilância ou fotografia.
  4. Automação residencial inteligente - Controle alavancas, bloqueios e interruptores remotamente.

Solução de problemas

  1. Servo não está se movendo?

    • Garantir fiação correta (VCC, GND e GPIO18 para sinal).
    • Se estiver usando vários servos, use um fonte de energia externa de 5V.
  2. Movimentos erráticos?

    • Garanta energia estável; usar Capacitores (100µF) se necessário.
    • Usar Controle PWM de maior precisão, como um Módulo PCA9685 PWM Para vários servos.
  3. Permissão negado erro?

    • Execute o script com sudo:
      sudo python3 servo_control.py
      

Conclusão

O Motor servo SG90 é uma ótima maneira de adicionar Controle de movimento para projetos Raspberry Pi. Usando Sinais PWM, você pode controlar com precisão a posição do servo para Aplicativos de robótica, automação e IoT. Experimente diferentes ângulos e aplicações para desbloquear todo o seu potencial! 🚀

Deixe um comentário

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.