3D printer Improvements – Bed leveling and Thermocouple Amp

3 point bed leveling was needed. I really should have done this from the beginning. 4 point is way too hard to do and results in warped plates. 3 point gives nice control and no warping problems. The right side of the heated bed has the single screw.

I now have it set up with 3 “glass cutting board” build plates. One is plain glass for PLA, a second has blue painters tape for PETG, a third has a layer of PEI attached for other filament types.  The cheap glass cutting boards are working out great for build plates:  Premium Tempered Glass Cutting Board Bundle 4 Pack – 11.75″ x 15.75″
by Clever Chef Link: http://a.co/goO8N7c

Next I tackled switching over to the thermocouple temperature sensor for the print head. The amplifiers finally came from China.

The thermocouples have a major advantage over thermistors for high temperature sensing as they can go to much higher temperatures. These will be needed for printing Nylon, Polycarbonate and other materials. The amplifier is very simple see: http://reprap.org/wiki/ExtThermoCouple_1.0

What is not mentioned anywhere is that when you configure for the thermocouple amp for the Rumba board you must connect it to a different input pin! I had to dig through the .h header files and then the schematic to finally figure this out. Otherwise the system was saying hte temp was 398 degrees C at ambient air temp due to the open circuit. In the photo below, the lonely yellow wire is the output from the thermocouple amp. 

All of the other temperature inputs are on the left edge of the board, neatly arranged.

After I had it connected and reading the correct ambient temp, about 22C, it was time to run some tests to tune the heater control circuit. The heater control is done by a PID control loop. Most of my control loop theory and Laplace transforms are long forgotten. So I decided to use the PD auto tuning of the Marlin firmware.  There were a few initial runs, but now I need to get serious. Here is one of the first attempts at running with the thermocouple. The output is very noisy and the temperature control oscillates will not settle down

The results when running the auto calibration were not great. Part of the problem was excessive noise on the temperature sensor lines. I had to move the amplifier up near the print head to make it be usable. There is still more noise on the temperature feedback than I would like, but it is running with reasonable stability.  I ended up using the recommendation for the PID settings form Micron EME that makes the print head I am using.  Here is a print head heat plot made while printing a cover for the enclosure for the Rumba controller board that I am using.

I am now printing PETG with some reliability, but I still have some problems with the filament stripping and jamming at the drive gear. One other problem was the PETG filament had absorbed moisture over the last month, leading to lots of tiny bubbles in the extrusion. I “baked” the  filament for 24 hours at 100 degrees (bread proof setting on my oven) and this cured most of the bubbles by driving off the moisture. The filament will now be stored in a plastic box with silica gel to absorb the moisture.

Here is a shot of the top cover of the Rumba board case being printed.  Teal says the printer sounds like an old school video game while doing the fan openings.


Additional links:


3D Printing parts for the Printer

At this point the printer isl making more parts for itself. Teal (my wife) compared it to Frankenstein adding his own parts after he had an arm attached.

One of the first part sets was to make a case and mount for the display. The case turned out quite well, but the design of the bracket to mount it to the frame was unusable. So I will be searching for another or designing one myself.

The advantages of being able to walk away and let the printer just run and return to a safe state are huge. With the print head on the CNC router, I had to keep checking on the progress and shut it down at the end as the software could not control the print head heater . Now not only is it running and shutting down properly I get messages on my phone confirming the status. With Repetier host https://www.repetier.com/, you can add an app to your phone, Repetier Informer, and get notifications of start, stop, faults and progress (among others). So today as I was again multitasking,getting the spring gardening done and wandering about the yard, I was getting notifications so I could check up on the printing status while finishing the placement of 20 yards of wood chips and propagating many perennials. This was to gain more flower beds with perennial plantings and reduce lawn area and Buckthorn thickets. I was doing my Earth Day yard work.

