Spend, Save, Give

We are planning to teach our eldest son, now 5, about the wise use of money using a system called “Spend, Save, Give”.

The child has 3 jars, one with each label. Each week, they get given an amount of money in conveniently-sized coins. They have to put at least a tenth of it into the Give jar. The New Testament does not mandate that Christians give away a specific proportion of their income, but 10%, corresponding to the Old Testament tithe, is widely considered “a good starting point”. They can distribute the rest across the 3 jars as they choose. “Spend” money can be taken out and spent at any time. “Save” money has to be used on a named item of significant price. (We plan to add a feature here – they have to name the item, we write it down, and they can buy it two weeks later if they still want it at that point. This prevents impulse purchases.) “Give” money must be given away – to church or a charity of the child’s choice.

This called for a small making project. You need:

* 3 mason jars with the standard-size neck
* A pack of slotted lids (which I couldn’t find from a UK source – better sources welcome)
* A copy of this handy PDF of labels, wih thanks to “Three Little Monkeys Studio
* A colour printer
* Craft knife, cutting mat, tape etc.

Assembly instructions would be superfluous; here’s the result:

My phone camera is a little distorting; the jars are all the same size :-)

3D Printing A Replacement Cot Clip

Some things made with 3D printers could possibly be made more easily using other manufacturing methods – although printing them yourself is often more fun. But sometimes you come across something which would be fairly tricky to make otherwise, unless perhaps you had high-end equipment like a laser cutter.

Cots, in the UK at least, often have a “drop side” – a side which is normally at the standard height, but can be lowered to make it easier to insert or remove a child. The side is usually held up by some kind of safety clip at each end, such that when you raise the side, the clips automatically engage, and when you want to lower it, you need to lift the side a little and pull both clips out of the way from the outside. This prevents a child pulling off an escape :-)

One of the two cots we have used to belong to my wife’s brother. It has such clips, and long ago one of them broke. He made a flat replacement out of cut perspex, but it has also recently broken. This is a problem because our changing table fits on top of the cot, and if the sides aren’t the same height, the table can’t be used and we are having to change William and John with the mat on the floor! So I thought I’d try and print one.

As you can see from the right of the photo below, the existing clip is a rather specific shape, and would have been hard to produce by many other methods without a lot of trial and error. Many parts have to be exactly the right angle and length or it won’t open, or close, or pass the cot side, or whatever. I took a scan of the existing clip (which was a bit blurry, as the clip is not flat) and traced around it in LibreCAD. I then saved that trace as a DXF file, and wrote an OpenSCAD file to make a new clip, based on a linear extrusion of the outline, plus (on later attempts) two extra blocks for a stop and a handle. Here are my efforts:

4 attempts to make the clip

The first was too small, the second marginally too big (and the blocks not aligned right), and the third, like Little Bear’s porridge, was just right :-) Well, it suffices anyway, although the hook could do with being 1mm smaller for easy passage of the side.

Here’s the clip in situ, supporting the side of the cot:

Clip supporting cot side

And this photo, beautifully modelled by my wife, shows how it fits when the side is down:

Clip being used

3D Printer: First Useful Objects

In the past month, I’ve printed the first useful objects on my printer (the initial Android, while pretty, is not useful). The first was, and I know this is probably playing to 3D printing community stereotype, a calibration jig for someone else’s 3D printer (a Makerbot Replicator). In other words, I’m printing more 3D printer parts:

The second, though, solved an actual problem in our house. Our lovely son William, now 11 months, has worked out how to open cupboards. We have some Ikea Billy bookcases with cupboard doors on, and wanted to stop him getting in them. The knobs are simple wooden cylinders, so the rubber-band-based solution we used for the TV cabinet wouldn’t work. However, a small bit of work with OpenSCAD and a quick print later:

And this is what it looks like in-place, keeping the doors shut:

Actually, the photos are of the second one I printed. The first did the job but the layers didn’t stick together very well in some places, so it was a bit brittle. I’m still having trouble with bed adhesion and warping, but I’m working on that…

3D Printer: Success!

And here it is – my first print! :-)

I’m sure you will all recognise the character. The print quality is pretty good for a first attempt, although nothing like some of the pieces I’ve seen. This was achieved on Sunday evening, 30th September. I started this project on 21st of June, so it’s taken 3 1/3 months.

Of course, there is much to do from here. Lots of optimizations and tweaks and improvements to print quality. While I probably won’t be blogging about it in as much detail as I did about the build, I may write about particularly interesting things I discover…

3D Printer: Software and Calibration

