A Rostock 3D printer.

Many thanks for inspiration and concrete assistance from Alex, Ian, Andy at Your Laser, and the Rusty Squids

At work on its first test print:

This is really just a collection of documentation and handy links I found when I was assembling the thing, not a complete writeup. But I hope it's helpful.

Reprapwiki is the place to start for links and instructions.
Downloadable STL files for almost all the parts are here on Thingiverse and the OpenSCAD source files (if you need them) are on GitHub.
I also used this hotend mount/bowden clamp (though I should have printed it with 4mm holes not 3mm) and this hotend mount plate from Thingiverse.

The top & bottom plates were cut from 9mm MDF by Andy at Your Laser, from these DXFs & openSCAD files. The rectangles for the sides were hand-cut, also from 9mm MDF.

My bill of materials (along with some suggestions from Alex) is here.

For filament, I bought PLA from Faberdashery, who come highly recommended.

Assembly is mostly self-evident with the aid of the RepRapWiki photos. I had to drill out all the 3mm holes to get bolt clearance, and I found I need to put a washer under the heads of the universal-joint bolts to stop the joint binding. I needed to use a ball-ended allen driver to fit the UJ bolts to the carriage and platform

Note that the upper rod brackets are handed - the microswitch mount goes on the bottom - and the carriages go flat-side-up.

I found I needed to put an m8 spring washer behind the flanged bearing to stop the flange rubbing on the upper rod bracket.

If you have closed-loop belts like mine, you will adjust the belt tension by pushing the upper rod brackets up a bit till the belt goes tight.Once you've set the machine height up in Marlin and adjusted the endstops, you won't ever want to move the rod brackets, because that would change the effective machine height and require a complete recalibration, so get the belt tension right before you start calibrating.

The bowden clamp is intended to be tightened with cable ties, but I found that did not hold the tube when I started printing. I put a jubilee clip on it. I also found it helpful to put a bit of tape round the bowden tube next to the clamp as a marker, so I could see if the tube was starting to come out of the clamp.

I used a RepRapPro Melzi board, and I found their documentation very helpful for setting up the motor currents and testing the wiring before powerup

For firmware, I used the Modified Marlin from github which is an Arduino project. Plus, because the Melzi is a Sanguinololu, I had to add sanguinololu support to the Arduino tools - copy ArduinoAddons/Arduino_x.x.x/sanguino from this .zip to your Arduino IDE/hardware/Sanguino directory. Then restart the Arduino IDE and go to Tools / Board, and select "Sanguino W/ATmega284p at 16 MHz". Without this Marlin won't build.

Getting the Marlin firmware to install on the Melzi board ran into a couple of hiccups. I need to install a new USB serial driver before the Melzi would appear as a serial port. And I needed to use the reset trick to get upload to work - after you start a compile & upload, hold in the reset button on the Melzi until you see 'Binary sketch size..' in the Arduini IDE, then release the button. That's required because these boards are not set to auto-reset, and that's because you don't want them resetting during a print.

Once the firmware is compiling & loading, the printer dimensions & so on need to be configured in the Marlin header files, following the calibration instructions

I ended up with
X,Y,Z - 80 step/mm via this calculator giving me
#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 80, 660}

My rods measured 247.5, not 250, between the centers of the pivot holes, presumably because of ABS shrinkage. giving me
#define DELTA_DIAGONAL_ROD 247.5

My thermistors are both EPCOS 100k (B57560G104F) from Farnell.
I used
#define TEMP_SENSOR_0 6
to set it up for my extruder & bed thermistors.

When that was done, I installed the Printrun / Pronterface Windows binaries (which also installed Slic3r). Pronterface connected easily to the printer (at 25000 baud) and let me jog it up & down.Note that the x/y/z axes in Printerface are the cartesian axes, not the three delta axes!. At this point, the 'home' button in Pronterface should actually send the three cariages to the top and home them with the microswitches.

Next, I set the overall machine height. I did up the endstop screws up completely, then unscrewed each one exactly 3 turns.
Then homed the printer in Printerface, and measure the exact extruder-bed distance. My value was 425.
I closed Pronterface, opened the ArduinoIDE, opened the Marlin project, and set that as the value of MANUAL_Z_HOME_POS in Configuration.h.

That was also a good time to calibrate the extruder - 660 steps/mm by measurement (using Pronterface to run the extruder, and measuring the ratio between how much filament actually extruded and how much Pronterface thought it was extruding), giving me
#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 80, 660}

Then rebuilt and uploaded the firmware, and closed the Arduino IDE. Final calibration of the height is done by tinkering with the endstop screws once you see how the first layer of print comes out.


In Pronterface, I went to Menu/Settings/Options and set Width 200 Depth 200 Height 420 X offset -100 Y offset -100 Z offset 0 X home pos 100 Y home pos 100 Z home pos 0

Although Pronterface can run Slic3r for you, my parts always ended up centered on one corner of the bed when I did that. My workaround is to run Slic3r by hand, and export Gcode from that, which I load into Pronterface.

Slic3r has a nice configuration wizard on first run. I went through that, and everything basically worked. Further refinement is to be had by calibrating Slic3r's extrusion width. And when that's all done, here's more calibration to do. But my machine was printing happily without doing any of that.

Things to do differently:

It is a bit rattly. The extruder tip can be moved by perhaps 1mm when pushed by hand from side to side. I'm amazed it prints as well as it does, but I think less rattle would mean that zig-zag infill worked better. There is play in the universal joints, and a bit of movement (about 0.050 mm) between the LM8UUs and the 8mm rods. The rods are the right size - they measure 7.98mm or so - so I suspect my LM8UUs might be a bit too cheap. I might swap them for LM8LUU, which are longer & so will rock less.

As for the universal joints, I think the best solution would be to replace them with model-shop ball joints attached to carbon fiber arms. Ideally, that means using different carriage and platform prints, perhaps like this design

My location for the extruder & bowden cable means that it can catch on the carriage as the carriage goes up. I've fixed that by wrapping foam round the bowden tube, which makes it too blunt to catch, but a different placement might be a better solution.

Home | Artefacts| Robots