Skip to content

Archive for January, 2016


The printing of a Heffalump

My Kossel printer seems to work best when I don’t ignore it. In other words I try to print something every day. Might be a quick item or not. Might be to test out some of the settings I’ve changed in Slic3r. Might be because there’s nothing good to watch on TV so I watch the tool path…

Lately I’ve been experimenting with trying to lessen the strings that my PLA seems to want to leave behind. Which means I’ve been mucking about in Slic3r and seeing what the settings do. Let me rephrase that, I know what the settings do, I want to see how that affects printing.

Reading through all the posts on the web one comes to the conclusion that not too many deal with a delta printer to start with. Last stat I saw was that 20% of the 3D market might use a delta printer. So finding relevant information is somewhat of a challenge right off the bat.

The issue with delta printers is that they tend to blob and string. No, that’s not a 60’s dance craze. The “suggested” settings for the Kossel was something like this:

Slic3r Retraction

The problem comes from the Bowden tube. We’re shoving filament into it and it flexes to provide a constant pressure into the hot end. The longer the Bowden tube, the more pressure/flex you have at the head. When you get strings, you need to relieve this pressure. Therein lies the start of the quest.

A lot of 3D users tend to attribute stringing to temperature. Though it’s true temperature can affect it, during my testing, that wasn’t the real root the problem.

What I found through a lot of experimenting is that 5mm of retraction is about right. Too much further than that and you run the risk of hauling the filament up into the cooling section, where it solidifies and causes a hot end jam. Something you don’t want to experience.

Retract on Layer Change is a good one to have enabled. It sucks the filament back in as the head moves up to start the next layer. And it works like this. When the printer gets to the end of the layer, the head will pause for a heartbeat as the extruder rewinds the filament for the jump, then it jumps and shoves the filament back into the head. This is where the first problem can show up as a blob just before the jump. Might be a small blob, and dollars to donuts if it’s a blob, you’ll get a string as the head jumps.

The option that is supposed to address this is “Wipe While Retracting”. Keyword being “supposed” to. My experience is that it makes more strings. Why? Because the hot end was sitting on that last bit before the jump and as it moves the filament is dragged out of the nozzle. In other words the retract happens over the distance of the jump. Too late to be effective.

At this point I think I have read every bandaid remedy there is to “fix” this. Guys will lift Z, increase the retract length, add extra length on resume and so on. For the retraction speed, some slow it down to 20mm/s while most tend to leave it at 40mm/s. Some even enable the “volumetric” retraction in the firmware. All with mixed results on a delta.

Like a good sheep I went through all the settings, trying all the suggestions and walking away scratching the ole noggin. You know the old saw about doing the same thing wrong over and over but expecting different results? Yeah. Time to get outside the box.

So I went back to what the problem was from in the first place. The Bowden tube. The pressure. I needed to relieve the pressure in the hot end. Fast. Ah ha. Speed. I don’t profess to know how fast a non-delta printer can retract, but the Kossel can be very fast. So…one change…


Set the speed to 80mm/s. The filament I have been fighting strings with suddenly has no strings. Zip. Nada. Zilch.

The extruder is happy as a clam, doesn’t heat up, when the filament comes back in it doesn’t miss, and surprisingly enough it works really well. Time to try it out on a small detailed print.

Enter the Pachyderm. I spotted a design of an elephant on Thingieverse:


Admittedly I haven’t been this close to a elephant since I worked with them in my teens (Shrine Circus) but it was small, detailed and fit the printer bed. Obviously not a life size version…

Kossel Ele1

I’m using a .2 layer setting, I have a 120mm fan on the side of the Kossel that’s outside of the picture frame. This is a small print and unless the filament is cooled quickly it’s going to end up in a mess.

Kossel Ele2

So that’s a bit of the elephant done. If you look into the body fill area you’ll see some strings. I know I said strings were all gone. They are. This is a 5% Honeycomb infill and at the speed it’s going I found it always strings. Using a 20% of more infill and those strings would be gone.

