🛠 Servo moteur sur PWM0 (GPIO18) : 50 Hz et 2,5 à 12,5 %

Raspberry Pi Compute Module 1 (CM1) · intermediaire · Schéma : IMG-cm1-intermediaire-1-servo-pwm-gpio18.svg — Un servo moteur branché sur GPIO18 du Compute Module 1, avec le chronogramme PWM 50 Hz annoté des impulsions 0,5 ms à 2,5 ms correspondant à 2,5 % à 12,5 % de rapport cyclique

Objetivos

Controlar un servo de ángulo clásico con el PWM de hardware del CM1. En BCM2835, el canal PWM0 se enruta en modo alternativo al GPIO18. Un servo estándar espera un periodo de 20 ms (50 Hz) y lee la posición según el ancho de pulso: aproximadamente 1 ms en el centro, con un rango útil que va de 0,5 ms (2,5 % de ciclo de trabajo) a 2,5 ms (12,5 %). Se configura el PWM mediante el overlay del device tree pwm y luego a través de sysfs/pigpio, evitando el PWM por software que presenta jitter.

Material

Código completo

# Activer le PWM matériel
echo 'dtoverlay=pwm-28' | sudo tee -a /boot/config.txt
sudo reboot

# Pilotage pigpio (daemon PWM matériel)
sudo pigpiod
pigs p 18 0            # arrêt
pigs p 18 64           # ~1,56 % -> butée gauche (50 Hz)
pigs p 18 128          # ~3,1 % -> centre
pigs p 18 256          # ~6,25 %
pigs p 18 512          # ~12,5 % -> butée droite

# Balayage doux
for d in 64 96 128 160 192 224 256; do pigs p 18 $d; sleep 0.3; done

Verificación esperada

El servo se posiciona con precisión en cada consigna y mantiene su posición sin zumbido excesivo. El rango útil se extiende entre pigs p 18 64 (0,5 ms/2,5 %) y pigs p 18 512 (2,5 ms/12,5 %) para una salida de 8 bits a 50 Hz; por encima del 12,5 %, el servo llega al tope y consume más corriente. El PWM de hardware no presenta los huecos del método por software durante los accesos a la tarjeta SD.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales