Shapeoko GRBL

De Wiki du ThiLab
Aller à : navigation, rechercher

Buildlog : électronique sur base GRBL/RAMPS ou GBRL/CNCShield de la Shapeoko.


01/03/2016

GRBL: CNCShield ou RAMPS

Pascal:

  • GRBL est prévu pour tourner sur une Arduino UNO avec un shield spécifique.
  • On n'a pas besoin de la RAMPS tant que l'on a que 3 axes (4 moteurs) ce qui est le cas de la Shapeoko.
  • Disponible pour le moment au fablab: Arduino 2560 + RAMPS 1.4 (parfois il vaut mieux lire la doc AVANT ) , je vais voir si j'ai un CNCShield en stock ce sera plus simple.

02/03/2016

Installation GRBL sur Arduino UNO

Pascal:

  • Compilation/Téléchargement sur la UNO de GRBL master (v0.9j) avec la configuration par défaut, en suivant les instructions suivantes: Compiling Grbl Via the Arduino IDE (All Platforms)
  • Test de base: Connexion via le moniteur série de l'IDE Arduino:
    • Test ok (prompt de GRBL, répond aux commandes)
    • ATTENTION: Vitesse: 115200, Fin de ligne: NEWLINE

Commentaire: Je n'aime pas les connecteurs pour les moteurs (connecteur "dupont" dont pas de verrouillage) mais vu le positionnement des broches il n'y pas assez de place pour des connecteurs de type KF2510 ou équivalent. Si quelqu'un a une idée ?

Michael:

  • Il y-a GCODE sender pour se connecter de façon pratique à GRBL

04/03/2016

Remplacement de la SmoothieBoard par UNO+CNCShield

Michaël & Pascal:

  • Remplacement de la Smoothie par le couple UNO + CNCShield
  • Réglage moteur axe Z qui posait souci
    • ATTENTION: réglage en FULL STEP. Il faudra certainement re-régler après passage en microstep
  • Tous les tests ont été réalisés avec Universal G-Code Sender (pas avec Pronterface)

Configuration GRBL faite pendant les tests

  • Ces valeurs sont à valider/changer, elles ont été mises pendant les phases de réglage du Z mais ne sont pas forcément nécessaires/les plus adaptées:
    • $102=250 (z, step/mm)
    • $112=250 (z max rate, mm/min)
    • $122=20 (z accel, mm/sec^2)

Remarques

  • Les connecteurs des moteurs sont à refaire (certains fils s'en vont d'eux-même)
  • Les moteurs de l'axe Y font du bruit: il faudra vérifier le courant moteur.

A FAIRE

  • Apporter 12 Jumpers pour réglage des microstep
  • Apporter 4 connecteurs Dupont 4 broches (+ les broches femelles)
  • Apporter 2 connecteurs Dupont 2 broches (+ les broches femelles)
  • Refaire le réglage du courant moteur, vérifier les VREF
  • Refaire la connectique des moteurs
  • Connecter & tester les fins de courses
    • Il faut refaire les connecteurs:
      • Le CNCShield câble en 2 fils au lieu de 3 pour la Smoothie
      • il faut du 'Dupont' 2 broches
      • GRBL utilise les pull-up internes de l'AVR, il faut donc câbler la mise à 0
  • Tester le 'Homing'

05/03/02016

Calcul step/mm (Spéléologie)

Pascal:

Vince avait publié des chiffres sur les ratios step/mm et un site de calcul. Après un peu de spéléologie dans les profondeurs du forum pour y retrouver son message concernant les ratios step/mm j'ai retrouvé cela: [1]

Pour mémoire les résultats de Vince:

En passant, j'ai inversé l'axe X et calibré le X et Y. avec http://prusaprinters.org/calculator/#stepspermmbelt
On trouve 133.33 steps/mm
avec précision : 7.5micron nombre de dents : 16 angle step : 0.9° ustepping : 1/16th courroie : 3mm
Pour le Z, ça devrait être 2560 steps/mm mais il doit y avoir un problème avec le ustepping (en réel on est plus à 80)

Sites de calcul et explication de ShapeOko:

(re)Calcul des 'pas/mm' pour les différents axes

D'après les spécifications des pièces on retrouve les résultats de .vince (et oui :-) ):

  • Axes X et Y:
    • Moteur NEMA23: 0.9° par pas (400 pas/tour) , 1.7 A, 9000 g·cm
    • Courroie / Roue dentée: 16 dents, pas de 3mm
  • Axe Z:
    • Moteur NEMA17: 1.8° par pas (200 pas/tour), 1.7 A, 5300 g·cm
    • Vis M8: pas de 1.25mm

Méthode de calcul pour les axes des X et Y

Les moteurs fournissent 400 pas par rotation complète, piloté en 1/16ème cela donne 16*400 pas effectifs pas tour.

L’axe du moteur entraine une roue dentée de 16 dents, sans réduction, donc chaque tour du moteur fournit 16 “pas” de roue dentée.

Par un produit en croix on obtient la correspondance entre 1 pas effectif du moteur et le nombre de pas effectifs de la roue:

16*400 pas de moteur 16 pas de roue   1 pas de moteur x pas de roue


donc :

  1 * 16 1 x = -------- = ----- pas de roue / pas de moteur   16*400 400


1 pas effectif du moteur correspond donc à 1/400 de pas effectif de la roue dentée.

Chaque pas entier de la roue faisant bouger la courroie de 3mm (pitch), 1 pas effectif du moteur correspond à 3/400 mm soit 7.5μm / pas.

Inversement un déplacement de 1 mm nécessite 400 / 3 pas soit 133.33 pas / mm.

Méthode de calcul pour l'axe des Z

Les moteurs fournissent 200 pas par rotation complète, piloté en 1/16ème cela donne 16*200 pas effectifs pas tour.

L’axe du moteur entraine une vis M8 avec un pitch - standard - de 1.25mm, sans réduction, donc chaque tour du moteur provoque un déplacement de 1.25mm

Par un produit en croix on obtient la correspondance entre 1 pas effectif du moteur et le dplacement en mm sur l’axe Z

16*200 pas de moteur 1.25 mm   1 pas de moteur x mm


donc:

  1.25 1.25 x = -------- = ------ mm/ pas de moteur   16*200 3200


1 pas effectif du moteur provoque un déplacement de 0.000390625 mm ( 0.39 um / pas).

Inversement il faut 3200/1.25 soit 2560 pas / mm.

G-code

  • Axes X et Y: 133.33 (précision de 7.5 micron)
    • G-code: M92 X133.33 Y133.33 (non supporté par GRBL, utiliser $100 $101)
  • Axe Z: 2560.00
    • G-code: M92 Z2560.00 (non supporté par GRBL, utiliser $102)

Configuration GRBL

Avec les résultats obtenus cela donne la configuration suivante de GRBL:

$100=133.33 (x, step/mm)
$101=133.33 (y, step/mm)
$102=2560.00 (z, step/mm)

08/03/02016

Acteurs: Guy D., Jean-Jacques, Jean-Luc, Michaël, Pascal
(Spectateurs inspecteurs des travaux finis: Philippe, Franck)

  • Choix du micro-stepping & Réglage des steps/mm sur les axes X, Y et Z
  • Réglage de VREF sur l'ensemble des moteurs
  • Réglage de l'axe Z: Problème, réglage de l'accélération et de la vitesse maximum pour l'axe des Z
  • Démonstration aux sceptiques spectateurs

Choix du micro-stepping & Réglage des steps/mm

En suivant les recommandations [2] et [3] on arrive à:

  • X et Y en 1/16ème de pas
  • Z en demi-pas
    • En fait Z pourrait être en pas entier mais cela pose un autre problème (voir plus loin)

Ces choix relèvent d'un compromis entre précision/fluidité des mouvements et couple/vitesse (plus il y a de micro-pas moins il y a de couple). Les auteurs de GRBL recommandent un maximum de 0.01mm par pas (100 pas par mm):

In general you should always have step sizes just under the precision of the machine. This around 0.01mm or 0.0005 inches for just about any machine, even production CNCs. The reason is that your torque drops significantly with increasing microsteps and your max speed drops too. It sounds like your are stalling your motors, causing some electronic feedback to the Arduino and it's messing with the CPU, crashing it. If you have an osciiloscope, I would check the signal coming from the z-axis pin without it connected to your stepper drivers. This will tell you if its grbl or something in your hardware.

Références full-step/micro-step vs torque vs smoothness/precision:

Paramétrage GRBL

$100=133.33 (x, step/mm)
$101=133.33 (y, step/mm)
$102=320.00 (z, step/mm)

Méthode de Michaël pour déterminer les steps/mm

C’est une méthode par la mesure plutôt que par le calcul, donc intéressante si on ne connait pas les caractéristiques de la chaîne mécanique:

  • On demande un mouvement d’une certaine distance
  • On mesure la distance effectivement parcourue
  • On fait le produit en croix pour calculer les steps/mm effectifs

Réglage de VREF, Valeurs de VREF

VREF sert à définir la limite de courant à fournir au moteur.

Le courant fourni vaut:

Limite courant = VREF * 2.5

Attention, en mode pas entier le pilote A4988 limite la valeur dans les bobines à 70% de cette valeur, donc en mode pas entier la limite effective vaut :

Limite courrant = VREF * 2.5 * 0.70

Donc pour des moteur 1.7 A il faut fixer VREF, hors pas entier, à:

VREF = 1.7 / 2.5 = 0.68 V

et en mode pas-entier:

VREF = 1.7 / ( 2.5 * 0.7 ) = 0.97 V

Il ne faut pas dépasser cette valeur car (source site Pololu [4]):

  • Cela peut endommager les moteurs lorsqu’il sont alimenté avec une tension supérieure à leur tension nominale
  • La limitation de courant doit être engagée pour garantir le fonctionnement du mode micro-pas.

Méthode pratique pour observer la variation de VREF pendant le réglage

Pour fixer la valeur VREF avec le potentiomètre il faut un petit tournevis plat et appuyer un peu sur le potentiomètre sinon la valeur ne bouge pas.

Connecter le tournevis à la borne ‘positive’ d’un voltmètre en utilisant un câble avec des pinces croco. Brancher la borne ‘négative’ du voltmètre sur la borne négative de l’alimentation du CNCShield. Cela permet d'observer la variation de VREF en continu pendant que l’on tourne le potentiomètre.

Réglage de l'axe Z: Problème, réglage de l'accélération et de la vitesse maximum pour l'axe des Z

  • De temps en temps on entend le moteur faire un bruit indiquant qu’il saute des pas.
  • Cela se passe après une série de prolongée de mouvement.

Ajouter valeur de l'accélération et de la vitesse maximale de Z

Observations & analyse initiale du problème

  • Cela ne semble pas lié à un manque de couple (on n’arrive pas à bloquer le moteur à la main)
  • Cela ne se pose que lors d’un fonctionnement prolongé du moteur
  • Cela se pose moins après passage en demi-pas (plutôt qu’en pas entiers), donc semble être sensible à la ‘fluidité‘ des mouvements.
  • Le couplage de l’axe est fait par un coupleur flexible (n’est-ce pas JJ :-), mais initialement l’axe du moteur et la vis M8 étaient tellement engagés dans le coupleur que la zone de flexibilité n’avait plus aucune influence

Opérations réalisées

  • Démontage/remontage moteur/coupleur/vis afin de réintroduire de la flexibilité.
  • Au passage : correction du filetage de la vis M8 au niveau des écrous de blocage sur le roulement.

Effets sur le problème

  • Pas concluant, pas mieux, pas pire.

Observations & analyse complémentaire du problème

  • Le moteur/l’axe vibre beaucoup, au point de faire vibrer tout le support (wasteboard, table)
  • Si on découple le moteur de l’axe de la broche, le phénomène disparait quasi-totalement/devient imperceptible.
  • Si on découple le support du moteur de l’axe Z, le phénomèce diminue et la vibration de l’ensemble diminue fortement mais on voit clairement le moteur et son support vibrer/bouger dans tous les sens. Jean-Jacques émet l’hypothèse que l’axe s’auto-centre.

