I'm running a modified Prusa i3 using two e3D v6s on a Bowden setup, originally this printer was built from a reprapguru kit found here. Any and all gcode is made using Slicer or Cura, and modified using a text editor so the fan runs constantly.
- 2 x extruder mounts
- 2 x x-carriage mount
The x-carriage mount fits the standard Prusa i3 x-carriage, like the one modeled here (So no need to install a new x-carriage). I'm also gonna suggest that you print two of the x-carriage mounts, in case one breaks.
- Additional Extruder motor (I repurposed the ones from here, and you can use the direct drive system if you'd like, although I had a number of issues with it)
- 1 x RRD fan extender
- 2 x PTFE fittings
- 2 x e3d v6s
Please note that while these parts satisfy the minimum requirement, redundancies are recommended. The e3D thermistors are sensitive, and can crack very easily. Also note that you'll want to heat the hot ends up before removing the heat breaks (which you'll have to do as you're troubleshooting).
In-Progress
The RRD extender fits on the Aux 1 pins, where you can follow the below diagram for wiring.
This frees the D9 pin (where the fan was connected) for use by the second extruder heater cartridge. As with the first extruder, polarity is not important. The extruder motor connects to the E1 pins (above where the first extruder is connected). Then you'll want to connect the second extruders thermistor to space T2. This can all be seen in the below diagram.
Other than the wiring shown here, the ramps board should be wired in the exact same way as for the single extruder setup.
My marlin files are included in this repository, here. Note that the second fan doesn't work (I believe it's a problem with my RRD board), which you can use this code to test.
void setup() {
pinMode(11, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
digitalWrite(11, HIGH);
digitalWrite(6, LOW);
delay(5000);
digitalWrite(11, LOW);
digitalWrite(6, HIGH);
delay(5000);
}
You'll want to change your motherboard settings found in configuration.h
#ifndef MOTHERBOARD
#define MOTHERBOARD 34
#endif
#define EXTRUDERS 2
#define EXTRUDER_OFFSET_X {0.0, -8.5} // (in mm) for each extruder, offset of the hotend on the X axis
#define EXTRUDER_OFFSET_Y {0.0, 0.0} // (in mm) for each extruder, offset of the hotend on the Y axis
Likewise, you'll need to define the number of extruders in Configuration_adv.h
//===========================================================================
//=============================Mechanical Settings===========================
//===========================================================================
// This defines the number of extruders
#define EXTRUDERS 2
Since the fan is no longer defined on D9, in pins.h you'll need to change the section,
#if MOTHERBOARD == 33 || MOTHERBOARD == 34
...
#endif// MOTHERBOARD == 33 || MOTHERBOARD == 34
to the following,
#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
#define X_MIN_PIN 3
#define X_MAX_PIN 2 //2 //Max endstops default to disabled "-1", set to commented value to enable.
#define Y_STEP_PIN 60
#define Y_DIR_PIN 61
#define Y_ENABLE_PIN 56
#define Y_MIN_PIN 14
#define Y_MAX_PIN 15 //15
#define Z_STEP_PIN 46
#define Z_DIR_PIN 48
#define Z_ENABLE_PIN 62
#define Z_MIN_PIN 18
#define Z_MAX_PIN 19
#define Z2_STEP_PIN 36
#define Z2_DIR_PIN 34
#define Z2_ENABLE_PIN 30
#define E0_STEP_PIN 26
#define E0_DIR_PIN 28
#define E0_ENABLE_PIN 24
#define E1_STEP_PIN 36
#define E1_DIR_PIN 34
#define E1_ENABLE_PIN 30
#define SDPOWER -1
#define SDSS 53
#define LED_PIN 13
#if MOTHERBOARD == 33
#define FAN_PIN 9 // (Sprinter config)
#else
#define FAN_PIN 6 // IO pin. Buffer needed
#endif
#define PS_ON_PIN 12
#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
#define KILL_PIN 41
#else
#define KILL_PIN -1
#endif
#define HEATER_0_PIN 10 // EXTRUDER 1
#if MOTHERBOARD == 33
#define HEATER_1_PIN -1
#else
#define HEATER_1_PIN 9 // EXTRUDER 2 (FAN On Sprinter)
#endif
#define HEATER_2_PIN -1
#define TEMP_0_PIN 13 // ANALOG NUMBERING
#define TEMP_1_PIN 15 // ANALOG NUMBERING
#define TEMP_2_PIN -1 // ANALOG NUMBERING
#define HEATER_BED_PIN 8 // BED
#define TEMP_BED_PIN 14 // ANALOG NUMBERING
#ifdef ULTRA_LCD
#ifdef NEWPANEL
//encoder rotation values
#define encrot0 0
#define encrot1 2
#define encrot2 3
#define encrot3 1
#define BLEN_A 0
#define BLEN_B 1
#define BLEN_C 2
#define LCD_PINS_RS 16
#define LCD_PINS_ENABLE 17
#define LCD_PINS_D4 23
#define LCD_PINS_D5 25
#define LCD_PINS_D6 27
#define LCD_PINS_D7 29
#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER
#define BEEPER 37
#define BTN_EN1 31
#define BTN_EN2 33
#define BTN_ENC 35
#define SDCARDDETECT 49
#else
//arduino pin which triggers an piezzo beeper
#define BEEPER 33 // Beeper on AUX-4
//buttons are directly attached using AUX-2
#define BTN_EN1 37
#define BTN_EN2 35
#define BTN_ENC 31 //the click
#define SDCARDDETECT -1 // Ramps does not use this port
#endif
#else //old style panel with shift register
//arduino pin witch triggers an piezzo beeper
#define BEEPER 33 No Beeper added
//buttons are attached to a shift register
// Not wired this yet
//#define SHIFT_CLK 38
//#define SHIFT_LD 42
//#define SHIFT_OUT 40
//#define SHIFT_EN 17
#define LCD_PINS_RS 16
#define LCD_PINS_ENABLE 17
#define LCD_PINS_D4 23
#define LCD_PINS_D5 25
#define LCD_PINS_D6 27
#define LCD_PINS_D7 29
//encoder rotation values
#define encrot0 0
#define encrot1 2
#define encrot2 3
#define encrot3 1
//bits in the shift register that carry the buttons for:
// left up center down right red
#define BL_LE 7
#define BL_UP 6
#define BL_MI 5
#define BL_DW 4
#define BL_RI 3
#define BL_ST 2
#define BLEN_B 1
#define BLEN_A 0
#endif
#endif //ULTRA_LCD
#else // RAMPS_V_1_1 or RAMPS_V_1_2 as default (MOTHERBOARD == 3)
#define X_STEP_PIN 26
#define X_DIR_PIN 28
#define X_ENABLE_PIN 24
#define X_MIN_PIN 3
#define X_MAX_PIN -1 //2
#define Y_STEP_PIN 38
#define Y_DIR_PIN 40
#define Y_ENABLE_PIN 36
#define Y_MIN_PIN 16
#define Y_MAX_PIN -1 //17
#define Z_STEP_PIN 44
#define Z_DIR_PIN 46
#define Z_ENABLE_PIN 42
#define Z_MIN_PIN 18
#define Z_MAX_PIN -1 //19
#define E0_STEP_PIN 32
#define E0_DIR_PIN 34
#define E0_ENABLE_PIN 30
#define SDPOWER 48
#define SDSS 53
#define LED_PIN 13
#define PS_ON_PIN -1
#define KILL_PIN -1
#ifdef RAMPS_V_1_0 // RAMPS_V_1_0
#define HEATER_0_PIN 12 // RAMPS 1.0
#define HEATER_BED_PIN -1 // RAMPS 1.0
#define FAN_PIN 11 // RAMPS 1.0
#else // RAMPS_V_1_1 or RAMPS_V_1_2
#define HEATER_0_PIN 10 // RAMPS 1.1
#define HEATER_BED_PIN 8 // RAMPS 1.1
#define FAN_PIN 9 // RAMPS 1.1
#endif
#define HEATER_1_PIN -1
#define HEATER_2_PIN -1
#define TEMP_0_PIN 2 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
#define TEMP_1_PIN -1
#define TEMP_2_PIN -1
#define TEMP_BED_PIN 1 // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!!
#endif// MOTHERBOARD == 33 || MOTHERBOARD == 34
Using Slicer or Cura, adjust your retraction distance to be as short as possible (1mm or so). Also make sure to run the fan at all times. You can do this by changing any M107 commands in your gcode to M106.
Before changing your unit steps in configuration.h, you should test to see if your extruders are working, and try a test using only one extruder.
If underextruding, or the motor skips, or any problems with feeding; go to your RAMPS Board and adjust the stepper drivers for the extruders. By turning the screws you increase the total current for the extruder motors, this is necessary when upgrading from direct drive as the filament has a longer distance to travel.
If this fails, attempt changing heat settings (I've only tested PLA, and I'm running around 190-195C). If both of these steps fail, move on to the next step.
It's also very likely you'll have to change your extruder steps per unit (no need to define for both extruders, defaults to both).
#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,130} // steps per unit (x,y,z,e)
As part of a research project, several students and I have been working with the OpenBCI Ultracortex Mark IV EEG headset. The headset frame is entirely 3D printed, but can be problematic due to the shape. I've used Blender to cut the medium headset into parts, which should aid printing on smaller machines. The use of supports is necessary with any of these headset files, and the overall headset will need to be glued together. For more information on this project, our project code can be found in this repository.