I am building my 3rd custom 3D printer, but this is the first one I've done with dual extruders. I got the printer powered up and running for the first time last night, but I have some questions on the behavior of the two extruders and wanted to clarify.
General Info:
I am using a MKS Gen 1.4 Board with DVR8825 stepper drivers.
Not that it matters, but I've got two e3D titan extruders mounted in a Bowden configuration.
I have an endstop setup as a filament runout sensor, I only have one configured at the moment, not two.
When I was going through last night and testing all the axis movements and functionality through the LCD interface, I noticed some odd behavior with the extruders when trying to move them using the "Move Axis" menu.
I have 3 menu options under "Move Axis" relative to the extruders:
Extruder
Extruder 1
Extruder 2
I heated both hot ends up to 200F to ensure I wouldn't run into issues triggering the low temp extrusion. I made sure both were at temp before attempting the test.
If I select Extruder 1 and manually move it, it works just fine. Display shows the distance I've moved as normal.
If I select Extruder 2 I will see the distance that I already moved Extruder 1 displayed on the screen before I start any further movements. I turn the knob and I don't get any movement out of Extruder 2, but the number on the screen changes as I turn the dial as if it were moving. I also don't think I was getting any movmement from Extruder 1.The same thing happens if I start trying to move extruder 2 first, but it starts off at zero.
Finally, if I just try moving Extruder, I think extruder 1 is the one that moves.
I suspect it's behaving like both extruders are acting as one. The fact that the value of extruded length carries over no matter what menu option I choose is leading me to think that. I want to make sure my firmware is configured properly before I start chasing hardware issues.
Now, I'll say that it's possible I have a bad stepper driver. The batch of drivers I ordered had one bad driver in it already that I found on my other custom printer. The driver that was connected to extruder 2 (E1 position on the board) was much hotter than the others when I felt it, and it was set to the same voltage as the others.
I'm using Marlin 1.1.9 with a RepRapDiscount FULL GRAPHIC Smart Controller. I've pasted the first portion of my configuration.h file below through the section on extruders. I don't know if there is somewhere else within the firmware I have to go to adjust the menu functionality, or if it should already be setup to support driving the extruders individually rather than as a combo.
General Info:
I am using a MKS Gen 1.4 Board with DVR8825 stepper drivers.
Not that it matters, but I've got two e3D titan extruders mounted in a Bowden configuration.
I have an endstop setup as a filament runout sensor, I only have one configured at the moment, not two.
When I was going through last night and testing all the axis movements and functionality through the LCD interface, I noticed some odd behavior with the extruders when trying to move them using the "Move Axis" menu.
I have 3 menu options under "Move Axis" relative to the extruders:
Extruder
Extruder 1
Extruder 2
I heated both hot ends up to 200F to ensure I wouldn't run into issues triggering the low temp extrusion. I made sure both were at temp before attempting the test.
If I select Extruder 1 and manually move it, it works just fine. Display shows the distance I've moved as normal.
If I select Extruder 2 I will see the distance that I already moved Extruder 1 displayed on the screen before I start any further movements. I turn the knob and I don't get any movement out of Extruder 2, but the number on the screen changes as I turn the dial as if it were moving. I also don't think I was getting any movmement from Extruder 1.The same thing happens if I start trying to move extruder 2 first, but it starts off at zero.
Finally, if I just try moving Extruder, I think extruder 1 is the one that moves.
I suspect it's behaving like both extruders are acting as one. The fact that the value of extruded length carries over no matter what menu option I choose is leading me to think that. I want to make sure my firmware is configured properly before I start chasing hardware issues.
Now, I'll say that it's possible I have a bad stepper driver. The batch of drivers I ordered had one bad driver in it already that I found on my other custom printer. The driver that was connected to extruder 2 (E1 position on the board) was much hotter than the others when I felt it, and it was set to the same voltage as the others.
I'm using Marlin 1.1.9 with a RepRapDiscount FULL GRAPHIC Smart Controller. I've pasted the first portion of my configuration.h file below through the section on extruders. I don't know if there is somewhere else within the firmware I have to go to adjust the menu functionality, or if it should already be setup to support driving the extruders individually rather than as a combo.
#include /** * Marlin 3D Printer Firmware * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * * Based on Sprinter and grbl. * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see [www.gnu.org]. * */ /** * Configuration.h * * Basic settings such as: * * - Type of electronics * - Type of temperature sensor * - Printer geometry * - Endstop configuration * - LCD controller * - Extra features * * Advanced settings can be found in Configuration_adv.h * */ #ifndef CONFIGURATION_H #define CONFIGURATION_H #define CONFIGURATION_H_VERSION 010109 //=========================================================================== //============================= Getting Started ============================= //=========================================================================== /** * Here are some standard links for getting your machine calibrated: * * [reprap.org] * [youtu.be] * [calculator.josefprusa.cz] * [reprap.org] * [www.thingiverse.com] * [sites.google.com] * [www.thingiverse.com] */ //=========================================================================== //============================= DELTA Printer =============================== //=========================================================================== // For a Delta printer start with one of the configuration files in the // example_configurations/delta directory and customize for your machine. // //=========================================================================== //============================= SCARA Printer =============================== //=========================================================================== // For a SCARA printer start with the configuration files in // example_configurations/SCARA and customize for your machine. // //=========================================================================== //============================= HANGPRINTER ================================= //=========================================================================== // For a Hangprinter start with the configuration file in the // example_configurations/hangprinter directory and customize for your machine. // // @section info // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define SHOW_BOOTSCREEN #define STRING_SPLASH_LINE1 SHORT_BUILD_VERSION // will be shown during bootup in line 1 #define STRING_SPLASH_LINE2 WEBSITE_URL // will be shown during bootup in line 2 /** * *** VENDORS PLEASE READ *** * * Marlin allows you to add a custom boot image for Graphical LCDs. * With this option Marlin will first show your custom screen followed * by the standard Marlin logo with version number and web URL. * * We encourage you to take advantage of this new feature and we also * respectfully request that you retain the unmodified Marlin boot screen. */ // Enable to show the bitmap in Marlin/_Bootscreen.h on startup. //#define SHOW_CUSTOM_BOOTSCREEN // Enable to show the bitmap in Marlin/_Statusscreen.h on the status screen. //#define CUSTOM_STATUS_SCREEN_IMAGE // @section machine /** * Select the serial port on the board to use for communication with the host. * This allows the connection of wireless adapters (for instance) to non-default port pins. * Serial port 0 is always used by the Arduino bootloader regardless of this setting. * * :[0, 1, 2, 3, 4, 5, 6, 7] */ #define SERIAL_PORT 0 /** * This setting determines the communication speed of the printer. * * 250000 works in most cases, but you might try a lower speed if * you commonly experience drop-outs during host printing. * You may try up to 1000000 to speed up SD file transfer. * * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] */ #define BAUDRATE 250000 // Enable the Bluetooth serial interface on AT90USB devices //#define BLUETOOTH // The following define selects which electronics board you have. // Please choose the name from boards.h that matches your setup #ifndef MOTHERBOARD #define MOTHERBOARD BOARD_MKS_GEN_13 #endif // Optional custom name for your RepStrap or other custom machine // Displayed in the LCD "Ready" message #define CUSTOM_MACHINE_NAME "Box Printer" // Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) // You can use an online service to generate a random UUID. (eg [www.uuidgenerator.net]) //#define MACHINE_UUID "00000000-0000-0000-0000-000000000000" // @section extruder // This defines the number of extruders // :[1, 2, 3, 4, 5] #define EXTRUDERS 2 // Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc. #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 // For Cyclops or any "multi-extruder" that shares a single nozzle. //#define SINGLENOZZLE /** * Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants. * * This device allows one stepper driver on a control board to drive * two to eight stepper motors, one at a time, in a manner suitable * for extruders. * * This option only allows the multiplexer to switch on tool-change. * Additional options to configure custom E moves are pending. */ //#define MK2_MULTIPLEXER #if ENABLED(MK2_MULTIPLEXER) // Override the default DIO selector pins here, if needed. // Some pins files may provide defaults for these pins. //#define E_MUX0_PIN 40 // Always Required //#define E_MUX1_PIN 42 // Needed for 3 to 8 steppers //#define E_MUX2_PIN 44 // Needed for 5 to 8 steppers #endif // A dual extruder that uses a single stepper motor //#define SWITCHING_EXTRUDER #if ENABLED(SWITCHING_EXTRUDER) #define SWITCHING_EXTRUDER_SERVO_NR 0 #define SWITCHING_EXTRUDER_SERVO_ANGLES { 0, 90 } // Angles for E0, E1[, E2, E3] #if EXTRUDERS > 3 #define SWITCHING_EXTRUDER_E23_SERVO_NR 1 #endif #endif // A dual-nozzle that uses a servomotor to raise/lower one of the nozzles //#define SWITCHING_NOZZLE #if ENABLED(SWITCHING_NOZZLE) #define SWITCHING_NOZZLE_SERVO_NR 0 #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 //#define HOTEND_OFFSET_Z { 0.0, 0.0 } #endif /** * Two separate X-carriages with extruders that connect to a moving part * via a magnetic docking mechanism. Requires SOL1_PIN and SOL2_PIN. */ //#define PARKING_EXTRUDER #if ENABLED(PARKING_EXTRUDER) #define PARKING_EXTRUDER_SOLENOIDS_INVERT // If enabled, the solenoid is NOT magnetized with applied voltage #define PARKING_EXTRUDER_SOLENOIDS_PINS_ACTIVE LOW // LOW or HIGH pin signal energizes the coil #define PARKING_EXTRUDER_SOLENOIDS_DELAY 250 // Delay (ms) for magnetic field. No delay if 0 or not defined. #define PARKING_EXTRUDER_PARKING_X { -78, 184 } // X positions for parking the extruders #define PARKING_EXTRUDER_GRAB_DISTANCE 1 // mm to move beyond the parking point to grab the extruder #define PARKING_EXTRUDER_SECURITY_RAISE 5 // Z-raise before parking #define HOTEND_OFFSET_Z { 0.0, 1.3 } // Z-offsets of the two hotends. The first must be 0. #endif /** * "Mixing Extruder" * - Adds G-codes M163 and M164 to set and "commit" the current mix factors. * - Extends the stepping routines to move multiple steppers in proportion to the mix. * - Optional support for Repetier Firmware's 'M164 S' supporting virtual tools. * - This implementation supports up to two mixing extruders. * - Enable DIRECT_MIXING_IN_G1 for M165 and mixing in G1 (from Pia Taubert's reference implementation). */ //#define MIXING_EXTRUDER #if ENABLED(MIXING_EXTRUDER) #define MIXING_STEPPERS 2 // Number of steppers in your mixing extruder #define MIXING_VIRTUAL_TOOLS 16 // Use the Virtual Tool method with M163 and M164 //#define DIRECT_MIXING_IN_G1 // Allow ABCDHI mix factors in G1 movement commands #endif // 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 HOTEND_OFFSET_X {0.0, 40.00} // (in mm) for each extruder, offset of the hotend on the X axis #define HOTEND_OFFSET_Y {0.0, 0.00} // (in mm) for each extruder, offset of the hotend on the Y axis