Imprimante 3D Core XY grand volume.
L'objectif initial était de partir d'un caisson standard de cuisine ( ici, un Ler.. Merl..).
Les rails de guidage X et Y sont des tubes carrés 30x30mm, obligatoirement Inox . Les tubes en Alu ne tiennent pas plus de qques impressions.
Les deux longs font 600mm (largeur du caisson).
Le cour fait 550mm.
Les deux tubes en Z font 540mm. Il peuvent être en alu.
Les deux tubes du plateau font 500mm. Ils peuvent être en alu.
Tous les fichiers sont sur Solidworks2014.
Les dimensions des trous sont à adapter en fonction de l'imprimante.
La hotend type E3DV6 est prévue sur un support pour un changement rapide. On peut utiliser 3 aimants + billes acier percées taraudées, ou 2 vis, ou les deux. En cas de montage magnétique, on fabrique d'abord le support avec les billes visées. Les logements des aimants sont assez larges pour s'adapter. On colle ensuite les aimants en place, support à bille en position, soit à l'araldite, soit à la colle thermique.
Un montage classique fixe est possible.Dans cette configuration, un Y-joiner a été testé et fonctionne.
Une option hotend double buse est donnée mais non testée.
Après tests, il a été nécessaire d'ajouter un fond rigide au caisson, et des équerres en face avant pour augmenter les accélérations.
Un plan de perçage des faces du caisson (CaissonLeroyM) est fourni.
Le volume d'impression étant "confortable", je conseille d'installer les axes X et Y plus bas dans le caisson (on perd un peu en Z) pour pouvoir fermer le haut ensuite, et avoir une enceinte close.
Les axes des cages à poulies sont fait avec des vis M5 longues.
Les chariots seront à fileter M8 pour installer les roulements. Opération à faire avec soin pour bien respecter l'angle à 45°.
Un joint torique monté entre les têtes de vis et les roulements de guidage permet de corriger une légère erreur dans la direction des taraudages.
La tension des courroies se fait au niveau des supports moteurs avec une vis de réglage.
L'électronique est classique : Mega2566 + ramps1.6. Firmware Marlin dernière version.
Le passage sous Klipper est prévu mais non réalisé. Il sera obligatoire en cas de Hotends multiples.
Il faut :
4 x SupBarreCaisson.
2 x PatinRoulement_XV8b
2 x PatinRoulement_XV6
2 x BrideBarre
6 x PatinRoulement_XV5_courtV2b
1 x BloqueGT2ChariotV3.
1 x EquerreNema17LM_V3
1 x EquerreNema17LM2_V2
1 x CagePouliesLM
1 x CagePouliesLM1
1 x SupportFdCV2
1 x SupportFdCX
1 x ButeeCaptX
2 x SupBarreZCaissonV3
2 x SupBarreZCapteurLMV3b
2 x EntretoisePoulies14mm
2 x PlaqueStopGT2
1 x SupportMoteurExtrud.
2 x EcrouZ_V2
1 x SupportHotendMagnP1V2
1 x SupportMagnHotendV2
1 x BrideHotendV2
2 x ReglHautPlatV3
40 x roulements 608
40 x vis M8 x 20mm
1 plateau
5 moteurs Nema17
Des poulies et des courroies GT2. Entrainement moteur en 16 ou 20 dents. Poulies libres sur roulement (axe diam 5mm).
Des vis et écrous divers.
Optionnel :
2 x GuidageBas608
2 x AccouplementZV6 p1 p2 et p3
1 x SupportHotendMagnP1V2_ZProbe + SupZProbeV2 si sonde de niveau Alen
1 x SupportMagnDoubleHotendV2 + InterFDoubleHotendV2 si hotend double buse
2 x PalierMoteurs
1 x SuppBrossetteV2 si utilisation de Y-joiner
22/05/2023
Passage sous klipper effectué.
Les 2 moteurs Z sont indépendants. Le premier utilise la sortie Z de la Ramps, le second utilise la sortie E1 (deuxième extrudeur). Le réglage automatique du tilt du lit est configuré dans klipper. La vitesse d'impression et les accélérations ont pu être augmentées (resp 90mm/s et 1500mm/s2). Il est possible d'aller plus loin "mecaniquement", mais l'extrudeur ne peut plus suivre. En attente d'une buse "trois voies" et d'un entrainement dual gears.
26/04/2024
L'imprimante fonctionne toujours. La sonde Z "alen" donne satisfaction. Le réglage auto du Tilt également. Un "BedLevelling" complet plus précis et plus efficace qu'un simple Tilt est envisagé mais pas mis en place, la géométrie étant correcte d'origine et stable dans le temps.
Le doublement du tube guide fil entre l'extrudeur bowden et la buse (un tube PTFE de 2mm intérieur classique enfilé dans un tube polyamide de 5 ou 6mm intérieur) a beaucoup amélioré la qualité d'impression.
Le passage en buse CHT longue de 0.6mm (type volcano, avec un tube fileté en alu autour (https://www.cnckitchen.com/blog/volcano-hotends-are-obsolete-just-use-nuts) a permis de passer les 20mm3/s en extrusion, soit plus de 110mm/s en vitesse, avec du PLA standard sans augmentation de la température. Toujours pas de problèmes coté guidages et qualité de l'impression, même si on n'est pas au niveau d'une Bambu X1 carbon.
Le fichier "printer.cfg" :
Imprimante CoreXY caisson cuisine
Arduino aliases for atmega2560/1280 (Arduino mega) boards
##[force_move]
##enable_force_move: True
[board_pins arduino-mega]
aliases:
ar0=PE0, ar1=PE1, ar2=PE4, ar3=PE5, ar4=PG5,
ar5=PE3, ar6=PH3, ar7=PH4, ar8=PH5, ar9=PH6,
ar10=PB4, ar11=PB5, ar12=PB6, ar13=PB7, ar14=PJ1,
ar15=PJ0, ar16=PH1, ar17=PH0, ar18=PD3, ar19=PD2,
ar20=PD1, ar21=PD0, ar22=PA0, ar23=PA1, ar24=PA2,
ar25=PA3, ar26=PA4, ar27=PA5, ar28=PA6, ar29=PA7,
ar30=PC7, ar31=PC6, ar32=PC5, ar33=PC4, ar34=PC3,
ar35=PC2, ar36=PC1, ar37=PC0, ar38=PD7, ar39=PG2,
ar40=PG1, ar41=PG0, ar42=PL7, ar43=PL6, ar44=PL5,
ar45=PL4, ar46=PL3, ar47=PL2, ar48=PL1, ar49=PL0,
ar50=PB3, ar51=PB2, ar52=PB1, ar53=PB0, ar54=PF0,
ar55=PF1, ar56=PF2, ar57=PF3, ar58=PF4, ar59=PF5,
ar60=PF6, ar61=PF7, ar62=PK0, ar63=PK1, ar64=PK2,
ar65=PK3, ar66=PK4, ar67=PK5, ar68=PK6, ar69=PK7,
analog0=PF0, analog1=PF1, analog2=PF2, analog3=PF3, analog4=PF4,
analog5=PF5, analog6=PF6, analog7=PF7, analog8=PK0, analog9=PK1,
analog10=PK2, analog11=PK3, analog12=PK4, analog13=PK5, analog14=PK6,
analog15=PK7,
EXP1_1=PC0, EXP1_3=PH0, EXP1_5=PA1, EXP1_7=PA5, EXP1_9=<GND>,
EXP1_2=PC2, EXP1_4=PH1, EXP1_6=PA3, EXP1_8=PA7, EXP1_10=<5V>,
EXP2_1=PB3, EXP2_3=PC6, EXP2_5=PC4, EXP2_7=PL0, EXP2_9=<GND>,
EXP2_2=PB1, EXP2_4=PB0, EXP2_6=PB2, EXP2_8=PG0, EXP2_10=<RST>
[homing_override]
set_position_z:0
gcode:
G0 Z3
G28 Y0
G28 X0
G28 Z0
[virtual_sdcard]
path: ~/printer_data/gcodes
[display_status]
[display]
lcd_type: st7920
cs_pin: EXP1_4
sclk_pin: EXP1_5
sid_pin: EXP1_3
encoder_pins: ^EXP2_3, ^EXP2_5
click_pin: ^!EXP1_2
[output_pin beeper]
pin: EXP1_1
[pause_resume]
[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
gcode:
PAUSE_BASE
_TOOLHEAD_PARK_PAUSE_CANCEL
[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
##### read extrude from _TOOLHEAD_PARK_PAUSE_CANCEL macro #####
{% set extrude = printer['gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL'].extrude %}
#### get VELOCITY parameter if specified ####
{% if 'VELOCITY' in params|upper %}
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
{%else %}
{% set get_params = "" %}
{% endif %}
##### end of definitions #####
{% if printer.extruder.can_extrude|lower == 'true' %}
M83
G1 E{extrude} F2100
{% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
RESUME_BASE {get_params}
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
variable_park: True
gcode:
## Move head and retract only if not already in the pause state and park set to true
{% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
_TOOLHEAD_PARK_PAUSE_CANCEL
{% endif %}
TURN_OFF_HEATERS
CANCEL_PRINT_BASE
[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL]
description: Helper: park toolhead used in PAUSE and CANCEL_PRINT
variable_extrude: 1.0
gcode:
##### set park positon for x and y #####
## default is your max posion from your printer.cfg
{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
{% set z_park_delta = 2.0 %}
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% if act_z < (max_z - z_park_delta) %}
{% set z_safe = z_park_delta %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
{% if printer.extruder.can_extrude|lower == 'true' %}
M83
G1 E-{extrude} F2100
{% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G91
G1 Z{z_safe} F900
G90
G1 X{x_park} Y{y_park} F6000
G1 X10 Y10 F6000
{% if printer.gcode_move.absolute_coordinates|lower == 'false' %} G91 {% endif %}
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
##gcode_macro BED_MESH_CALIBRATE]
##rename_existing: BASE_BED_MESH_CALIBRATE
##gcode:
#before
the original gcode
BED_MESH_CLEAR
QUAD_GANTRY_LEVEL
G1 X125 Y125 Z5 F6000
#the
original gcode
BASE_BED_MESH_CALIBRATE
#after
the original gcode
[stepper_x]
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
microsteps: 16
rotation_distance: 32
endstop_pin: ^!PE5
position_endstop: 0
position_max: 350 # May be more
homing_speed: 60
[stepper_y]
step_pin: PF6
dir_pin: PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 32
endstop_pin: ^!PJ1
position_endstop: 0
position_max: 350 # May be more
homing_speed: 60
[stepper_z]
step_pin: PL3
dir_pin: !PL1
enable_pin: !PK0
microsteps: 4
rotation_distance: 1.25
endstop_pin: ^!PD3
position_endstop: 0
position_max: 300 # May be more
homing_retract_dist: 2.0
2 eme moteur Z independant
[stepper_z1]
step_pin: PC1
dir_pin: !PC3
enable_pin: !PC7
microsteps: 4
rotation_distance: 1.25
[extruder]
step_pin: PA4
dir_pin: PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: ATC Semitec 104GT-2
sensor_pin: PK5
##control: pid
##pid_Kp: 22.2
##pid_Ki: 1.08
##pid_Kd: 114
min_temp: 0
max_temp: 250
pressure_advance = 0.2
[heater_bed]
heater_pin: PH5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK6
control: watermark
min_temp: 0
max_temp: 130
[verify_heater heater_bed]
heating_gain: 0.3
[fan]
pin: PH6
[mcu]
resultat de ls /dev/serial/by-id/
serial: /dev/serial/by-id/usb ##Arduino_www.arduino.cc_0042_7573030313935160C1A2-if00
[printer]
kinematics: corexy
max_velocity: 150 # may be more. Need Test.
max_accel: 1400 # may be more. Need Test.
max_z_velocity: 3
max_z_accel: 5
Define a probe
Alen probe
[probe]
pin: ^PE4
x_offset: 30.0
y_offset: 20.0
z_offset: 13.9
#13.8 mesuré
speed: 2.0
samples: 2
sample_retract_dist: 1.5
[z_tilt]]
z_positions :
210,-60
120,400
Points :
190,20
90,250
speed: 150
horizontal_move_z: 17
retries: 3
retry_tolerance: 0.05
[bed_mesh]
speed: 150
horizontal_move_z: 17
mesh_min: 30,30
mesh_max: 200,200
probe_count: 4, 4
mesh_pps: 2, 2
algorithm: bicubic
bicubic_tension: .2