ProTubeVR-MK3S-MMUv2-MOD-FOR-HEMERA

ProTubeVR-MK3S-MMUv2-MOD-FOR-HEMERA

prusaprinters

<p>This mod combined with the dedicated Firmware mods allow you to fit an Hemera extruder from E3D on an MK3s using MMUv2 upgrade.</p> <p>The mount is rotated 30 degrees to allow the full x-axis carriage travel without the need to move the lead screw, motor, etc.</p> <p>The pinda is in the same location as the original extruder.</p> <p>-This is a rework of the Hemera Mount kit from DarrinBrunner (<a href="https://www.prusaprinters.org/social/40843-darrinbrunner/prints">https://www.prusaprinters.org/social/40843-darrinbrunner/prints</a>)<br/> -It's super usefull to use the selector Mod from 78zero to get a more reliable FINDA reading (<a href="https://www.prusaprinters.org/social/2481-78zeros/prints">https://www.prusaprinters.org/social/2481-78zeros/prints</a>)</p> <p>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.</p> <p>The pinda is in the same location as on the original.</p> <p>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.</p> <p>You can follow this guide to update the firmware:<br/> <a href="https://e3d-online.dozuki.com/Guide/Prusa+i3+MK3+Firmware+Modifications/141">https://e3d-online.dozuki.com/Guide/Prusa+i3+MK3+Firmware+Modifications/141</a></p> <p>Mounting require M3x8 for the Hemera Motor<br/> Others are common M3x10 and M3x14</p> <h3>Print instructions</h3><p>Source code and test build are there :<br/> <a href="https://github.com/ProTubeVR/MK3s-Hemera-Mod">https://github.com/ProTubeVR/MK3s-Hemera-Mod</a></p> <p>Mandatory Firmware mods :</p> <p>Configuration.h</p> <p>Line18 :<br/> // Firmware version</p> <h3>define FW_VERSION "PTVRv0.1_3.9.3"</h3> <p>// BASED ON PRUSA Stock FW 3.9.3<br/> // <a href="https://github.com/vertigo235/Build-Prusa-LA-15">https://github.com/vertigo235/Build-Prusa-LA-15</a></p> <h3>define FW_COMMIT_NR 2500</h3> <p>// FW_VERSION_UNKNOWN means this is an unofficial build.<br/> // The firmware should only be checked into github with this symbol.</p> <h3>define FW_DEV_VERSION FW_VERSION_RC</h3> <h3>define FW_REPOSITORY "ProTubeVR"</h3> <h3>define FW_VERSION_FULL FW_VERSION "-" STR(FW_COMMIT_NR)</h3> <p>Config.h</p> <h3>define LANG_MODE 0 // primary language only (Hemera mod, from E3D Tuto)</h3> <p>//#define LANG_MODE 1 // sec. language support (Hemera mod, from E3D Tuto)</p> <p>configuration_prusa.h<br/> Line22 :</p> <h3>define NOZZLE_TYPE "E3D_Hemera" // Hemera</h3> <p>// Developer flag</p> <h3>define DEVELOPER</h3> <p>// Printer name</p> <h3>define CUSTOM_MENDEL_NAME "ProTubeVR Hemera MK3s" //Hemera</h3> <p>**Line42:<br/> // Extruder<br/> //#define BONDTECH_MK3S<br/> //#define BONDTECH_MOSQUITO<br/> //#define BONDTECH_MOSQUITO_MAGNUM</p> <h3>define PROTUBEVR_HEMERA_MK3S</h3> <p>line49 :<br/> // Steps per unit {X,Y,Z,E}<br/> //#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,140}<br/> //#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,280}<br/> //#define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,560}</p> <h3>define DEFAULT_AXIS_STEPS_PER_UNIT {100,100,3200/8,786.5} // (Hemera mod)</h3> <p>Line343:<br/> //#define EXTRUDER_ALTFAN_SPEED_SILENT 128 //(Hemera mod)</p> <h3>define EXTRUDER_ALTFAN_SPEED_SILENT 255 //(Hemera mod)</h3> <p>Line350 :<br/> // Load filament commands</p> <h3>define LOAD_FILAMENT_0 "M83"</h3> <p>//#define LOAD_FILAMENT_1 "G1 E70 F400" //(moded for Hemera)</p> <h3>define LOAD_FILAMENT_1 "G1 E33 F400" //(moded for Hemera)</h3> <h3>define LOAD_FILAMENT_2 "G1 E40 F100"</h3> <p>// Unload filament commands</p> <h3>define UNLOAD_FILAMENT_0 "M83"</h3> <p><strong>//#define UNLOAD_FILAMENT_1 "G1 E-80 F7000" //(moded for Hemera)</strong>#define UNLOAD_FILAMENT_1 "G1 E-50 F500" //(moded for Hemera)</p> <p>Line365 :<br/> // Filament change configuration</p> <h3>define FILAMENTCHANGEENABLE</h3> <h3>ifdef FILAMENTCHANGEENABLE</h3> <h3>define FILAMENTCHANGE_XPOS 211</h3> <h3>define FILAMENTCHANGE_YPOS 0</h3> <h3>define FILAMENTCHANGE_ZADD 2</h3> <h3>define FILAMENTCHANGE_FIRSTRETRACT -2</h3> <p>//#define FILAMENTCHANGE_FINALRETRACT -80 //(moded for Hemera)</p> <h3>define FILAMENTCHANGE_FINALRETRACT -50 //(moded for Hemera)</h3> <p>//#define FILAMENTCHANGE_FIRSTFEED 70 //E distance in mm for fast filament loading sequence used used in filament change (M600)(moded for Hemera)</p> <h3>define FILAMENTCHANGE_FIRSTFEED 33 //E distance in mm for fast filament loading sequence used used in filament change (M600)(moded for Hemera)</h3> <p>Line442:<br/> //#define Y_PROBE_OFFSET_FROM_EXTRUDER 5 // Z probe to nozzle Y offset: -front +behind (Hemera Mod)</p> <h3>define Y_PROBE_OFFSET_FROM_EXTRUDER 15 // Z probe to nozzle Y offset: -front +behind (Hemera Mod)</h3> <p>Line508:</p> <h3>define PLA_PREHEAT_HOTEND_TEMP 220 //ProTubeVR need</h3> <h3>define PLA_PREHEAT_HPB_TEMP 75 //ProTubeVR need</h3> <h3>define PET_PREHEAT_HOTEND_TEMP 250 //ProTubeVR need</h3> <h3>define PET_PREHEAT_HPB_TEMP 90 //ProTubeVR need</h3> <p>Marlin_main.cpp<br/> Line200 :<br/> //int bowden_length[4] = {385, 385, 385, 385}; //Hemera Mod<br/> int bowden_length[4] = {415, 415, 415, 415}; //Hemera Mod</p> <p>Line11609 :<br/> current_position[E_AXIS] += bowden_length[mmu_extruder];<br/> plan_buffer_line_curposXYZE(3000, active_extruder);<br/> //current_position[E_AXIS] += FIL_LOAD_LENGTH - 60; //(mod for Hemera)<br/> current_position[E_AXIS] += FIL_LOAD_LENGTH - 23; //(mod for Hemera)<br/> plan_buffer_line_curposXYZE(1400, active_extruder);<br/> //current_position[E_AXIS] += 40; //(mod for Hemera)<br/> current_position[E_AXIS] += 20; //(mod for Hemera)<br/> plan_buffer_line_curposXYZE(400, active_extruder);<br/> //current_position[E_AXIS] += 10; //(mod for Hemera)<br/> current_position[E_AXIS] += 5; //(mod for Hemera)<br/> plan_buffer_line_curposXYZE(50, active_extruder);</p> <p>Line 11692:<br/> //#define FIL_LOAD_LENGTH 60 //(mod for Hemera)</p> <h3>define FIL_LOAD_LENGTH 23 //(mod for Hemera)</h3> <p>line3243 :<br/> lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));<br/> //current_position[E_AXIS] += 40; //hemera Mod<br/> current_position[E_AXIS] += 20; //hemera Mod<br/> plan_buffer_line_curposXYZE(400 / 60); //fast sequence<br/> st_synchronize();</p> <pre><code> 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(); </code></pre> <p>ultralcd.cpp<br/> Line6427 :</p> <pre><code>// 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(); </code></pre> <p>mmu.cpp<br/> Line795 :<br/> void mmu_load_to_nozzle()<br/> {<br/> st_synchronize();</p> <pre><code>const bool saved_e_relative_mode = axis_relative_modes &amp; 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 &amp;= ~E_AXIS_MASK; </code></pre> <p>}</p> <p>line1057 :<br/> struct E_step<br/> {<br/> float extrude; //!&lt; extrude distance in mm<br/> float feed_rate; //!&lt; feed rate in mm/s<br/> };<br/> static const E_step ramming_sequence[] PROGMEM =<br/> //{<br/> // {1.0, 1000.0/60}, //Hemera Mod<br/> // {1.0, 1500.0/60}, //Hemera Mod<br/> // {2.0, 2000.0/60}, //Hemera Mod<br/> // {1.5, 3000.0/60}, //Hemera Mod<br/> // {2.5, 4000.0/60}, //Hemera Mod<br/> // {-15.0, 5000.0/60}, //Hemera Mod<br/> // {-14.0, 1200.0/60}, //Hemera Mod<br/> // {-6.0, 600.0/60}, //Hemera Mod<br/> // {10.0, 700.0/60}, //Hemera Mod<br/> // {-10.0, 400.0/60}, //Hemera Mod<br/> // {-50.0, 2000.0/60}, //Hemera Mod<br/> {<br/> {1.0, 1000.0/60}, //Hemera Mod<br/> {1.0, 1500.0/60}, //Hemera Mod<br/> {2.0, 2000.0/60}, //Hemera Mod<br/> {1.5, 3000.0/60}, //Hemera Mod<br/> {2.5, 4000.0/60}, //Hemera Mod<br/> {-7.5, 5000.0/60}, //Hemera Mod<br/> {-7.0, 1200.0/60}, //Hemera Mod<br/> {-6.0, 600.0/60}, //Hemera Mod<br/> {5, 700.0/60}, //Hemera Mod<br/> {-5, 400.0/60}, //Hemera Mod<br/> {-50.0, 2000.0/60}, //Hemera Mod<br/> };</p> <p>Line1153 :<br/> max_feedrate[E_AXIS] = 80;<br/> //current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2; //(mod for Hemera)<br/> current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 23 + FIL_LOAD_LENGTH) / 2; //(mod for Hemera)<br/> plan_buffer_line_curposXYZE(500, active_extruder);<br/> //current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2; //(mod for Hemera)<br/> current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 23 + FIL_LOAD_LENGTH) / 2; //(mod for Hemera)<br/> plan_buffer_line_curposXYZE(500, active_extruder);<br/> st_synchronize();</p> <p>Line1467 :<br/> static bool can_load()<br/> {<br/> //current_position[E_AXIS] += 60; //(Mod for Hemera)<br/> current_position[E_AXIS] += 25; //(Mod for Hemera)<br/> plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);<br/> //current_position[E_AXIS] -= 52; //(Mod for Hemera)<br/> current_position[E_AXIS] -= 5; //(Mod for Hemera)<br/> plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);<br/> st_synchronize();</p> <p>Known issue : Unloading LCD and end print request does nothing in the MMU use case</p>

Download Model from prusaprinters

With this file you will be able to print ProTubeVR-MK3S-MMUv2-MOD-FOR-HEMERA with your 3D printer. Click on the button and save the file on your computer to work, edit or customize your design. You can also find more 3D designs for printers on ProTubeVR-MK3S-MMUv2-MOD-FOR-HEMERA.