Showing posts with label temperature control. Show all posts
Showing posts with label temperature control. Show all posts

Monday 20 August 2007

Bang bang

I implemented the simplest form of temperature control, known as bang bang control, which is just turn the heater on if it is too cold and turn it off when it is too hot. This seems to work well, here is graph to compare with the last post. The time divisions are 4 minutes.



The warm up time has reduced from about 10 minutes to just over 1.5 minutes and you can't really notice any change in temperature while it was extruding.

Here is a graph on a faster time base of 1 minute per division showing the heater control signal. This one has not been inverted so temperature is upside down.



As you can see there is some ripple on the temperature of the order of about 10°C. I could probably improve that with PID control but I don't know if it will make much difference to the build quality. I might do it as an exercise out of interest as I have not implemented PID before.

There is a lot of noise in the system, which is not surprising with wires all over the place. It should get better when I make a PCB or veroboard version and mount it near the extruder. Fortunately glitches don't really matter because the thermal time constant smooths it all out.

The next task is to link it to the main controller and see if I can get accurate temperature readings back from it.

Sunday 19 August 2007

Heatwave

I made a start on my extruder controller, on breadboard, as it is a bit experimental. As you can see it's is a strange mixture of surface mount and though hole technologies!



The little PCB on the far right is a 3.3V regulator which I hacked out of a scrap PCB complete with all its decoupling caps. It had three handy vias for the three connections I had to make. The rest of the parts are the heater controller. The circuit could not be simpler. The heater is switched with a BTS134 protected MOSFET. Even with only a 3.3V gate drive its on resistance is so low it does not even get warm when switching about 1.5A.

The thermistor is just wired to a potential divider which gives 0.6V with an impedance of 100Ω. That makes a voltage that varies almost linearly with temperatures between 20°C and 200°C that can go straight into an analogue channel on the MSP430F2013. The micro can also measure its own supply voltage so that can be used to null out the supply tolerance.

Here is a graph of voltage on the input, inverted as it is an NTC thermistor, so it is roughly a graph of temperature :-



The heater was driven with a fixed 50% PWM drive. The temperature rises exponentially until it reaches equilibrium after about 12 minutes. I then turned on the motor and let it extrude some plastic. You can see the temperature drops significantly and rises again when I stopped the motor. This is because the hot plastic leaving the extruder carries heat away with it. Because plastic has a very high specific heat capacity this effect is significant. Finally the temperature falls exponentially when the heater is switched off.

The graph shows why closed loop control is necessary. The rise will be much faster because full power will be applied until the target temperature is met. That will reduce the warm up time considerably. I also hope to reduce the sag that happens when extruding which will make the extruded filament more consistent.

So a little bit of software now to close the loop.