Friday, 31 December 2010

Frequency limit

I currently do my infill on Mendel at 36mm/s. The machine can go faster but the extruder flow rate maxes out at about 40mm/s when extruding ABS at 0.6mm, so 36 is a good safety margin for reliability and quality.

Although the speed is limited there is no real limit on how fast it can change direction. Suppose you make something 2.4mm wide with 0.5mm filament. E.g. a Mendel spring: -

Each wall will be 0.6mm wide leaving a 1.2mm gap in the middle. That gets filled with a zigzag infill where the head moves to within 0.3mm of each wall, so the head moves about 0.6mm on each stroke. At 36mm/s that makes 30 complete oscillations every second. 30Hz is a pretty high frequency for a mechanical system!

What actually happens is my y-axis starts to resonate. Over a few cycles the amplitude of the oscillation builds up and the infill overshoots the outline leaving a serrated edge.

The torque of a stepper motor is zero at rest and increases as it is displaced, so in that respect it behaves like a spring. That springiness together with the inertia of the rotor gives a resonance at hundreds of Hertz, known as mid band resonance. When the load is rigidly coupled, as in this case, the mass of the load brings the resonant frequency down.

As I don't get any missed steps I think the springiness might actually be in the belt rather than the motor. Timing belts have metal cables in them so that they don't stretch, but that makes them stiff, so they don't like to bend round a tight radius. That means the belt has some springiness being pulled round the pulley. A bigger pulley would be better but that would reduce the effective stiffness of the motor, so might actually make things worse. A lighter bed would be good but I haven't found a way to ensure it is flat without going to 6mm tooling plate.

I fixed the problem in software by slowing down the infill that has a high frequency content. I examine each infill path, one axis at a time, and convert it into a list of lengths between changes in direction. I then find the shortest wavelength over three cycles (less than three cycles is not long enough for the resonance to build up). I do this for X and Y directions and save the shortest of the two wavelengths. When I extrude the path I work out the frequency from the pre-calculated wavelength and the desired speed. I then compare that with a limit for each machine and reduce the speed if the frequency limit would be exceeded. I could have a separate frequency limit for each axis but I don't like the idea that the orientation of an object affects how it builds, so I pick the worst axis when deciding the limit.

I set the frequency limit to 20 Hz on my Mendel and 16 Hz on HydraRaptor. HydraRaptor does not show the overshoot problem, but it makes horrible growling noises and shakes the house. The machines make more interesting noises now because each infill run that hits the limit is extruded at an arbitrary lower speed. The overshoot is completely cured.

The builds are a bit slower and in some cases a long infill path will be slowed down by a short section that is high frequency, often a section between a hole and the outline. A more complicated solution would be to isolate the high frequency section and extrude the rest of the path at full speed.

Wednesday, 29 December 2010

Tip top top layer tip

When I first started printing on my Mendel I found it difficult to get the top layer infill solid and meeting the edges. It behaved differently to HydraRaptor, but since it was a different bot and extruder and I had also changed to a different type of ABS and updated Skeinforge it was hard to work out what the problem was.

The first problem I identified was backlash caused by the filament dragging on the carriage. I fixed that by switching from basket feed to spool feed, see That made a big improvement but I also set the "Infill Perimeter Overlap" ratio to its default value of 0.15, where previously I had used 0, and also increased the amount of plastic above the theoretical 100% value.

That is the way it stayed until very recently when I made a discovery about Skeinforge. A new parameter had appeared when I updated: "Infill Interior Density over Exterior Density" ratio, which defaults to 0.9. This seems like a good idea to make inner solid layers a bit less dense. It helps if the bottom layer is a bit too low by giving somewhere for the excess plastic to go. As I was using a little excess plastic anyway it seemed a good idea.

I had noticed that some outer surfaces are never well filled even when other surfaces on the same object are. Here is an example in the bottom of the well in this bracket.

I only realised recently that this was because the 0.9 is applied to some exposed surfaces, not just to internal ones. I set the value to 1.00 and things got a lot better. Not only does it fix the problem above, but it helps to make the other top surfaces solid. I normally use three solid layers to get a good surface on top of sparse infill. But with the first two at only 90% the top layer is still lacking in plastic. That is why I had to use a higher flow rate than theory predicted. Once I got rid of this parameter I could reduce the flow rate and still get a solid top surface. In fact, I can get a reasonable top surface with only two solid layers now.

Another side effect of having the flow rate too high to compensate for the layers below being only 90% was that the top layer was being forced in. When the infill goes from two different directions and meets in the middle I was getting a ridge because the plastic would be being forced into a channel that was a bit too small for it.

Yet another issue I had noticed was that some side walls were inexplicably lumpy. I.e. not in positions where the filament starts or stops. Examining the slices I realised that it was caused by the infill displacing the outline. This was because I had a 15% overlap. Since I made the inner solid layers solid I found I don't need this any more and those bumps have gone away.