Proposition de JJ et Guy D. (si j’ai bien pris note)

  • Refaire le support du moteur
  • Renforcer l’épaulement du roulement à bille de la vis M8

12/03/2016

.vince

Tests

  • Les vibrations de l'axe Z sont causées par le roulement à bille du support de l'axe.
  • A première vue, c'est peut-être parce que l'axe est excentré dans le roulement (trop de jeu).
  • J'ai posé l'axe sur le roulement avec un écrou/contre-écrou : ça ne vibre plus. En revanche, il faudrait également monter un écrou/contre-écrou sous le roulement. (Autre solution, essayer un autre roulement).
  • je trouve que la vitesse du Z est trop élevée (pas nécessaire sur cet axe)


15/03/02016

Michaël, Pascal, xxx

Paramétrage GRBL

Réalisé selon les indications trouvées sur ShapeOko GRBL Settings pour la version 0.9j de GRBL.

Valeurs GRBL:

Que faire de :

junction deviation, mm 	$9 = 0.050 	$11=0.020 
n-arc correction, int 	$11 = 25 	$12=0.002 (arc tolerance, mm) 

16/03 michaël -> lu sur le wiki de GRBL, junction deviation est un facteur de décélération lorsque la machine arrive sur des angles. Les auteurs de GRBL conseillent de ne pas le modifier sauf en cas de problèmes. 16/03 michaël -> arc tolerance est un facteur d'approximation pour dessiner des arcs, c'est la dimension max de la corde tendue entre les extrémités d'un arc. Pareil que junction deviation, a priori pas besoin de modifier cette valeur.

dir port invert mask 	?!? 	$3=6 (00000110) 

Différent du site web shapeoko

hard limits, bool 	$21=1

Valeurs finales:

$0=10 (step pulse, usec)
$1=255 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=0 (dir port invert mask:00000000)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=1 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=25.000 (homing feed, mm/min)
$25=635.000 (homing seek, mm/min)
$26=100 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=133.330 (x, step/mm)
$101=133.330 (y, step/mm)
$102=320.000 (z, step/mm)
$110=500.000 (x max rate, mm/min)
$111=500.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
$120=25.000 (x accel, mm/sec^2)
$121=25.000 (y accel, mm/sec^2)
$122=25.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)

Câblage

  • Connectique des moteurs refaite avec connecteurs Dupont



16/03 Michaël

Couple / Vitesse et Micropas

La page suivante dit que plus grand est le nombre de micro-pas plus petit est le couple. Mais les articles qui en parlent en général sur le web ne sont pas très clairs à ce sujet. http://www.micromo.com/microstepping-myths-and-realities Si elle dit vrai, à 1/16 de pas on n'est plus qu'à 20% du couple maximum.

En ce qui concerne la vitesse, plus on va vite moins on a de couple. Le couple maximum étant le couple dit de "maintien", c'est-à-dire quand le moteur est en full-step avec les deux bobines alimentées et c'est cette valeur qui est donnée par le constructeur. Pour les micro-pas, le constructeur dit ... plutôt il ne dit rien à ce sujet.

Avec nos valeurs de 133 pas/mm pour 1/16 de pas on a une résolution de : 7.5 microns. Si on passe en pas complets on devrait avoir 8 pas/mm soit une résolution de : 125 microns.

Tout ce que j'ai pu lire sur le web s'accorde à dire que :

  • Il y-a une différence entre résolution et précision => en pas complets on est plus précis qu'en micro-pas
  • Le pas complet n'est pas toujours beau à entendre, il crée des vibrations dans la machine. Je l'ai testé sur ma graveuse, ça secoue un peu l'ensemble.

Logiciels de génération de gcode

16/03 Michaël