As noted, the printer uses RAMPS electronics. There are a number of compatible firmwares to drive it; I chose Marlin. It’s at this point that the Mendel90 Build Manual starts getting a lot more perfunctory and vague, and I’ve been having to feel my way quite a lot more. I had a couple of days false start when I assumed that the electronics would already be loaded with firmware; it turns out they were, but only a simple testing program, which gave enough response to confuse me but not enough to make any sense! Once I’d asked the vendor and they’d clued me in, I was doing much better.

It turns out nop head (the creator of the Mendel90) has his own fork of Marlin, so using that was a start. Fortunately, I’d already stumbled across this GitHub bug warning me I’d need to use a standard baud rate rather than the default non-standard but ultra-fast one. So I tweaked a few parameters and managed to get it to load. (Side note: the Arduino IDE is, frankly, some of the worst software I have come across in many years. If any devs are reading, email me and I’ll provide more constructive feedback.) However, a few things didn’t seem to work right so I ended up porting his changes to the latest Marlin.

It’s at this testing stage that I discovered a few problems. The first was that I had taped my thermistor to my heated bed with aluminium heatproof tape. Unfortunately, the thermistor wires are uninsulated and the shiny side of this tape is conductive. This was causing intermittent shorts. I had to remove the tape, remove the heatshrink around the joints and unsolder the thermistor, and then fully insulate the thermistor wires with heatshrink before taping it back to the bed.

The second was that X and Y were homing fine, but Z wouldn’t. In the end, this was a tangle involving some missing Nophead changes, and a mistake by me in disabling the max endstops I thought I wasn’t using. I had to stick a load of echo statements in to work out what was wrong here. (Why is it that debugging with echo is always a bit easier than working out how to use whatever debugger your platform has?)

Next, the machine was not moving 10mm when told to move 10mm. This required setting the correct magic values for STEPS_PER_MM, which depends on various things like the size of your pulleys and the pitch of your leadscrews. Fortunately, I got 30 seconds of time from nop head at the Mendel90 Build Event this weekend, and he told me them out of his head :-)

Then, I had to level the bed. I managed to half-rip the screw hole out of the corner of my heated bed by adjusting the hex pillar it was standing on without loosening its bolt. :-| However, it still just about works. Unfortunately, I can’t level it in the normal way because the base into which the pillars go wasn’t tapped with a screw thread. Fortunately, an M3 washer happened to be just the right height for the needed adjustment, and so I inserted one of those into one corner and my bed was level. (Bed micro-levelling sounds to me like the sort of thing which should be fixed in software…)

Then, I had to correctly set the “0” for the Z axis. This is a number in the firmware, and it took a few tweaks to get right. For a while I had the Z height slightly too high. This meant that the first layer was being printed too close to the glass. This, in turn, meant that there was too much back pressure in the extruder, and the hobbed bolt was tearing into the filament and stopping the drive. So I got a too-thin first layer, and nothing for the further layers!

Once all of that was sorted out, I managed to get multiple layers, but they were all randomly offset from each other in the X direction! Messy. A FAQ on reprap.org saved me here; the max acceleration values for the X and Y axes were set too high. Halving those fixed that.

So here it is, finished and ready to go…

3D Printer: Wiring It Up

Various motors, switches, sensors and heaters around the machine have wires which are brought through various holes to the electronics bay and connected to the RAMPS. The moveable bed starts by using a ribbon cable, constrained by a plastic strip; once the connection is made to the frame, it changes to a couple of wires for the thermistor and another couple of higher-rated wires for the bed heater (which can draw as much as 10A). The extruder and the X motor and limit switch also use ribbon cable to connect their moving parts to static parts. They actually share a single cable, with some wires terminating at the motor and some continuing through cable grips to a D-plug which plugs into the extruder. This picture tries to show both cables:

The X/extruder cable runs from the extruder connector across the foreground, via the X motor, then down and back up vertically (to deal with Z axis movement) before going over the top to connect to the electronics. The Y cable can be seen on the base emerging from under the Y carriage, terminating at a cable clamp and being transformed into pairs of heater and thermistor wires.

So the following wires arrive in the electronics bay:

  • Power supply (yellow and black; 6 wires)
  • PSU enable (green: 1 wire)
  • Heated bed heater (blue and brown; 2 wires)
  • Heated bed thermistor (black; 2 wires)
  • X/extruder ribbon cable, carrying:
    • Extruder stepper motor (4 wires)
    • Extruder tip heater (2 wires; short red and black extensions)
    • Extruder tip thermistor (2 wires)
    • X limit switch (2 wires)
    • X stepper motor (4 wires)
  • Z limit switch (red; 2 wires)
  • Z stepper motors (multicoloured; 8 wires, because there are 2 motors)
  • Y limit switch (green; 2 wires)
  • Y stepper motor (multicoloured; 4 wires)

You can see them all connected:

The extruder heater wires had to be extended as I cut the ribbon cable a little short. The loose black wire is a guard loop to reduce interference in the ribbon cable; it needs connecting to ground when I can work out somewhere better to connect it than screwing it into the power connector.

I had a bit of a hiccup when I realised that the Molex connectors I had bought to connect the wires to the pins were fine for a single row of isolated pins, but when pins are in groups, they don’t fit because they are 2 or 3 pins wide. Fortunately, a bit of cunning wiring, the removal of some extraneous pins and the filing down of some of the connectors made it so I could squeeze everything in.

3D Printer: Power and Electronics

Holiday and MozCamp have delayed the project a little, and I’m a touch behind on the blogging…

Every RepRap needs power and control. There are various electronics packages available for running a RepRap, designed by different people and optimized for different things. The electronics package I have is a RAMPS v1.4, bought ready-built off eBay from China. (In order to finish this project in 2012, I decided not to solder it myself from scratch…) Amazingly, it arrived before several parts sourced at the same time from the UK! It’s based on an Arduino, with a shield to contain the specialist electronics for running the motors etc. This means that it uses standard Arduino tools, and I can probably learn how to hack the firmware without too much trouble.

The PSU is a standard modern ATX PC PSU, modded as explained on the RepRap wiki. It turns out that PC power supplies are required, presumably for legacy reasons, to provide 3.3V, 5V, -12V and +12V power and, on some, -5V as well. Fortunately, all the wire colours are standardized. RAMPS just needs 12V.

The Mendel90 design had holes for a different electronics package and also had no mounting holes for the PSU, because they aren’t standard. So I had to plan and drill all these holes myself. I ended up mounting the PSU below, and the electronics above – with the power input cord and on switch on the bottom side, but the power wires coming out near the electronics. I needed to leave room at one end of the electronics to add the optional SD card reader without it sticking out in a way that means it could get knocked or damaged.

You can see from this internal view of the PSU that I have:

  • Added a power resistor (bolted to fan holes, lower left) to the 5V bus (red) to create a small load (some PSUs won’t start without it)
  • Wired the brown 3.3V sense wire to the 3.3V bus (orange; lower right)
  • Cut away most of the remaining wires (top right, behind the yellow and black ones; a standard PC power supply seems to have 40-50 wires coming out of it with various connectors)
  • Left behind 3 12V wires (yellow), 2 on one of the 12V buses (for the heated bed) and one on the other (for everything else), plus matching ground wires
  • The green wire is apparently some auto-on switch; it has to be connected to ground. Until I figure that out, I kept it full length and wired it into a ground terminal

3D Printer: Physical Assembly

Once the sub-assemblies had been put together, the next stage was to start attaching all the parts to the frame. The build instructions are very helpful in explaining what to do in what order. Here is a picture part-way through the assembly, with the Z rods, motors and lead screws in place.

The Mendel90 model is even detailed enough to model and provide printed parts for appropriately-sized (calculated using circle packing rules!) cable clips for the various cables which run along the frame.

The next stage was the insertion of the X bars and then the addition of the Y carriage, along with the drive belts.

You can see that the extruder platform, the central black piece, now has 3 cartesian axes of movement – it can slide along the X bars, the entire X carriage can go up and down the Z bars, and the Y carriage moves in and out. Coordinating these movements very carefully is necessary for accuracy and quality in the print.

The shiny thing on top of the Y carriage is a heat shield, made from low-tech cardboard and reflective high-temperature tape. This prevents the carriage heating up and warping, and throwing the bed out of true.

Now, blogging has caught up with reality – this is the condition of the project as I write :-) The next step is to modify a PC power supply to provide juice, attach it and the control electronics to the rear stays, and wire it all up.

3D Printer: Sub-Assemblies

Once the frame has been assembled, the next thing was to put together some of the individual sub-assemblies. The Mendel90 design’s build process automatically generates BOMs (Bills of Materials) for each of the sub-parts. It’s also possible to render those parts alone, and in an “exploded” view, using the OpenSCAD software, and examine it from all angles. These two things together make it obvious in most cases what screws and parts go where. The build instructions add any extra tips, or hints on the order in which to do things, which may be necessary.

Let’s take an example, the X idler end. This is the assembly at the opposite end of the X carriage to the motor, which contains the pulley over which the X drive belt runs. It also has bearings so the entire X carriage can move up and down the Z axis.

The generated BOM is as follows:

 1 Ball bearing 624 4mm x 13mm x 5mm
 1 M4 cap screw x 40mm
 2 M4 hex screw x 16mm
 2 LM10UU linear bearing
 1 Nut M8
 3 Nyloc nut M4
 4 Washer M4 x 9mm x 0.9mm
 2 Washer M5 x 20mm x 1.4mm
 1 x_idler_bracket.stl

