Lors de la fabrication de ma première CNC, j'avais opté pour acheter une électronique toute faite sur ebay. Le cours du dollar était suffisamment intéressant. Néanmoins, je trouvais dommage, étant électronicien, de ne pas avoir réalisé moi-même l'électronique de la machine. Les habitués du site ont déjà pu lire les articles sur la construction d'un drive pour moteur pas à pas, 2.5A microstepping 16 fois. L'article présenté ici a peu d'ambition mais il viendra répondre à certaines questions:
- Comment mettre en place le port parallèle pour communiquer en sécurité avec le PC?
- En deuxième partie: Comment configurer le logiciel de CNC pour communiquer correctement avec la carte? (au travers de EMC² que nous découvrirons par la suite)
Cet article peut également directement intéresser celui qui souhaite simplement commander des drives déjà existant. On trouve aisément des électroniques pour contrôler un moteur pas à pas pour moins de 10€ (par exemple en suivant ce lien) mais il est nécessaire de connecter ces cartes à l'ordinateur, cet article vient expliquer comment.
Architecture choisie
J'avais constaté sur la première électronique que j'ai achetée qu'un problème pouvait vite arriver lors des premiers tests de la machine. Un câble mal fixé qui court-circuite un autre, ... Ayant développé une électronique de contrôle à partir d'une puce soudée sur le pcb, je souhaitais avoir à la fois la possibilité de changer facilement une puce grillée et de récupérer les cartes que j'avais faites graver dans le carte du mini drive A3979. J'ai donc opté pour une architecture modulaire: une carte principale qui s'occupe de la communication avec le port lpt, l'isolation galvanique et qui supporte 3 petits drives.
L'isolation galvanique
Une isolation galvanique est une isolation entre deux circuits électroniques qui fait que le courant qui circule dans le premier circuit, ne circule pas dans le deuxième circuit. L'utilité d'une pareille isolation arrive quand on veut protéger un circuit (comme un ordinateur) d'une surtension qui pourrait provenir d'un deuxième circuit. Dans notre cas, nous avons d'un côté l'ordinateur par son port parallèle et de l'autre côté des cartes électroniques contrôlant des moteurs et nécessitant une alimentation externe.
L'isolation galvanique nous protège de deux sources de problèmes principaux:
-
Si l'alimentation externe qui donne la puissance aux moteurs n'est pas isolée du réseau, en connectant la masse de l'alimentation à celle de l'ordinateur, on court au drame. L'isolation galvanique permet de ne pas devoir connecter les masses ensembles et ainsi protéger l'ordinateur. La plupart des alimentations du commerce sont isolées du réseau, néanmoins j'ai déjà eu l'expérience désagréable de tomber sur une qui ne l'était pas. Je préfère donc protéger le PC.
-
Les moteurs sont une source de parasites qui peuvent être très importants. L'isolation galvanique nous permet d'éviter que ces parasites remontent dans l'ordinateur.
La méthode la plus répandue pour protéger un circuit d'un autre sans bloquer la transmission de signaux est d'utiliser un optocoupleur. Dans notre cas, un 6n137. L'optocoupleur possède d'un côté une diode émettrice (non visible, elle est intégrée dans la puce). De l'autre côté, nous trouvons un phototransistor (ou équivalent). Grâce à ce jeu optique la présence d'un signal est transmise sans mélanger les électrons.
A et C sont l'anode et la cathode de la diode. VCC et GND sont les sources d'alimentation du deuxième circuit. Comme il n'y a qu'une diode à polariser du côté du premier circuit, nous comprenons facilement qu'il n'y a pas besoin de source d'alimentation du côté PC. VE est une broche d'activation que nous n'utiliserons pas dans notre circuit, la laisser en l'air correspond au mode de fonctionnement dont nous avons besoin. Vo est la sortie isolée de la puce. Nous constatons que la sortie est "Open Drain" ce qui signifie que nous devons placer une résistance de Pull-up entre VCC et Vo de manière à traduire la sortie VO en signal 0-5V.
Le schéma
Le schéma est aussi simple que le reste:
Premièrement, le port parallèle: nous utilisons D0 à D5 pour notre application. Chaque fois deux broches par axe, une pour le sens (dir), l'autre pour les impulsions (step). A titre préventif, j'ai placé un header avec 2 Input et 2 Output (j'ai l'intention d'y placer un bouton d'arrêt d'urgence depuis qu'un de mes vêtements s'est pris dans l'axe de la machine...)
Deuxièmement, la partie isolation: deux optocoupleurs sont nécessaires pour chaque axe, puisqu'il faut deux signaux par axe. On remarque sur le schéma qu'il y a GND, qui est la masse du port parallèle, et GND2 qui est la masse de l'alimentation des drives. IL NE FAUT EN AUCUN CAS LES CONNECTER ENSEMBLES!!! Sinon l'isolation perdra son utilité.
Enfin, l'alimentation du côté drive: à nouveau rien de compliqué, un 7805 pour générer les 5V nécessaires à l'alimentation des optocoupleurs, le 24V alimente directement les drive. Nous placerons sur chaque optocoupleur une capacité de 100nF de découplage.
Le PCB
Le pcb que vous trouvez en téléchargement au bas de l'article est routé au bottom. On trouve deux pistes au top, je les ai tracés sans l'intention de les graver, elles indiquent juste la présence nécessaire d'un strap. Nous constatons qu'aucune piste de cuivre sortant du port parallèle n'est connectée avec une piste de cuivre du circuit isolé. Le PCB est très simple à graver.
Installation
Le montage de la carte reste simple: la liste des composants est disponible avec le reste des plans en téléchargement. Au niveau des drives, il est requis, si vous utilisez le drive présenté sur ce site de retirer les deux résistances de pull down présentes aux entrées step et dir, sinon ces dernières feront un pont diviseur avec les résistances de pull up de la carte de commande et le résultat ne sera pas bon.
Un petit conseil: il est vivement recommandé de mettre la carte dans un boitier protégeant de tout copeau, surtout si vous comptez usiner de l'aluminium.