Raspberry Pi - Servomoteur avec potentiomètre

Ce didacticiel vous explique comment utiliser le Raspberry Pi pour contrôler l'angle d'un servomoteur en fonction de la valeur d'entrée d'un potentiomètre. En détail, nous apprendrons :

Préparation du matériel

1×Raspberry Pi 5
1×Servo-moteur
1×Potentiometer
1×Alternativement: 10k Ohm Trimmer Potentiometer
1×Alternativement: Potentiometer Kit
1×Alternativement: Potentiometer Module with Knob
1×Module ADC ADS1115
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Raspberry Pi
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Raspberry Pi
1×Recommandé: Écran tactile HDMI pour Raspberry Pi

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du Servomoteur et du Potentiomètre

Si vous n'êtes pas familier avec les servomoteurs et les potentiomètres (brochages, fonctionnement, programmation, etc.), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Diagramme de câblage du servomoteur Raspberry Pi avec potentiomètre

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Pour simplifier et organiser votre montage de câblage, nous recommandons l'utilisation d'un shield à bornier à vis pour Raspberry Pi. Ce shield assure des connexions plus sûres et mieux gérées, comme illustré ci-dessous :

Shield à bornier à vis pour Raspberry Pi

Code Raspberry Pi

Étapes rapides

  • Assurez-vous que vous avez Raspbian ou tout autre système d'exploitation compatible avec Raspberry Pi installé sur votre Pi.
  • Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
  • Assurez-vous que votre Raspberry Pi est connecté à Internet si vous avez besoin d'installer des bibliothèques.
  • Si c'est la première fois que vous utilisez Raspberry Pi, voyez Installation du logiciel - Raspberry Pi..
  • Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Voir comment connecter votre PC au Raspberry Pi via SSH.
  • Assurez-vous que vous avez la bibliothèque RPi.GPIO installée. Sinon, installez-la en utilisant la commande suivante :
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Installez la bibliothèque Adafruit_ADS1x15 en exécutant les commandes suivantes dans le terminal de votre Raspberry Pi :
sudo pip install Adafruit-ADS1x15
  • Créez un fichier de script Python potentiometer_servo.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi est mis à disposition du public sans aucune restriction. # Pour des instructions complètes et des schémas de câblage, veuillez visiter: # https://newbiely.fr/tutorials/raspberry-pi/raspberry-pi-potentiometer-servo-motor import time import RPi.GPIO as GPIO import Adafruit_ADS1x15 # Constants SERVO_PIN = 26 # Raspberry Pi GPIO pin connected to the servo motor ADC_CHANNEL = 0 # Analog channel on ADS1015 GAIN = 1 # Gain (1, 2/3, 1, 2, 4, 8, 16) # Setup GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(SERVO_PIN, GPIO.OUT) # Create PWM instance for servo servo_pwm = GPIO.PWM(SERVO_PIN, 50) # 50 Hz frequency servo_pwm.start(0) # Initialize servo position # Create ADS1x15 instance ads = Adafruit_ADS1x15.ADS1015() def map_value(value, in_min, in_max, out_min, out_max): # Map the input value from one range to another return (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min try: while True: # Read the raw ADC value from the potentiometer pot_value = ads.read_adc(ADC_CHANNEL, gain=GAIN) # Map the ADC value to the servo angle (0 to 180 degrees) angle = int(map_value(pot_value, 0, 32767, 0, 180)) # Control the servo motor according to the angle duty_cycle = (angle / 18) + 2.5 # Convert angle to duty cycle servo_pwm.ChangeDutyCycle(duty_cycle) print(f"Potentiometer Value: {pot_value}, Servo Angle: {angle}") time.sleep(0.1) except KeyboardInterrupt: servo_pwm.stop() GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en utilisant la commande suivante dans le terminal :
python3 potentiometer_servo.py

Le script s'exécute en boucle infinie jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

  • Tournez le potentiomètre
  • Vérifiez la rotation du servo-moteur
  • Consultez le résultat dans le Moniteur Série
PuTTY - Raspberry Pi
Potentiometer Value: 100, Servo Angle: 3 Potentiometer Value: 200, Servo Angle: 6 Potentiometer Value: 300, Servo Angle: 9 Potentiometer Value: 400, Servo Angle: 13 Potentiometer Value: 500, Servo Angle: 16 Potentiometer Value: 600, Servo Angle: 19 Potentiometer Value: 700, Servo Angle: 23 Potentiometer Value: 800, Servo Angle: 26 Potentiometer Value: 900, Servo Angle: 29 Potentiometer Value: 1000, Servo Angle: 33

Explication du Code

Consultez l'explication ligne par ligne contenue dans les commentaires du code source !

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !