La situation de départ
L’électronique d’origine de Youpi est constituée d’une unique carte occupant la quasi-totalité du boîtier (hors encombrement du transfo torique de l’alimentation).
Une rafale de transistors de puissance alignés le long des deux façades latérales du boîtier (faisant d’ailleurs office de dissipateurs thermiques) constitue les ponts en H des moteurs pas à pas. Ces ponts sont pilotés par une logique câblée complexe traduisant les signaux appliqués sur les broches de contrôle du connecteur DB25 en mouvements des moteurs.
La génération des signaux de contrôle est un processus déjà assez complexe lorsqu’il s’agit de gérer plusieurs mouvements simultanés. Mais ça tourne au cauchemar lorsqu’on cherche à générer des profils de vitesse en trapèze pour chacun d’entre eux. Quant au fonctionnement en micro-pas, gage de douceur et d’absence de vibration à bas régime, on peut faire une croix dessus.
Les ressources actuelles
Si on trouve aisément de nombreux drivers de moteurs pas à pas sur le marché, ils se contentent en général de proposer pour la plupart une simple commande en step/dir, certains gérant néanmoins le micro-stepping. Par contre c’est toujours à l’unité de contrôle de gérer les profils de vitesse.
Une exception à cette règle est le L6470 de STMicroelectronics, aussi connu sous le nom de dSPIN. Outre les éléments déjà mentionnés pour la partie puissance, il intègre en fait un micro-processeur qui communique avec l’extérieur via un bus SPI et qui gère de manière interne toute l’intelligence (profils de vitesse, limitation de courant, détection d’anomalie,...). Il supporte 3A en régime permanent, 7A en pointe et accepte une alimentation moteur entre 8V et 40V, à partir de laquelle est produite l’alimentation pour la logique intégrée.
Le dSPIN propose de plus des fonctions avancées pour la prise de référence, exploitant automatiquement le signal fourni par un capteur de fin de course par exemple.
Pour en savoir plus sur lui, vous pouvez vous reporter à un article déjà publié sur notre site.
Afin de s’épargner la réalisation d’un PCB assez complexe du fait de la compacité du chip et des contraintes de dissipation thermique (par flemme diront les mauvaises langues), nous avons opté pour une carte proposée par Sparkfun, qui intègre le L6470 et ses composants de servitude de manière compacte et pratique.
Les 6 modules pilotant les 6 moteurs pas à pas de Youpi sont assemblés de manière à exploiter la configuration daisy-chain supportée par le dSPIN, qui par le biais d’un fonctionnement de type registre à décalage permet de ne pas avoir besoin de mobiliser un signal chip select par device, mais un seul pour toute la chaîne.
Pour schématiser, la sortie MISO d’un chip est connectée à l’entrée MOSI du suivant et ainsi de suite, jusqu’au dernier dont la sortie MISO est reliée à l’entrée MISO su MCU. La construction de la trame de commande envoyée par le MCU consiste à assembler en séquence les 1er octets de chacune des commandes (pouvant être différentes pour les devices cibles), puis les 2èmes, et ce jusqu’aux derniers, les messages les plus courts étant tout simplement complétés par des bytes nuls. Si certains des devices ne sont pas concernés par cette transmission, il suffit de mettre les bytes qu’ils vont recevoir à 0. Tout ceci est très bien expliqué dans le datasheet du composant, qu’il faut lire très attentivement et en étudiant soigneusement les illustrations pour la partie concernant ce mode de communication.
La nouvelle "carte"
C’est en fait une platine qui, en plus des 6 modules Sparkfun, va supporter une carte d’interconnexion réalisée à partir d’une plaque prototype à pastille, câblée à l’aide de fils pour patch (dont le vernis isolant fond à la chaleur du fer à souder).
Les 6 connecteurs 6 points blancs sur l’axe médian sont les sorties pour les moteurs. Le grand connecteur blanc en bord gauche regroupe les entrées des capteurs (optiques) de la position de référence des différentes articulations du bras et de la pince.
La platine accueille également la Raspberry Pi qui pilote l’ensemble ainsi que les alimentations 36V moteur et 5V logique, générées à partir des enroulements du transfo, une des quelques rares pièces d’origine qui ont été conservées (les autres étant l’embase et l’interrupteur secteur).
EDIT 11/2016 : L’alimentation 5V a été revue suite à quelques problèmes de stabilité. La nouvelle solution est décrite dans cet article.
Une petite carte équipée de diverses embases Molex KK a été faite pour simplifier les liaisons avec le connecteur GPIO. On y trouve :
- l’arrivée de l’alimentation 5V
- le départ du bus SPI pour les dSPINs
- le départ du bus I2C pour le panneau de contrôle
- le départ de l’alimentation 3.3V pour les capteurs optiques des prises de référence des articulations du bras
Le panneau de commande
Il est construit autour :
– d’un afficheur LCD négatif bleu de 4 lignes de 20 caractères, interfacé en I2C,
– d’un clavier composé de 4 touches équipées de LED de signalisation et encadrant l’afficheur,
– d’un interrupteur à clé, utilisé pour verrouiller le clavier lors des démos en public.
L’ensemble a été monté sur une nouvelle façade en bois verni, en remplacement de l’austère plaque d’alu d’origine.
Les internes de ce panneau de commande sont détaillés dans cet article.
Assemblage final
Une fois tous les éléments en place, voici l’allure finale :
Plutôt pas moche, non ? :)
La vue arrière montre la découpe permettant l’accès aux connecteurs réseau et USB de la Raspberry Pi. A noter que le panneau de commande n’était pas encore installé le jour de la photo.