Today the printer was making cable chain. I am not sure if this a good trade-off of time vs cost. Cable chain is used to make a nice flexible assembly to hold your wires / cables for moving devices. For the CNC router  I bought the cable chain from an eBay supplier in China. For the 3D printer, the printer itself is making the cable chain links but I have to do the part clean-up and fitting. The printing is not yet tuned in well enough to avoid a lot of hand work on these parts.

Spool holder to hold the filament spool while printing.: http://www.thingiverse.com/thing:1959643/#files.  This replaces the ugly aluminum rod seen earlier in the photos and removes obstructions. This is a very nice and simple, functionally designed part. “Frankenstein printer” did well on making this appendage.

Cable chain. This supports the wires going to print head in a neater manner than the spiral wrap. I am using the part designs from: http://www.thingiverse.com/thing:611593/#files . I wanted cable chain that would be open on top so I do not have to re-run the wires in the frame with the need to then disconnect re-connect everything for the print head. We will see how this turns out. The notches look like they will need some fiting for the snake shaped cable retainers (cable ties bay do instead). Cable chain parts are slow to print . A set of 16 links takes about 5 hours. Then there is some tedious hand work to clean up the parts and make them fit together well. I think 2 sets of 16 links, plus the end parts should suffice for the print head cable chain. Here is the first set of links fitted together, roughly straight and as a U.

3D Printer is Running!

The printer is now running It is roughly assembled (as you can see) and now it is time for fine tuning and making parts for itself. I love it when a tool is at the state where it can help finish its own build or rebuild making parts. Cases for the boards, cable retainers, cable covers, cable chains, proper spool support are all on the short list.

There has been a bit of additional grey hair added getting here:

The Rambo control board will not connect at all via USB3. It must be a USB 2 connection . This is the case for both the Arduino downloads and Repetier control software. I did not pay attention when I originally programmed the board and then subsequently rearranged the USB ports…

Along the way the first Rambo board stopped communicating via USB. Many tries to get this going, re-download drivers, try to re-flash the USB chip but to no avail. I ended up returning the first one (still barely within the 30 day amazon return period) and got another. So far so good. I was able to get it programmed and it is running well so far.

As mentioned previously the thermocouple adapter wont work with the 12864 display. So I have jammed a thermistor on top of the heater block as I don’t want to pull out the thermocouple temporarily and risk damaging it and the thermistor is working OK for now. It is still off by about 15 degrees, too hot, and the temperature control overshoots. However the adapters are on their way.

The new nozzles form Micron finally came. It takes almost 4 weeks from Israel with normal shipping. I am currently using the high flow 0.5mm nozzle.

Fan for the print head heater must be directly connected to 12v. Not fan 0 or 1 . It needs to be always on. Not doing this lead to new and novel ways to jam the filament.

It pays to double check the tooth count on the gears. The first test cube was well undersized and over-extruded. The steps per mm settings are now corrected.

12v power supply was just not enough to get the print head up to temp. I needed to switch to 24v.

Still need to find a better way to adhere the cork to the bottom of the heated print bed.

The plain glass rectangular cutting boards form Amazon are working well as build plates. So far printing the PLA to the clean glass with no additives. Clean with denatured alcohol.  On the old setup I was getting to decent adhesion with blue tape wiped with lacquer thinner.

Some of the issues were self inflicted as I was time splitting between house / yard projects, this and several other things. At times I hit my multi-tasking limits.

So now I am adjusting settings and printing parts. First successful test cube is below.

Snot string was due to still having the print head too hot due to poor contact with the thermistor.

Finished test cube. Size is now dead on.  This was with 0.35mm layer height, 60mm/s internal speed 30mm/s perimeters.

Now starting printer parts. Here is the back of the case for the display being printed.


The Repetier control software is great. It is much better than truing to control the printer directly via the twisty-turny knob on the  display.  Overall, I am rally impressed with the open source software (Marlin and Repetier) of this project.

Completed back panel for the display:


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 hte 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 de 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.