Nous disposons d'une cnc opensource pour le bois avec une surface utile de 800mm*800mm et 60mm de débatement pour la hauteur du Z
Elle était commercialisée par un breton. Les ressources sont accessibles sur son site https://www.mon-fablab.fr
Elle n'est pas très rapide mais fait le job en prenant son temps.
Elle est piloté par un logiciel libre Grbl fonctionnant sur des cartes à microcontrôleur de type Arduino, permettant de transférer du G-code d'un ordinateur équipé d'un port USB au contrôleur de moteurs pas-à-pas de machines-outil à commande numérique
Ne pas fraiser sans surveillance
Modélisation 2D avec inkscape -->Jscut pour générer le Gcode --> UGS pour le pilotage de la cnc
mode d'emploi de Jscut
Piloter de la machine avec le logiciel opensource UGS Universal Gcode Sender
On peut aussi utiliser le logiciel krabzcam pour générer le Gcode. C'est un peu plus compliqué mais il y a plus de possibilités. Lien sur le mode d'emploi
https://www.circuitist.com/limit-switches-types-and-wiring/
Elle fonctionne sur le GRBL 0.9
Nous avons fait une petite bidouille car le endstop Z ne fonctionnait pas.
Nous voulions conserver les fonctions de softlimit ($20=1) et hardlimit ($21=1) pour les axes X et Y mais pas pour l'axe Z.
Voici ce que l'on a fait.
Le fichier contenant les fonctions de homing, soft et hard limit est limits.c
la fonction limits_get_state gère le hard limit
la fonction limits_soft_check gère le soft limit
dans chacune de ces fonctions, il y a une boucle sur les 3 axes (N_AXIS = 3).
for (idx=0; idx<N_AXIS; idx++) { ... }
Nous avons donc limité cette boucle à N_AXIS-1 pour ne faire que les 2 premiers axes
for (idx=0; idx<N_AXIS-1; idx++) { ...}
Ce n'est pas élegant mais ça marche!
Library Arduino GRBL 0.9j modifiée au 6 dec 24
__grbl_omm_09j_06_dec_24.zip
$0 = 10 (step pulse, usec)
$1 = 255 (step idle delay, msec)
$2 = 0 (step port invert mask:00000000)
$3 = 7 (dir port invert mask:00000111)
$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 = 1 (soft limits, bool)
$21 = 0 (hard limits, bool)
$22 = 1 (homing cycle, bool)
$23 = 7 (homing dir invert mask:00000111)
$24 = 25.000 (homing feed, mm/min)
$25 = 500.000 (homing seek, mm/min)
$26 = 250 (homing debounce, msec)
$27 = 1.000 (homing pull-off, mm)
$100 = 640.000 (x, step/mm)
$101 = 640.000 (y, step/mm)
$102 = 800.000 (z, step/mm)
$110 = 900.000 (x max rate, mm/min)
$111 = 900.000 (y max rate, mm/min)
$112 = 500.000 (z max rate, mm/min)
$120 = 10.000 (x accel, mm/sec^2)
$121 = 10.000 (y accel, mm/sec^2)
$122 = 10.000 (z accel, mm/sec^2)
$130 = 82.000 (x max travel, mm)
$131 = 820.000 (y max travel, mm)
$132 = 80.000 (z max travel, mm)
COnfig par défaut 1.1h
$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 = 0 (Homing direction invert, mask)
$24 = 25.000 (Homing locate feed rate, mm/min)
$25 = 500.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 = 250.000 (X-axis travel resolution, step/mm)
$101 = 250.000 (Y-axis travel resolution, step/mm)
$102 = 250.000 (Z-axis travel resolution, step/mm)
$110 = 500.000 (X-axis maximum rate, mm/min)
$111 = 500.000 (Y-axis maximum rate, mm/min)
$112 = 500.000 (Z-axis maximum rate, mm/min)
$120 = 10.000 (X-axis acceleration, mm/sec^2)
$121 = 10.000 (Y-axis acceleration, mm/sec^2)
$122 = 10.000 (Z-axis acceleration, mm/sec^2)
$130 = 200.000 (X-axis maximum travel, millimeters)
$131 = 200.000 (Y-axis maximum travel, millimeters)
$132 = 200.000 (Z-axis maximum travel, millimeters)
Modifications pour coller
???
$1 = 255 (step idle delay, msec)
$3 = 7 (dir port invert mask:00000111)
Homing et soft limits (lr $20 est a faire avec le 22 mis à 1)
$22 = 1 (homing cycle, bool)
$23 = 7 (homing dir invert mask:00000111)
$20 = 1 (soft limits, bool)
DImensions de la CNC
$100 = 640.000 (x, step/mm)
$101 = 640.000 (y, step/mm)
$102 = 800.000 (z, step/mm)
$110 = 900.000 (x max rate, mm/min)
$111 = 900.000 (y max rate, mm/min)
$112 = 500.000 (z max rate, mm/min)
$120 = 10.000 (x accel, mm/sec^2)
$121 = 10.000 (y accel, mm/sec^2)
$122 = 10.000 (z accel, mm/sec^2)
$130 = 820.000 (x max travel, mm)
$131 = 820.000 (y max travel, mm)
$132 = 80.000 (z max travel, mm)
Le rapport a changé en 1.1 donc cette conf n'est pas à répliquer
$10 = 3 (status report mask:00000011)