Contrôler un servomoteur avec un potentiomètre et un écran LCD1602 à l'aide d'un Arduino

Contrôler un servomoteur avec un potentiomètre et un écran LCD1602 à l'aide d'un Arduino

Dans ce tutoriel, nous apprendrons à contrôler un servomoteur à l'aide d'un potentiomètre et à afficher la valeur du potentiomètre ainsi que l'angle du servomoteur sur un écran LCD1602. Ce projet est un excellent moyen de combiner plusieurs composants et de comprendre comment ils peuvent fonctionner ensemble pour créer un système interactif. À la fin de ce tutoriel, vous disposerez d'un montage fonctionnel qui vous permettra d'ajuster l'angle du servomoteur à l'aide d'une molette tout en affichant simultanément les valeurs sur l'écran LCD.

Avant d'aborder le câblage et le code, il est utile de comprendre les composants que nous allons utiliser. Le potentiomètre joue le rôle d'une résistance variable qui peut ajuster la tension de sortie en fonction de sa position, que nous utiliserons pour déterminer l'angle du servomoteur. Le LCD1602 affichera la valeur actuelle du potentiomètre et l'angle correspondant du servomoteur. Vous pouvez consulter la vidéo (à 00:00) pour un guide visuel de l'ensemble du processus.

Le matériel expliqué

Les principaux composants que nous utiliserons dans ce projet sont :

  • Carte Arduino :Cela servira de contrôleur pour l'ensemble du système, traitant les entrées du potentiomètre et contrôlant la position du servomoteur en fonction de ces entrées.
  • Potentiomètre:Un potentiomètre de 10 kΩ sera utilisé pour fournir une entrée analogique à l'Arduino. Il a trois bornes : l'une reliée à 5 V, l'une à la masse et la borne centrale reliée à une entrée analogique (A0) de l'Arduino.
  • Servomoteur:Ce servomoteur sera contrôlé en lui envoyant un angle en fonction de la position du potentiomètre. Le fil de signal se connecte à la broche numérique 9 de l'Arduino.
  • Afficheur LCD1602:Cet écran affichera la valeur du potentiomètre et l'angle du servomoteur. Il se connecte à plusieurs broches numériques de l'Arduino pour la commande.

Le potentiomètre fonctionne en faisant varier la résistance et donc la tension à sa borne centrale, que l'Arduino lit comme une entrée analogique. Le servomoteur est commandé en lui envoyant un signal de modulation de largeur d'impulsion (PWM) spécifique correspondant à l'angle souhaité. L'écran LCD1602 utilise une bibliothèque qui nous permet de contrôler facilement son affichage et d'afficher des informations concernant le potentiomètre et le servomoteur.

Détails de la fiche technique

Fabricantdivers
Numéro de pièceLM016L
Tension logique/E/S5 V
Tension d'alimentation4,5 - 5,5 V
Courant de sortie (par canal)jusqu'à 2 mA
Courant de crête (par canal)20 mA
Directives sur la fréquence PWM50 Hz
Seuils logiques d'entrée0,3 × Vcc(bas), 0.7 x Vcopie conforme(élevé)
Chute de tension / RDS(en conduction)/ saturation0,2 V max
Limites thermiques85 °C
PaquetDIP à 16 broches
Notes / variantesAfficheur de caractères 16x2

  • Connectez la broche centrale du potentiomètre à la broche analogique A0.
  • Assurez-vous que le servo est alimenté par une source de 5 V et connecté à la broche numérique 9.
  • Utilisez la bibliothèque appropriée pour l'écran LCD et assurez-vous qu'elle est incluse dans votre IDE Arduino.
  • Faites attention au câblage pour éviter les courts-circuits, surtout avec les connexions du servomoteur.
  • Vérifiez que l'écran LCD est correctement initialisé dans le code pour éviter des problèmes d'affichage.
Arduino wiring for LCD1602 12wires servo and pot
Arduino wiring for LCD1602 12wires servo and pot

Instructions de câblage

Pour câbler les composants, commencez par connecter le potentiomètre. Connectez une broche extérieure du potentiomètre à la broche 5V de l'Arduino, et l'autre broche extérieure à la masse. La broche du milieu va à la broche analogiqueA0.

Ensuite, pour le servomoteur, connectez le fil brun ou noir à la masse, le fil rouge à la broche 5 V, et le fil jaune ou orange à la broche numérique9sur l'Arduino. Pour le LCD1602, connectez leVDDbroche vers 5 V,RWmettre à la terre, etV0à la broche centrale du potentiomètre pour le réglage du contraste. ConnectezRSépingler12,ENépingler11,D4épingler5,D5épingler4,D6épingler3, etD7épingler2.

Il est également recommandé d'inclure une résistance de 220 ohms en série avec la LED si vous en utilisez une, en la reliant à l'alimentation 5 V. De plus, un condensateur de 470 µF peut être connecté entre l'alimentation et la masse du servo pour filtrer les parasites pendant le fonctionnement.

Exemples de code et tutoriel pas à pas

Le code commence par inclure les bibliothèques nécessaires et initialiser les broches pour l'écran LCD et le servomoteur. L'extrait suivant montre la configuration de l'écran LCD et du servomoteur :

void setup() {
  lcd.begin(16, 2);
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Robojax Servo Knob");
  delay(2000);
}

Cet extrait initialise l'écran LCD pour 16 colonnes et 2 lignes, branche le servomoteur sur la broche 9 et affiche un message de bienvenue sur l'écran LCD. Lelcd.clear()La fonction garantit que tous les messages précédents sont supprimés.

Ensuite, la boucle lit en continu la valeur du potentiomètre et met à jour la position du servomoteur ainsi que l'affichage LCD :

void loop() {
  val = analogRead(potpin);            // reads the value of the potentiometer
  angle = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo
  myservo.write(angle);                  // sets the servo position according to the scaled value
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Pot. Value:");
  lcd.setCursor(11, 0);
  lcd.print(val);
  lcd.setCursor(0, 1);
  lcd.print("Angle     :");
  lcd.setCursor(11, 1);
  lcd.print(angle);
  delay(500);
}

Cette boucle lit la valeur du potentiomètre, la convertit en un angle correspondant pour le servomoteur et met à jour l'écran LCD avec à la fois la valeur du potentiomètre et l'angle du servomoteur. Ledelay(500)à la fin de la boucle empêche l'affichage de se mettre à jour trop rapidement.

Démonstration / À quoi s'attendre

Lorsque vous mettez le système sous tension, l'écran LCD affichera "Robojax Servo Knob" pendant 2 secondes, puis la valeur du potentiomètre et l'angle du servo. En tournant le potentiomètre, l'angle du servo changera en conséquence et la nouvelle valeur du potentiomètre sera affichée sur l'écran LCD. Si vous constatez un comportement inattendu, comme un déplacement du servo dans le mauvais sens, vérifiez le câblage du potentiomètre et les connexions du servo (dans la vidéo à 10:00).

Images

SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
Arduino wiring for LCD1602 12wires servo and pot
Arduino wiring for LCD1602 12wires servo and pot
97-This is the Arduino code for controlling a servo with a potentiometer and an LCD1602.
Langue: C++
Copié !

Ressources et références

Fichiers📁

Aucun fichier disponible.