Can a PWM with 1% resolution in a PID heater loop achieve better than 1% temperature accuracy?

It depends on the time constant of the load. A heated load will often respond in 10s of seconds.

If you generate 30% PWM for one second, then 31% PWM for the next second, that will look like 30.5% averaged over several seconds.

Oven thermostats tend to operate a minute on, a minute off, and still achieve oven temperatures stable to single digits of C. A 1% PWM adjusted once per second could do several orders of magnitude better than that.


Given the fact that relative to other regulations (voltage, current, etc.), temperature regulation is quite slow, what you can do is use a microcontroller (i'm guessing you already do), but add a cyclic variation of the PWM signal's width.

imagine that for your system to be stable, you need to have a pulse width of 3.8%. you simply have to apply a 3% duty cycle during 20% of the time, and 4% during the remaining 80%. doing that over one second or so should allow you to achieve the precision you need.

Oddly worded question, but what I think you are asking is will the temperature of the load increment by 1% steps with a PWM of 1% step resolution. i.e. 2.828C per step.

Although it sounds like it should, the answer to that is probably no.

The reason being, in order for that to happen there needs to be a 1 to 1 relationship between power in and temperature rise in the load. However, depending on the geometry and environment of the load, that is unlikely to be true.

In order to heat something to a specific temperature you need to add in enough power to balance the power the object loses to it's surroundings at that temperature. The problem is, as the temperature rises, the heat transfer efficiency from the surface of what you are heating normally changes too.

enter image description here

For a small temperature range, power to temperature, can be considered almost linear, but 300C is not a small temperature range.

How linear whatever it is you plan on heating is, and how accurate 1% needs to be (i.e. 1% plus or minus what?), is of course, beyond the scope of this question, and answer. But I would suspect you will need to put in a LOT more incremental power to get it up the last 50C than you did to get it up to 70C.


It is very unclear from your question whether you have included temperature sensing in your control loop. I suspect, since you asked the question, that the answer to that is no, hence the focus in this answer.

If you need to set the temperature accurately under all conditions, you really would need to tie that measurement back into the system control loop. At that point you can time vary the PWM modulation to hold the temperature as accurately as you can measure it, all be it with some thermal lag and hysteresis.

But of course, measuring temperature accurately on a large object can be a challenge all to itself.