Kossel Ele3

What’s really important is that there are NO strings between the different sections of the Heffalump. You can see some saggy parts (and trust me, real elephants have some saggy parts too) around the legs.

Kossel ele5

Without a doubt the only time an elephant would fit in the palm of your hand. What I hadn’t realized when I started the print job was that this elephant was articulated. With a tiny screw driver I gently pried away the legs (the head moved freely off the get go) and all of a sudden:

Kossel Ele6

There’s Jumbo standing on my hand. I came away from this printing with a lot more knowledge than I had at the start. Retract speed, print layer, print cooling, and so on. So yes, Jumbo probably cost about 28 cents to print but he brought a lot of valuable information with him.

But the best part? I don’t have to shovel up after he’s “done”…:-)


Kossel Layer Example

For printing on the Kossel, unless it’s something special, I normally slice with a .3 layer thickness. This generally gives good speed and acceptable quality. Kind of a win-win if you like.

When I am doing something that is more detailed or I want a nicer finish, I might print at a .2 layer thickness.

Rob, one of the FVMakers, mentioned he was printing with a .1 layer thickness and I think that’s what got me thinking about it. But I had some serious doubts at the same time.

Consider this, we’re squirting PLA or ABS from a .4mm nozzle, that merrily swings from a mathematically nightmarishly controlled upside down tripod, driven by an 8-bit CPU, that we’ve levelled on the print surface with a piece of 20lb bond paper. Of course we expect maximum accuracy with a setup like this and we should have it! Or not.

If you’ve ever looked at the bed maps from any delta printer, you’ll see high and low spots all over the map. Even if said printer is perfectly calibrated for “flat”. Or whatever flat implies.

Conventional thinking says you print at a layer height that’s about 60-75% of the nozzle size. Thus a .4mm nozzle is usually the happiest printing at .3 or so. But if the bed is calibrated flat fairly well, you can indeed print at .2mm.

Truth be told, I only had the auto-level probe installed on my Kossel for 3 days when I first built it. I could see so many failings with it and the software, I’ve always manually levelled the bed. Takes me about 15-20 minutes and I don’t do it very often.

Tonight I thought what the heck. Throw caution to the wind. Let’s take this baby for a spin and she what she’ll do.

I blame Rob, at least partially, for this lack of judgement on my part. What? Well, yeah okay I spread the blame around so if bad stuff happens it’s not 100% my fault. I know I didn’t fool anyone with that so just let me have my dillusion.

I have a small print (80mm x 60mm), Slic3r creates it’s usual spasticated tool path, printed at .2mm.

Google point 2

Notice as you move around the eyes follow you? See I was trying to distract you. Did it work? No? Blame “he who’s name I mentioned previously”. Okay, so blame me. It’s easy to see the layers. Kind of looks like a relief map of some canyon actually.

The same print, but this at .1mm layer.

Google point 1

Can you say blended? Ignoring the cats whiskers I didn’t bother cleaning off, the transitional lines between layers are minor. Although the eyes still follow you…weird huh.

Flipping the print to the top side you can see the crevice is not as cleanly defined with .2mm. I am using a macro lens here so bare that in mind too.

Google point 2 Top

Take the same print but this time with .1mm it looks very smooth. And if you look closely at the circles around the eyes, not the bags under them, you’ll see they aren’t really circles at all. Nope. STL doesn’t have circles. You see polygons which is the best you can hope for with STL.

Google point 1 top

I admit that when I started the .1mm print I had my hand on the mouse for the job kill function. Turns out I didn’t need it.

When I read all the ads stating that these filament droolers are capable of 100 micron prints I lumped that into the same boat as a used car salesman’s pitch. Makes for good ad copy and never thought about it again. Till tonight when I remembered “he who will not be blamed” had seeded the idea in my cobweb encrusted mind. Then I printed out these two objects.

