Table des matières

Configuration et Réglages de la cnc

Configuration de grbl avec Cnc Shield et autres joyeusetés…


EN COURS DE RÉDACTION


Zone de travail

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

Moteurs pas à pas

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.


Réglage du courant

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.

Drivers DRV8825

Limite de courant

Imax = Vref(V) x 2
Vref = Imax /2 = 0,85 /2 = 425mV

Calcul du nombre de pas / tour

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

Impulsions par pas

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

Étalonnage

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.


Fin de courses Z

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

Compiler grbl

Pour que cette modification soit effective il est nécessaire de compiler grbl avec la nouvelle modification.

cd grbl
sudo make grbl.hex

Téléverser le fichier dans l'arduino

sudo PROGRAMMER="-c arduino -P /dev/ttyACM0" make flash

Prise d'origine / homing

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.

Ajout d'options dans grbl

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.

—-

Configuration du placement des fins de courses

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

Ajout d'un circuit anti-parasite pour les fin de courses

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!


Activation des limites physiques

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

Activation de la prise d'origine

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/

Nivelage automatique

Connexion au cnc-shield

SCL correspond à la pin A5 de l'arduino


La sonde


Procédure

  1. Définir X0Y0 comme origine
  2. Placer la pince sur la broche et le plot sur le pcb
  3. Menu Sonde > Sonde
  4. se placer à X0Y0
  5. descendre la broche à 5mm de la surface
  6. Z=0 > mise à 0 de la référence Z
  7. définir Sonde pos -10
  8. Icône Ruban > lancer cycle de sondage simple
  9. Z=0 > mise à 0 de la référence Z
  10. remonter Z de 1mm
  1. Menu Sonde > Nivelage automatique
  2. Icône Marges > défini la surface à scanner selon le gcode importé
  3. Icône scanner (petit carré violet) > déplacement autour des marges prédéfinies pour effectuer une vérification de la surface de la zone de travail(ne pas oublié de monté l'axe Z)
  4. configurer Zmin -1 / Zmax 1 > le scan débute à 1mm de haut (rapidité) pour aller vers -1mm (sécurité).
  5. choisir nombre de prise de niveau N ~5mm d'écart semble d'une bonne précision
  6. Icône Scanner (engrenage) > lance la procédure
  7. se placer à l'origine X0Y0 (G0 G54 X0Y0)
  8. Icône Zero (mire) > validation du plan de nivelage par rapport au point prédéfini X0Y0Z0
  9. enlever la sonde
  10. lever la broche
  11. mettre en marche la broche
  12. Lancer la gravure

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

Test

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


Différents type de sonde

https://support.bantamtools.com/hc/en-us/articles/115001829134-Installing-and-Using-the-PCB-Probing-System

http://kingofprotons.blogspot.com/p/pcb-autolevelling.html

plutôt basique

http://mikropure.com/height-probe-for-cnc-machine-part-i/


Sources

https://github.com/vlachoudis/bCNC/wiki/AutoLevel

https://www.instructables.com/id/Setup-a-Touch-Probe-With-a-Arduino-Cbc-Shield-and-/

http://fablab.web-5.org/doku.php/documentation:hardware_drivers_ui_tools:bcnc-autolevel#nivelage_automatique

Commandes utile

$$ > visualise info de configuration

$X > kill alarm

https://www.tobeca.fr/wiki/doku.php?id=guides:gcode

implémentation du GCODE

Sources

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

https://www.lesimprimantes3d.fr/forum/topic/3394-tuto-calcul-des-steps-per-mmunit-une-fois-pour-toutes/

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/

page 7 datasheet driver

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

Firmware

grbl

Configuration : grbl Tutoriel LeBearCnc benmaker

Configuration

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)

modifications paramètres

steps_per_mm = (steps_per_revolution*microsteps)/mm_per_rev

Sonde

Pour la sonde de niveau 0 (probe) utiliser la pin SDL de cncshield qui sur arduino correspond à A5

Test

G38.2 F10 Z-100