Basic Information:
Printer Model: Custom build corexyuv
MCU / Printerboard: 2x SKR pro
klippy.log
klippy.log (336 Bytes)
Our issue:
Hi, our concern is to adapt Klipper so that two print heads can print simultaneously. This should mean that both heads share the z-axis (height) but can work individually on this height. Our printer is structured as shown in the attached image:
The first idea we have to solve this problem is to allow Klipper to control a total of seven motors. We use the coreXY or for the other motor the coreUV principle, for this we need two motors each, also one for the cartesian z-axis and then one motor each for the extruder on the print heads.
The first step we are currently implementing is the implementation of a G1 command to be able to control all motors (individually). For this we followed the guide on the Klipper Code_Overview page (Code_Overview â âAdding new kinematicsâ). We have already adapted the kinematics Python file accordingly (snippet):
self.rails = [stepper.LookupMultiRail(config.getsection(âstepper_â + n)) for n in âxyzuvâ]
for s in self.rails[1].get_steppers():
| self.rails[0].get_endstops()[0].add_stepper(s)
for s in self.rails[0].get_steppers():
| self.rails[1].get_endstops()[0][0].add_stepper(s)
for s in self.rails[4].get_steppers():
| self.rails[3].get_endstops()[0][0].add_stepper(s)
for s in self.rails[3].get_steppers():
| self.rails[4].get_endstops()[0][0].add_stepper(s)
self.rails[0].setup_itersolve(âcorexy_stepper_allocâ, bâ+â)
self.rails[1].setup_itersolve(âcorexy_stepper_allocâ, bâ-â)
self.rails[2].setup_itersolve(âcartesian_stepper_allocâ, bâzâ)
self.rails[3].setup_itersolve(âcoreuv_stepper_allocâ, bâ+â)
self.rails[4].setup_itersolve(âcoreuv_stepper_allocâ, bâ-')
Our u and v axes of the second print head run basically the same as the x and y axes of the first head (where both are actually the a and b axes in coreXY / coreUV, but this is converted in the G1 command). We have therefore taken the file kin_corexy.c (in klipper/klippy/chelper) and replaced only the labels x and y by u and v. This gives us an error. First of all, two questions arise from this:
- Is there a way of Klipper in combination with OctoPrint on a Raspberry Pi to look at the raw error messages? Because the log is not very meaningful with this error:
Building C code module c_helper.so
Unable to build C code module (error=256)
- Are the files âkin_cureuv.câ, âitersolve.hâ and âtrapq.hâ the only ones to be edited for the kinematics of the new printhead? Or are there other files to be considered?
Our current work status on the code (not finished yet!) can be found here: GitHub - Rapid-OOD-GmbH/klipper_corexyuv: modification for klipper to implement two individual printer heads using the same z-axis.
We appreciate any help.