Plateforme-PAPM-Code

De MCHobby - Wiki
Révision datée du 2 mars 2013 à 23:25 par Admin (discussion | contributions) (→‎Exemple en Vidéo)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Principe marche avant/arrière

Ce servo tourne constamment dans un sens ou dans l'autre à la place de se placer à un angle donné. Il est utilisé pour réaliser vos propres plateformes mobiles et petits robots "simple".

Vous pouvez utiliser vos codes, matériels ou librairies "servo" habituels pour contrôler ces servos.

  • La position "0°" (impulsion de 1.5ms) correspond à l'arrêt,
    Exécutez la ligne suivante sur Arduino: myservo.write(90); 
  • La position "90°" (impulsion 2ms) correspond à la marche avant, plein régime,
    Exécutez la ligne suivante sur Arduino: myservo.write(180); 
  • La position "-90°" (impulsion 1ms) correspond à la marche arrière, plein régime.
    Exécutez la ligne suivante sur Arduino: myservo.write(0); 

Calibration

Les servos à rotation continue nécessiter une petite phase de calibration simple à réaliser (voir plus bas).

Cette phase de calibration permet de régler "la position d'arrêt" pour que le moteur ne tourne plus lorsque l'arrêt est demandé.

Envoyez l'instruction d'arrêt au servo et ajustez ensuite le potentiomètre (accessible dans le petit trou sur le côté) à l'aide d'un tournevis jusqu'au moment ou le servo moteur arrête de tourner et que la roue reste immobile

// --- Ma planche a pain mobile --------------------------------
//
// Un servo normal se positionne sur un angle donné en fonction.
// Un servo a rotation continue est modifié pour tourner plus ou moins vite 
//   en fonction de l'instruction envoyée.
// Un servo à rotation continue permet de créer facilement de petits robot mobiles
//
// Un projet www.mchobby.be (vente de kit et composant)
// Meurisse D. - Licence CC-SA-BY
//
// http://mchobby.be/wiki/index.php?title=Plateforme-PAPM
//
#include <Servo.h> 
 
// creer des objets Servo pour le controle de Servo à Rotation 
// continue
Servo servoGauche; // sur broche 9
Servo servoDroit;  // sur broche 10
  
void setup() 
{ 
  servoGauche.attach(9);  // attacher le servo gauche sur la pin 9 
  servoDroit.attach(10);  // attacher le servo droit sur la pin 10
  // arret
  servoGauche.write(90);
  servoDroit.write(90); 
} 
 
void loop() 
{ 
  // Calibrez vos servos moteurs pour qu'ils restent à l'arret
} 

Marche Avant

Les servos sont placez tête-bêche. Cela signifie que pour effectuer une marche avant, l'un des moteur doit fonctionner dans le sens avant... et l'autre dans le sens opposer.

  • Le servo droit reçoit la commande -90° par l'instruction servoDroit.write( 0 )
  • Le servo gauche reçoit la commande +90° par l'instruction servoGauche.write( 180 )

Voici un exemple pratique de mise en oeuvre

// --- Ma planche a pain mobile --------------------------------
//
// Un servo normal se positionne sur un angle donné en fonction.
// Un servo a rotation continue est modifié pour tourner plus ou moins vite 
//   en fonction de l'instruction envoyée.
// Un servo à rotation continue permet de créer facilement de petits robot mobiles
//
// Un projet www.mchobby.be (vente de kit et composant)
// Meurisse D. - Licence CC-SA-BY
//
// http://mchobby.be/wiki/index.php?title=Plateforme-PAPM
//

#include <Servo.h> 
 
// creer des objets Servo pour le controle de Servo à Rotation 
// continue
Servo servoGauche; // sur broche 9
Servo servoDroit;  // sur broche 10
  
void setup() 
{ 
  servoGauche.attach(9);  // attacher le servo gauche sur la pin 9 
  servoDroit.attach(10);  // attacher le servo droit sur la pin 10
  // arret
  servoGauche.write(90);
  servoDroit.write(90); 
} 
 
void loop() 
{ 
  // SI VOS MOTEUR ONT ETE CALIBRES A L ARRET...
  
  // --- Test de la "Marche avant" ---
  // Si le mobile recule.... c'est que les deux servo sont montés
  // dans le "mauvais sens". Le plus simple c'est encore d'inverser
  // les raccordements des servos sur les broches 9 et 10.
  servoDroit.write( 0 );
  servoGauche.write( 180 );
  
  // attendre 5 secondes
  delay( 5000 );
  
  // Arret
  servoDroit.write( 90 );
  servoGauche.write( 90 );
  
  // arreter le programme
  while( true );
} 

Exemple plus complet

Avancer tourner, reculer, ... voici un exemple un peu plus étendu.

// --- Ma planche a pain mobile --------------------------------
//
// Un servo normal se positionne sur un angle donné en fonction.
// Un servo a rotation continue est modifié pour tourner plus ou moins vite 
//   en fonction de l'instruction envoyée.
// Un servo à rotation continue permet de créer facilement de petits robot mobiles
//
// Un projet www.mchobby.be (vente de kit et composant)
// Meurisse D. - Licence CC-SA-BY
//
// http://mchobby.be/wiki/index.php?title=Plateforme-PAPM
//

#include <Servo.h> 
 
// creer des objets Servo pour le controle de Servo à Rotation 
// continue
Servo servoGauche; // sur broche 9
Servo servoDroit;  // sur broche 10
  
void setup() 
{ 
  servoGauche.attach(9);  // attacher le servo gauche sur la pin 9 
  servoDroit.attach(10);  // attacher le servo droit sur la pin 10
  // arret
  servoGauche.write(90);
  servoDroit.write(90); 
} 
 
void loop() 
{ 
  // SI VOS MOTEUR ONT ETE CALIBRES A L ARRET...
  
  // --- Test de la "Marche avant" ---
  // Si le mobile recule.... c'est que les deux servo sont montés
  // dans le "mauvais sens". Le plus simple c'est encore d'inverser
  // les raccordements des servos sur les broches 9 et 10.
  servoDroit.write( 0 );   // avant 
  servoGauche.write( 180 );// avant
  
  // attendre 5 secondes
  delay( 5000 );
  
  // Tourner à gauche
  servoDroit.write( 0 );  // avant
  servoGauche.write( 0 ); // arriere
  delay( 2000 );
  
  // Marche Avant
  servoDroit.write( 0 );
  servoGauche.write( 180 );
  
  // attendre 5 secondes
  delay( 5000 );
  
  // Tourner à droite
  servoDroit.write( 180 ); // arriere
  servoGauche.write( 180 );// avant 
  delay( 3000 );
  
  // Marche Arrière
  servoDroit.write( 180 ); // arriere 
  servoGauche.write( 0 );  // arriere
  
  delay( 5000 );
  
  // Arret
  servoDroit.write( 90 );
  servoGauche.write( 90 );
  
  // arreter le programme
  while( true );
} 

Exemple en Vidéo

{{#Widget:Iframe |url=http://www.youtube.com/embed/3liKe_dBTI8 |width=420 |height=315 |border=0 }}


Projet réalisé par Meurisse D. pour MCHobby.be

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.