Aluminium Printer Chassis 2

3D Printer: Upgrades 1/3

The current trend towards cheap and accessible home CNC machines is fantastic. I wouldn’t have a 3D printer if it wasn’t for the slow and steady reduction in component prices due to the high demand of an expanding hobbyist market. Also, China has made manufacturing a tenth the price it used to be.

While this has lead to the component parts, and ultimately the overall machine costs, becoming more affordable to the home-maker there are some short comings to this: 99% of hobbyists do not demand or need industrial level quality. If you want to print a bobble head of yourself to show your friends then usually you can live with middling quality, poor tolerancing and materials that only stay in shape at room temperature, and so 99% of the machines you can buy are built to that standard.

Now my 3D Printer was cheap and a somewhat early-days experimental product; the company that made it has already gone under (link). I wanted a “quick-way-in” to 3D Printing, hoping to make the odd part here and there for my numerous car projects, however I have quickly come to realize that it’s now a fundamental tool in my workshop, it just needs more capability. I need it to print accurately and repeatedly in higher temperature plastics. To ensure my machine could do this it needed two key upgrades.

1. Heated Bed

A Rare ABS Print Success

ABS can be printed in a warm room in your house, however you will soon become a lonely single man due to the smelly fumes.

My little fisher delta was very much limited to printing PLA (Polylactic Acid) due to not having a heated bed. PLA has a melting point of 150-160 degC and a glass transition point of 60-65 degC, so it’s easily extruded at 100 degC when it’s malleable and workable. If you’re printing at 25 degC room temperature then there is approximately 35 degC delta between its set temperature and the glass transition temperature, and that’s fine.

However I’m printing in a cold garage which is usually at 10 degC or less giving a Temperature Delta (TD from now onwards) of ~50 degC, this is still fine but you start to get into shrinkage issues on big prints due to the thermal stresses across the part.

I really wanted to print in ABS (Acrylonitrile Butadiene Styrene), or as I like to call it, “The Good Stuff”. ABS has a glass transition temperature of ~105 degC (much more like it!) and has no true melting point as it becomes amorphous (Wikipedia is awesome). It’s very tough, impact resistant, acid resistant and heat resistant, which makes it far more suitable for automotive applications.

However the glass transition temperature of ABS causes print problems as you have to extrude it at higher temperatures (I use 130 degC). This mean’s the TD across the part is far higher than if your printing with PLA and warping and cracking becomes a real problem. What you need to do is ensure the print is kept warm while printing to reduce the TD and it’s common to achieve this by using a heated bed.

2. Aluminium Chassis

Broken Printer Chassis

Acrylic really is a terrible structural material

Now simply heating the standard acrylic print bed was not an option as it was liable to flex all over the place and therefore I wanted to at-least use an Aluminium or Glass print bed. Aluminium has a thermal conductivity of 205 W/m.K which means it will heat up slowly and maintain a fairly uniform temperature distribution (Acrylic has a thermal conductivity of 0.2 W/m.K).

On the Fisher Delta the geometry of the print bed is important, as it has a three point self leveling system and these three points need to be accurately positioned. Because of this I opted to get the bed laser cut at a local company, along with the rest of the machine. The acrylic parts were all starting to bend and warp and it made me question how accurate it was anymore; I had only been using it for three months.

Aluminium Printer Chassis

Much improved frame with increased accuracy

So once I got my parts from the laser cutters I pulled my machine apart and rebuilt it to be far more durable and long lasting beast. She also looks pretty nifty in Matt Aluminium.


In Part 2 I’ll cover the wiring of the printed bed and the modifications I had to make to fit it into the Fisher Delta frame.

Embedded: Tach… Fail?

So I’ve been using the aforementioned tach input for my pneumatic gearshift system with moderate success. However a problem has arisen.

I run a spark cut on upshifts so you can keep the throttle planted and just hit the paddle to get the next gear. This is all well and good but I also need a tach signal during this period to ensure the clutch comes up once the engine speed is correctly synced with the road speed; otherwise you get a massive jolt through the drive train and break differential housings (I’ve broken two!). The target RPM is based on the engine RPM when the shift is requested, the current gear ratio and the target gear ratio; simple.

RPM_{Target} = RPM * \frac{Ratio_{New}}{Ratio_{Old}}

The tach signal I had been using comes out of the CTO pin on the Ford EDIS unit (pin 11, clean tach out) which is a fancy version of what comes out of the IDM pin (pin 2, diagnostic signal). As it turns out this is based on an “EMF Flyback Circuit”, which uses the reverse voltage of the triggering coil when it is grounded (A good reference can be found here).

This is all well and good, but in short: No Spark, No Tach Signal. This is annoying because the ignition unit still knows what the RPM is from its variable reluctance sensor, it just doesn’t output the correct RPM.

To solve this problem I’m going to have to take an RPM reading directly out of the ECU or setup my own hall effect crank speed sensor…

I’ll let you know how I get on.


Embedded: Tach Success!

It worked! The filtering hardware that I built (zener diode + MOSFET) gave a clear enough signal to simply trigger off the falling edge of the input spikes; this was the trigger condition for my hardware interrupt.

I recorded the time intervals between pulses for four individual events in a buffer and then used the average to calculate RPM. The results speak for themselves:

Embedded: EDIS Tachometer Signal

I’ve been scratching my head as to why I can’t get a decent tach signal for my pneumatic gearshift system. The 12v square wave signal comes into the micro controller via a zener diode and a switching MOSFET. The pin is held high through a pull-up resistor and grounded by the MOSFET. The zener diode cuts the bottom 5 volts off the tach signal to remove any noise around the 0v value.

My mistake, and I think its a fair one, was believing the square wave tach signal would have an equal time high as it does low; at a constant engine speed. Therefore, assuming a maximum rpm measurement of say 15000rpm, I could sample the signal at a fixed period and gain all the data I needed; I was using a 2 microsecond sample period.

2 microseconds
1/0.002s = 500hz
500hz = 30000 samples per minute
or 15000 rpm with one high and one low

I wrote the code to do this but it just gave me gibberish so I decided to pack it in at the end of a long day and just log some very high rate data to look over with a glass of wine. Once I sat down in the warm to try and fix the issue it quickly became clear to me what the problem was. The figure below is a snippet of the log; the xaxis is time in microseconds.


Note: I’ve inverted the pin signal because the input pin is active ground.

So the tachometer high period is only half a millisecond long! This does not help things in the slightest. I have two options:

  • Poll the pin at a far higher rate.
  • se a hardware interrupt on the pin.

Because the time period between the pulses is long I’ve decided to go with an interrupt as this should be less resource intensive for the microcontroller. I don’t want to be reading the tach pin every half a millisecond!

I’ll let you know how I get on.