SIK Experiment Guide for the Arduino 101/Genuino 101 Board (French)

This Tutorial is Retired!

This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.

Pages
Contributors: D___Run___
Favorited Favorite 0

Expérience 10 : Piloter un servomoteur

Introduction

Cette expérience est une introduction au servomoteur, moteur intelligent que vous pouvez faire tourner à une position angulaire spécifique. Vous allez le programmer pour qu'il tourne selon une série de positions, balaie toute son amplitude de mouvement, puis recommence.

Composants nécessaires

Vous aurez besoin des composants suivants :

  • 1 plaque Breadboard
  • 1 carte Arduino 101 ou Genuino 101
  • 1 servomoteur
  • 3 cavaliers

Vous n'avez pas le SIK ?

Pour réaliser cette expérience sans le SIK, nous vous suggérons d'utiliser les composants suivants :

Breadboard - Self-Adhesive (White)

Breadboard - Self-Adhesive (White)

PRT-12002
$4.95
41
Servo - Generic (Sub-Micro Size)

Servo - Generic (Sub-Micro Size)

ROB-09065
$8.95
11
Jumper Wires - Connected 6" (M/M, 20 pack)

Jumper Wires - Connected 6" (M/M, 20 pack)

PRT-12795
$1.95
2

Vous aurez également besoin d'une carte Arduino 101 ou Genuino 101.

Arduino 101

DEV-13787
9 Retired

Genuino 101

DEV-13984
Retired

Lectures suggérées

Avant de poursuivre cette expérience, nous vous recommandons de vous familiariser avec les concepts des tutoriels suivants :

Présentation du servomoteur

alt text

Contrairement à la plupart des moteurs qui tournent en continu, un servomoteur peut tourner à un angle spécifique jusqu'à ce qu'on lui dise de tourner à un angle différent. Vous pouvez contrôler l'angle du servomoteur en lui transmettant des impulsions PWM ; le signal PWM est associé à un angle spécifique compris entre 0 et 180 degrés.

À l'intérieur du servomoteur, une boîte de vitesse connectée à un moteur entraine l'arbre. Un potentiomètre renvoie des informations sur la position de rotation du servomoteur, qui est ensuite comparée au signal PWM entrant. Le servomoteur s'adapte en conséquence pour correspondre aux deux signaux.

Dans cette expérience, le servomoteur est alimenté à 5 V par le fil rouge, connecté à la terre par le fil noir, tandis que le fil blanc est connecté à une broche GPIO numérique sur laquelle vous pouvez utiliser PWM (9, 6, 5, 3 sur la carte 101).

Branchement du matériel

Vous êtes prêt à tout raccorder ? Consultez le schéma de câblage ci-dessous pour savoir comment faire.

Faites particulièrement attention aux marquages indiquant comment placer les composants sur la plaque breadboard, car les composants polarisés ne peuvent être connectés à un circuit que dans une direction.

Connectez trois cavaliers à l'embase femelle trois broches du servomoteur pour le raccorder plus facilement à la plaque breadboard.

Schéma de câblage de l'expérience

alt text

Pour agrandir le circuit, cliquez sur le schéma.

Ouverture du sketch

Ouvrez l'EDI Arduino sur votre ordinateur. Le codage en langage Arduino contrôlera votre circuit. Ouvrez le code du Circuit 10 en accédant au « Code du guide SIK 100 » que vous avez précédemment téléchargé et placé dans votre dossier « Examples ».

Pour ouvrir le code, cliquez sur : File > Examples > 101 SIK Guide Code > Circuit_10

Vous pouvez également copier et coller le code suivant dans l'EDI Arduino. Cliquez sur Télécharger et observez ce qu'il se passe.

language:cpp
/*
SparkFun Inventor's Kit
Example sketch 10

SINGLE SERVO

  Sweep a servo back and forth through its full range of motion.

This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn more about Arduino.
*/

//include the servo library
#include   

//create a servo object called servo1
Servo servo1;  

void setup()
{
  //attach servo1 to pin 9 on the Arduino 101
  servo1.attach(9);
}

void loop()
{
  //create a local variable to store the servo's position.
  int position;

  // To control a servo, you give it the angle you'd like it
  // to turn to. Servos cannot turn a full 360 degrees, but you
  // can tell it to move anywhere between 0 and 180 degrees.

  // Change position at full speed:

  // Tell servo to go to 90 degrees
  servo1.write(90);   

  // Pause to get it time to move
  delay(1000);        

  // Tell servo to go to 180 degrees
  servo1.write(180);   

  // Pause to get it time to move
  delay(1000);         

  // Tell servo to go to 0 degrees
  servo1.write(0);     

  // Pause to get it time to move
  delay(1000);         

  // Tell servo to go to 180 degrees, stepping by two degrees
  for(position = 0; position < 180; position += 2)
  {
  // Move to next position
    servo1.write(position);  
     // Short pause to allow it to move
    delay(20);              
  }

  // Tell servo to go to 0 degrees, stepping by one degree
  for(position = 180; position >= 0; position -= 1)
  {
    // Move to next position
    servo1.write(position);
    // Short pause to allow it to move
    delay(20);               
  }
}

À propos du code

#include

#include est une commande « préprocesseur » spéciale qui insère une librairie (ou tout autre fichier) dans votre sketch. Vous pouvez taper cette commande vous-même ou choisir une librairie installée dans le menu « sketch / import library ».

Servo servo1;

Quand vous utilisez une librairie, vous créez ce que l'on appelle un objet de cette librairie et le nommez. Cet objet est un objet librairie Servo et s'appelle servo1. Si vous utilisez plusieurs servomoteurs, vous donnez un nom à chacun avec cette méthode.

servo1.attach(9);

La librairie Servo ajoute de nouvelles commandes qui vous permettent de contrôler un servomoteur. Pour préparer la carte Arduino à contrôler un servomoteur, vous devez d'abord créer un « objet » Servo pour chaque servomoteur (ici, nous l'avons appelé « servo1 »), puis « l'attacher » à une broche numérique (ici, nous utilisons la broche 9). Cela permet en quelque sorte au servomoteur d'appeler une fonction pinMode().

servo1.write(180);

Les servomoteurs de ce kit ne font pas un tour complet, mais ils peuvent être commandés pour tourner à une position spécifique. Nous utilisons la commande write() de la librairie Servo pour amener un servomoteur à un nombre de degrés spécifié (de 0 à 180). N'oubliez pas que le servomoteur a besoin de temps pour se déplacer. Si nécessaire, introduisez un bref delay().

Ce que vous devez voir

Le servomoteur doit se déplacer à diverses positions et à plusieurs vitesses. Dans le cas contraire, vérifiez vos connexions et assurez-vous d'avoir vérifié et téléchargé le code. Si le problème persiste, consultez la section Dépannage.

alt text

Dépannage

Le servomoteur ne tourne pas

Même avec les fils de couleur, un servomoteur peut être facilement branché à l'envers. C'est peut-être le cas.

Ne fonctionne toujours pas

Une fois ou deux, nous avons simplement oublié de connecter l'alimentation (fils rouge et noir) au 5 volts et à la terre (GND).

Le moteur a démarré, mais...

Si le servomoteur commence à bouger, puis tourne et qu'un voyant clignote sur votre carte 101, l'alimentation que vous utilisez n'est pas à la hauteur. L'utilisation d'une prise murale à la place d'une connexion USB devrait résoudre ce problème.