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:
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.
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.
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
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
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
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
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.