Image du Youpi

Le robot Youpi

Tout ce qu'il vous faut pour lui donner une seconde jeunesse...

Note : cette page ne concerne que le modèle original du Youpi, tel qu'il était proposé aux écoles dans les années 80. Youpi est toujours commercialisé dans une version perfectionnée sous le nom de Y101 par la société STCI. Cette nouvelle version, qui possède notamment des capteurs de position absents sur l'original, n'est pas traitée dans le présent document. Pour toute information concernant le Y101, prière de s'adresser directement à STCI.




Le port parallèle des PC et compatibles ne nécessite pas d'initialisation particulière. Sous Windows, l'accès au port parallèle ne peut pas se faire directement comme sous MS-DOS. Il convient de faire appel à la couche HAL à travers un driver en kernel mode. Je recommande pour cela l'excellente DLL inpout32 de Logix4U, qui fonctionne indifféramment sur Win98/2000/XP en 32 et 64 bits. Elle vous évitera bien des maux de têtes pour programmer un port parallèle "legacy".

Je ne rentre pas dans les détails de la programmation Windows. Vous pouvez jeter un coup d'oeil aux outils que j'ai développés pour vous familiariser avec.

Dans le cas d'un micro-ordinateur Thomson MO/TO, il convient d'abord d'initialiser l'interface de communication en sortie sur 8 bits. Cette opération peut être réalisée par exemple avec le code assembleur suivant :

                 * Choisir l'une des lignes suivantes en fonction de la machine : ***
                 PORTB      EQU    $A7E1       Adresse de l'interface sur MO
                 PORTB      EQU    $E7E1       Adresse de l'interface sur TO
                 ********************************************************************

                 DDRB       EQU    PORTB
                 CRB        EQU    PORTB+2

                 INIT       CLR    >CRB        Mode programmation I/O
                            LDA    #$FF
                            STA    >DDRB       Toutes I/O en sortie
                            LDA    #$4
                            STA    >CRB        Mode transmission donnees

Les ordres s'exécutent ensuite en envoyant les mots de commande sur le port B de l'interface.

Initialisation du robot

La programmation du robot Youpi commence par une phase d'initialisation. Il faut pour cela envoyer deux octets à la suite sur le port parallèle : 47h 00h. Ceci a pour effet d'initialiser les boîtiers de commande des moteurs et de réinitialiser la carte principale du robot.

Cette opération étant effectuée, la programmation de la rotation d'un moteur est réalisée par l'écriture de deux mots de commande de 8 bits : un mot de sens de rotation et un mot de pas unitaire pour un moteur déterminé.

Commande de sens de rotation

Le mot de sens de rotation est défini comme suit : les 6 premiers bits correspondent chacun au sens de rotation de l'un des six moteurs. Les deux bits de poids fort servent à valider la commande. Pour programmer le sens de rotation, on enverra donc deux octets à la suite. Le premier prend la forme 10xxxxxx, où x correspond au sens de rotation (0 ou 1) pour un moteur déterminé. L'octet suivant prend la forme 00xxxxxx, ou xxxxxx est la même série de bits que précédemment. L'envoi de ce deuxième octet, dont seul le bit 7 a changé, a pour effet de mémoriser le sens de rotation des 6 moteurs.

Il faudra donc dans le logiciel de contrôle, connaître constamment le sens de rotation de chacun des moteurs, et reconstruire la série complète des 6 bits à envoyer, dont seuls certains changeront d'une commande à l'autre (généralement un seul, pour le moteur désiré).

Moteur No.

1
2
3
4
5
6
Axe

Base
Epaule
Coude
Poignet
Poignet (rotation)
Pince
Bit à basculer

0
1
2
3
4
5

Impulsion de pas

Tous les moteurs fonctionnent en mode 1/2 pas, sauf la pince qui travaille en mode pas. Pour exécuter un 1/2 pas ou 1 pas de rotation d'un moteur, il faut envoyer deux octets à la suite. Le premier a la forme 01???xxx, ou xxx correspond au numéro du moteur à activer (??? signifie que les bits 3-5 n'ont pas de signification particulière). Le deuxième octet a la forme 00???xxx, c'est-à-dire que seul le bit 6 a changé. Dès réception de ce deuxième octet, le moteur sélectionné tourne d'un 1/2 pas (ou 1 pas pour la pince), selon le sens de rotation précedemment défini. La table de correspondance des moteurs et des bits de commande est la suivante :

Moteur No.

1
2
3
4
5
6
Axe

Base
Epaule
Coude
Poignet
Poignet (rotation)
Pince
Bits 0-2 correspondants

000
001
010
011
100
101

On comprend aisément que la vitesse de rotation des moteurs est directement gérée par l'ordinateur, et correspond à la fréquence à laquelle les mots d'impulsion de pas sont envoyés sur le port parallèle. Par conséquent, il convient de faire particulièrement attention à la manière dont les timings sont programmés sur l'ordinateur. Dans le cas des compatibles PC, un timing dépendant de la performance de l'ordinateur (exemple à ne surtout pas suivre : la boucle de temporisation) va entraîner des comportements différents du robot, suivant l'ordinateur auquel il est connecté. Cela devient particulièrement dangereux si, à cause d'une temporisation trop courte, la fréquence des impulsions devient supérieure à ce que peut supporter le moteur pas-à-pas; ceci peut entraîner la destruction du moteur.

Programmation haut niveau

Elle est entièrement à la charge du logiciel sur l'ordinateur, qui peut, par exemple, proposer de déplacer le robot dans un repère cartésien ou polaire, gérer le freinage inertiel ou calculer un mouvement en cinématique inverse. C'est la partie réellement passionnante du problème et elle fait un très bon exercice de programmation en informatique industrielle.

Spécifications techniques et débattement limites

Youpi permet de soulever des charges jusqu'à 400 g, avec une épaisseur de l'objet de 80 mm maximum. La vitesse limite sur les axes d'articulation est de 40/s après démultiplication (ce qui fait 44 pas par seconde pour les axes principaux et 22 pas par seconde pour la pince).

Moteur No.


1
2
3
4
5
6
Axe


Base
Epaule
Coude
Poignet
Poignet (rotation)
Pince
Débattement
max.

340
240
220
220
infini
-
Nb. de pas
par tour

200
200
200
200
200
200
Démultiplication


25
32
32
32
32
-
Résolution
(après démultiplication)

0.04
0.03
0.03
0.03
0.03
-

Rappelons que puisque Youpi ne dispose pas, en version originale, de capteurs de position, il n'est pas possible de prévenir un mouvement hors limite. De même, en cas de serrage de l'un des axes, la position réelle du bras peut ne plus correspondre à la position calculée par l'ordinateur. C'est pourquoi il est crucial de tenir compte des charges et débattements maximum dans le logiciel qui pilote le robot.


Cette page © 2004-2015, Edouard Forler.
Les informations disponibles sur ce site ont été soigneusement vérifiées, mais des erreurs peuvent subsister. Elles sont le résultat d'un travail de recherche documentaire de longue haleine. L'auteur ne peut être tenu responsable d'erreurs de programmation ou de manipulation entrainant panne ou destruction d'un des éléments du robot. L'auteur n'est lié d'aucune manière que ce soit à la société STCI.