servo_sweep.py

Raspberry Pi 5 (model-5) · Archivo : servo_sweep.py · Lenguaje : Python · Uso : Piloter un micro-servo (bras robotisé, caméra orientable) en PWM 50 Hz

Un microservo tipo SG90 se controla con PWM de 50 Hz en GPIO18 (pin 12) con PWMOutputDevice de gpiozero: value=0 es 0 grados, value=1 es 180. El script barre continuamente. Ojo con la alimentación: puce I/O RP1, USB-C 5 V/5 A (27 W), deux ports CSI, connecteur JST pour caméra/ventilateur; alimente los servos aparte a partir de dos.

Hardware

Una Raspberry Pi 5 (BCM2712 quad-core a 2,4 GHz, chip de E/S RP1, GPIO de 40 pines, alimentación USB-C de 5 V/5 A recomendada, dos puertos CSI de cámara). Un microservo SG90 (o similar), fuente externa de 5 V recomendada, cables dupont.

Cableado

Señal naranja/amarilla a GPIO18 (pin 12), marrón/rojo a 5 V, negro/amarillo a GND común con la placa.

Funcionamiento

PWMOutputDevice genera un tren de pulsos de 50 Hz, ancho 0,5–2,5 ms; el servo orienta su eje según el ancho.

Ejecución

Copia el script en la placa (scp) y ejecútalo con python3. En Bookworm, gpiozero 2.x controla los pines mediante el chip RP1; mantén gpiozero y python3-rpi.gpio actualizados (sudo apt full-upgrade). Se recomienda fuente de 5 V/5 A.

Variantes

Servo(angle) de gpiozero para una API en grados; dos servos forman una plataforma XY. Se recomienda una fuente de 27 W (5 V/5 A); sin ella, USB se limita a 600 mA en total.

servo_sweep.py

# servo_sweep.py — balaie un micro-servo (SG90) de 0 a 180 degres.
# Deps: sudo apt install python3-gpiozero
from gpiozero import PWMOutputDevice
from time import sleep

servo = PWMOutputDevice(18, frequency=50, pulse_width=0.001)

print("Balayage servo, Ctrl+C pour sortir")
try:
    while True:
        for deg in range(0, 181, 15):
            servo.value = deg / 180.0
            sleep(0.05)
        for deg in range(180, -1, -15):
            servo.value = deg / 180.0
            sleep(0.05)
except KeyboardInterrupt:
    servo.off()
    print("Arret")

← Volver a la ficha