Utilizzando il servo motore SG90 con il Raspberry Pi

Using the SG90 Servo Motor with the Raspberry Pi

IL Motore servo SG90 è un servo piccolo e leggero comunemente usato in progetti di robotica, automazione e fai -da -te. Consente un controllo preciso della posizione angolare usando Modulazione della larghezza dell'impulso (PWM). Questa guida ti mostrerà come controllare un SG90 SERVO MOTORE CON UN RASPBERE Usando Python.


Cosa avrai bisogno

  1. Raspberry Pi (Qualsiasi modello con supporto GPIO, ad esempio PI 3, PI 4)
  2. Motore servo SG90
  3. Fonte di alimentazione esterna (5V, opzionale per i servos multipli)
  4. Breadboard e fili jumper
  5. Python installato Sul Raspberry Pi

Passaggio 1: cablaggio del servo SG90 al Raspberry Pi

IL SG90 Servo Motor ha tre pin:

PIN SG90 Pin di lampone Funzione
VCC (rosso) 5v (pin 2) Alimentazione elettrica
GND (Brown) GND (PIN 6) Terra
Segnale (arancione) GPIO18 (PIN 12) Controllo del segnale PWM

Nota: Se si utilizzano più servi, utilizzare un Alimentazione esterna 5 V Per evitare di sovraccaricare il perno da 5 V di Raspberry Pi.


Passaggio 2: abilita PWM su Raspberry Pi

Il Raspberry Pi Genera segnali PWM Per controllare la posizione del servo.

  1. Installa il Biblioteca Raspberry Pi GPIO (se non già installato):
    sudo apt update && sudo apt install python3-rpi.gpio
    
  2. Apri un editor di script Python:
    nano servo_control.py
    
  3. Copia il seguente script Python a Controlla il motore servo SG90:

Passaggio 3: codice Python per controllare il 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()

Passaggio 4: Esecuzione dello script di controllo del servo

  1. Salva lo script ed esci:

    • Premere Ctrl+X., Poi Y, Poi Entrare.
  2. Esegui lo script:

    python3 servo_control.py
    
  3. Immettere angoli tra 0 e 180 Per spostare il servo.


Passaggio 5: Comprensione di PWM per il servo Control

  • Frequenza PWM: L'SG90 opera a 50Hz.
  • Calcolo del ciclo di lavoro:
    • 0 ° → 2,5% di duty cycle
    • 90 ° → 7,5% di duty cycle
    • 180 ° → 12,5% di duty cycle
  • Formula: duty_cycle = (angle / 18) + 2.5

Passaggio 6: applicazioni del servo SG90 con Raspberry Pi

  1. Braccia robotiche - Le articolazioni di controllo per il movimento.
  2. Porte e serrature automatizzate - Meccanismi aperti/chiusi usando un servo.
  3. Sistemi di telecamere in padella - Spostare le telecamere per la sorveglianza o la fotografia.
  4. Automazione della casa intelligente - Controllare le leve, i blocchi e gli interruttori da remoto.

Risoluzione dei problemi

  1. Servo non si muove?

    • Garantire cablaggio corretto (VCC, GND e GPIO18 per il segnale).
    • Se si utilizzano più servi, utilizzare un fonte di alimentazione 5v esterna.
  2. Movimenti irregolari?

    • Garantire un potere stabile; utilizzo condensatori (100 µF) se necessario.
    • Utilizzo Controllo PWM di precisione superiore, come a Modulo PWM PCA9685 per servos multipli.
  3. Autorizzazione negato Errore?

    • Eseguire lo script con sudo:
      sudo python3 servo_control.py
      

Conclusione

IL Motore servo SG90 è un ottimo modo per aggiungere Controllo del movimento ai progetti Raspberry Pi. Usando Segnali PWM, puoi controllare con precisione la posizione del servo Applicazioni robotica, automazione e IoT. Sperimenta con angoli e applicazioni diverse per sbloccare il suo pieno potenziale! 🚀

Lascia un commento

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.