![]() |
Le robot YoupiTout 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é).
1 2 3 4 5 6 | Base Epaule Coude Poignet Poignet (rotation) Pince | 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 :
1 2 3 4 5 6 | Base Epaule Coude Poignet Poignet (rotation) Pince | 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).
1 2 3 4 5 6 |
Base Epaule Coude Poignet Poignet (rotation) Pince |
max. 340° 240° 220° 220° infini - |
par tour 200 200 200 200 200 200 |
25 32 32 32 32 - |
(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-2021, 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.