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.
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 :
Vous aurez également besoin d'une carte Arduino 101 ou Genuino 101.
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
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.
Composants polarisés | 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
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.
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.