Auto Tune Heated Bed Marlins
English • العربية • български • català • čeština • Deutsch • Ελληνικά • español • فارسی • français • hrvatski • magyar • italiano • română • 日本語 • 한국어 • lietuvių • Nederlands • norsk • polski • português • русский • Türkçe • українська • 中文(中国大陆) • 中文(台灣) • עברית • azərbaycanca • |
Jul 22, 2016 I installed a 35W heater and it heated up too fast and tripped some kind of overheat protection. To solve the issue I first set the PID to 0. I tried auto tune at 150, 200 and 210. And it aborted every time. So it must be something else. I did take the values that came with the +. 2016 SOLVED UM2 PID Autotune failed. I overide the 'auto - tune' feature and have excellent results over all bands, and at what ever output the station has. The meters automatically switch from 200 to 2000 watts and are very accurate. There has been no other 'problems with the tuner since it has been isn service almost continously for 25 years.
This guide assumes you have a PCB heatbed based on Josef Prusa's design, however the principles should apply to most heatbed designs.
- 2Usage & Setup
- 2.2Firmware settings (Marlin)
Theory
If you pass an electrical current through a conductor it produces heat proportional to the amount of current flowing
The heatbed is designed to produce about 120W of power at 12v, or up to 200W (though usually a bit less) at 24v.
Using the basic formulae:
(P = power in watts, V = volts, I = current in amps, R = resistance in ohms)
Rearranging the above formulae we get:
and
So the resistance of the 12v tracks on your heatbed should be circa 1.2 ohms, in order to give 120 watts. If it's a lot less than this then the higher current could burn out the tracks on your PCB, much more than this and the heatbed will heat too slowly, or not at all.
Usage & Setup
Power connection
You can connect positive and negative either way, the board doesn't care about polarity. LED's do care about polarity, that's why you may have 2 on your board (so that one will light, whichever way you connect the power). Just make sure that you use the correct pads (12v or 24v) if your board has the dual power option.
Make sure that the wires you use can handle the current (remember, I = V / R)
Firmware settings (Marlin)
These are the relevant settings from configuration.h, the only ones you will need to adjust are sensor type for your model of thermistor (types for many common thermistors are listed in the table just above here in configuration.h), and PID. Min temp and Max temp are just safeguards, if the thermistor reads beyond those values then it is probably faulty (or you should bring your printer indoors).

