Ive opted to go with the Marlin firmware on my machine, It seems to be one of the main ones out there and offers several advantages. Firstly it has this feature called lookahead whereby it buffers incoming movement commands and if there are no drastic changes in direction it keeps the movement of the axis high along with the extrusion rate. If there are changes in direction above the set limit then it slows down the movement enough to keep quality high.
Secondly it supports PID control of the extruder heater. Basically this looks at the current temperature value and the desired temperature value and calculates an error value. It then adjusts the control input in an attempt to minimise this value. This offers greater control than then old-style Bang-Bang control method where the heater would switch on full below a set temperature and off above another. You can actually look at the temperature graph on the computer as the machine is heating up and see the temperature stabilise around the desired value with the control inputs becoming smaller and smaller with each swing.
One of the issues with this control method however is that you need to input three separate constant values that determine how the heater is controlled to minimise the error, the proportional, integral and derivative values, hence PID. Calculating these can be a pain in the ass when the thermal characteristics of a extruder head are unknown as how the heater heats under power and cools in the surrounding air affect the control input required to minimise the error. In response to this Marlin includes a feature that will auto calculate these values for you. To start this process you send a M303 command to the printer with the extruder at room temperature. The extruder will then heat up to 150 degrees and attempt to stabilise around this value using sets of heating commands of a decreasing magnitude. After working down through about 6 sets out will pop the P, I and D values. These then get written into the firmware uploaded to the printer.
Most places suggest that if you run through the process 3-4 times you should be able to end up with temperature swings of around 0.3 to 0.5 of a degree around the desired value. I’ve run the process twice and seem to have got a pretty good result so far so itll be interesting to see if the resulting PID values begin to show greater consistency each time the process is run.
I’ll leave you with some pictures of the finished machine and the issue that I face with the cables on the extruder stepper. The section of heatshrinked cable is to help fix this problem, but doesn’t quite do it.