Construction d’une CNC DIY – Partie 3 – Électronique et démarrage

Construction d’une CNC DIY – Partie 3 – Électronique et démarrage

Suite et fin de la construction de la 3D Printed DIY CNC – Dremel CNC Remix de Aviran_N.

Dans cette partie, on va aborder la partie électronique avec le contrôleur et le câblage.

Le modèle original utilise un Shield CNC Arduino et des drivers de moteur pas à pas TMC2208. Je souhaitais pourvoir l’utiliser à partir d’un pc ou d’une tablette, en wifi ou via une carte SD. Au fil des recherches, je suis tombé sur FluidNC.

FluidNC is a CNC firmware optimized for the ESP32 controller. It is the next generation of firmware from the creators of Grbl_ESP32. It includes a web based UI and the flexibility to operate to a wide variety of machine types. This includes the ability to control machines with multiple tool types such as laser+spindle or a tool changer.

Le firmware est compatible avec un certain nombre de cartes construites autour d’un ESP32. Je suis parti sur la Makerbase MKS TinyBee avec des pilotes TMC2209. À la base, c’est une carte prévue pour faire fonctionner une imprimante 3D.

 

 

Câblage

Vue du câblage

Moteurs

En suivant la documentation relative au TinyBee sur le wiki de FluidNC, les moteurs X et Z sont branchés sur les connecteurs X-Motor et Z1-Motor (Z1 et Z2 sont en parallèle sur le même pilote, donc on utilise qu’un des deux). Les moteurs Y sont branchés sur Y-Motor et sur E1-Motor. J’ai utilisé des connecteurs GX16 4 pins pour relier les câbles provenant de la CNC au boîtier du contrôleur. Les GX16 femelles du boitier sont reliés à la carte avec un connecteur JST-XH.

Fin de course

Les interrupteurs de fin de course sont connectés de la même manière que les moteurs avec un GX16 (3 pins pour les 3 axes et une masse commune). Ils sont reliés à la carte sur les connecteurs de fin de course X, Y et Z, entre le signal et la masse via des connecteurs JST-XH 3 pins.

Drivers

Les drivers utilisés sont ceux qui étaient fournis avec la carte TinyBee. Ils sont basés sur la puce TMC2209, peuvent fonctionner en 8, 16, 32 ou 64 micro-pas, avec une interpolation de 256 micro-pas. La configuration se fait via les micro-swicth qui se trouvent sur la carte sous l’emplacement des drivers.
GND = interrupteur vers le bas, VIO = interrupteur ON vers le haut.

MS1 MS2 MS3 Steps Mode
GND GND GND 1/8 stealthChop
VIO VIO GND 1/16 stealthChop
VIO GND GND 1/32 stealthChop
GND VIO GND 1/64 stealthChop
GND GND VIO 1/8 spreadCycle
VIO VIO VIO 1/16 spreadCycle
VIO GND VIO 1/32 spreadCycle
GND VIO VIO 1/64 spreadCycle

J’ai configuré en 1/16 de pas et en mode spreadCycle, qui, d’après la datasheet du constructeur induit un meilleur couple.

Alimentation

La carte accepte une alimentation comprise entre 12 et 24V. J’ai utilisé une alimentation 24V/5A que j’avais déjà.

Sécurité

Par sécurité, il est  fort recommandé d’ajouter un bouton « coup de poing » d’arrêt d’urgence qui coupe l’alimentation de la CNC et de la broche/laser en cas de pépin.

 

Configuration

J’ai utilisé le fichier de configuration suivant (en bas de page). À titre informatif et à modifier selon la configuration de la machine. La partie concernant la broche ou les laser n’est pas configurée vu que pour l’instant j’ai mis un Dremel dessus. Les paramètres importants à modifier sont :

Sur les axes :

  • steps_per_mm: nombre de pas pour avancer d’un mm, incluant les micro-pas. La vis sans fin ayant un pas de 8mm en X et Y, et 2mm en Z. Ex : 200 x 16 / 8 = 400.0 en X et Y.
  • max_rate_mm_per_min: vitesse maximale
  • acceleration_mm_per_sec2: accélération lors d’un déplacement.
  • max_travel_mm: distance maximale depuis l’origine physique sur les axes.

Sur le moteur :

  • pulloff_mm: la distance à laquelle s’écarte le chariot d’un axe après avoir appuyé sur l’interrupteur de fin de course.
  • limit_neg_pin: le pin d’entrée qui sert pour l’interrupteur de fin de course pour ce moteur. Attention, selon si pour le homing positive_direction est vrai ou faux, ça sera ici limit_pos_pin.

