Convertir une CNC (fraiseuse 3 axes) de MACH3 à GRBL avec un arduino NANO en gardant les drivers de moteurs TB6560 V2
Pour continuer dans ma démarche de connaissance des machines à commandes numérique (ou CNC en anglais), j'ai acheté une petite fraiseuse 3 axes en kit sur Aliexpress.
Ce kit semblait bien sur l'annonce et il s'est avéré que c'était :
- une horreur à monter (pas de notice potable, un lien vers une vidéo en chinois qui parle beaucoup et qui montre peu (surtout lorsque l'on ne comprends rien au chinois)
- les système de fixation très médiocres : la structure est en réalité en plaques de PVC assemblées avec des minuscules vis et L métalliques : pas assez raides et risque de se dévisser avec les vibrations.
- la carte contrôleur est un modèle KK01 : piloté par port parallèle pour logiciel MACH3
Autant le dire tous de suite : c'est NUL
Le port parallèle (même si le PC en à un, ce qui n'est plus le cas dans les nouveaux PC) est absolument obsolète, il n'est pas géré sous Windows 64bits (7 ou 10).
- Le logiciel MACH3 est un très vieux programme qui devait être au top le siècle dernier, il fonctionne plutôt sur un vieux PC équipé de Windows XP et il est payant !!!
Voici le lien que le chinois m'a fourni ou on trouve la pseudo notice, la vidéo et les logiciels (en partie en chinois aussi), attention, c'est un lien vers un site chinois (compliqué):
you can make a download with this website:
link: http://pan.baidu.com/ secret: 8j2p
account:13923717662 secret:qwe123456
Une fois le montage problématique fini, les vrais ennuis commencent : le pilotage par logiciel
MACH3
- mon pc a bien un port parallèle mais il est maintenant sous Windows 10 64 bits : impossible d'utiliser le port parallèle en 64bits !.
- le logiciel MACH3 (V3.xx) fourni par le vendeur est une version en chinois !!!
- on trouve facilement la version EN ou FR de MACH3 sur internet (bien que du coup, c'est une version demo puisque c'est un logiciel payant et que c'est mal de pirater !)
Pas grave pour faire des essais, la version démo (limitée à 500 instructions) suffit.
J'utilise un vieux pc sous XP pour ne pas traumatiser ces logiciels et cartes d'un autre age (sisi 5 ans c'est vieux en informatique !!!!!)
Il faut renseigner les paramètres du port parallèle (on trouve l'adresse dans le panneau de config), il faut entrer les paramètres de connexion (pin2 = Xstep, pin3=Xdir, pin4=Ystep, ...pin14=enable, pin17=out1...)
En effet nous voila revenu à l'age de pierre puisque la carte contrôleur fournie ne contrôle en réalité presque rien : pas de microcontroleur, juste des 74HC245 (buffers) et une pognée d'optocoupleurs (pour pas mélanger les signaux de commande 5v et la puissance 24v).
Il faut renseigner les paramètres des moteurs (dans mon cas : pulse 1600, speed 150, acc 50, in turn 2 et 3).
Les cartes drivers de moteurs pas à pas sont bien branchées et paramétrés (off, off, on, off, off, off, on, off, on) : ce qui semble signifier run current 0.5A (et c'est une carte 3A), stop current 0A, exmod : 16, decay 50%, bon admettons ?
Mais impossible de faire fonctionner correctement ce foutu logiciel, les moteurs font des bruits mais ne bougent pas d'un pas.
Les instructions du fichier Gcode de démo (c:\mach3\GCode\parcours_demo.tap) s'enchainent à une cadence ultra lente (5min pour une instruction de 2 secondes !)
Et le chinois qui m'a vendu ce truc fait le mort lorsque je pose des questions, bien sur!
Bref, on laisse tomber ce logiciel.
Plan B :
LINUX CNC
Un collègue me confirme que MACH3 : c'est mal (pour être poli) ou du moins c'est un logiciel pro extrêmement complexe à faire fonctionner (il y a des paramètres de partout !!).
Il me conseille d'essayer un liveCD de linux CNC (qui est plutôt un DVD de 1.2 Go) : http://linuxcnc.org/
Le résultat n'est pas mieux : les leds d'état des pilotes de moteurs clignotent : elles reçoivent des données mais les moteurs ne bougent pas et ne font pas de bruit.
A noter que l'ergonomie de ce logiciel n'est pas terrible à première vue mais que le site fourni une notice (PDF en français disponible : bravo) : elle fait 230 pages !
Vu que n'ai pas envie de passer des heures à tester pleins de paramètres et à lire plein de longues notices, je vais essayer le plan C : arduino
Modification avec un Arduino NANO pour utiliser le programme GRBL
La première solution est de tout remplacer (carte contrôleur et pilotes des moteurs pas à pas par un shield complet (à base de 3 drivers A4988) comme celui-là (25€ environ) :
Mais problème : ce shield ne fonctionne que en 12V et ma machine est prévue pour du 24V : les moteurs pas à pas sont t-ils spécifiques 24v, je ne sais pas trop....
De plus, mes drivers actuels (TB6560v2) sont des 3A, or les A4988 sont plutôt 2A, est- ce acceptable ?
Bref :
On va garder les drivers existants puisque ce site dit que c'est possible :
http://www.instructables.com/id/Using-a-Single-Axis-TB6560-Stepper-Driver-With-GRB/
Autre source très importante d'infos : le wiki de GRBL :
https://github.com/grbl/grbl/wiki/Connecting-Grbl
La liste de course :
J'ai mis un arduino NANO parce que c'est petit, mais si vous avez un Arduino UNO ou duemilanove qui traîne...çà fera l'affaire aussi.
- un arduino NANO (atmega 328) et son cordon USB: environ 3€
- une plaque d'expérimentation à souder : environ 1€
- un support à souder pour l'arduino (ou çà directement : c'est moins joli mais pas besoin de fer à souder)
- une carte "relais 5V" avec transistor en entrée (environ 2€)
- des fils électriques et un fer à souder
Le branchement de la carte drivers (la connexion des 4 fils du moteur A+, A-, B+, B- et du 24V sont inchangés)
La connexion :
La carte drivers pour l'axe X :
Arduino > TB6560 gnd > EN-, CW-, CLK- D2 (Step X) > CLK+ D5 (Dir X) > CW+ D8 (Enable) > EN+
Pour l'axe Y : même chose avec D3 (Step Y) > CLK+ et D6 (Dir Y) > CW+
pour l'axe Z : même chose avec D4 (Step Y) > CLK+ et D7 (Dir Y) > CW+
Le relais de commande du moteur de la fraiseuse :
Arduino > relais 5V > + Gnd> - D12 (splindle enable pour GRBL0.8) > signal
la sortie normalement ouverte du relais (NO) est branchée en série avec l'alimentation 24V et le moteur (attention au sens de rotation)
Remarque, l'alimentation 5v pour le relais et l'arduino sera fournie par l'ordinateur par la prise USB : pratique.
Les optocoupleurs à l'entrée des drivers TB6560 permettent de bien séparer cette tension de 5 volts et le 24 volts de la puissance (théoriquement !)
Chez moi çà donne çà :
Et maintenant on teste GRBL :
Dans le package Banggood dont j'ai parlé dans l'article sur la gravure laser, vous aurez le répertoire GRBL complet :
Dans ce répertoire on trouve la ROM
Le fichier GRBL-0.8C.hex et l'outil simple pour la charger dans l'arduino NANO qui s'appelle Xloader.
Une vidéo d'explication "How to upload rom.gif" est fournie.
La partie Benbox ne sera pas utilisée ici (BENBOX ne gère pas l'axe Z à première vue).
Il y a aussi le programme d'envoi des fichiers GRBL (fichiers Gcode ".NC")
Le programme "Universal Gcode sender" est écris en JAVA (fichier .JAR) : il est donc compatible avec tous les ordinateurs (pc, unix, mac) : vous devrez peut-être installer JAVA sur votre ordinateur.
Les fichiers d'aide "How to use" sont aussi fourni : vraiment top ce package.
Test :
Un fois que le firmware GRBL est chargé grace à Xloader
On peux lancer "Universal-G-Code-Sender.jar" : si ce n'ai pas fait, il sera nécessaire, d'installer JAVA.
On choisi le port série et on connecte (si c'est la première fois que vous branchez un arduino, il y a aussi le pilote USB-série à installer)..
Dans la fenêtre du bas (console), vous devez voir apparaître le prompt GRBL
Dans l'onglet "contrôle machine", on fait bouger les axes X ey Y, en cochant "mouvement depuis clavier, on bouge les 3 axes au clavier
On changera les paramètres soit dans la console (ex : $0=100) ou dans paramètres/paramètres firmware/GRBL
Pour le moment, çà marche,
Il peut être intéressant d'ajouter un bouton Abandonner (sur A2) et des microswitchs de limites (sur D9 à D11) avec des resistances pullup 10Kohm : peut-être plus tard...
Il va maintenant falloir :
- Régler les moteurs (paramètres $0, 1 et 2) pour graver avec des longueurs vraies
- Changer le sens de rotation si les moteurs ne vont pas dans la bonne direction (c'est simple : il faut inverser les fils A+ et A-)
- Apprendre un ou plusieurs logiciels qui font du Gcode 3 axes (beaucoup moins simple)
http://www.cambam.info/downloads/
http://www.artcam.com/pro/ (Pour info, il y a une V2008 dans le package du chinois)
A suivre...
Suite du 12/06/2016,
j'ai de nouveau un petit peu de temps pour jouer à la CNC et Arduino...
Etape 0 : Je rencontre 2 nouveaux problèmes :
Problème 1 :
L'axe Z n'est pas géré dans le bon sens sur ma machine : dans l'outil de pilotage de la machine "Universal Gcode Sender V1.0.9", lorsque j'appuie sur "page down" l'outil monte !! (et l'inverse avec "Page Up"...).
Je ne trouve pas d’erreur de câblage : c'est pas grave, il suffit d'inverser les fils d'un bobinage du moteur Z (A+ et A- par exemple) pour changer le sens de rotation de celui-ci.
Problème 2 : le pilotage semble erratique, un coup çà marche, un coup, çà s’arrête !!
Il est peut-être temps de changer la version de GRBL embarquée dans l'arduino :
J'ai choisi arbitrairement l'avant dernière version "V0.9g" (<<<< faire bouton droit et enregistrer sous ce lien)
Fermer les outils qui peuvent utiliser l'arduino actuellement, appuyer sur le reset de l'arduino et flasher avec Xloader (ou celui que vous voulez...)
Attention, il faut ensuite choisir la vitesse de 115200 bauds dans Gcode Sender.
Voilà 2 problèmes de réglés, maintenant au boulot...
Etape 1 : calibrer les moteurs
C'est mieux que la machine avance de 2cm si on veux qu'elle avance de 2cm et pas une autre valeur farfelue !
Pour çà, il faut calibrer les moteurs :
- on va dessiner un rectangle dans Cambam
Je ne vais pas faire de tuto étant donner que je ne maîtrise pas ce programme et qu'il y a des bon tutos en français ici : http://www.atelier-des-fougeres.fr/Cambam/Aide/Tutorials.htm.
Mais voilà un petit coup de main :
et on règle les paramètres de l'outil (intérieur ou extérieur de la forme.diamètre, vitesse, profondeur)
On génère le parcours d'outils (bouton droit), on sauve (ou pas), ou génère le fichier Gcode dans l'onglet usinage
Voilà, vous avez votre fichier Gcode (truc.nc),
Comme on l'a vu plus haut, j'ai mis une vitesse de 100 ( quelle unité : mm/minute ?), ma machine ne semble pas supporter une vitesse de plus de 300 (les moteurs sautent des pas).
Il faut aussi éviter d'aller trop vite si on veux préserver l'outil de coupe.
Maintenant, on lance l'outil "Universal Gcode Sender", on connecte le bon port Com (avec la vitesse de 115200 bauds) et on a le prompt GRBL 09 (ou un autre suivant votre version).
Fixer une pièce dans votre machine : je vous conseille du polystyrène extrudé (genre DEPRON) pour commencer.
Dans "Contôle machine" ou au clavier, on déplace l'outils suivant les trois axes à la position 0 de votre choix (Z affleurant à votre pièce), définir le Zéro (clique "Reset position Zéro").
Dans, "Mode Fichier", on importe le fichier Gcode fraîchement créé.
On clique sur visualiser pour ouvrir une fenêtre de visu.
On clique sur envoi...et théoriquement çà usine !!!
Vous mesurez les dimensions réelles et vous faites une règle de trois dans les paramètres GRBL (paramètres/paramètres Firmware/GRBL) et changer les x,y et z step/mm ($100, 101 et 102 dans GRBL 0.9) : pour ma machine c'est x=3200, y=3200, z=1600 (ou bien 3200 car ma pièce actuelle est en DEPRON : c'est mou, on changera plus tard si besoin).
et tada....
Première gravure
J'ai un problème de vitesse maxi acceptable entre 2 objets : je règle les vitesses max (x,y et z max rate) à 300 au lieu de 500 : soit les paramètres $110=$111=$112=300
Pour Artcam, on verra plus tard, j'ai déjà trouvé un guide de formation en français par google, voilà le lien :
http://vincent.debimard.perso.neuf.fr/CV/exppro/delcam/ARTCAM%20PRO2008.pdf
La suite au prochain épisode...