Art of 3D printer in the middle of printing a Hackaday Jolly Wrencher logo

3D Printering: Klipper, The Free 3D Printer Upgrade

I have several 3D printers, and I’ve always been satisfied with using either Repetier or Marlin on all of them. There are a few other firmware versions that could run on my hardware, but those two have been all I’ve needed. Sure, it was painful for a while having to juggle features to fit the firmware image onto the smaller microcontroller boards. Now that Marlin supports big 32-bit boards however, that hasn’t been a problem. But recently, I’ve been on a program to switch everything to Klipper.

In this post, I’ll tell you why I did it and give you some data about why you might consider it, too.

The Landscape

Marlin is written in C and burned into a 3D printer’s flash memory. It does a lot. It receives G-code commands, interprets them, and translates them to meaningful actions on the hardware. Modern versions handle automatic transformations to account for lumpy beds, input shaping to reduce shaking, and linear advance to produce better prints.

It might seem simple to control a 3D printer, but there are lots of little details to take into account. For example, if you are moving the head between two XY coordinates and you expect a certain flow rate, then you have to figure out how fast to turn the steppers to get the right amount of plastic out over that time. You also may have to retract before you start a move, make sure temperatures are stable, and transform the actual coordinates based on bed leveling data. There’s a lot going on.

Klipper does the exact same job, but it does it differently. On the 3D printer board is a tiny piece of software that does very little. It’s a bit like a device driver for the printer. All by itself, it does nothing. But it can handle very basic commands that describe how to move the machine.

All the rest of the processing you expect to happen now runs on some Linux computer. That is very often a Raspberry Pi, but it could be a spare laptop, your desktop computer, or anything that will run a reasonable Linux install. Several vendors even sell single-board computers with touchscreens made specifically for running this part of Klipper.

However, even though a screen is nice, you don’t really need it. I’ll talk about that more later.

Continue reading “3D Printering: Klipper, The Free 3D Printer Upgrade”

Art of 3D printer in the middle of printing a Hackaday Jolly Wrencher logo

3D Printering: Adaptive Bed Leveling

Have you ever read about something and thought, “Gee whiz! Why did I never think about that?” That was my reaction to reading about a feature commonly associated with Klipper called adaptive bed leveling or adaptive mesh leveling. Too bad I don’t typically use Klipper, but it all worked out, and I’ll show you how it might work for you.

What Is It?

Time to tram your bed!

Once a luxury, most 3D printers now come with some kind of bed level sensor. The idea is that the printer can probe the bed to determine the shape of the build plate and then adjust the build plate accordingly. So if a particular spot on the bed is 0.5 mm too high, the nozzle can rise 0.5 mm when it is in that area. There are several techniques Marlin firmware uses, including what I usually use: UBL. Some people scan the bed once and hope it won’t change much. Others will do a time-consuming scan before each print.

However, adaptive bed leveling is a bit different. The idea is that the printer only probes the area where the part is going to print. If your print bed is 235 mm x 235 mm but your part is 50 mm square, you could just probe the points under the 50 mm square.

This does several things. For a given number of points, there is less motion, so it should be faster. Also, for the same number of points, you will have a much denser mesh and, thus, a better idea of what the bed is at any given point. You could even reduce the number of points based on the size of the part you are printing.

When you think about it, it is a dead simple idea. What’s not to love? For most print jobs, you’ll have less work for the printer, faster prints, and a denser mesh. But how do you do it?

Continue reading “3D Printering: Adaptive Bed Leveling”

Art of 3D printer in the middle of printing a Hackaday Jolly Wrencher logo

3D Printering: One Bed Level To Rule Them All

In an ideal world, your FDM 3D printer’s bed would be perfectly parallel with the print head’s plane of movement. We usually say that means the bed is “level”, but really it doesn’t matter if it is level in the traditional sense, as long as the head and the bed are the same distance apart at every point. Of course, in practice nothing is perfect.

The second best situation is when the bed is perfectly flat, but tilted relative to the print head. Even though this isn’t ideal, software can move the print head up and down in a linear fashion to compensate for the tilt. Things are significantly worse if the bed isn’t itself flat, and has irregular bumps up and down all over.

To combat that, some printer firmware supports probing the bed to determine its shape, and adjusts the print head up and down as it travels across the map. Of course, you can’t probe the bed at every possible point, so the printer will have to interpolate between the measured reference points. Marlin’s bilinear bed leveling is an example.

But if you have enough flash space and you use Marlin, you may want to try unified bed leveling (UBL). This is like bilinear leveling on steroids. Unfortunately, the documentation for this mode is not as plain as you might like. Everything is out there, but it is hard to get started and information is scattered around a few pages and videos. Let’s fix that.

Continue reading “3D Printering: One Bed Level To Rule Them All”

TFT35 Dual Mode 3D Print Control – Hands On

I was rebuilding one of my 3D printers — again — and decided I needed a display upgrade. A color screen is nice, but there are some limitations. I also found there are ways around these limitations, so I wanted to share my thoughts on a dual-mode color touch screen LCD controller for your 3D printer. The screen in question is a TFT35 from BigTree Tech. It is similar to an MKS screen, but it can operate in two different modes, as you will see.