PID autotune
If you are using PID then you should run autotune to make sure it is correctly calibrated for your bed.
As the comment (above) in Marlin says, run:
(90 degrees is just a good compromise between PLA and ABS temperatures, if you only ever print in one or the other then maybe pick the temperature you usually print at)
This should take your bed up to 90 degrees (as reported by the bed thermistor) and it will cycle around this temperature 8 times to 'learn' how much current is required for a given temperature change. Once finished M303 will give you values for Kp, Ki, and Kd, you put those values into your copy of marlin and upload to your controller.
PID (when properly tuned) only kicks in once the target temperature is reached, you can tell it is functioning because the bed LED flickers as PID turns the power on and off (you want it on constantly while the bed is heating up, any time the LED is off the bed isn't heating). So if you have a slow heating bed look at the LED, if it flickers before target temperature is reached then you probably haven't tuned PID correctly.
Temperatures
This article isn't a printing guide, but as a general rule you want to heat your bed to around the glass transition temperature (Tg) of the plastic you are printing (maybe a little higher for the first layer, to aid adhesion), you will need to experiment to find what works with your printbed, and your filament. Tg will vary according to the composition of the filament (dyes and fillers added by the manufacturer can all effect Tg) but as a rough guide you can try the following as a starting point:
PLA Tg 55C
ABS Tg 105C
Remember that this is the temperature measured at the bed surface, when you see people quoting temperatures of 70C for PLA they are probably talking about their thermistor reading, not the bed surface temperature.
Problem with cheaper PCB's
As Joseph Prusa says, cheap PCB's may have too thin, or irregular copper thickness, this can lead to insufficient power, or uneven heating over the board. In my own experience a Chinese PCB (Mk2b) from eBay had a resistance of 1.1 ohms (so heat output was ok), but it gave very uneven heat over the bed surface (YMMV), I now use a better quality etched PCB.
What is normal?
I don't know, but to give a basis for comparison, I have a good quality (etched, not plated) Mk2b heatbed, its resistance is 1.2 ohms, and I use 12v. The gap beneath is insulated with 2 layers (about the same thickness as 2 pieces of corrugated cardboard) of a type of plastic quilted insulation which was meant to fit on the wall behind a hot water radiator, it has a reflective silver face on the top.
From ambient (about 21 degrees):
- 70C takes approx 2 mins 45 seconds
- 125C takes about 13 minutes (I place a piece of corrugated card on top of the bed while heating)
(these are thermistor readings, ie, temperature underneath the bed, not on top of the glass)
Troubleshooting checklist
Antares autotune vst mac. Slow to heat:
- have you tuned PID
- did you check your boards resistance?
- check you connected 12v to the 12v pad on the PCB, not the 24v pad.
- is your power supply really supplying 12v under load?
NB: Many (most?) ATX power supplies require a load on the 5v rail in order to correctly regulate the 12v rail, if you find that 12v drops a lot when you apply a load (such as the heatbed) then try putting some load on 5v (a 47 ohm power resistor should be sufficient).
I just thought I'd throw out there that there is an easy way to massively improve your bed's temp stability. It's been mentioned in passing in other threads, but thought I'd make a clear thread for other newbies. The current SD3 beds are proper 'power beds' using Nichrome, making it possible to use PID effectively on the bed rather than just bang-banging to a set point on a resistor that is only centrally mounted. If you're unsure what type of bed you have, just check underneath feeling around the centre of the heat matting. If there is a noticeable lump - you have the 'older' style bed and are better off continuing as is as the hysteresis on that setup is huge. If you have no discernible lumps or crowns in your matting, congratulations, you have a 'power bed'.
EDIT: This should work with a qu-bd silicon mat as well as home made nichrome jobs as well or a PCB Heat Bed. I haven't tested anything other than on a standard bed, but the theory would continue to apply to other beds.
By enabling the
in Configuration.h of the firmware, along with
I've seen a change from a 'saw tooth' temp graph on my bed with a +/- 5oC swing, to having it sit flatline @ the set tempreature. Its been constant in an unenclosed setup for over 20 mins with nary a dip in sight. Trade off though was a slightly increased duration to reach the set point.
It is important when you setup the PIDTEMPBED that you move down and follow the comment from the code:
I first defined just a standard bed PID, compiled and uploaded the firmware. The next bit is to *manually* enable the bed and get it up to 90oC. If you try and run the M303 tune on a standard bed that is at ambient, it will actually timeout from the auto-tune function before it even gets close to 90o. So heat that bed up using manual, and then do the M303 E-1 command above. Once it runs, you'll get the same error condition as you do when pid-tuning the extruder. Disconnect/Reconnect and then make a note of the last 'Classic PID' details returned from the auto-tune.
You now need to create your own 'pidautotune' entry in Configuration.h. I just cut n pasted the previous settings, commented those out, and then set the defined values to what I got via the auto-tune.
So now my configuration.h in the relevant section (Lines 161-183 in current lawsy-marlin) looks like:
Auto Tune Heated Bed Marlins Club
You then of course need to recompile and reupload (a simple matter of ensuring RH is disconnected, then hitting upload in the Arduino IDE).
Heated Bed Pad
Alas, the 'Firmware Settings' option in RH is not applicable for Bed PID settings as they are not currently stored in EEPROM, only within the firmware source code .
Anyway - Doing the above has as I said taken my 'saw-tooth' temp and made it a straight flat line! Yay! This might help with warping considerably if the bed stays at a proper constant and doesn't have a 5oC deviation for periods.