1 / 8
ProTubeVR-MK3S-MMUv2-MOD-FOR-HEMERA — zdjęcie 1
1 / 8

ProTubeVR-MK3S-MMUv2-MOD-FOR-HEMERA

Zamów wydruk tego modelu

Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.

Zapisane na tym urządzeniu.

This mod combined with the dedicated Firmware mods allow you to fit an Hemera extruder from E3D on an MK3s using MMUv2…

Ocena
5 / 5
Polubienia
23
Pobrania
114
Wydruki
1
Wyświetlenia
2841
Oceny
1

Aktualizacja u źródła:

Informacje o modelu

Źródło
Printables
Licencja
Creative Commons — Attribution — Noncommercial

This mod combined with the dedicated Firmware mods allow you to fit an Hemera extruder from E3D on an MK3s using MMUv2 upgrade.

The mount is rotated 30 degrees to allow the full x-axis carriage travel without the need to move the lead screw, motor, etc.

The pinda is in the same location as the original extruder.

-This is a rework of the Hemera Mount kit from DarrinBrunner (https://www.prusaprinters.org/social/40843-darrinbrunner/prints)
-It's super usefull to use the selector Mod from 78zero to get a more reliable FINDA reading (https://www.prusaprinters.org/social/2481-78zeros/prints)

This is new a mount to attach an E3D Hemera extruder to a Prusa MK3-MMU2 printer. The original interior geometry from the Prusa filament sensor has been incorporated into this design, sourced from Prusa's models.

The pinda is in the same location as on the original.

The nozzle in this new design sits 10mm further forward along the y-axis (toward the front of the machine), than the original. The x-axis location of the nozzle is the same as the original extruder. The y-axis offset of the nozzle from the pinda needs to be changed from 5 to 15.

You can follow this guide to update the firmware:
https://e3d-online.dozuki.com/Guide/Prusa+i3+MK3+Firmware+Modifications/141

Mounting require M3x8 for the Hemera Motor
Others are common M3x10 and M3x14

Print instructions

Source code and test build are there :
https://github.com/ProTubeVR/MK3s-Hemera-Mod

Mandatory Firmware mods :

Configuration.h

Line18 :
// Firmware version

define FW_VERSION "PTVRv0.1_3.9.3"

// BASED ON PRUSA Stock FW 3.9.3
// https://github.com/vertigo235/Build-Prusa-LA-15

define FW_COMMIT_NR 2500

// FW_VERSION_UNKNOWN means this is an unofficial build.
// The firmware should only be checked into github with this symbol.

define FW_DEV_VERSION FW_VERSION_RC

define FW_REPOSITORY "ProTubeVR"

define FW_VERSION_FULL FW_VERSION "-" STR(FW_COMMIT_NR)

Config.h

define LANG_MODE 0 // primary language only (Hemera mod, from E3D Tuto)

//#define LANG_MODE 1 // sec. language support (Hemera mod, from E3D Tuto)

configuration_prusa.h
Line22 :

define NOZZLE_TYPE "E3D_Hemera" // Hemera

// Developer flag

define DEVELOPER

// Printer name

define CUSTOM_MENDEL_NAME "ProTubeVR Hemera MK3s" //Hemera

**Line42:
// Extruder
//#define BONDTECH_MK3S
//#define BONDTECH_MOSQUITO
//#define BONDTECH_MOSQUITO_MAGNUM

define PROTUBEVR_HEMERA_MK3S

line49 :
// Steps per unit {X,Y,Z,E}
//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140}
//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,280}
//#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,560}

define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,786.5} // (Hemera mod)

Line343:
//#define EXTRUDER_ALTFAN_SPEED_SILENT 128 //(Hemera mod)

define EXTRUDER_ALTFAN_SPEED_SILENT 255 //(Hemera mod)

Line350 :
// Load filament commands

define LOAD_FILAMENT_0 "M83"

//#define LOAD_FILAMENT_1 "G1 E70 F400" //(moded for Hemera)

define LOAD_FILAMENT_1 "G1 E33 F400" //(moded for Hemera)