While my objects are purple, you can colour me amazed.…you know who…;-)


Kossel Timer V2

I’ve put the concept version of the Kossel timer through it’s paces, been printing for 6:55:03 over the course of a couple of days and it hasn’t missed a beat. Thus, it’s a solid design, probably due mostly in part to the simplicity of the design.

During this time I’ve had to abort a couple of prints, and it’s performed just fine. I haven’t had to actually kill the power to the Kossel and I know if I did I would lose the elapsed time for that print. I could put in a routine in the sketch to write out the time to EPROM every minute so at worst I’d lose a minute on a power off situation.

However, the number of times I’ve had to actually power off the whole thing is pretty rare. At least in comparison to the number of times I’ve had to abort a print. The EPROM in the Arduino has a limit to the number of times you can erase/write stuff in EPROM as well. The genuine Arduino states 100,000 times. I have no idea what the limit is on the clones or if the 100,000 is a minimum or maximum. In any case, a lot of print jobs…

For the first version of the Kossel timer it was more of a “build it and see if it works” test than anything else. Low and behold it works. So time to make version 2. You know, cause hardware is like software and never done…

I wanted to keep the Micro Pro because I like that size and it doesn’t need a USB to Serial adapter to program it. A pro MINI would work just as well though. Building a daughter board for the Micro to perch on was the start (a shield is the more familiar but incorrect terminology).

The Micro would cover the wiring and components easily. A cut up piece of PCB, some headers, components and jumper wires.

Kossel Timer V2

The completed “PCB” really doesn’t have a lot of parts on it, wiring is not all that difficult either. On the left side there are 4 Vcc, 4 GND, two trigger pins. I always find it handy to have more Vcc and GND pins that I think I will need.

On the other end of the board is the I2C output for whatever display (OLED in my case) and a RESET time pin.

Kossel Timer DB

The bottom of the board, does have some jumper wires and some wire wrap connections to get to where signals need to be, but you could probably lay it out proper style on a PCB and etch it without a lot of issues. I find for these one-ups, it’s just as quick and easy to bread board them up this way. Making 5 or 10 of them would change that attitude.

IMG 0944

Plugging in the Micro makes a nice neat design without wires travelling between the trigger circuit and itself.

Kossel Timer Vcc Trig

Plus the timer is not all that physically big either. Add the wires for the trigger (and some power), the OLED display and it stands like this.

Kossel Timer Connected

While I could have also built it so the display fits onto that bread board as well, it does limit where you can put the timer. The main drawback was its physical size when it’s made as an all-in-one. The OLED display is 30mm x 12mm x 5mm. Four wires make it work and it can literally mounted, wedged, stuffed, inserted or jammed anywhere.

Wiring wise, I have three wires heading from the RAMPS board to the timer and four from the timer to the display. That allowed me to hide the main body of the timer in the Kossel RAMPS area. Building an all in one, there would be three wires coming from the RAMPS board but it would be more limited to where I could attach the timer because of the larger size.

A trade off for sure. Therefore I just built what would work best for me. As the diaper policy states, YMMV…:-)


Kossel Hour Meter

I think I spend a considerable amount of time not only tweaking my Kossel 3D printer, but I spend a whack of time documenting the changes I make as I do it. So I can refer back to see what I screwed up. Usually.

The problem is that as I do this, I might make half a dozen changes in a day. So just writing down the day in my Kossel notes doesn’t really help much. Actually, it doesn’t help at all…if I was programming, I’d have versioning working so changes can tracked easily.

Last year I’d been keeping a log of the hours that the printer was printing and I stopped in Dec 2015 at 942 hours. Just adding them up as I merrily printed along. But since then I haven’t bothered. Got busy in December and never got back into the habit.

So I’m not sure if that was part of the motivation for my Kossel project or not. But I decided a couple of days ago I’d like to have an hour meter on the silly thing so I could simply write down the hour (like a time stamp). If I make 5 changes in a day and test print, the hour meter will reflect it.

