Introduction

Dans ce cours on va voir comment contrôler un servomoteur avec la Raspberry Pi.

Un servomoteur est un moteur très précis où l’on peut contrôler sa direction son angle au degré près. Il peut être utilisé si l’on a un projet nécessitant des positions de moteur très précise. Certains servomoteurs peuvent faire des tours qu’à 180 degrés. Si vous souhaitez avoir un moteur précis tournant à 360 degrés on peut vous conseillez le moteur pas à pas.

Voici le schéma pour connecter le servomoteur à la Raspberry Pi :

Programmation

Voici le programme qui permet de faire fonctionner le servomoteur. Celui-ci utilise le PWM avec de faire varier la position du moteur :

import RPi.GPIO as GPIO
import time

# Configuration des broches
servo_pin = 17

# Configuration initiale de la GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(servo_pin, GPIO.OUT)

# Définir la fréquence du signal PWM (50 Hz est généralement utilisé pour les servomoteurs)
pwm_frequency = 50
pwm = GPIO.PWM(servo_pin, pwm_frequency)

# Fonction pour définir l'angle du servomoteur
def set_servo_angle(angle):
    duty_cycle = (angle / 18) + 2
    GPIO.output(servo_pin, True)
    pwm.ChangeDutyCycle(duty_cycle)
    time.sleep(1)  # Attendez 1 seconde pour que le servomoteur atteigne la position
    GPIO.output(servo_pin, False)
    pwm.ChangeDutyCycle(0)

try:
    # Démarrer le PWM avec un angle initial de 90 degrés
    pwm.start(7.5)

    # Faire tourner le servomoteur de 0 à 180 degrés avec un pas de 30 degrés
    for angle in range(0, 181, 30):
        set_servo_angle(angle)
        time.sleep(1)

    # Revenir à la position initiale (90 degrés)
    set_servo_angle(90)

except KeyboardInterrupt:
    pass

finally:
    # Nettoyer les ressources GPIO
    pwm.stop()
    GPIO.cleanup()