define LOAD_FILAMENT_2 "G1 E40 F100"

// Unload filament commands

define UNLOAD_FILAMENT_0 "M83"

//#define UNLOAD_FILAMENT_1 "G1 E-80 F7000" //(moded for Hemera)#define UNLOAD_FILAMENT_1 "G1 E-50 F500" //(moded for Hemera)

Line365 :
// Filament change configuration

define FILAMENTCHANGEENABLE

ifdef FILAMENTCHANGEENABLE

define FILAMENTCHANGE_XPOS 211

define FILAMENTCHANGE_YPOS 0

define FILAMENTCHANGE_ZADD 2

define FILAMENTCHANGE_FIRSTRETRACT -2

//#define FILAMENTCHANGE_FINALRETRACT -80 //(moded for Hemera)

define FILAMENTCHANGE_FINALRETRACT -50 //(moded for Hemera)

//#define FILAMENTCHANGE_FIRSTFEED 70 //E distance in mm for fast filament loading sequence used used in filament change (M600)(moded for Hemera)

define FILAMENTCHANGE_FIRSTFEED 33 //E distance in mm for fast filament loading sequence used used in filament change (M600)(moded for Hemera)

Line442:
//#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind (Hemera Mod)

define Y_PROBE_OFFSET_FROM_EXTRUDER 15 // Z probe to nozzle Y offset: -front +behind (Hemera Mod)

Line508:

define PLA_PREHEAT_HOTEND_TEMP 220 //ProTubeVR need

define PLA_PREHEAT_HPB_TEMP 75 //ProTubeVR need

define PET_PREHEAT_HOTEND_TEMP 250 //ProTubeVR need

define PET_PREHEAT_HPB_TEMP 90 //ProTubeVR need

Marlin_main.cpp
Line200 :
//int bowden_length[4] = {385, 385, 385, 385}; //Hemera Mod
int bowden_length[4] = {415, 415, 415, 415}; //Hemera Mod

Line11609 :
current_position[E_AXIS] += bowden_length[mmu_extruder];
plan_buffer_line_curposXYZE(3000, active_extruder);
//current_position[E_AXIS] += FIL_LOAD_LENGTH - 60; //(mod for Hemera)
current_position[E_AXIS] += FIL_LOAD_LENGTH - 23; //(mod for Hemera)
plan_buffer_line_curposXYZE(1400, active_extruder);
//current_position[E_AXIS] += 40; //(mod for Hemera)
current_position[E_AXIS] += 20; //(mod for Hemera)
plan_buffer_line_curposXYZE(400, active_extruder);
//current_position[E_AXIS] += 10; //(mod for Hemera)
current_position[E_AXIS] += 5; //(mod for Hemera)
plan_buffer_line_curposXYZE(50, active_extruder);

Line 11692:
//#define FIL_LOAD_LENGTH 60 //(mod for Hemera)

define FIL_LOAD_LENGTH 23 //(mod for Hemera)

line3243 :
lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));
//current_position[E_AXIS] += 40; //hemera Mod
current_position[E_AXIS] += 20; //hemera Mod
plan_buffer_line_curposXYZE(400 / 60); //fast sequence
st_synchronize();

        raise_z_above(MIN_Z_FOR_LOAD, false);
    //current_position[E_AXIS] += 30; //hemera Mod
        current_position[E_AXIS] += 13;   //hemera Mod
    plan_buffer_line_curposXYZE(400 / 60); //fast sequence
load_filament_final_feed(); //slow sequence
st_synchronize();

ultralcd.cpp
Line6427 :

//      extr_unload2();

//current_position[E_AXIS] -= 45; //Hemera MOD current_position[E_AXIS] -= 20; //Hemera MOD plan_buffer_line_curposXYZE(5200 / 60); st_synchronize(); //current_position[E_AXIS] -= 15; //Hemera MOD current_position[E_AXIS] -= 5; //Hemera MOD plan_buffer_line_curposXYZE(1000 / 60); st_synchronize(); //current_position[E_AXIS] -= 20; //Hemera MOD current_position[E_AXIS] -= 10; //Hemera MOD plan_buffer_line_curposXYZE(1000 / 60); st_synchronize();

