Code de recherche

Contrôle de moteur servo Arduino à l'aide d'un potentiomètre

Contrôle de moteur servo Arduino à l'aide d'un potentiomètre

Dans ce tutoriel, nous allons explorer comment contrôler un moteur servo à l'aide d'un potentiomètre avec un Arduino. L'objectif est de créer un circuit simple où la position du servo est ajustée en fonction de la rotation du potentiomètre. À la fin de ce projet, vous aurez un modèle fonctionnel qui fait varier en douceur l'angle du servo de 0 à 180 degrés lorsque vous tournez le potentiomètre. C'est un excellent moyen de comprendre les bases de l'entrée analogique et du contrôle de servo dans Arduino.

Pour y parvenir, nous utiliserons une carte Arduino, un moteur servo et un potentiomètre. Le potentiomètre agit comme une résistance variable, fournissant une entrée analogique à l'Arduino, qui déterminera ensuite la position du moteur servo en conséquence. Ce projet est non seulement amusant mais aussi éducatif, car il démontre des concepts clés en électronique et en programmation. Pour une explication plus approfondie, n'oubliez pas de consulter la vidéo (dans la vidéo à 00:00).

Matériel expliqué

Dans ce projet, les principaux composants sont la carte Arduino, le moteur servo et le potentiomètre. L'Arduino est le cerveau de l'opération, traitant les entrées et contrôlant les sorties. Le moteur servo est ce qui se déplacera physiquement en fonction des commandes qu'il reçoit de l'Arduino. Le potentiomètre peut être de 1k ohm à 1M ohm, permettant aux utilisateurs de fournir une entrée variable qui se traduit par un mouvement du servo.

Le moteur servo fonctionne en recevant un signal PWM (Modulation de Largeur d'Impulsion) qui indique la position souhaitée. Le potentiomètre, lorsqu'il est tourné, change sa résistance, qui est lue par l'Arduino comme une tension analogique. Le moteur servo fonctionne avec 5V. Ne fonctionne pas avec 3,3V. Cette tension est ensuite mappée à la plage de mouvement du moteur servo, permettant un mouvement fluide de 0 degrés à 180 degrés.

Détails de la fiche technique pour le moteur servo SG90

FabricantParallaxe
Numéro de pièceSG90
Tension logique/IO5 V
Tension d'alimentation4,8-6 V
Courant de sortie (par canal)~500 mA
Courant de crête (par canal)1 A
Directives sur la fréquence PWM50 Hz
Seuils de logique d'entrée0,5 V (bas), 2,5 V (haut)
Chute de tension / RDS(on)/ saturation0,5 V à 500 mA
Limites thermiques0°C à 60°C
PaquetServomoteur standard 9g
Remarques / variantesUtilisé couramment dans les applications RC

  • Assurez-vous que le servo ne dépasse pas sa capacité de courant maximale.
  • Utilisez un dissipateur de chaleur si le servo fonctionne en continu sous de fortes charges.
  • Connectez le potentiomètre à une broche analogique pour des lectures précises.
  • Soyez prudent concernant le timing du signal PWM pour le contrôle du servo.
  • Vérifiez la plage de mouvement du servo pour éviter les obstructions physiques.

Instructions de câblage

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

Pour cette configuration, vous devrez connecter les composants comme suit :

Connectez la broche du milieu du potentiomètre (balayeur) à la broche analogique de l'Arduino.A0Les deux autres broches du potentiomètre doivent être connectées à5VetGNDsur l'Arduino. Pour le moteur servo, connectez le fil rouge à5V, le fil noir àGND, et le fil jaune ou blanc au pin numérique9sur l'Arduino. Cet agencement permet au potentiomètre de fournir une entrée analogique à l'Arduino, qui contrôlera la position du moteur servo en fonction de cette entrée.

Assurez-vous de vérifier toutes les connexions et de vous assurer que le servo n'est pas obstrué dans son champ de mouvement. Si vous utilisez un modèle Arduino différent, confirmez que les affectations des broches pour l'entrée analogique et la sortie du servo sont compatibles.

Exemples de code et guide étape par étape

Ci-dessous se trouve un extrait du code qui initialise le servo et lit la valeur du potentiomètre :


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

Dans ce code, nous incluons la bibliothèque Servo et créons un objet servo appelémyservoLe servo est attaché à la broche9, ce qui nous permet de le contrôler en utilisant cette broche.


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

Dans la fonction de boucle, nous lisons la valeur du potentiomètre à partir de la broche.A0et le mapper de sa plage (0-1023) à la plage du servo (0-180 degrés). Lemyservo.write(pos)la commande déplace ensuite le servo à la position souhaitée en fonction de la rotation du potentiomètre.

Démonstration / À quoi s'attendre

Lorsque vous exécutez ce programme, vous devriez voir le moteur servo se déplacer en douceur de 0 à 180 degrés à mesure que vous tournez le potentiomètre. Si le servo ne bouge pas comme prévu, vérifiez le câblage et assurez-vous que le potentiomètre fonctionne correctement. De plus, assurez-vous que l'Arduino est correctement alimenté et que le code est téléchargé sans erreurs. Vous pouvez vous attendre à voir le servo refléter la position du potentiomètre en temps réel (dans la vidéo à 02:00).

Horodatages vidéo

  • 00:00- Introduction au projet
  • 01:30- Explication de la configuration matérielle
  • 03:45- Instructions de câblage
  • 05:00- Revue de code
  • 07:30- Démonstration du projet terminé

Images

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
Langue: C++
/*
 * Source original : Arduino IDE  
 * Projet Arduino : Contrôle de la position du servomoteur  
 * Ce code est utilisé avec un tutoriel vidéo pour Robojax.com  
 * Publié le 24 avril 2017, à Ajax, ON, Canada.  
 * Écrit/Modifié par Ahmad Shamshiri  
 * Regardez la vidéo sur YouTube : https://youtu.be/kZ9b31gVemc  
 * Voir la page du tutoriel pour ce code : https://robojax.com/RJT8  
 * Contrôle de la position d'un servomoteur à l'aide d'un potentiomètre (résistor variable)
 */
#include <Servo.h>

Servo myservo; // créer un objet servo pour contrôler un servo
 // douze objets servo peuvent être créés sur la plupart des cartes

int pos = 0; // variable pour stocker la position du servomoteur

void setup() {
  myservo.attach(9); // attache le servo sur la broche 9 à l'objet servo
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // va de 0 degrés à 180 degrés
 // par paliers de 1 degré
    myservo.write(pos); // dire au servo d'aller à la position dans la variable 'pos'
    delay(15); // attend 15 ms pour que le servomoteur atteigne la position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // passe de 180 degrés à 0 degrés
    myservo.write(pos); // dire au servo d'aller à la position dans la variable 'pos'
    delay(15); // attend 15 ms pour que le servomoteur atteigne la position
  }
}

Ressources et références

Aucune ressource pour le moment.

Fichiers📁

Aucun fichier disponible.