Cet après-midi j'ai pu tester deux logiciels, même trois :

  • QCad avec son module CAM (payant) : il permet de générer du gcode à partir du dessin mais ce module est limité car il ne propose pas de prendre en compte le type de fraise à utiliser. Bien pour le laser seulement à mon avis.
  • CamBam (version payante, version obsolète gratuite et version d'évaluation disponibles) : J'ai pu lui demander de découper et graver en choisissant d'une part un outil et d'autre part une découpe intérieure ou extérieure. Il m'a montré les chemins que prendra l'outil. On peut de plus on peut lui donner l'épaisseur du matériau et lui demander d'effectuer plusieurs passes en incrémentant la profondeur.
  • CAMotics (gratuit) : Celui-ci est en fait un simulateur de CNC. Il simule le fraisage des matériaux à partir d'un fichier gcode. Ca me paraît très pratique. Grâce à cela j'ai pu tester les deux logiciels ci-dessus.

PS : Il faudra que je vérifie que ces GCODE sont compatibles avec GRBL.


18/03/2016

.vince, Pascal:

Au final: on n'a rien changé à la config GRBL...

Le problème semble venir de l'échauffement des pilotes moteurs. Il semble que l'on atteint très vite la température qui déclenche le "thermal shutdown". Cela provoque des arrêts-redémarrages des pilotes et donc des pertes de puissance et des sauts de pas.

L'ajout d'un ventilateur semble régler le problème. Des radiateurs sont en commandes.

Remerciement spécial à Yaug pour son aide précieuse: "Le crayon bouge".

20/03/2016 Michaël Inversion de pins sur la version 0.9 de GRBL par rapport au CNC shield

Attention pour le câblage des limites:

IMPORTANT: Z-limit(D12) and spindle enable(D11) pins have switched to support variable spindle!

Cependant le CNC Shield que j'ai n'est pas à jour. La version 3 Protoneer. A vérifier avec celle du Thilab.

22/03/2016

.michael

  • Tous les fins de course ne sont pas sur connecteur : dénudation des fils des fins de course X+ & Y- . Il faut mettre respectivement les X et les Y en //.
mémo : Pour X+ : NO gris-rose, NF gris-jaune
            X- : NO vert-rouge, NF vert-blanc
            Y+ : NO vert-rouge, NF vert-blanc
            Y- : NO gris-rose, NF gris-jaune
  • Test d'un fichier issu de CamBam sur la machine (à vide), ça à l'air de bien marcher

29/03/2016

Jean-Luc, Pascal

  • GRBL et fins de courses:
    • Les fins de courses doivent être câblées en NO
    • Lorsqu'une fin de course est activée GRBL se met en alarme et n'accepte plus aucune commande tant que l'on n'a pas supprimer l'alarme, pour cela, sous Universal G-Code Sender:
      • Faire un Soft Reset
      • Envoyer un $X

A FAIRE...

  • Apporter 2 connecteurs Dupont 2 broches (+ les broches femelles)
  • Connecter & tester les fins de courses (câbler la mise à 0)

-> les connecter en NF et faire $5=1 (invert limit switch) devrait résoudre le problème de bruit

  • Tester le 'Homing'

19 Mai 2016

  • Les fins de courses ont été câblés en NF. Cependant ça ne fonctionne pas mieux, le déplacement de la machine génère des parasites et déclenche des HARD LIMIT. J'ai pu le confirmer en faisant des commandes à vide, c'est-à-dire sans alimenter les moteurs.
  • Résoudre ce problème prendra du temps...
  • J'ai malheureusement claqué le fusible de la carte SHIELD. Temporairement je mets un strap, mais il ne faut pas le faire, c'est un mauvais exemple. Je ramènerais une autre carte shield ou un fusible qui va bien.

-> Remarque : je pense que les LIMITS SWITCH sont sur des interruptions. Je dis cela car si on démarre avec un système configuré pour des SWITCH en NF sans ces fameux SWITCH la machine ne donne pas de défauts, alors qu'elle le devrait. Par contre le fait de brancher un switch à chaud déclenche HARD LIMIT. J'irais même plus loin, en ce qui concerne HARD LIMIT, être en NF ou NO n'a pas d'importance, c'est le changement d'état qui est surveillé. Par contre pour le HOMING ça l'est.

  • Du coup les LIMITS SWITCH c'est pas encore pour tout de suite