Configuration de grbl avec Cnc Shield et autres joyeusetés…
EN COURS DE RÉDACTION
Dans le terminal de bCNC, on peut modifier des paramètres directement dans le GCode. Il faut pour cela cliquer sur l'icône “Terminal”, en haut à droite, entrer les valeurs idoines dans la ligne en bas à gauche et les valider par “Entrée”. Pour afficher une liste de réglages pris en compte, on peut passer:
$$
Par exemple, il y a trois paramètres pour configurer la zone de travail (le volume où la broche peut accéder) selon les axes X, Y et Z (en mm)
$130=300.000 $131=400.000 $132=100.000
Pour avoir un déplacement précis et fluide il est nécessaires de configurer correctement les drivers moteurs (micro pas) en fonction des moteurs (pas/tour) et des caractéristiques mécaniques de la machines (pas de vis sans fin). Avec ces données nous pourrons configurer grbl en fonction de notre matériel.
Les drivers moteurs permettent de contrôler le courant maximale qui pourra être transmis au moteurs. Il est possible de régler ce courant Imax directement sur le circuit en réglant le potentiomètre miniature et en mesurant la tension entre la pin de test (Vref) et la masse. Pour cela il faut un voltmètre et un petit tournevis plat puis alimenter le drivers sans envoyer de commande de rotation au moteur.
Limite de courant
Imax = Vref(V) x 2 Vref = Imax /2 = 0,85 /2 = 425mV
Pour avoir une précision théorique de 1,87 micron nous avons réglé les drivers moteur à 1/8 de pas.
pas/mm =(pas par tour du moteur x micros-pas)/ pas du filetage(en mm) pas/mm = (200 x 8) /3 = 533,333
Nous pouvons maintenant modifier les valeurs des paramètres de grbl :
$100=533.333 $101=533.333 $102=533.333
N'ayant aucune information sur la doc technique du moteur ST4118M1206 de nanotec, il apparaît dans un drivers +/- dédié à celui-ci (Datatsheet drivers nanotec pour moteur ST4118 page 8) que les impulsions doivent être supérieur à 2 μs
à tester de 2 > 10 μs … ça change pas grand chose pour le moment
$0=6
Pour vérifier la précision des déplacements il est nécessaire de mesurer “précisément” les déplacement selon les 3 axes. Pour cela un crayon du scotch, un reglet et du papier feront l'affaire.
Par défaut dans grbl la pin configurée pour le fin de course Z est la pin12 or sur le schield CNC c'est la pin 11 .
Il faut donc modifier config.h, pour cela il suffit de commenter la ligne 339 du fichier.
// #define VARIABLE_SPINDLE
Pour que cette modification soit effective il est nécessaire de compiler grbl avec la nouvelle modification.
cd grbl sudo make grbl.hex
sudo PROGRAMMER="-c arduino -P /dev/ttyACM0" make flash
La prise d'origine facilite les déplacements selon un point connu par la machine et permet donc en cas d'arrêt d'un travail de pouvoir reprendre depuis le dernier point.
Quelques modifications du fichier config.h
ligne 124 autoriser prise d'origine par axe : $HX, $HY, and $HZ > pratique pour tester séparément le retour maison
#define HOMING_SINGLE_AXIS_COMMANDS // Default disabled. Uncomment to enable.
ligne 127 prise d'origine mise à 0 des axes > lors de la prise d'origine la mise à 0 des coordonnées est automatique
#define HOMING_FORCE_SET_ORIGIN // Uncomment to enable.
ligne 224 pas d'alarme à la mise en route
#define FORCE_INITIALIZATION_ALARM // Default disabled. Uncomment to enable.
—-
Pour activer ce l'on appel le homing il faut configurer le placement de nos fin de courses pour que la machine aille dans la bonne direction à leurs recherche.
En ce qui nous concerne les fin de course sont positionnés en X-, Y- et Z+ lorsque la broche est en face de nous.
$23=3
Après plusieurs essais de “homing” et quelques renseignements pris sur divers forum la carte cnc-shield-v3 est sujette au parasitage. En effet les moteurs pas à pas génèrent du bruit électrique qui active de manière impromptu les fins de courses. Il est alors impossible de faire un cycle de prise d'origine complet : les fin de courses s'activant avant d'arriver à leurs emplacement réel.
D'après la documentation de grbl un circuit permet de réduire ces parasites. Ce circuit se base sur un optocoupleur. Le circuit créer utilise un quadruple optocoupleur et permet de se brancher directement sur le cnc-shield. Il n'y à qu'à brancher les les fins de courses et l'alimentation +5V. Voici les fichiers kicad de cette version
Ça dépasse un peu mais il y à de la place!
Pour pouvoir profiter de la prise d'origine il faut aussi activer les fins de courses pour qu'il se déclenchent par sécurité en cas de déplacement hors limites (Hard Limit)
$21=1
Maintenant que tout est paramétré correctement il suffit d'activer la prise d'origine
$22=1
https://github.com/gnea/grbl/wiki/Set-up-the-Homing-Cycle
https://lebearcnc.com/grbl-homing-et-fins-de-course/
https://www.instructables.com/id/End-Stop-Limit-Switch-Problems/
Voilà ce que nous donne l'écran, à chaque point correspond le niveau mesuré
De droite à gauche les 2 premiers essais en réglant le Z0 à la louche et dernier avec l'auto nivelage. Le résultat est parfait même avec des pistes de 0,25mm et une pointe javelot 90° 0,3mm
Un autre essaie avec des pistes de 0,3 et 0,5mm permettant de passer entre les pastilles au pas 2,54mm!
Un pcb fonctionnel
http://kingofprotons.blogspot.com/p/pcb-autolevelling.html
http://mikropure.com/height-probe-for-cnc-machine-part-i/
https://github.com/vlachoudis/bCNC/wiki/AutoLevel
https://www.instructables.com/id/Setup-a-Touch-Probe-With-a-Arduino-Cbc-Shield-and-/
$$ > visualise info de configuration
$X > kill alarm
https://github.com/grbl/grbl/issues/1128
https://forum.protoneer.co.nz/viewforum.php?f=6
https://www.makerstore.com.au/download/publications/CNC-Shield-Guide-v1.0.pdf
https://github.com/gnea/grbl/wiki/Set-up-the-Homing-Cycle
https://github.com/grbl/grbl/wiki/Compiling-Grbl
https://github.com/gnea/grbl/wiki/Grbl-v1.1-Configuration
https://www.making-fab.fr/index.php/fraisage-numerique/grbl/10-configuration-grbl
http://osegouin.free.fr/cnc/paps.pdf
http://gilles.thebault.free.fr/spip.php?article29
https://www.pololu.com/product/2133
https://www.makerguides.com/drv8825-stepper-motor-driver-arduino-tutorial/
https://www.motioncontroltips.com/faq-pulse-direction-commands-open-loop-stepper-control/
https://github.com/gnea/grbl/wiki/Grbl-v1.1-Commands
http://domoticx.com/cnc-machine-grbl-error-list/
https://wiki.shapeoko.com/index.php/G-Code#Using_the_Work_Coordinate_Systems
Pour le moment :
Grbl 1.1g ['$' for help] [HLP:$$ $# $G $I $N $x=val $Nx=line $J=line $SLP $C $X $H ~ ! ? ctrl-x] ok $0 = 10 (Step pulse time, microseconds) $1 = 25 (Step idle delay, milliseconds) $2 = 0 (Step pulse invert, mask) $3 = 0 (Step direction invert, mask) $4 = 0 (Invert step enable pin, boolean) $5 = 0 (Invert limit pins, boolean) $6 = 0 (Invert probe pin, boolean) $10 = 1 (Status report options, mask) $11 = 0.010 (Junction deviation, millimeters) $12 = 0.002 (Arc tolerance, millimeters) $13 = 0 (Report in inches, boolean) $20 = 0 (Soft limits enable, boolean) $21 = 0 (Hard limits enable, boolean) $22 = 0 (Homing cycle enable, boolean) $23 = 2 (Homing direction invert, mask) $24 = 25.000 (Homing locate feed rate, mm/min) $25 = 400.000 (Homing search seek rate, mm/min) $26 = 250 (Homing switch debounce delay, milliseconds) $27 = 1.000 (Homing switch pull-off distance, millimeters) $30 = 1000 (Maximum spindle speed, RPM) $31 = 0 (Minimum spindle speed, RPM) $32 = 0 (Laser-mode enable, boolean) $100 = 1066,666 (X-axis travel resolution, step/mm) $101 = 1066,666 (Y-axis travel resolution, step/mm) $102 = 1066,666 (Z-axis travel resolution, step/mm) $110 = 1000.000 (X-axis maximum rate, mm/min) $111 = 1000.000 (Y-axis maximum rate, mm/min) $112 = 500.000 (Z-axis maximum rate, mm/min) $120 = 50.000 (X-axis acceleration, mm/sec^2) $121 = 50.000 (Y-axis acceleration, mm/sec^2) $122 = 20.000 (Z-axis acceleration, mm/sec^2) $130 = 300.000 (X-axis maximum travel, millimeters) $131 = 400.000 (Y-axis maximum travel, millimeters) $132 = 100.000 (Z-axis maximum travel, millimeters)
steps_per_mm = (steps_per_revolution*microsteps)/mm_per_rev
Pour la sonde de niveau 0 (probe) utiliser la pin SDL de cncshield qui sur arduino correspond à A5
Test
G38.2 F10 Z-100