eBay sells a number of hour timers, some even work from a 12V power source. Many don’t. The 12V ones I did find don’t seem to have any reset function in them. They work in 10ths of hours (6 minute blocks). Probably fine for driving a vehicle but I decided I wanted it more like a clock than a timer. Elapsed time clock in any event.

Rummaging through the junk box I found an Arduino Pro Micro that was going to be the brain of the timer.

IMG 0929

Next a display was needed and there it was. A tiny 128×32 pixel OLED display (I2C). OLED display take less power than the typical LCD 1604’s that have a backlight. Mainly because if the led is on with the OLED it’s using power, if it’s black, nope. Plus you get font sizes.

IMG 0928

As it sits, it will record up to 9,999 hours, 59 minutes and 59 seconds. Probably get me through the end of the month any way…LOL

I tried a number of different ways to start and stop the “timer” and finally ended up with a opto-isolator that connects to a single pin on the RAMPS 1.4 board (one of the servo pins; pin 6).

IMG 0930

I bread boarded the circuit to test. Used an 817C optocoupler. The socket on the bread board is just an 8 pin one I cut in half to fit the opto. The multitude of pins on one end are 3 Vcc, and 3 GND, 1 analog output. Why the multiple pins? Power comes in from the RAMPS board (2 pins), from there to Arduino (2 pins), Vcc and GND to the OLED (2 pins). Hence, handy to have all the pins there.

Why the analog pin? Oddly the circuit worked better at detecting the voltage than it did detecting binary HIGH and LOW. I suspect the transistor in the optocoupler wouldn’t allow the voltage to drop far enough to trigger a LOW on an Arduino digital pin. Detecting the analog voltage, thus, was far easier and 100% reliable. One 817C, 2 x 1K2 resistors. Done.

The dual pins on the ABCD end, only the B is connected to the optocoupler, I was going to use A as a GND if I needed it but I don’t.

How It Works

When RAMPS powers up, the PIN is low. So the optocoupler is off. No timer runs.

When the pin on the RAMPS board goes HIGH, the timer starts, when the pin goes LOW the timer stops, the Arduino writes the result to EPROM. From a cold start the circuit loads the elapsed time from EPROM and displays it as the start point.

Because the RAMPS board always powers up PIN 6 servo signal LOW, the timer doesn’t auto start at power up.

Matter of fact, you have to start and stop the timer in GCODE!

In Slic3r I have some start up and end custom GCODES entered so I added this line to the start up code:

M42 P6 S255

M42 is a custom command for Marlin version 1.0.2, P6 means we want to control pin 6 (this is pin 6 on the Arduino MEGA), and the value we want to send to it is 255 (or 5V). I’m not sure if M42 was supported in earlier versions of Marlin.

For the end custom GCODE:

M42 P6 S0

Which simply tells the MEGA to switch pin 6 to LOW. Stops the timer.

The more astute may have been asking themselves what happens if I kill a print job. Good question!

I use Astroprint (Astrobox) as my 3D print server and the current version of Astroprint allows custom GCODE to be sent when you kill a print job. I added the line M42 P6 S0 to it and it works perfectly. If I was using USB to send the GCODE I’d have to manually send the GCODE or program a macro to stop the clock.

Mounting The Timer Parts

I printed a simple box with a hole in it to hold the Arduino and trigger circuit. This fit easily under the heated bed. The wires running out, 2 for power, 4 for the OLED, 1 trigger, 2 for the reset to zero push button.

Kossel Timer Box

I’d already designed an LCD mount for the front of the Kossel to hold a 2004 LCD. I used the same basic frame parts and modified them in Tinkercad for the timer. The OLED is actually pretty small even though it’s easy to read.

IMG 0933

A front view looks a little better:

IMG 0936

The Arduino code is pretty brain dead but if you’re interested in it you can download the zipped file HOUR_METER. I used Arduino 1.6.5 and some ADAFruit libraries. Nothing earth shattering in there.

