Monday, October 14, 2013

3DR “Simple” Delta Printer Firmware Settings

I’m going to take a brief pause from describing the design and construction of my new Delta printer. I have more I need to write up about my printer. Today, however, I’d like to focus on what values you’ll need to change in Configurtion.h for the Marlin firmware designed for a Delta printer.

It started yesterday when I managed to download the delta version of Marlin into my Printrboard, so I was able to test moving of the effector (the platform in the center). I don’t have a hotend of extruder installed yet, but I really wanted to see it moving. At first things didn’t go well. As it turned out, all my problems were lack of knowledge, and once I figured out what I’ve described below, it worked perfectly.

Setting up Repetier

My first step was to setup Repetier. This is actually very simple once you know what to set, but I stumbled across the right settings through trial-and-error:

Printer Settings

Here are the important settings:

  • Printer Type: Repetier uses Rostock as the printer type. This will turn your preview area into a cylinder
  • Home X and Y: Set both to 0, since the hot end will be above the center of the bed when homed (I had them set to Max at first, and only got motion in one direction)
  • Home Z: Set to Max, as the end stops are at the top of the printer
  • Printable Radius: The 3DR is designed for a 170mm diameter print bed, so I set the radius to half that, or 85mm. This may be a little optimistic, and I’ll reduce this once I find out the useable radius

Using Microswitch Endstops

RichRap modified the Marlin software for his 3DR, which uses Hall-effect sensors as end stops. I had to make two changes from his settings in order to get them to work correctly with the microswitches from the Printrbot Simple donor:

const bool X_ENDSTOPS_INVERTING = false;
const bool Y_ENDSTOPS_INVERTING = false;
const bool Z_ENDSTOPS_INVERTING = false;

These need to be false, so the end stops are triggered when you push on the switch. That was pretty clear. However, the next change wasn’t clear to me at first:


RichRap had this line commented out (which means he had // at the start of the line). So here’s what happened before I removed the // from the start of the line. When I clicked the home button X (so it would only move one stepper motor), the carriage moved up and hit the stop, and then the motor would keep pushing it for a few seconds before it would finally back off. Once I set this value, everything worked perfectly. It appears the end stop would work after several seconds without the pull-ups.

Delta Measurements

There are a set of values you’ll need to enter in order for your effector to move correctly. These values are all based on the geometry of your printer. The only documentation I could find were comments in the Marlin source code. This blog post is to document what I figured out so others won’t have to do it the hard way.

Diagonal Rod

The first is the length of one diagonal rod, measured from the screw hole to screw hole. I made this 200mm on my printer:

#define DELTA_DIAGONAL_ROD 200.0

Effector Offset

This is the distance from the center of the effector (which holds the hot end) to a line that goes through the two holes on one side. In the picture below, my first effector design has a value of 22.87mm (marked as dY), represented by the green almost horizontal line.

#define DELTA_EFFECTOR_OFFSET 22.87 // mm

Effector Offset 2

Smooth Rod Offset

This is the offset from the smooth rods to a plane that intersects the center (which needs to be parallel to the two smooth rods on either side of a tower). This plane is shown in the picture below with a green outline, and the distance is labeled Center Dist, and has a value of 133.54.

#define DELTA_SMOOTH_ROD_OFFSET 133.54 // mm

Smooth Rod Offset 2

Carriage Offset

This is the distance from the outside of the printer towards the center between the smooth rods and the rod ends. In the picture below, it’s the almost horizontal green line (labeled dY) that extends from the center of the smooth rod (not shown) to the center of the screw hole used to attach the diagonal rod to the carriage.

#define DELTA_CARRIAGE_OFFSET 16.5 // mm

Carriage Offset 2

And the Results

Most printers are not perfectly tuned, so either print the parts a little larger or a little smaller. That means you’ll need to adjust the DELTA_SMOOTH_ROD_OFFSET value up or down a little in order to compensate. When this value is not quite correct, you’ll find that the nozzle moves either up or down between the outside of the print bed and the center.

First adjust the nozzle to be the just above the print surface at the towers. Then if you find the nozzle has moved higher (farther from the print bed) when it’s at the center, increase DELTA_SMOOTH_ROD_OFFSET a little and try again. Likewise, if it pushes into the print bed, decrease the value a little and try again. I found I had to increase my number by about 1 mm to keep the nozzle the same distance between the outside and the center.

Here is a nice blog post: Calibrating a Delta 3D Printer.

Sunday, October 6, 2013

3DR “Simple” Delta Printer, Part II

In Part I, I introduced the derivative of RichRap’s 3DR printer that I’ve been working on. I’ve had some people at our work’s maker space ask me about various decisions I made in this design. Almost all my decisions are based on the idea of making this a grown-up Printrbot Simple. Here are some of the characteristics/parts is will share with the Printrbot Simple:

  • Use 8mm rods. Since the Simple has 12 LM8UU bearings, I can reuse the bearings from the Simple (the 3DR uses 6mm rods)
  • Use fishing line, just like the Simple, for motion control (except I’ll be using a different line)
  • No heated bed, just like the Simple
  • Use micro switches for end stops, just like the Simple (the 3DR uses Hall effect end stops)
  • Keep it small, like the Simple (and the 3DR). Although it will have a 170mm diameter bed, compared with the 100mm x 100mm bed on the Printrbot Simple
  • Allow printing all parts on a Printrbot Simple (more on this later)

Design Changes

After my last post, I discovered a few changes I needed to make. Here is the preliminary list, before I decided to allow printing the parts on a Printrbot Simple:

  • The parts were a little too large to be self-replicating. These parts would need to be printed on a 180mm bed, but the 3DR bed is 170mm. So I changed the design to be a little smaller, with a maximum dimension of 164mm
  • I discovered I didn’t have easy access two of the stepper motor screws. RichRap left an large opening for this purpose. I added small round holes (which you can below on the outside wall, near the extrusions)
  • Relocated the ribs stiffening the smooth rod sockets since they blocked hex key access to some of the stepper-motor screws
  • Removed the triangular “foot” in the center
  • Moved the stepper motor mount farther from the extrusions. I’d read reports of a very tight fit, and experienced it myself, so I moved the mount to provide a little more clearance
  • Added a chamfer to the holes in the motor mount on the side with the motor. I was having some extra material here from overhangs, and the chamfer eliminates the need to clean up the holes
  • Added side slots so I can feed wires into the sides of the extrusions in case I can’t fit all the wires through the middle of the extrusions
  • Added nut traps for the M4 nuts used to hold the base and top parts together

Here is the new design for the base:

New Base 2

And here is a view from the bottom:

New Base 2 Below

The “curve” where the parts meet is now less pronounced in order to keep the parts small enough to be self-replicating. This was all looking really nice, and I even printed out a test part.

Printing on a Printrbot Simple

While I really like the design above for it’s clean lines, the parts are too large to print on the Printrbot Simple’s 4” x 4” bed. The top and bottom parts have a maximum dimension of 6.5”. I thought about doing something like the “pay it forward” program available for the Kossel Mini. But then ProfessorBean on the RepRap forums gave me the idea of breaking up the larger parts into smaller parts. Hence was born a new iteration that can be printed on a 4” x 4” print bed, and thus a Printrbot Simple can entirely spawn this printer. How cool is that!

You can see I divided each of the previous base pieces further, so there are now a total of nine base piece, all held together with screws and nuts:

New Base 3

With all these parts, I wanted to make assembly and alignment easier. In the next photo you can see I’ve made several changes:

  • Added nut traps
  • Added bumps and dimples for self alignment


I really like the way the parts assemble without requiring fiddling to get them lined up well. After three evenings printing, I had a completed base:


A few days later I got the glass base plate and used RichRap’s bed clips to hold it in place:


It turns out I’d positions the holes for a 175mm diameter print bed, but he glass Borosilicate glass that I ordered was 170mm in diameter. I was going to either move the holes closer to the center, or make larger clips. And then I had another idea, which was to make spiral clips that would allow different sizes, and help center the build plate:


On the left you can see the bottom of the clip, which has a spiral that will push against the glass. Here is a photo showing the clips installed:


These clips are still not large enough, so I modified the clips after taking this photo. I’m currently printing out a new set of clips.

I also need to reprint the green part under the clip. My original version didn’t have a nut trap, whereas my current design does. Having a nut trap will make it much easier to tighten or loosen the screw from above, without needing to reach underneath to hold the nut.