A few years ago, I picked up an Anet A8 which was very inexpensive, especially on sale. Not the best printer, though, because it has that cheap acrylic frame. No problem. A box full of aluminum extrusion later, the printer was reborn. Over time, I’ve completely reworked the extrusion system and the Y-axis, leaving only the motors, bearings, and the controller/display as the original.

That last part was what bothered me. The Anet board is actually pretty capable for a small cheap board. But it is just what the printer needs and nothing more. If you wanted to hack the printer there was very little memory left and only one spare pin for I/O. So it was time to replace the board and why not the controller, too?

Continue reading “TFT35 Dual Mode 3D Print Control – Hands On”

Giant CNC Machine Measures A Full Cubic Meter

There are plenty of designs for table-top 3D printers, engravers, and general CNC machines out there. However, if you wanna build big things and build them fast, sometimes you need a machine that can handle bigger jobs. This gigantic 1x1x1 m 5-axis CNC machine from [Brian Brocken] absolutely fits the bill.

The build relies on 3D-printed components and aluminium tubing to make it accessible for anyone to put together. [Brian] notes that 25×25 mm tubing with a 2 mm wall thickness does an okay job, but those aiming to minimize deflection would do well to upgrade to 5 mm thickness instead. Stepper motors are NEMA 23 size, though the Y-axis uses a pair of NEMA 17s. This is necessary to deal with the immense size of the machine. Control is thanks to an Arduino Mega fitted with a RAMPS board, running the Marlin firmware.

The plan is to use the machine to test out a variety of CNC machining techniques. It could make for a great maxi-sized 3D printer, and should be able to handle some basic 5-axis milling of very soft materials like foams. This might seem silly on the face of it, but it can be of great use for mold making tasks.

We’ve seen giant CNC routers built before, too, and they can readily be put to great use. Video after the break.

Continue reading “Giant CNC Machine Measures A Full Cubic Meter”

RAMPS Rebuild Keeps Robox 3D Printer Out Of Junk Bin

A 3D printer is a wonderful invention, but it needs maintenance like every machine that runs for long hours. [Rob Ward] had a well-used Robox 3D printer that was in need of some repairs, but getting the necessary replacement parts shipped to Australia was cost-prohibitive. Rather than see a beloved printer be scrapped as e-waste, he decided to rebuild it using components that he could more easily source. Unfortunately the proprietary software and design of the Robox made this a bit difficult, so it was decided a brain transplant was the best path forward.

Step one was to deduce how the motors worked. A spare RAMPS 1.4 board and Arduino Mega2560 made short work of the limit switches and XYZ motors. This was largely accomplished by splicing into the PCBs themselves. The Bowden filament driver motor had a filament detector and an optical travel sensor that required a bit of extra tuning, but now the challenging task was next: extruding.

The printer’s new custom hotend.

With a cheap CR10 hot end from an online auction house, [Rob] began modifying the filament feed to feed in a different direction than the Robox was designed for (the filament comes in at a 90-degree angle on the stock Robox). A fan was needed to cool the filament feed line. Initial results were mixed with lots of blockages and clogs in the filament. A better hot end and a machined aluminum bracket for a smoother path made more reliable prints.

The original bed heater was an excellent heater but it was a 240 VAC heater. Reluctant to having high voltages running through his hacked system, he switched them out for 12 VDC adhesive pads. A MOSFET and MOSFET buffer allowed the bed to reach a temperature workable for PLA. [Rob] upgraded to a GT2560 running Marlin 2.x.x.

With a reliable machine, [Rob] stepped back to admire his work. However, the conversion to the feed being perpendicular to the bed surface had reduced his overall build height. With some modeling in OpenSCAD and some clever use of a standard silicone sock, he had a solution that fed the wire into the back of the hot end, allowing to reclaim some of the build height.

It was a long twelves months of work but the write-up is a joy to read. He’s included STL and SCAD files for the replacement parts on the printer. If you’re interested in seeing more machines rebuilt, why not take a look at this knitting machine gifted with a new brain.

X-Printer Fits In A Backpack

3D printers are great for rapid prototyping, but they’re not usually what you’d call… portable. For [Malte Schrader], that simply wouldn’t do – thus, the X-printer was born!

The X-printer is a fused-deposition printer built around a CoreXY design. Its party piece is its folding concertina-style Z-axis, which allows the printer to have a build volume of 160x220x150mm, while measuring just 300x330x105mm when folded. That’s small enough to fit in a backpack!

Getting the folding mechanism to work took some extra effort, with the non-linear Z-axis requiring special attention in the firmware. The printer runs Marlin 1, chosen for its faster compile time over Marlin 2. Other design choices are made with an eye to ruggedness. The aluminium frame isn’t as light as it could be, but adds much needed rigidity and strength. We’d love to see a custom case that you could slide the printer into so it would be protected while stowed.

It’s a build that shows there’s still plenty to be gained from homebrewing your own printer, even in the face of unprecedented options on the market today. We’ve seen other unique takes on the portable printer concept before, too. Video after the break.

Continue reading “X-Printer Fits In A Backpack”