The exploded rendering of the sub-assembly from OpenSCAD looks like this (obviously, when rendered in OpenSCAD, you can rotate it to get a better view, e.g. to see the M8 nut in the trap on the bottom):

The instructions give tips on how to clear out any excess plastic, and the best way to insert the linear bearings in the channel.

Putting all that together, the result is this:

(Unfortunately, my choice of black plastic means that these photos do not come out as clearly as they might.) Some of the other assemblies are more complex than this one, but the principles are the same.

3D Printer: The Frame

For my printer, I decided to make the frame from MDF. I got it from our local B&Q DIY store. They have a large wall-mounted saw which they will use to cut up your wood for you, if you ask. I made a cutting plan which meant that they could cut all the pieces which were supposed to be the same width one after the other, so they didn’t have to adjust the marker and possibly end up with a slightly different size.

The arch in the gantry then needed cutting. Fortunately, my father-in-law came to the rescue with his workbench and jig-saw.

Then I decided to paint it. This is optional, but bare MDF can absorb water and change size slightly, which is not good for a precision instrument. Painting it stablizes it in this respect, as well as making it look much better. However, this turned out to be quite an effort. I wanted to do it outside (a decision with which my wife heartily agreed), so I spray-painted it lying flat on newspaper and plastic sheeting. But I had to content with wind, dirt from the bricks I used to weigh down the newspaper because of the wind, and intermittent rain showers. Fortunately, we’d got 3 of the rear stays out of our wood rather than 2, so we could use one for paint testing. I had to do two coats, both sides. Still, due to uneven coverage, fingermarks, etc., the finish is not what I’d like it to be.

Each sheet needed holes drilling, according to the drill templates which are automatically generated from the design. The templates are significantly bigger than a piece of A4 paper. One can print them out in A4 panels with cut marks and join the result together, and I did that for all of the pieces but the base. (Wishing to avoid Adobe Reader, I tried to do it with open source tools. This was a pain to work out; see the build instructions for how it’s done.) But the base is large enough and has enough holes spread across it that I wanted to get the sheet printed on a single piece of paper. I took it to a local print shop and, due to a misunderstanding, they printed it on sticky-backed vinyl instead!

I thought this might be excellent, because the glue would keep the sheet aligned, and the printer demonstrated that the vinyl peeled off wood very easily. And indeed, once we’d worked out how to apply it square and (mostly) unwrinkled, it looked great. However, it turns out that it doesn’t peel off painted wood as easily, particularly if it has been left for 3 or 4 days while you find the right size drill bits! A lot of glue was left behind :-( White spirit didn’t help, but started lifting the paint finish. Fortunately, I remembered I had a small bottle of “sticky stuff remover”; I have no idea what’s in it, but it’s magic. It lifted off the residue without removing (much of) the paint.

Lastly, it turns out drilling MDF without another piece of wood underneath leads to messy exit holes; particularly on pieces where both sides can be seen, using a drill block is essential.

Next up: starting putting together some of the sub-assemblies.

3D Printer Project

With another guy from my Gospel Community in Sheffield, I have started building a 3D printer as our manly do-something-together geek summer project.

Since 2005, led by Dr. Adrian Bowyer of Bristol University, the RepRap community (REPlicating RAPid-prototyping machines) has been working to turn 3D printing from something costing 6 figure sums to something costing 3-figure sums, and also to make machines capable, as much as possible, of manufacturing copies of themselves. They use extruded plastic as a way of constructing physical objects out of virtual designs.

In 2012, the “Ford Model T” of 3D printers is the Prusa Mendel, the 3rd generation of designs after the original Darwin and then the Mendel. When I was in Brazil for FISL recently, I spent some time building a Prusa variant with Metamaquina, a 3D printer company started by a Felipe Sanches, a Mozilla contributor in Sao Paulo.

However, there are several valid criticisms of the Prusa design. As outlined by “Nophead”, a 3D printer hacker from Manchester, they are:

  • The rod-based frame is easy to get out of alignment
  • It doesn’t have structural strength in the direction of movement of the X carriage (left/right)
  • The maximum height is limited by the extruder colliding with the supports

To solve this, he did a design he calls (perhaps with a minor failure of imagination) the Mendel90, as it uses 90 degree angles for everything. This is built on a solid sheet frame – MDF, acrylic, polycarbonate or (most recently) Dibond (aluminium-skinned plastic). We are building a version using MDF. When it’s done, it’ll look something like this, except that this picture is of an earlier iteration of the design, and ours will look a lot smarter, as it’ll be painted red):

Look for more posts about this in the coming days :-)