We Can Now 3D Print Slinkys

A mark of a good 3D print — and a good 3D printer — is interlayer adhesion. If the layers of a 3D print are too far apart, you get a weak print that doesn’t look good. This print has no interlayer adhesion. It’s a 3D printed Slinky, the kind that rolls down stairs, alone or in pairs, and makes a slinkity sound. Conventional wisdom says you can’t print a Slinky, but that didn’t stop [mpclauser] from trying and succeeding.

This Slinky model was made using a few lines of JavaScript that output a Gcode file. There is no .STL file, and you can’t edit this CNC Slinky in any CAD tools. This is also exceptionally weird Gcode. According to [mpclauser], the printer, ‘zigzags’ between an inner and outer radius while constantly increasing the height. This is the toolpath you would expect from a 3D printed Slinky, but it also means the usual Gcode viewers throw a fit when trying to figure out how to display this thing.

All the code to generate your own 3D printable Slinky Gcode file is up on [mpclauser]’s Google Drive. The only way to see this print in action is to download the Gcode file and print it out. Get to it.

DIY 3D Slicer is a Dynamo

We all know that hacker that won’t use a regular compiler. If he’s not using assembly language, he uses a compiler he wrote. If you don’t know him, maybe it is you! If you really don’t know one, then meet these two. [Nathan Fuller] and [Andy Baldwin] want to encourage you to write your own 3D slicer.

Their post is very detailed and uses Autodesk Dynamo as a graphical programming language. However, the details aren’t really specific to Dynamo. It is like a compiler. You sort of know what it must be doing, but until you’ve seen one taken apart, there are a lot of subtleties you probably wouldn’t think of right away if you were building one from scratch.

Continue reading “DIY 3D Slicer is a Dynamo”

Zeroing CNC Mills With OpenCV

For [Jay] and [Ricardo]’s final project for [Dr. Bruce Land]’s ECE4760 course at Cornell, they tackled a problem that is the bane of all machinists. Their project finds the XY zero of a part in a CNC machine using computer vision, vastly reducing the time it take to set up a workpiece and giving us yet another reason to water down the phrase ‘Internet of Things’ by calling this the Internet of CNC Machines.

For the hardware, [Jay] and [Ricardo] used a PIC32 to interface with an Arducam module, a WiFi module, and an inductive sensor for measuring the distance to the workpiece. All of this was brought together on a PCB specifically designed to be single-sided (smart!), and tucked away in an enclosure that can be easily attached to the spindle of a CNC mill. This contraption looks down on a workpiece and uses OpenCV to find the center of a hole in a fixture. When the center is found, the mill is zeroed on its XY axis.

The software is a bit simpler than a device that has OpenCV processing running on a microcontroller. Detecting the center of the bore, for instance, happens on a laptop running a few Python scripts. The mill attachment communicates with the laptop over WiFi, and sends a few images of the downward-facing camera over to the laptop. From there, the laptop detects the center of the bore in the fixture plate and generates some G-code to send over to the mill.

While the device works remarkably well, and is able to center the mill fairly quickly and without a lot of user intervention, there were a few problems. The camera is not perfectly aligned with the axis of the spindle, making the math harder than it should be. Also, the enclosure isn’t rated for being an environment where coolant is sprayed everywhere. Those are small quibbles, and these problems could be fixed simply by designing and printing another enclosure. The device works, though, and really cuts down on the time it takes to zero out a mill.

You can check out the video description of the build below.

Continue reading “Zeroing CNC Mills With OpenCV”

3D Printering: Non-Planar Layer FDM

Non-planar layer Fused Deposition Modeling (FDM) is any form of fused deposition modeling where the 3D printed layers aren’t flat or of uniform thickness. For example, if you’re using mesh bed leveling on your 3D printer, you are already using non-planar layer FDM. But why stop at compensating for curved build plates? Non-planar layer FDM has more applications and there are quite a few projects out there exploring the possibilities. In this article, we are going to have a look at what the trick yields for us.

Continue reading “3D Printering: Non-Planar Layer FDM”

‘LinuxCNC-Features’ is the Garage-Fab’s Missing CAM Tool

It takes a long toolchain to take the garage-machinist-to-be through all the hoops needed to start cranking out parts. From the choice of CAD software to the CAM tools that turn 3D models into gcode, to the gcode interpretters that chew up this source code and spit out step and direction pulses to turn the cranks of a cnc mill, there’s a multitude of open-and-closed source tools to choose from and even an opportunity to develop some of our own. That’s exactly what [Nick] and the folks over on the cnc-club forums did; they’ve written their own CAM tool that enables the end user to design a procedure of cuts and toolpaths that can export to gcode compatible with LinuxCNC.

Their tool, dubbed “LinuxCNC-features”, embeds a LinuxCNC-compatible graphical gcode programming interface directly into the LinuxCNC native user interface. Creating a part is a matter of defining a list of sequential cuts along programmable toolpaths. These sequential cuts are treatments like drilled holes, square pockets, bolt holes, and lines. The native embedding enables the machinist to preview each of the 3D toolpaths in LinuxCNC’s live view, giving him-or-her a quick-and-dirty check to make sure that their gcode performs as expected before running it. [Nick] has a couple of videos to get you up-and running on either your mill or lathe.

LinuxCNC-features has been out in the wild for almost two years now, but if you’re looking to get started cranking out parts in the garage, look no further for a CAM tool that can quickly generate gcode for simple projects. In case you’re not familiar with LinuxCNC, it’s one of the most mature open-source gcode interpreters designed to turn your PC into a CNC controller, and it’s the brains behind some outstanding DIY CNC machines like this plasma cutter.

Continue reading “‘LinuxCNC-Features’ is the Garage-Fab’s Missing CAM Tool”

Embedding PCBs In 3D Prints

The folks over at Lunchbox Electronics are working on a very cool prototype: embedding LEDs inside standard 1×1 Lego bricks. Being a prototype, they needed a cheap way to produce Lego bricks stuffed with electronics. It turns out a normal 3D printer has okay-enough resolution, but how to put the electronics in the bricks? Gcode wizardry, of course.

3d-printed-LEGO-w-pcb-thumbThe electronics being stuffed into the bricks isn’t much – just a small PCB with an LED. It does, however, need to get inside the brick. This requires stopping the 3D printer at the right layer, moving the print head out of the way, inserting the PCB, and moving the head back to where it stopped.

Gcode to the rescue. By inserting a few lines into the Gcode of the print, the print can be paused, the print head raised and returned, and the print continued.

If you want to check out what these light up Lego look like, There’s a Kickstarter happening now. It’s exactly what the 80s space sets needed, only thirty years late.

CNC Milling Photos with a Halftone Generator

Looking for an awesome way to mill out a photo or graphic? Check out [Matt Venn]’s halftone gcode generator which creates halftone CNC toolpaths from any image file. We’ve run across some halftone generators before, but [Matt]’s generator has some interesting features and makes for some pretty unique output.

[Matt] initially wrote a simple command line program in Python, but just rewrote his script with a more user-friendly UI that renders a preview of the output as you change options.  The UI lets you change parameters like drill depth, number of lines, and the step size to tweak the output. It even has an option to map the halftone points along a sine wave which makes an interesting effect as shown in the image above.

[Matt]’s program generates standard gcode that you can use to run your CNC machine. [Matt] recommends milling a material with layers of different colors, but you can always mill a solid material and fill the routed areas with paint or dye instead. Want to grab the script or check out the source code? Head over to [Matt]’s GitHub repository.

Thanks for the tip, [Keith O].