Final PID Notes on Stock Setup

A project log for Monoprice Select Mini Electro-Mechanical Upgrades

Endeavoring to build upon the existing fanbase work of this $200-ish printer.

Michael O'BrienMichael O'Brien 08/11/2016 at 10:130 Comments

So, this is PID but not PID. It's the Shakespeare of PID. I don't really care if I'm being dramatic because the stock setup is weird. Yes, I'm new to 3D printing and though this hotend may be the 8th incarnation, but man, it really could be better.It's an aluminum block, 20 mm x 20 mm x 10 mm, with about a half dozen holes drilled into it. I'm not sure which alloys of aluminum, but their thermal conductivities do not differ much amongst the families. With the separation of the heater core and the nozzle, there is a decent thermal gradient that created. This problem presents itself as both a time delay between heating and when the heat arrives at its destination and the fact that a 40 W heater is overkill. Despite the results with the heated bed, it is not possible to remove overshoot and undershoot with this setup.

I have 3 sets of settings I've generated myself in the process of fine tuning the hotend. Yes, technically it's not stock since I cut off the thermal barrier before I fully realized it's effects, but I had since repaired it and it's not statistically different than original.

The stock 40W heater cartridge is overkill. This I know for a definitive fact. I'm actually considering the 30W ones on Amazon as replacement. Why? My ending results for 'P' & 'I' are forced so incredibly low because the heater cartridge dumps a nova of thermal energy into the block of so very quickly. However, due to the thermal gradient, it is not possible to have the software control the initial temperature. Dropping 'P' and/or 'I' so low to minimize this makes the response sluggish and kicks the MOSFET duty cycle into 100% because things don't change fast enough. Following that, in order to raise the control windowing up to be around the setpoint instead of below it, 'D' has to be so high that the atrocious noise floor makes controlling the hotend and the heated bed impossible for the firmware.

From exploring this and seeing it happen with my own eyes, it's no wonder why E3D and others have made 3rd party hotends with different dimensioned heather blocks. The E3D measures 20 mm x 16 mm x 12 mm. After you remove the volume from the holes, it's equivalent to the mass of the "MK8", but based on other reports and common sense, it's PID behavior will differ from what I've seen on the MK8.

Enough of my complaining. If you're an anal retentive nut like me what happens to be the fix? I cannot say this with 100% certainty since I've not PID'd out the E3D nozzle on this firmware, but my suggestion is as follows if you happen to have a simple drill press or vice:

  1. Buy some copper: This 6" piece from McMaster will give you plenty for 6+ blocks. Though McMaster offers other alloys, matweb says that this one has the highest thermal conductivty.
  2. Cut it up, drill it out, and tap some threads into it in your preferred fashion: MK8, E3D v6, or your favorite alternative
  3. Swap the 40W heater for a 30W heater
  4. Insulate the block in the manner you prefer with materials such as this ceramic fabric if you ever plan to go above 250 ˚C, or this adhesive-backed silicone mat you can cut up and stick + tape onto the block.
    1. FYI, it's adhesive is rated for 500 ˚F, aka 260 ˚C.
    2. It wouldn't hurt to be anal and use Kapton tape as a secondary around it.

This "solves" the problem 2-fold. You decrease the speed of heating, thus PID can actually have a chance at controlling the temperature properly and the 2nd is with almost double thermal conductivity over aluminum, the copper block heats more uniformly and the thermal gradient is smaller because it travels through the material faster. The insane 10 second delay will be no more. This solves the hardware problem.

I may or may not go the copper route, but I am definitely moving to better insulation as it helps with PLA quite a bit. I probably will move to a 30W heater and deal with slower warming times in order to avoid specialized control when changing to a lower temperature mid-print.

As for software, this is where my gripe comes in. A small digression though: If you're read any of my past logs, you'll get the idea that I'm fairly comfortable messing with stuff, even if I'm wrong and by that I dedicate a whole lot of time. If anyone else has come up with a better PID values first, I've not had a chance to see them ;). Anyhow, the configuration for the PID control in this firmware has a control "window" that exists below the setpoint making it a guarantee that you'll undershoot when you overshoot. By nature of this, it's nigh impossible with the current hardware to minimize either undershoot or overshoot without raising 'D' and dealing with a massive amount of influence by noise. Unlike the heated bed, when you want to shuffle the setpoint up or down, it'll immediately increase or cut power. It does so by so much that the system cannot make fine tune adjustments.

Is all of this necessary? Nope, 'cause people are printing just fine! Did I mention that I'm anal retentive?

Final thought: I want to compare the last 3 sets of PID settings I've generated against each other just to see what their characteristics are and see if the latest truely is the best or if a prior incarnation trumps it. After that, I'll update the instructions with the advisable set, including heated bed with a likely lower 'D'.