<< The Fribotte Homepage >>
Un club de passionnés en robotique participant à la coupe de France E=M6.
[Accueil] [Qui sommes-nous ?] [Robots] [Coupe e=m6] [BD Technique] [Forum] [Reportages] [Liens] [WiKiFri]

Fribotte

Introduction

Cette page décrit une interface de commande pour 8 servomoteurs, contrôlé par une liaison série, basée sur le micro contrôleur pic 16f84. 8 cartes peuvent être installées sur la même liaison se qui permet de contrôler individuellement jusqu'à 64 servomoteurs de quoi faire un robot mille-pattes.
 

 

 Le Schéma
Le schéma :
Schema 8 servos
Avec : ( environ 80 F )
  • Un pic 16f84
  • X1 quartz 4Mhz
  • C1,C2 2 condensateurs 33pF
  • C3 condensateur 100nF
  • C4 condensateur 10µF / 16 V
  • Des connecteurs pour les 8 servos, les 2 alimentations et la liaison série.

 

Le principe de fonctionnement.

Du point de vue électronique, il n'y a pas grand chose a dire. Tout est assemblé autour d'un pic 16F84 avec son inséparable oscillateur réalisé avec un quartz 4 MHz et de deux condensateurs 33pF. Les ports RB0 à RB7 sont utilisés en sortie pour générer les signaux des 8 servomoteurs. RA1 comme entrée série asynchrone venant d'une carte mère. RA0 est resté libre ce qui permettra ultérieurement, d'adapter à cette interface un autre protocole série synchrone, comme le fameux I2C. RA2, RA3 et RA4 sont relier au 5V ou a la masse, ce qui permet de donner une adresse au module et ainsi différencier jusqu'à 8 cartes reliées sur le même port série. Les condensateurs C3 et C4 stabilisent l'alimentation du pic. Certains servomoteurs consommant beaucoup, leur alimentation électrique a été séparée de celle des composants logiques, ce qui du même coup les protège des parasites générés.

Toute la puissance de ce montage est dans la programmation du microcontrôleur. Qui doit lire la liaison série, interpréter le message transmis et le transcrire en signaux compréhensibles par les servomoteurs.

Nous avons déjà décrit le fonctionnement des servomoteurs dans la page " Pic et servomoteur " de notre base technique. Ces signaux sont générés les un après les autres et répétés toutes les 20ms. Leurs durées pouvant varier de 0,5 à 2,5ms ce qui correspond à une rotation du servo d'un peu plus de 180° (codé sur 1 octet )

L'entrée est une liaison série RS232 niveau logique TTL, pouvant être générée facilement par une carte mère, un autre microcontroleur ou un PC (pour ce dernier, un adaptateur décrit plus bas est nécessaire).

Le protocole de transmission retenu dans le programme est défini à 2400 bauds, 1 bit de start, 1 de stop et pas de bit de parité. Pour modifier la position du servo, il suffira de transférer 4 octets :

  • Entête du message (valeur fixée à 255 )
  • L'adresse de la carte ( de 0 à 7 ) qui dépend du niveaux logique des ports RA2,RA3 et RA4.

Adresse carte

RA4

RA3

RA2

0

0V

0V

0V

1

0V

0V

5V

2

0V

5V

0V

3

0V

5V

5V

4

5V

0V

0V

5

5V

0V

5V

6

5V

5V

0V

7

5V

5V

5V

  • Le numéro du servomoteur ( de 0 à 7 )
  • La position du servo
    ( de 4 à 255 pour un déplacement sur plus de 180° ou 0 pour le désactiver )

Vous trouverez plus de détail sur la gestion de tous ces signaux dans le programme, que vous pouvez télécharger ici :
Programme carte 8 servomoteur ( 4.5 Ko )
 

Réalisation.

Ce montage comporte peu de composant, il peut facilement être réalisé sur une petit plaque d'essai.

Soudez vos composants en faisant attention au sens du condensateur. Soudez vos connecteurs. Programmez le pic. Alimenter en 5V les 2 entrées d'alimentations puis la liaison série. Il ne vous reste plus qu'a envoyer différante consigne pour voir vos servo bouger.

Pour vérifier votre montage : Mesurez au multimètre la tension aux bornes 4 et 14 du pic (± 5V ), et la tension sur les sorties vers les servos qui peut varier de 0,12V à 0,63V selon la consigne envoyée au servomoteur ( 0V si désactivé ). Si vous avez la chance d'avoir un oscilloscope vous pouvez l'utiliser pour vérifier ces signaux.
 

Le prototype accompagné de la PMI Simplet.

 

 Adaptateur pour PC.

Les ports séries présents sur tous les pc répondent à la norme RS232. Le niveau électrique du 1 logique est compris entre -3 et -25V et le 0 logique entre 3 et 25V. Alors que la carte 8 servomoteurs n'accepte que les niveaux logiques RS232-TTL ( 0V pour le 0 ; 5V pour le 1 ). D'où l'indispensable adaptateur. Il est tout à fait possible d'utilisé un circuit intégré comme le MAX232 ( qui sera bientôt, si ce n'est pas déjà fait, décrit dans notre bdtech ) Mais dans un souci de place et économique, on a préféré une solution a base de transistor.
 
Le schéma :
Schema 8 servos

Avec :

  • Q1 transistor BC547
  • R1,R2,R3 résistance 4,7 Kohm
    ( Jaune Violet Rouge Or )
  • Connecteurs vers cartes servo.
  • Connecteur DE-9 ( série )

Remarques sur la liaison série RS232 du PC :

  • Sur un connecteur 9 broches :
    • Le signal TXD est sur la patte 3
    • et la masse sur la patte 5.
  • Sur un connecteur 25 broches :
    • Le signal TXD est sur la patte 2
    • et la masse sur la patte 7.
Le principe de fonctionnement.

Une tension supérieure à 3V sur la liaison série rend passant le transistor, ce qui passe toutes les sorties à 0V. Lorsque cette tension est négative le transistor est bloqué, ce qui passe les sorties à 5V par l'intermédiaire de la résistance R3. L'adaptateur rempli donc bien son rôle en inversant le signal tout en adaptant le niveau électrique.

Cet adaptateur peut accepter de nombreuse carte filles, mais seulement 8 connecteurs sont nécessaires pour nos 8 cartes de 8 servomoteurs. ( Ce qui permet, je le rappelle, de commander jusqu'à 64 servos )
 

Réalisation.
L'interface de commande.
Ce montage comporte peu de composant, il peut facilement être réalisé sur une petit plaque d'essai.

Soudez vos composants en faisant attention au sens du transistor. Soudez vos connecteurs. Alimenter en 5V. Branchez la liaison série et la ou les cartes servomoteurs.

Pour essayer votre adaptateur et vos cartes servomoteurs, vous pouvez utiliser ce programme de test écrit en visual basic : " Programme de test; 8 cartes à 8 servomoteurs ( 9,9 Ko ) "
 

 


Complétez cette page, posez vos questions et remarques ici : WiKiFri

Page http://fribotte.free.fr/bdtech/8servomoteurs/8servomoteurs.html modifiée le 26/05/2003.
Copyright fribotte@free.fr, libre de droit pour toute utilisation non commerciale.
Reproduction autorisée par simple mail