So in summary I was using excess flow rate and infill overlap to compensate for inner solid layers (and some outer ones) not being 100% solid. The side effects were lumpy walls and ridges on the top surface.

Tuesday, 28 December 2010

Round robin

I have been making a few small tweaks to my host software to improve quality recently. One such tweak is the order in which islands of an object (or objects) are visited. By "island" I mean a closed outline and the holes and infill that it encloses. Skeinforge seems to always go for the nearest island, so when it finishes a layer it starts the next layer on the island it has just done and revisits the others in the reverse order.

This means that the plastic is added to the hottest island first and the coldest last. When an island is small it can mean that the layer below is still molten when the next layer is added. I simply reverse the order of every second layer so that the islands are visited in a round robin order. That means they all get the same time to cool down before the next layer is added.

The only downside is one extra long head move each layer from the last to the first island. If your machine leaves strings that is not ideal but mine hasn't since I started reversing the extruder. That also makes the Comb and Tower modules of Skeinforge redundant.

Sunday, 26 December 2010


My wife has assembled her own Christmas crackers from kits in recent years. She puts in much better gifts than even the more expensive commercial ones contain. It did backfire one year when she put a handkerchief in one and it ended up with a powder burn from the explosive!

This year she asked me to make some reprapped boxes instead to contain the usual cracker contents and look decorative on the table. The explosive element to be provided by a party popper. This is what I came up with: -

Having zero artistic ability myself: the star is Christmas star by andrewar from Thingiverse and the tree was grafted from the frame vertex of the Holiday Prusa Mendel by kliment.

My contribution to the design is the box. The base dimensions were determined by the hats my wife wanted to use and the height by the party popper diameter. This one also contains a magnetic bookmark, two chocolates, two PLA snowflakes and a charade instead of the usual bad joke or motto.

The lids had to be printed hollow side down because of the raised design on top. The gap is too big to be spanned without a lot of droop, so I used the support facility in Skienforge. I set the "support gap over extrusion perimeter ratio" to 10 to make it easier to remove and waste a little less plastic. I have no idea why the ends of the support are all in slightly different places.

It was still quite tedious to remove, so I tried Adrian Bowyer's technique of using oil to reduce the bonding. I knew the roof of the lid started at 8mm, and my host software prints the height of the current layer, so I just waited until it had finished the support and painted it with machine oil using small paint brush, while dodging the head. It worked very well and made the support easy to remove.

Here you can see the scars left behind, probably where I missed with the oil: -

I removed the scars by waving a hot air gun over the plastic.

The unsupported area sags a little and that makes a visible pattern on the top as there are only three solid layers. I think that actually makes it look more decorative by adding a textured border: -

The removed supports could be glued together and used as streamers.

These cracker replacements went down very well with both our families. They make a lot less mess on the dinner table and could also be reusable, but they all asked to keep the boxes, which was of course our original intention.

The files are available here.

Merry Christmas!

Saturday, 18 December 2010

101 Mendels

From March up until a week ago I have run my Mendel as close to 24/7 as I can and it has printed 101 Mendels, with a bit of help from HydraRaptor. During all that time I have been able to sell them as fast as I could print them but there has been a dip in demand running up to Christmas, so I stopped printing on Monday, having built up a small stock.

I have shipped parts to England, Scotland, Isle of Man, Ireland, Sweden, Denmark, Belgium, Netherlands, Germany, Austria, Poland, France, Spain, Portugal, Italy, Tenerife, USA, Canada, Australia and Singapore.

It seems weird now to have a quiet house and not have to stay up until midnight every night to start the overnight build. It does mean that I have time to blog again though, and print things that are not Mendel parts.

I have been printing parts of a Milestag laser tag gun for a friend of mine. I recommended CoCreate to him and he has taken it and run with it. His first design is way more sophisticated that anything I have managed so far. It is a large device broken up into parts that just fit on my 200mm bed. Here is one of them: -

You can see the rest in Tony's blog

I think a machine printing 101 copies of itself must be a bit of a milestone in the RepRap project. That is about 100kg of plastic and not far off 4800 hours of printing in about 6000 available. It is testimony to the reliability of the mechanical design and if anything, the quality of the parts is getting better as I tweak the settings.

Thursday, 16 December 2010

Crème brûlée

This is what happened when the thermocouple fell off my heated bed: -

It happened while both myself and my wife were at work so the machine finished the build. When I came home the room stank of fumes.

The bed temperature will have been limited to about 170°C by the thermal cut out I have in series with the heater for safety. Since it was making a bed of six and it went wrong about 1/3 of the way through the build, they will have been cooking for about 4 hours.

Unsurprisingly the bottom of the object shrank and went brown. What was surprising was that the bottom layer became transparent and glass like. So glass like that I cut my finger on it. The meniscus edge was razor sharp. It seems to have softened over time though, this happened a few weeks ago.

Perhaps it might be a useful process if you want a transparent window on the base of an object. You could lay down a single layer and then cook it for a few hours at 170°C and then deposit the rest of the object on top of it.