3D printer progress – assembly and test

At this point the frame is largely assembled. The carriages are mounted, the heated bed is installed and things actually move (at least manually).

I used a MK2A 300x300mmaluminum heatbed and had to move the motor motor and leadscrew mounts. The motors need to move out from the back as well. This is a good thing as otherwise the motor move would interfere with the 3×3 triangles. Flipping them over fixes that issue. However the smaller top 3×1 brackets do need to get trimmed for clearance. This was a quick trip to the band saw. .

The first piece to get moving is the bed elevation. The critical part of the motor alignment is at the bottom end. Need to get the motors under the drive screws. Sight along the frame to see that the screws are parallel to the legs in both directions and then tighten them down. The safety stops in the firmware need to be over-ridden as normally you can’t move the  axes to a negative position. In this case, negative is UP . So in Configuration.h make the changes as shown below to get the over-ride for testing and the homing directions:

// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1 // left
#define Y_HOME_DIR 1 // rear
#define Z_HOME_DIR -1 //top

You need to comment out the block below. It prevents the use of the max direction endstops. It took a while to find as I was troubleshooting why X&Z would home nicely but Y would not do any homing movement at all.

// Disable max endstops for compatibility with endstop checking routine
//#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)

#define min_software_endstops false // If true, axis won’t move to coordinates less than HOME_POS. — allow for testing
#define max_software_endstops false // If true, axis won’t move to coordinates greater than the defined lengths below.

This will allow moving the bed upwards under manual control.

I also made the initial settings for the stepper calibration. I am using 32 step microstepping (rather than the more typical 16), 8mm pitch threaded rod and a Micron EME cobra extruder. So the step calibration at this point looks like:

#define DEFAULT_AXIS_STEPS_PER_UNIT   {200,200,812,1168*2} // 32 microstep 16 tooth gears, 8mm acme rod & micron extruder

Belt installation was straightforward, but make sure to place a screwdriver blade behind the nuts for the clamp bars before inserting the screws. It is far to easy to push the nuts back and have them fall out as you attempt to clamp the belt to the carriage.

Currently all 3 axes are moving, and homing. Calibration still needs to be checked.

I was also configuring the temperature sensors to get the thermistor for the heated bed to work and get ready for print head testing. I am also running a thermocouple for the print head. I want to run thermocouples for the print head to use high temp plastics such as Nylon. The low output signal from a thermocouple requires an additional amplifier or special A to D convertor.  I had purchased the Max6675 thermocouple digital adapter. However, it turns out it is not compatible with having a 128×64 display!!! There are shared conflicting pins. NUTS!. Now I have to order some AD597 adapter analog boards (and wait for them to come form China, as I could not find any stocked in the US).

When I started the project I downloaded the Marlin software directly. I would have been better off starting with the package on the d-bot page (or at least using the configuration.h file). It was in a line by line comparison that I found the Y axis homing culprit. http://www.thingiverse.com/thing:1001065/#files   and select d_bot_marlin.zip

D-Bot 3D printer frame assembly

The printer frame is built out of V-slot linear rail http://openbuildspartstore.com/v-slot-linear-rail/. This is similar to the 80/20 and Bosch rails I have used on the CNC router but with one crucial difference: the slots are V shaped a the top. This allows rollers to run in the grooves to provide the motion without having to add linear rails like I used on the CNC router. This is far lower cost, but also lower precision. However, the test prints I am seeing from a friends unit look great.

The precision of the cuts is critical to rigidity and squareness of the printer. You should use a non-ferrous metal blade  in either a chop saw or radial arm saw. I use a Bosch PRO1080NF 10-Inch 80 Tooth TCG (triple chip grind). This has served me well for several years.  When using the radial arm saw as I did be careful to prevent over-feeding. The stop system on my saw makes for nice repeatable cuts.

Once cut, the ends of a number of the rails must be tapped for M5 screws. The extrusions already have proper sized holes but this is still tedious if using a regular plug tap. This is is where a “gun” tap or “spiral point” tap which is designed for through hole power tapping comes in very handy. I started using these for the 100’s of tapped holes on the CNC router. I used plenty of cutting fluid and a hand drill with the tap chucked lightly to tap the holes. Practice first and have some spare taps on hand prior to doing this on the v-rail. Snapped taps are darn near impossible to remove from aluminum.

