Archives de août, 2013

Bonjour à tous,

Vu que le sujet à l’air de passionner les foules, je me bouge un peu 🙂

Pour commencer les diverses découvertes/constatations/tests :

Dans un précédent billet je vous parlais d’un adaptateur pour des fraises de petits diamètres :

!BtnSdjQEWk~$(KGrHqUH-DkEvsNzohCPBL8tjNKPtQ~~_35

Celles la ne marche pas bien du tout ! Impossible de tenir une  fraise droite … En revanche ce type la marche bien :

collet_1

Ensuite je vous parlais de GRBL controller, oubliez !! Je pensais que le firmware GRBL était lent, mais en fait c’est le streaming par ce soft qui était naze …

Conclusion : prenez le soft officiel GRBL Universal code sender il marche du feu de dieu !!

Allez on passe aux choses sérieuses 🙂

L’électronique de pilotage des CNC

 

 
Un article pour décrire basiquement le fonctionnement de l’électronique qui anime les fraiseuses numériques et imprimantes 3D.

Les moteurs pas-à-pas

 

Il est d’abord primordial de saisir le principe de fonctionnement (très simple) des moteurs PAP. Bon je vais pas ré-inventer l’eau chaude, l’article wikipedia sur le sujet est assez simple et bien foutu : http://fr.wikipedia.org/wiki/Moteur_pas_%C3%A0_pas

Ce qu’il faut retenir : en gros, un moteur pas à pas c’est une série d’électroaimants qu’on alimente tour à tour pour générer des rotations complètes. Il existe alors deux types de moteur : les unipolaires et les bipolaires. Dans le premier, les bobines ne sont alimentées que dans un seul « sens », alors que dans les bipolaires les bobines sont alimentées dans un sens puis dans l’autre, inversant la polarité du champs magnétique. Les bipolaires sont les plus courants, et encore plus dans le monde des fraiseuses et autres imprimantes 3D. Ce type de moteur nécessite l’emploi de montage type pont en H :

pontH

Sur un moteur à courant continu, si on ferme C1 et C4 on tourne dans un sens, et dans l’autre si on ferme C2 et C3. Maintenant si on mets une bobine de moteur PAP à la place, et qu’on multiplie par deux ce montage, on peut piloter les deux bobines d’un moteur PAP bipolaire.

Les circuits intégrés les plus courant dans le domaine sont le L293 et le L298. Ils ont principalement deux faiblesses :

– les courants qu’ils peuvent commander sont faibles pour une CNC : le L298 peut d’après la datasheet commander 2A en continu. Expérience personnelle : déjà à 1A ça chauffe sacrément …

– il faut une électronique de commande : en effet vous remarquer que si on fait des pas avec un stepper, on est obligé de mettre une interface « intelligente » pour faire les 4 étapes de base :

 

Tableau récapitulatif de l’ordre des phases
Impulsion Bobine A Bobine A Bobine B Bobine B
T1 +    
T2     +
T3 +    
T4     +

 

A noter que le L298 a la possibilité de réguler en courant : en effet on peut placer une résistance en sortie sur moteur pour obtenir une image en tension du courant, le L298 ajuste alors la tension pour maintenir le courant et donc le couple. J’en parle ici car c’est une fonction très importante sur les driverx de stepper pour CNC. Les effets inductifs étant de plus en plus grand au fur et à mesure qu’on augmente la vitesse de rotation du moteur, les bobines s’opposent au courant et il faut alors une plus grande tension pour le maintenir et ne pas perdre de couple. C’est pour celà que les driver CNC demandent souvent plus de 24V alors que sur les steppers vous verrez souvent des spécifications aux alentours de 5V.

On fait alors appelle à d’autres circuits intégrés, plus puissant et plus complets. Un modèle très courant est le TB6560 (en cours de remplacement par le TB6660). Il est capable de gérer 3,5A par phase (=bobine) et est bien plus complet : gère le microstepping (1/2, 1/8, et 1/16 de pas), le decay (décalage de courant, inutile de se tracasser la tête avec ça pour le moment) et intègre une interface intelligente. Ici on ne commande plus directement le pont. En effet, un TB6560 peut gérer un moteur, et il n’a besoin que de deux signaux : une horloge (créneaux alternatif 0-5V) pour les pas, et un pour la direction (5V=un sens 0V=autre sens). A chaque transition 0->5V, le moteur fait un pas dans la direction spécifiée par le pin de direction.

Prenons maintenant le connecteur DB25 de mon driver (en version 5 axes ici, j’ai pas trouvé la 3 axes mais les branchements sont les mêmes).

stepdb

DB25(PIN)

The role of the pin on driver board

Notes

1 EN Enable all axis
2 STEPX X pulse signal
3 DIRX X direction signal
4 STEPY Y pulse signal
5 DIRY Y direction signal
6 STEPZ Z pulse signal
7 DIRZ Z direction signal
8 STEPA (absent sur la 3 axes) A pulse signal
9 DIRA (absent sur la 3 axes) A direction signal
10 LIMIT-1 Limit input1
11 LIMIT-2 Limit input2
12 LIMIT-3 Limit input3
13 LIMIT-4 Limit input4
14 Relay control  
15 blank  
16 STEPB- (absent sur la 3 axes) B pulse signal
17 DIRB-(absent sur la 3 axes) B direction signal
18-25 GND  

(A noter que les flèches indiquant le sens des signaux sont inversées …)

Il y a 3 x TB6560 sur cette carte pour 3 moteurs donc, et on retrouve logiquement 3 couples STEP/DIR. Si maintenant on prend le pinout de GRBL :

Grbl_Pin_Diagram

Et la il devient très facile de savoir qui va où 😉 Step Pulse X-Axis à STEPX, Step Pulse Y-Axis à STEPY, Spindle Enable à Relay control …

Les pins indispensables à brancher sont le 12, et ceux de 8 à 2. Pour les butées (=Limit) je ne sais pas si on peux les brancher à ceux de la carte via DB25. Dans tous les cas, deux options 100% sûres s’offrent à vous si vous avez la même carte que moi : brancher vos butées au driver, mais au cas où vous enclenchez une butée, GRBL continuera de tourner, alors que si vous choisissez la seconde option qui consiste à brancher les butées sur l’Arduino, les mouvements stopperont et GRBL s’arrêtera ce qui peut permettre de rattraper les choses éventuellement …

Notez que sur le schéma, certains pins dont les butées que je viens d’évoquer sont en pull-up, c’est à dire que sur chaque pin la résistance interne (de 20 kOhm de mémoire) de pull-up est active, donc il suffit pour déclencher la fonction qui va avec de relier ce pin au GND. Exemple concret : si je veux pouvoir démarrer/mettre en pause le travaille, il me suffit de mettre un bouton poussoir entre le pin A2 et le GND.

Mais GRBL ça sert à quoi exactement ??

Il me semble quand même important de remettre les choses à plat concernant les différents maillons de la chaîne. Pour celà je vais vous décrire la création d’une pièce comme je le fais aujourd’hui et en décrivant le rôle de chaque acteur.

1ère étape : dessin de la pièce

Je dessine ma pièce sur LibreCad, j’obtiens alors un fichier DXF. C’est un format de fichier dédié au pièces en 2D ou 3D : http://fr.wikipedia.org/wiki/Drawing_eXchange_Format

2ème étape : génération du G-Code

Il faut maintenant traduire cette « image » en chemin pour ma CNC. Pour celà j’utilise HeekCAD. Très simplement on choisit une esquisse et on lui attribut une fonction, par exemple une découpe par l’extérieur (c’est à dire que pour réaliser la découpe, le logiciel va tenir compte de la taille de la fraise pour respecter les cotations de l’esquisse).

Le logiciel traduit alors l’esquisse en mouvement de fraise, en gros elle va écrire des ordres en G-Code qui voudront dire « va aux coordonnées X=10 mm et Y=20 mm à telle vitesse puis fait plonger la fraise de 3 mm, puis déplace toi aux coordonnées X=0 et Y=5 » … On obtient alors un fichier texte (ils peuvent prendre divers extensions, mais au final on peut toujours l’ouvrir avec le bloc note 😉 ) rempli de lignes de G-Code.

3ème étape : préparation de la CNC

Je fixe ma plaque de bois ou autre et place ma fraise au point de départ en utilisant GRBL universal code sender et ses outils de déplacement.

4ème étape : je lance la gravure !

Dans GRBL universal code sender je charge mon fichier G-Code et je lance le travail. Le soft va alors streamer le G-Code, c’est à dire qu’il va envoyer ligne par ligne, par liaison série, les ordres en GCODE. GRBL embarqué sur l’Arduino va alors traduire ces ordres en signal d’horloge et de direction comme expliqué au début de ce billet. La carte drivers reçoit les signaux d’horloge de pas et de direction et fait tourner les moteurs en conséquence.

Branchement des moteurs au drivers et configuration du driver

Comme évoqué auparavant, il faut configurer principalement deux paramètres sur le driver : le microstepping et le courant. Le microstepping permet d’avoir des mouvements beaucoup plus fluides et d’avoir une meilleure précision en régulant le courant dans deux bobines consécutives. Par exemple si au lieu de passer brusquement de la bobine A à la bobine B (cf. tableau du début), j’insère une étape où j’alimente A et B en même temps, le rotor prend alors une position intermédiaire. Et hop voilà le demi-pas 😉 Si maintenant j’injecte moitié moins de courant dans A et toujours autant dans B, je fais un quart de pas et ainsi de suite … Le revers de la médaille c’est qu’il faut une horloge rapide en entrée du drivers. Et oui maintenant pour lui, une transition 0->5V signifie maintenant 1/16 ème de pas si vous l’avez configuré ainsi, donc comparé à du plein pas, il faudra une horloge 16 fois plus rapide pour une même vitesse. Pour ma part je travaille en 1/8 de pas.

Pour le courant il faut faire très attention car c’est ici qu’on peut faire du dégât : ces drivers peuvent débiter des ampères donc on grille très vite le moteur et/ou le driver … Mon conseil : commencer au plus bas, si jamais vous faîtes une erreur ça sera sans dommage. Dans un deuxième temps quand vous avez tout bien configuré et que vous maîtrisez les choses, passez au courant nominal du moteur mais sans jamais le dépasser !

Pour brancher les moteurs, je vous invite à consulter (oui je sais, encore une fois !) la doc de mon driver . Alors on trouve des moteurs à 4, 5,6 ou 8 fils, suivant les connexions internes du moteurs. Si vous avez la datasheet du moteur tant mieux, sinon (ce qui est très souvent le cas !) il va falloir jouer de l’ohmmètre dans un premier temps et savoir qui est quoi (à peu près). Si vous avez un quatre fils, il sera facile de retrouver lesquels sont pour la bobine A et lesquels sont pour la B vu qu’ils sont reliés deux à deux et que les bobines ne sont pas reliées entre elles. Pour un 6 fils, le point milieu sera celui qui aura la résistance la plus basse comparés aux extrémités de la bobine concernées. Après tout est une question de bon sens 😉

Ensuite dans la doc, suivant votre moteur, vous trouverez différents modes de branchement suivant que vous souhaitiez privilégier la vitesse ou le couple. Tout dépendra du type de matériaux visé, du couple nominal des moteurs, du pas de la vis (ou de la courroie) … A vous de voir mais vous verrez qu’il existe au final pas mal de levier pour perfectionner votre machine. Bon quand vous en serez la je pense que cet article vous paraîtra bien basique 😉

Voila j’espère avoir éclaircit certains esprits, si vous avez besoin de précision et d’autres infos n’hésitez pas à le demander en commentaire 😉

Prochain article : création d’une carte Arduino dédiée au branchement à un driver via DB25

Publicités