Jump to content
Ultimaker Community of 3D Printing Experts

Recommended Posts

Posted · HOTEND_OFFSET

Question: how to setup an hotend offset between primary and second hotend?

 

I use: upgraded ultimaker original with utlimaker 2 V2.1.1 motherboard. E3d Chimera dual extruder, heatbed, reprap smart controller and Custom firmware from https//github.com/Ultimaker/UM2.1-Firmware

 

Already try: give in the g-code commands "M218 T1 X20 Y0" and reply it with M500 command in simplify3d machine tab. This works for me until i switch the ultimaker off and on.

 

Also try to change the firmware in configuration.h

Change:

#define extruder 2

#define temp_sensor_1 20

 

Add:

#define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle
//#define HOTEND_OFFSET_Y { 0.0, 5.00 }  // (mm) relative Y-offset for each nozzle
//#define HOTEND_OFFSET_Z { 0.0, 0.00 }  // (mm) relative Z-

 

This doesn't anything do i miss something?

 

  • Link to post
    Share on other sites
    Posted (edited) · HOTEND_OFFSET

    you can also set the nozzle offset in Cura (and presumably simplify3d as well) that is generally what was done for the early dual hotend setups, not very pretty, I know.
    the M218 should also work though. switching back and forth with the stock implementation every layer however  is not recommended.
    it rounds floats every-time you switch AFAIK. We replaced it for the UM3 because we did use that offset for the Z but the buildplate was slowly creeping up or down when we did switches in places to test the switching bay.

    Edited by robinmdh
  • Link to post
    Share on other sites
    Posted · HOTEND_OFFSET
    10 hours ago, roald said:

    Add:

    #define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle
    //#define HOTEND_OFFSET_Y { 0.0, 5.00 }  // (mm) relative Y-offset for each nozzle
    //#define HOTEND_OFFSET_Z { 0.0, 0.00 }  // (mm) relative Z-

     

    This doesn't anything do i miss something?

     

    HOTEND_OFFSET_Y has to be defined as well, it's used here (mind the #ifdef clause):

    https://github.com/Ultimaker/UM2.1-Firmware/blob/UM2.1_JarJar/Marlin/Marlin_main.cpp#L172

     

    The offset is not stored in EEPROM AFAIK and there's no z-offset in this Marlin version.

    But you have to fine-tune (calibrate) the values in the start-script anyway (with M218), or do you plan to customize the firmware after every nozzle change?

     

  • Link to post
    Share on other sites
    Posted · HOTEND_OFFSET
    6 hours ago, robinmdh said:

    the M218 should also work though. switching back and forth with the stock implementation every layer however  is not recommended.
    it rounds floats every-time you switch AFAIK

     

    oh.. i remember... 🙂

    As a rule of thumb: use only offset values that are a multiple of the step size.

     

  • Link to post
    Share on other sites
    Posted · HOTEND_OFFSET
    On 7/29/2020 at 5:43 PM, tinkergnome said:

     

    HOTEND_OFFSET_Y has to be defined as well, it's used here (mind the #ifdef clause):

    https://github.com/Ultimaker/UM2.1-Firmware/blob/UM2.1_JarJar/Marlin/Marlin_main.cpp#L172

     

    The offset is not stored in EEPROM AFAIK and there's no z-offset in this Marlin version.

    But you have to fine-tune (calibrate) the values in the start-script anyway (with M218), or do you plan to customize the firmware after every nozzle change?

     

    Oke i define the y-axis as well when im back home.

    But i dont get you about the nozzle change, in my mind there be no different in distance from center to center when i change the nozzle size. And cant you explain a little bit more about the ifdef clause? Or do you have a tip/website/book to learn a little but more about this?

  • Link to post
    Share on other sites
    Posted · HOTEND_OFFSET
    2 hours ago, roald said:

    Or do you have a tip/website/book to learn a little but more about this?

     

    The whole Marlin configuration makes extensive use of the C preprocessor

     

    gcc documentation for #ifdef:

    https://gcc.gnu.org/onlinedocs/cpp/Ifdef.html#Ifdef

  • Link to post
    Share on other sites
    Posted · HOTEND_OFFSET

    Its working by enable this both lines Thanks for the help

     

    // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
    // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
    // For the other hotends it is their distance from the extruder 0 hotend.
    #define EXTRUDER_OFFSET_X {0.0, 19.70} // (in mm) for each extruder, offset of the hotend on the X axis
    #define EXTRUDER_OFFSET_Y {0.0, 0.00}  // (in mm) for each extruder, offset of the hotend on the Y axis
     

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    ×
    ×
    • Create New...