3D printer electronics initial setup and test

For the D-Bot 3D printer http://www.thingiverse.com/thing:1001065, I am using a Rumba controller with DVR8825 stepper drivers. The display is a Full Graphic Smart controller (128×64). I ordered these from Amazon.

The boards were received with NO instructions or pin out labels to get the ribbon cables connected correctly.  If the display is flashing and beeping on power up it is in one of the several wrong connector orientations that are possible (and I tried several).  Connect them up like this:

You must load the firmware for the board which involves:

  • Setting up the Arduino IDE
  • Downloading the Marlin source code
  • Downloading the driver for the display and installing it as a library
  • Downloading and installing the USB port driver for the board

Next the Marlin source must be configured for the board and setup. Much of this requires removing the double backslash // that comments out particular lines in the header files.


Find the Rumba in the list and write down the exact # define value


Rumba config

// The following define selects which electronics board you have.
// Please choose the name from boards.h that matches your setup

Display config

// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB)
// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib

CoreXY config

// Uncomment the following line to enable CoreXY kinematics
#define COREXY

Disable the extruder drive safety

In order to make the extruder drive without the temperature control hooked up, you need to temporarily comment out the safety. Remember to remove the comment slashes later when you are ready to run filament through it.

//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
//can be software-disabled for whatever purposes by


Dual Z config

remove slashes in front of:



//Dual Z config  insert in the Rumba pins section:

//to use Z_DUAL_STEPPER_DRIVER in Marlin
#define Z2_STEP_PIN 26
#define Z2_DIR_PIN 25
#define Z2_ENABLE_PIN

The second Z stepper is plugged into what is normally the E1 (second) extruder driver slot.

Compile and download the firmware. Some sources recommend moving the power jumper to USB from standalone if you are having difficulty with downloading.

When downloading you will see the yellow leds on the rumba board blinking rapidly for about 15-20 sec . Then you should see the display show the Rumba Ready screen.

Stepper driver setup

Set the dip switches under each motor driver for 1/32 microstepping. This is all on (towards the middle of the board).

Insert the stepper drivers with the adjustment pots towards the connectors (and the heat sinks away). Like this. You can see the dipswitch for the 6th driver slot on the right. :

Now calibrate the current for the stepper drivers BEFORE plugging them in to avoid overheating. See: https://www.pololu.com/product/2133 for great instructions.

Now power off and plug in the steppers. NEVER plug or unplug the steppers while the power is applied.

Restart and test the steppers.

Press the rotary switch and then select the Prepare menu. Now scroll to the bottom and select Move Axis menu. Now you can select a step amount (e.g. 1mm) and then select the  axis to move.

The Z axis motors should move together in the same direction. The other 2 will move for either the X or Y (opposite or together respectively).

Now I have all 5 stepper motors running at will and the control electronics basically working. The electronics are ready to mate up to the mechanical pieces.




New 3D printer project

I have not written much about 3D printing. The CNC router had a print head added at the end of the year. This was not what I would call a great success. Mounting the print head assembly, a Micron EME, was fairly easy, but I also had to add the print nozzle temperature controller, which had to be close to the head as I used a thermocouple for temp sensing due to wanting to use high temperature filaments. I am using Mach4 for the CNC router controller. It has NO 3D specific functions built in despite a stock 3D printing profile. So there is no temperature control for the print head or print bed provided. Both of which are are more important than I would have guessed.

The print head extruder stepper is set up as the A axis. I have the nozzle temperature externally manually controlled as required for each type of filament. Currently I am running PETG from eSun. The print bed is a sheet of glass (cutting board from amazon) with blue painter’s tape to aid adhesion. The CNC router does not have a heated bed, but I can aim a heat gun with diffuser under the raised glass build plate to have a sort of heated bed. The bed needs to be in the vicinity of 80 degrees C to avoid the parts warping and pulling away from the bed.   The heat does make a HUGE difference when trying to print anything over about 1-2″ across.

The printing required considerable tuning and testing of the parameters. I am using the open source program Slic3r to do the slicing to prepare for printing. It took about 20 test objects to get things reasonably dialed in from scratch

3D print underway.

Finished product prior to trimming and clean up. This was at 0.35mm layer height.