Current or voltage control by PWM?

I need to control temperature of a heater. The heater uses 12 to 24V DC. I like to control the temperature by regulating the current (>20A) or voltage (from 12 to 24V) to the heater instead of using a SSR. I used PWM to control an SSR, then the voltage or duty cycle supplied to the heater. It seemed work but I have read comments that this would use out the lifetime of the SSR. It seems to me a current amplifier or something like that might be one way to do. May anybody suggest something for the purpose or a different way to do it? Thanks.

That’s a lot of current.

How tight a temperate window is needed ?

Perhaps just on/off control is needed ?

Does the voltage need to change 12v/24v ?

A MOSFET or two might be a solution for this.

Suggest solid 24v and a MOSFET.

hi @supermulan88

What voltage and type of power is available to supply to this heater?
Please post more details of your project.
With little information about your project, it is difficult to give good help.

Can you indicate where you read this recommendation? (Could be the link).

RV mineirin

the link to the comments:
Can you PWM a relay? - Using Arduino / General Electronics - Arduino Forum

The power to the heater is max 24V but I want to vary the power, either the current or the voltage, to the heater so to control the temperature when it stabilized. I want directly vary the power to the heater without using a PID, and vary the power based on feed back from the heater. I can change the PWM duty cycle to SSR to control the total power to the heater, but do not want to use out its lifetime too soon after the read the comments.


If you don’t need tight PID control, try 24v DC, logic MOSFET and a temperature sensor.
A fan can be helpful.

Use C1 with motor3 and D3 replaced by your heater; change power supply from 12 to 24v.

Hi, @supermulan88
Welcome to the forum.

Please read the post at the start of any forum , entitled "How to use this Forum".

Can you please tell us your electronics, programming, arduino, hardware experience?

What is the power rating of the heater.
Can you please post any link to data/specs.
24V is not a power rating.

You will be controlling the current to the heater, not the voltage.
If you use a suitably rated DC SSR, you will not prematurely wear it out.

Place a suitably sized fuse in the 24V supply.
By the sound of it the heater element is quite large, can you measure its cold resistance.
You may have to current limit or soft start the element from cold as its cold resistance may be lower than its heated resistance.

Thanks.. Tom.. :smiley: :+1: :coffee: :australia:


Here is 24V heater control I just built for a 30A heater controlled by PWM from a 3v3 board

I see no benefit in using PWM on a 500W heater (24V * 20A) as it will have a large heat capacity, so if air cooled its temperature will change little in a short space of time.
@drmpf I'm interested - thats a nice piece of engineering, why was it an advantage to use PWM in that particular case??
I'm no expert on MOSFETS but AFAIK they are energy efficient when ON or OFF but lose energy during the transition. (happy to be corrected there!)
So if its just a conventional air cooled heater, why not just do what a normal central heating system does, and turn it on if the temp is too low, and off when it is OK.
You could use a MOSFET or even a dc relay.

The temperature of the head is actually being controlled by a thermocouple to melt down into a block of ice, so PWM provides the variable power to control the temperature of the head.

You are correct about a normal heater. The usually have a lot of thermal mass, but I have a room heater the is just a coil of wire in the air. BUT.. in that case the room air (and walls etc) provide the thermal mass.
See this project BLE Room Temperature controlled Heater
Actually the first attempt used a normal oil filled heater (lots of thermal mass) and just turned it on and off via an SSR. However it turned out that PWM (or the heater's own thermostat control) would have been better, because the heater just went to full power for 10mins trying to heat the room and then cycled off for ~40mins, and the metal body expanded and the seal started to leak oil :frowning:

1 Like


The max power of the heater is 24V x 20 A. What I want is to control the current by changing the PWM voltage through some kind device, similar to a current sense amplifier. I tried 3-32V 40A DC SSR, but stopped after reading the comments that using PWM to control SSR was not good since it would use out the life time of the SSR very fast. The heater is an induction heater.

Thus the real question is how to vary the power to the induction heater to control the temperature. Thanks.

Slow PWM is the way to drive a heater - typical SSRs won't switch fast enough for kHz PWM waveforms.

Try something around 0.1Hz PWM (this is done in software typically).