Now I am looking forward to keep better notes and hours from my Kossel.


12V LED Bench Lighting

Over the course of a couple of years we’ve managed to toss almost every incandescent light, along with all those CFL landfill mistakes and switch to LED lighting. Which has its own pros and cons.

My work bench area used to have nine (9) 50W Halogen MR16’s on the ceiling and while it did provide some decent lighting, it was also equivalent to a Kenner Easy Bake Oven. I’d swapped out the Halo’s for some 6 watt LED lights a couple years back so I was getting not blinding but acceptable lighting without the heat.

But as anyone with a work bench knows, having acceptable lighting is one thing. Having it where you need it and enough of it is quite another.

With my work bench, I’m almost always between the lights on the ceiling above me and whatever it is I’m trying desperately to see. When I was younger I swear I could see in the dark. Now I just know when it’s dark.

I’ve looked at all kinds of lighting, even installed an LED strip under a shelf above my bench. It helped but not quite as much as I’d have liked.

Wandering around Thingiverse I came across someone who’d printed his own lights.

Thingiverse 12V LED Lighting

They looked like they might do the job so…I downloaded the design and had a look at it in Tinkercad. His LED lights must be significantly longer than mine (mine are almost the same dimensions as a 50W Halogen bulb) so I suspect they are the bulbs that won’t fit in a Halogen 50W housing. Mine will.

My LED’s are 4W, 12VDC MR16’s. Rightly 450 lumens at a metre. Gotta watch those LED specs sometimes because the ones off eBay can be, well, anywhere on the map. Not to mention colour temperature. I normally look for ones in the 3100K range for colour temp since that feels the most pleasing to my eyes. 2600 to 2800K appears yellow, and 5000 to 6000K+ is almost blueish white.

I printed out the globe part it is very well designed. Printed out nicely. Next I had to make the arm fit my self because his were designed for 18mm shelving. Mine are standard 3/4″ pine. I printed one arm and immediately didn’t like it. Way too flexible with the weight of the bulb on the end, so I added some gussets to it and reprinted. Great.

IMG 0882

The clamps that go on the shelf aren’t screwed down or anything so I made sure one of my bench power supplies was parked on top of it. There’s a ring that holds the LED bulb in place and I was wondering how hot it might get (4 watt bulbs can run 50C when on) but after leaving it on, no big deal. The globe is ventilated well enough that any heat just goes up.

LED Bulb

If you look at the LED you’ll see its a single cell, well not really, it’s what they call a COB (Chip On Board) LED. These are the best types to use in my opinion. Lots of times you’ll see individual LED’s, and I’ll tell you have some of those and they run HOT. COB are much more efficient and tend to give you a wider dispersion of light. Usually in the 45 to 65 degree angle range as opposed to the others than are focused in the 18 to 25 degree range.

To power these, you need a 12VDC power supply approx 500ma per bulb. I use a 12VDC 2A switching power adapter. One of the billions you can find on eBay. If you’re thinking you need to watch the polarity on the DC adapter, nah. Doesn’t matter what is positive or negative on the leads. Just plug them in to DC. They must have a bridge rectifier inside to handle this but I’ve never taken one apart yet.

I set my LUX meter that I built on my bench with only the ceiling LED’s on. Lux measures 210. And you can see the heavy shadows in the photo.

IMG 0886

Then I powered up the two LED lights and remeasured the LUX. Distance from LED shelf to bench is 29″.

IMG 0887

While the shadows are still there in the photo, mainly because the lighting is directly overhead, my hand is lit up much better and the LUX has jumped from 210 to 735. In brightness that’s a huge increase!

I was fortunate enough to have a shelf just above the bench to attach these LED’s to. Ultimately it sure is nice to have the additional light.

To turn the LEDs on and off, I use one of those 433Mz learning remote controls and a simple key fob type transmitter. These things are about $5 on eBay. Easy to program.

12V remote