mmu.cpp
Line795 :
void mmu_load_to_nozzle()
{
st_synchronize();

const bool saved_e_relative_mode = axis_relative_modes & E_AXIS_MASK;
if (!saved_e_relative_mode) axis_relative_modes |= E_AXIS_MASK;
if (ir_sensor_detected)
{
    //current_position[E_AXIS] += 3.0f;  // Hemera Mod
            current_position[E_AXIS] += 2.0f;  // Hemera Mod
}
else
{
    current_position[E_AXIS] += 7.2f;
}
//float feedrate = 562;    //Hemera Mod
float feedrate = 400;      //Hemera Mod
plan_buffer_line_curposXYZE(feedrate / 60);
st_synchronize();
//current_position[E_AXIS] += 14.4f;    //Hemera Mod
    current_position[E_AXIS] += 6.25f;      //Hemera Mod
feedrate = 871;
plan_buffer_line_curposXYZE(feedrate / 60);
st_synchronize();
//current_position[E_AXIS] += 36.0f;     //Hemera Mod
    current_position[E_AXIS] += 12.5f;       //Hemera Mod
feedrate = 1393;
plan_buffer_line_curposXYZE(feedrate / 60);
st_synchronize();
//current_position[E_AXIS] += 14.4f;    //Hemera Mod
    current_position[E_AXIS] += 6.25f;      //Hemera Mod
feedrate = 871;
plan_buffer_line_curposXYZE(feedrate / 60);
st_synchronize();
if (!saved_e_relative_mode) axis_relative_modes &= ~E_AXIS_MASK;

}

line1057 :
struct E_step
{
float extrude; //!< extrude distance in mm
float feed_rate; //!< feed rate in mm/s
};
static const E_step ramming_sequence[] PROGMEM =
//{
// {1.0, 1000.0/60}, //Hemera Mod
// {1.0, 1500.0/60}, //Hemera Mod
// {2.0, 2000.0/60}, //Hemera Mod
// {1.5, 3000.0/60}, //Hemera Mod
// {2.5, 4000.0/60}, //Hemera Mod
// {-15.0, 5000.0/60}, //Hemera Mod
// {-14.0, 1200.0/60}, //Hemera Mod
// {-6.0, 600.0/60}, //Hemera Mod
// {10.0, 700.0/60}, //Hemera Mod
// {-10.0, 400.0/60}, //Hemera Mod
// {-50.0, 2000.0/60}, //Hemera Mod
{
{1.0, 1000.0/60}, //Hemera Mod
{1.0, 1500.0/60}, //Hemera Mod
{2.0, 2000.0/60}, //Hemera Mod
{1.5, 3000.0/60}, //Hemera Mod
{2.5, 4000.0/60}, //Hemera Mod
{-7.5, 5000.0/60}, //Hemera Mod
{-7.0, 1200.0/60}, //Hemera Mod
{-6.0, 600.0/60}, //Hemera Mod
{5, 700.0/60}, //Hemera Mod
{-5, 400.0/60}, //Hemera Mod
{-50.0, 2000.0/60}, //Hemera Mod
};

Line1153 :
max_feedrate[E_AXIS] = 80;
//current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2; //(mod for Hemera)
current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 23 + FIL_LOAD_LENGTH) / 2; //(mod for Hemera)
plan_buffer_line_curposXYZE(500, active_extruder);
//current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2; //(mod for Hemera)
current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 23 + FIL_LOAD_LENGTH) / 2; //(mod for Hemera)
plan_buffer_line_curposXYZE(500, active_extruder);
st_synchronize();

Line1467 :
static bool can_load()
{
//current_position[E_AXIS] += 60; //(Mod for Hemera)
current_position[E_AXIS] += 25; //(Mod for Hemera)
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
//current_position[E_AXIS] -= 52; //(Mod for Hemera)
current_position[E_AXIS] -= 5; //(Mod for Hemera)
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
st_synchronize();

Known issue : Unloading LCD and end print request does nothing in the MMU use case

Tagi