Digital fabrication

Over the years I have spent time building competence in product making, bringing them alive from idea to some sort of shape.

DFM (designing for manufacturability) takes years to master, typically requiring many disciplines working together to accomplish Product goal.

Today, most people are familiar with 3d printing, there is a great amount of hype what 3d printing can do for anyone. The mere “printer” word provides some preconditioning to what users may expect. This is far from reality. From my experience, learning curve is steep and is worth sharing.

Few years ago, before the 3d printing fever took off, I started with pure CAM/CNC Milling, building a kit from such as this was an easy task.

And as software, I decided to avoid Windows Mach3 and go for LinuxCNC, worked great and extended it with a pendant to control it easily, to move jogging X, Y and Z axis.

CNC allowed me to create designs that at that time were “2.5D” such as this PIR sensor case or this BLDC spindle. The biggest hurdle was to translate designs into Gcode via a CAM software.

For a while I worked with Heekscad, was great but as a many open source projects had many quirks and issues (no maintenance/support), so decided to try alternative workflows.

FreeCAD, an open source 3D project that seems pretty close to Solidworks, had planned for a CAM plug in, so I decided to wait a bit. Worth to mention that Sketchup had few extensions that allowed it to generate toolpath code.

Other good 3D free option was Fusion 360 from Autodesk, although being tied to their cloud was not my preferred option. Fusion 360 comes with nice CAM extension plugins that makes this a decent option, tried once successfully (beware the up axis direction ! defaults to Y).

Meanwhile these years, grbl happened, in case you do not know, grbl is a little wonder, behind great projects such as ShapeOko, or Marlin, allows arduinos to control cartesian g-code driven machines in very efficient manner. Combine that with me being an arduino fan, I started designing CNC Driver shields for Arduino rather fast.

This was my first prototype, year and half later, Protoneer released something similar to what I posted in Oshpark, now they are on their v3, Go and get one ! (support original authors and avoid China clones, price difference is not that great).

The CNC was great, but soon my interest for 3d printing increased, so I ended up building a Prusa i3 rework, very good, simple and efficient design that I recommend, either as a kit or as a build ready to print system. 3d Printing allowed me to realise these kind of designs, but I moved away from direct manipulation tools, to a 3d compiler (OpenSCAD).

For a simple 3d printing workflow, I follow this simple process:

OpenSCAD -> STL -> Slic3r -> Prusa i3 (gcode) (via SD Card)

I do not use the printer with usb connected to host software such as Repetierhost, or Cura or Printrun, but I used Repetierhost few times to adjust the printer and tune some parameters.

3d printing is not as accessible as you hear in the news, although the market maturing, this is not as easy as it looks, specially if you are alone without any support except the internet and million posts scattered in forums. Be prepared to iterate the machine, regardless if you buy it as a kit or decide to source all parts.

Well, what was after 3d? Laser cutting

Once you get the hang on designing 3d objects, sometimes you find that some models are much better using flat parts, or stock material such as acrylic or aluminium, CNC was really fast, for example, this box, on CNC takes few minutes, in a 3d printer may take couple hours. In a laser cutter, even less than a CNC.

For 2d cutting, I reused the same workflow from 3d with a tweak:

OpenSCAD -> project(cut=true) -> DXF/SVG -> Inkscape -> Visicut

Why use OpenSCAD? Because is parametric and you can tweak with code instead of using snap guides or rulers in Inkscape (or Illustrator).

If your job is Engraving, logically the workflow is a bit different:

Bitmap -> Inkscape (to shape) -> SVG -> Visicut

Notice that in order to engrave, you have to assign Stroke style to a mapped power setting on the cutter. If you feel confident with code, you can directly code in LaserScript.

Selection of the fabrication process depends greatly on the design, material selection and build structure. Adding electronics and other parts on the mix, this is DFM.

That is what motivated me to build next machine, repurposing a K40, replacing the controller with an open source alternative. In my research I found 3 viable options: From which I selected LaOS, although I designed a drop in for Marlin-based system using Arduino Mega2560. The other a little pricier alternative is Smoothieboard.

In this quest for 2D cutting cartesian systems, I designed few for Laser diode (3W), and recreated in Openscad builds from existing projects.

After an iteration, I decided to simplify, removing band loops, and unnecessary parts, and to increase torque added couple of gears (in blue) this is how it looks now:

The red block is the laser diode with a square aluminium profile heatsink.

This one is an assembly I did on openscad of xCarve, originally from Inventables.

This one was minuscule, but fun!

At times is good to mix ready made profiles with 3d printed parts, such as the Mostly Printed CNC machine (MPCNC) asthis one.

The fastest approach to build a cartesian system is to take an existing one and give it new life, for example Roland Plotters from 1980’s are a charm. This project drifted a bit as I tried to use the HPGL command set directly from Inkscape, but that was a long shot. The schematic is a jewel for newbies on electronics.

Grbl is fantastic, now with even web based front ends such as Chillipeppr or Easel, who needs a controller host software?

Still, if you want a decent Gcode controller, you can use java (ouch) based one :Universal Gcode Sender, or a python one bCNC quite nice, but the latest addition is a node.js version, which seemed ok.

After completing the laser cutter, and using Visicut with Inkscape extension extensively, I am pretty satisfied with the outcome, to feel confident to build a larger and more powerful one (100w at least), for example Lasersaur.

Current project is a Lathe: a bit more complex as the parts are not so common as printers or cartesian systems, besides I am using a VFD for the motor driver, so can control torque/speed.

I got the lathe body off ebay, built by hand for Karlsruhe Uni in 1984, weights over 30kg and feels robust. For this one, I will have to stick to LinuxCNC which has support for turning.

The latest experiment was an Axidraw machine. This is like a plotter of the old days.

You may ask what do I create with these ? That is worth another post, Creative Parametric Coding and Objectification, this image may hint where I am heading to.