Pour le homing :

  • cycle: l’ordre dans lequel les axe font le homing (1, 2 ou 3). J’ai mis Z, X, Y (donc 1 pour Z, 2 pour X, 3 pour Y).
  • positive_direction: true/false. X et Y font le homing vers le côté négatif de l’axe, tandis que Z vers le côté positif.

Pour plus de détails et d’autres paramètres de configuration, il y a tout sur le wiki de FluidNC. Les vitesses maximales et accélérations sont à affiner plus tard selon comment la machine se comporte lors des essais ou si elle saute des pas. Il sera peut être nécessaire également de régler le courant maximal dans les moteurs sur le potentiomètre de driver.
Si un axe avance dans le mauvais sens, il se peut que les deux bornes d’une des phases du moteur soit inversées. Dans ce cas, il suffit d’inverser les fils d’une des phases de ce moteur. Ça peut également être fait dans la config en modifiant la valeur direction_pin de I2SO.n à I2SO.n:low par exemple. Attention particulièrement à l’axe Y, où il y a deux moteurs… qui doivent tourner dans le même sens !

 

board: MKS TinyBee V1.0 XYYZ
name: CNC

kinematics:
Cartesian:

i2so:
bck_pin: gpio.25
data_pin: gpio.27
ws_pin: gpio.26

spi:
miso_pin: gpio.19
mosi_pin: gpio.23
sck_pin: gpio.18

sdcard:
cs_pin: gpio.5
# uses TH2 IO34 active low - MAKE SURE jumper J2 is set to SDDET!!!
card_detect_pin: gpio.34:low

stepping:
engine: I2S_STATIC
idle_ms: 255
pulse_us: 4
dir_delay_us: 1
disable_delay_us: 2

axes:
x:
steps_per_mm: 400.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 20.000
max_travel_mm: 235.000
soft_limits: true
homing:
cycle: 2
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 300.000
seek_mm_per_min: 1000.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100

motor0:
limit_neg_pin: gpio.33:low:pu
hard_limits: false
pulloff_mm: 4.000
stepstick:
step_pin: I2SO.1
direction_pin: I2SO.2
disable_pin: I2SO.0

y:
steps_per_mm: 400.000
max_rate_mm_per_min: 1000.000
acceleration_mm_per_sec2: 20.000
max_travel_mm: 400.000
soft_limits: true
homing:
cycle: 3
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 300.000
seek_mm_per_min: 1000.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100

motor0:
limit_neg_pin: gpio.32:low:pu
hard_limits: false
pulloff_mm: 4.000
stepstick:
step_pin: I2SO.4
direction_pin: I2SO.5
disable_pin: I2SO.3

# use E1 driver for 2nd Y axis motor
motor1:
limit_neg_pin: NO_PIN
hard_limits: false
pulloff_mm: 4.000
stepstick:
step_pin: I2SO.13
direction_pin: I2SO.14
disable_pin: I2SO.12

z:
steps_per_mm: 2880.000
max_rate_mm_per_min: 300.000
acceleration_mm_per_sec2: 20.000
max_travel_mm: 55.000
soft_limits: true
homing:
cycle: 1
positive_direction: true
mpos_mm: 0.000
feed_mm_per_min: 300.000
seek_mm_per_min: 500.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100

motor0:
limit_pos_pin: gpio.22:low:pu
hard_limits: false
pulloff_mm: 3.000
stepstick:
step_pin: I2SO.7
direction_pin: I2SO.8
disable_pin: I2SO.6

control:
safety_door_pin: NO_PIN
# on MT_DET connector
reset_pin: NO_PIN
# on TH1 connector
feed_hold_pin: NO_PIN
# on TB connector
cycle_start_pin: NO_PIN
macro0_pin: NO_PIN
macro1_pin: NO_PIN
macro2_pin: NO_PIN
macro3_pin: NO_PIN

coolant:
# Heated Bed Terminal Block
flood_pin: NO_PIN
# HE0 Terminal Block
mist_pin: NO_PIN
delay_ms: 0

# spindle PWM signal
PWM:
pwm_hz: 2500
# on EXP1 IO15 connector.
# note IO15 will give some short pulses on boot, which may activate spindle
# use IO17 on EXP1 to avoid
output_pin: gpio.15:high
s0_with_disable: true
tool_num: 0
spinup_ms: 4000
spindown_ms: 4000
speed_map: 0=0.000% 12000=100.000%

Laser:
pwm_hz: 5000
# on 3D Touch connector (has pdwn + PWM)
output_pin: gpio.2:high:pd
s0_with_disable: true
tool_num: 1
speed_map: 0=0.000% 1000=100.000%

start:
must_home: false

One thought on “Construction d’une CNC DIY – Partie 3 – Électronique et démarrage

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *