My CoreXY Printer

  • Hi Everyone,

    I thought it was about time for me to write something in here about my printer. I decided a while ago after getting some prototypes printed for some brake caliper adapters for my 4wd and paying a bit for them, and how useful it was, and I would get my own printer. I started looking into buying a kit, with the Tevo Black Widow being one of the first options as I wanted to build something to learn how they work. After doing some reading about printers and the fact that I wanted to make biggish items, having one of the primary axis, a constantly moving axis put me off the cartesian design. So I decided to step into the world of CoreXY.

    I did a fair bit of research and there seemed to be only a handful of people that have published anything about their CoreXY printers that did not conform with the RepRap philosophy and had made their printers without printing components for it. I did not want to have 3d printed parts due to the size and weight of the printer (although I ended up with a 3d printed extruder). I thought if I was going to build it, I was not going to try and cheap out on the build as I wanted it to be as solid as possible.

    My aim was to get a build area of 400x400x400. I have not quite managed this, with a final build area of 365x375x420. It was built out of 30x30 aluminum extrusions, with 12mm linear rods for the Z axis alignment and genuine Hiwin linear rails for the X and Y axis. The current setup uses 2x Nema 17 Motors for the X and Y and 3 Nema 23 motors for the Z. I am however about to change this to 4 motors. Originally I was only going to have 2 z axis motors, until I found the duet boards and the auto bed leveling so went to three. One of my other things I wanted was a perfectly flat bed that was rigid. This meant that I had to get rid of the manual bed leveling with such a big plate and not wanting it to bow. This made the auto bed leveling even more important. Currently I have a slight dip down the back right corner, which I am hoping to correct with the 4 Z axis motors.

    The build took longer than expected due to me sustaining a bad concussion. Alas I got it up and running. I was however not happy with how I mounted the idlers for the belts. So spoke to an engineering friend of mine who had a small lathe, that machined some posts up for me a bit like the setup E3d are doing with their CoreXY multi tool setup. It allowed me to bolt up from the bottom into the post to hold it exactly in place to keep the belts parallel and then bolt from the top down to hold the pulley so I could leave them slightly loose. (If anyone knows where to get genuine gates idlers from that would be great to know).

    The Y carriage that mounts the extruder is a piece of aluminium plate that I cut out to mount everything. Now I have it running and happy with it, I will draw it in cad and get it profile cut as it is a bit rough. I will also be doing this with my base plate that the electronics are mounted too, as bits changed as I was trying to get it running correctly.

    As for the extruder, I decided that I would look at getting a cable driven extruder to keep the mass down and reduce the retractions required by a bowden setup with the length of the tube I would need. I saw the two main options being the Flex3Drive and the Zesty Nimble. While the Zesty may be lighter, I do agree with the better gearing of the Flex3Drive and also it looked more robust. Also from the brief reading I did arounf the politics of the two (For which I will not get into) I decided to support Flex3Drive. So I ordered one along with a sheet of PrintBite+. It was easy to mount and came with all sorts of extras. A great wee unit.

    The last bit was the electronics. After looking at all the board options, only one kept coming up time and time again as being the preferential board and that was the Duet. With the number of stepper motors I am running, I needed an expansion board as well. I went with the Duex2, I should have got theDuex5 but money was a bit tight at the time and I needed to buy everything else. One day I will upgrade. I will also probably get a PanelDue as well. For the leveling I went with a BLTouch. I also have a filament out switch that I have currently wired in while I wait for the laser or the likes to be developed and running.

    Anyway enough of the writing and some of the photos of the build.


    This was the base frame. I have change the motor mounts of the top to corner plates that you can buy as well as the other sides. They are more solid.


    There is a photo of the base plate that everything is mounted to.


    There is a photo of the Y axis mounted onto the frame. I went with a wide flange carriage to give me a bigger area for mounting.



    A photo of the bed mounted. It is a piece of 6mm tooling plate mounted onto a 20x20 aluminium extrusion frame with 2x 300W 240V heaters and a PT100 drilled and glued into the plate. I also mounted a thermal fuse to the base for protection.


    The photos of the start of the extruder carriage. It does not deflect at all which is great.


    The temporary mounting for the BLTouch until I get around to getting the carriage profile cut as well as the rest of the extruder setup.


    Another photo of the setup.



    Here are some photos of the idler pulley posts. They keep everything inline which is good. I am now printing perfectly 100mm in X, Y and Z with calibration cubes etc, where before I had thin tube cut to suit and it was bolts going all the way through which caused a few issues in the Y axis.


    And some photos of my horrific wiring. This I promise will be getting tidied up when I get my new Z axis motor. I was getting impatient and wanted to get it running. I will also be adding some aluminium composite panels around the outside to cover everything so you can not see the underneath. This is where the Panel Due will be getting mounted. I also have a power plug setup to install when I get this sorted.

    Anyway thats about it. I do have more photos but this post was getting quite big.

    Always open to suggestions on what I could improve.

    Kind Regards,

  • Here is some photos of my first prints. I am pretty happy for my first 3d printer and it being a scratch built as well. The bottom cube was my very first print. So far I have only had one failure.

    2_1535928655429_IMG_3597.JPG 1_1535928655428_IMG_3596.JPG 0_1535928655426_IMG_3595.JPG

    I have had to remove one of the fans that came with the Flex3Drive, so I am only running one. I am currently looking at designing a duct that allows me to run a tube duct from down where the electronics are up to the extruder for parts cooling. Anyone had any experience with this? It would allow me to run a much bigger fan and keep the weight down.

    Kind Regards,

  • @samlogan87 looks great! Well done. For remote cooling look into berd air pumps. There are a few threads here.

  • Hi @Phaedrux,

    Thanks for that. I might have a look tonight. I found some tube that will probably work and is pretty flexiable. Will see how I go.

    In the mean time I will keep chipping away at improving print quality. I think I need to drop my jerk settings for x and y down a bit as at 150mm/s print speed she was fair shaking doing the infill. It is currently 20 with an acceleration of 2500 so might try 15 at 2500 and see what happens. All about learning about tuning and then implementing it. Although in saying that, being able to get it up to 150mm/s in Long runs is not very sustainable and doesn’t reach those speeds often. If I can get good quality at 100mm/s for the prints I will be happy

    Kind Regards,


  • I have a flex drive (now redundant) and went to the nimble, I have a dual on my corexy and a single on my delta, having dealt with both teams and experienced the "politics" as you put it, and the engineering from both, the nimble is head and shoulders above the flex drive, in every aspect. Good luck with corexy and the never ending desire to improve and evolve this type. I have one that too is never finished.

  • Hi @Phaedrux

    I have seen in a few posts that you have helped people with mesh bed leveling. I was just wondering if you can offer me some advice as I am having a few consistency issues.

    Basically I have all 4 bed steppers motors in now. The maximum deviation after running 3 iterations of the auto bed leveling is about 0.008mm. This is probably beyond the accuracy of my BLTouch however. My bed does have the slightest of bows in the middle of it but is not that bad. I am pretty sure that the mesh grid compensation I have done is not bad either and definitely does show the slight bow.

    To do the mesh leveling, I heated the bed to 78 degrees (I am using PrintBite+) so there is an offset that I have worked out with a second PT100 (The bed also has a PT100) and the nozzle to 215 which is what I run at with PLA. I then do the probe offset and put that into my config.g file. I then run auto bed leveling and then run mesh compensation.

    Here is where I think I might be getting a bit confused. Should I run a z home between the auto bed leveling and the mesh compensation to ensure that the bed has the correct height before hand? I am guessing I should follow the exact same procedure in Cura as what I did to get the compensation. This is what I have for Cura:

    ; Startup Gcode
    G91 ; Relative Positioning
    G1 Z5 ; Move Z down 5mm
    G90 ; Absolute Positioning
    G28 XY ; Home XY
    M561 ; Clear any bed transform
    G32 ; Start 4-point probe sequence
    G28 Z ; Home Z
    G29 S1 ; Load heightmap
    G1 Z20.0 F6000 ; Move Z to 20
    G1 X0 Y0 ; Move Head to front left
    M582 T1 ; check levels of inputs that give rise to trigger #1
    G92 E0 ; Zero Extruder
    G1 F200 E30 ; Prime the extruder
    G92 E0 ; Zero Extruder

    Any help would be great.

    Kind Regards,

  • @samlogan87 I think everything you're doing should work.

    Here's what I do, which is a bit less complex, because I don't use auto bed leveling, because I only have a single motor, so the screws don't get out of sync. Occasionally I do a similar procedure to manual auto bed leveling where I have a macro that moves the nozzle as close as possible to the 3 leveling screws, and then I adjust the screws until the nozzle and the bed are just touching. I do this visually because I can get up close to it and can plainly see if it's touching or not. And by moving 0.01 I think I am getting pretty close. This has the benefit of not using the probe, so there is no offset. The macro goes through the 3 points twice each. It doesn't change much so once it's dialed in I don't really have to adjust the screws at all.

    For you, auto bed leveling is probably going to be needed before each print to ensure all the motors are in sync. 0.008mm is probably as good as you can get with the BLTouch. You could verify afterwards by moving the nozzle around and touching it to the bed using the same locations as the auto bed leveling uses.

    Once the bed is leveled I measure the Z offset at the center of the bed 10 times and take the average. I manually set z=0 by moving it to touch the bed anyway, so that takes the place of the bltouch offset. That's actually critical to getting a good measurement. You need to manually reset Z=0 each time. Up to you how many times you measure and average together. 3 may be just fine. Once this is measured it shouldn't need to be redone unless something changes with the print carriage, or maybe a head crash that pushes things out of whack.

    Mesh grid compensation is run next. I use 20mm spacing on a nearly 300mm^2 bed, so it takes about half an hour, but it's a detailed map. Because it takes so long I don't do this very often unless I've changed something on the bed. I load the heightmap in config.g at boot so it's always being applied.

    I do home the printer before each of those steps, but only because it's part of the macros I use. I have 3 separate macros because I don't always do all 3 together. When it matter to get an exact z=0 position for measurement and adjustment I use an M291 Z1 dialogue to jog the axis followed by G92 Z0. So the homing before that is only to ensure the axis are homed so they can move. As long as your motors haven't turned off, and you are manually setting Z=0 when it matters, I think you can get away without homing. The system will keep track of Z=0.

    So because you need to use auto bed leveling before each print I think your startup code looks fine. How does your first layer look? Have you done a test print that prints a pattern across the entire surface of the bed to see if the mesh compensation is working?

  • 0_1537833130517_bedlevel_nozzle_0.4_200x200-0.3-0.8.stl
    Here's a good test pattern to see how well the bed is leveled and how well mesh compensation is working. You may need to scale it a by in X and Y to fit your bed. print it with a single wall using whatever layer height and extrusion width you'd normally use for a first layer. You'll easily see where the bed is too high or too low, and then when you print it with mesh compensation it should look pretty much perfect.

  • @samlogan87 said in My CoreXY Printer:

    I did a fair bit of research and there seemed to be only a handful of people that have published anything about their CoreXY printers that did not conform with the RepRap philosophy and had made their printers without printing components for it. I did not want to have 3d printed parts due to the size and weight of the printer (although I ended up with a 3d printed extruder). I thought if I was going to build it, I was not going to try and cheap out on the build as I wanted it to be as solid as possible.

    And you made it.... Congratulations. Very clever and robust design! Also brutally simple to make parts! 😄

    "without printing components for it" one of my top difficulties was have access to a 3D printer to build my first one...

    Please, I would like to know more about your extruder! Is it a Remote Direct Drive like the Nimble or something? Is it opensource? 😄


  • Hi @Phaedrux

    thanks for that. I have mine set at 20mm grid as well and she is a time consuming job. I did 8 iterations of the nozzle offset. I printed your stl and that has helped alot. It has been coming out pretty perfect to be honest.

    I just wanted to confirm at least the order in Cura as I know you helped someone who had issues and you got them to change the order if I recall correctly. For the life of me I couldn't find it.


    Thank you. It has been a labour of love over the past few months. I think today i finally have it running properly after some help from @Mutley who makes the extruder that I have. It is a Flex3Drive. Really solid and works really well. He has helped me no end to get it printing correctly

    Kind Regards,

  • @samlogan87 yup that looks pretty good. If the lines are all clean and even that means the compensation is working well. Try printing it with compensation off to see how the shape of the bed effects it. It's really quite amazing how well it works. I've printed 0.05 first layers with no problem.

  • @Phaedrux i just gave it a go. Yeah it certainly helped let’s just say that. Thanks for your help


  • Very nice design. Making something solid with easily machinable or sourceable parts is a worthy path.

    A couple points.

    Your z lifter screws are over constrained, which can transmit wobble into the bed. Try removing the upper screw bearings. It’s hard to tell if you have bearings at the bottom, but it’d be best to put a flexible shaft coupler (double disc or jaw type. The helical ones aren’t very good) and then a bottom bearing that bears the compressive load along the screw.

    Or, much easier, look into integrated leadscrew steppers. E3d has some nice ones.

    Adding a fourth screw will overconstrain your design as well. Look to stiffen your bed. However, you should be good enough with the 6mm plus 2020 though so maybe it’s warped?

    Also pay attention to plate thermal expansion. It can be considerable and cause binding. Check mark rehorsts (digital dentist) designs for allowing for thermal expansion while still properly constraining the bed.

  • Hi @wesc

    Thanks for your comments.

    Mine is only constrained at the top. I have Puck Style couplers at the bottom. I have had to do that because I am using the z screws to remove any twist in the bed. As I could not be bothered dealing with adjustment screws, and the fact that the duet does it so well, if you have any deviation (mine is about 0.15mm from power up of the stepper motors), you will find that using a puck style coupler, the screws will pull the couplers apart instead of actually fixing the twist. I do not have any wobble in mine. I find if you actually make sure that there is no loading on the coupler other than the weight of the bed, and you tighten the grub screws in the bearings, they seem to run true.

    Trying to find 550mm long integrated lead screws is near on impossible, and if you do, it is a massive risk (getting bent) and expense to get them to New Zealand.

    I will have a look at his page. I have mesh compensation running with the mapping having had been done while it is warm and have a total deviation on a 400x400 bed of 0.11mm. I am using exhaust wrapping between the angles and the plate which should help with some expansion as well.

    Kind Regards,

Log in to reply