Heating(PID+SSR)

Ok guys. I am trying to heat up a material using strip heaters. The strip heater is rated 120 V AC with a power of 325 Watts.

Now tell me if I am going about this correctly... I will have a 120 AC input to the Solid State Relay (SSR) as well as a PWM that is being controlled by a PID on my Arduino. The output of the SSR will be connected to the heating element. That is how it works right?

Also, based on my understanding... is it true that I am using an SSR in order to turn the heating on/off to control the temperature (heat output) with the PWM?

And at last, how would I go about finding an SSR that would work with this heating element?

Thanks in advance! :slight_smile:

nukegara_blue:
Ok guys. I am trying to heat up a material using strip heaters. The strip heater is rated 120 V AC with a power of 325 Watts.

Now tell me if I am going about this correctly... I will have a 120 AC input to the Solid State Relay (SSR) as well as a PWM that is being controlled by a PID on my Arduino. The output of the SSR will be connected to the heating element. That is how it works right?

Basically yes. The AC wiring would be 120vac line wire to SSR output terminal, other SSR output terminal to heating element, other end of heating element to AC neutral wire. Arduino digital output pin to SSR positive input terminal and negative input terminal to a arduino ground pin.

Also, based on my understanding... is it true that I am using an SSR in order to turn the heating on/off to control the temperature (heat output) with the PWM?

The standard arduino analogWrite PWM output is not suitable to controlling these kinds of SSR as the switching frequency is too fast and the PWM output signal is not synchronized with the AC waveform. The P&ID output signal should form it's own slow frequency PWM output using just digitalWrite commands to work with these kinds of SSR relays. The P&ID library you use should explain how it will handle developing it's own PWM output signal.

And at last, how would I go about finding an SSR that would work with this heating element?
They are available lots of places. Here is just one example:
http://www.ebay.com/itm/SSR-25-DA-Solid-State-Relay-For-PID-Temperature-Controller-25A-Output-24V-380V-/271092328688?pt=LH_DefaultDomain_0&hash=item3f1e5ca8f0
Lefty
Thanks in advance! :slight_smile:

retrolefty wrote:
The P&ID output signal should form it's own slow frequency PWM output using just digitalWrite commands to work with these kinds of SSR relays. The P&ID library you use should explain how it will handle developing it's own PWM output signal.

he he, lefty, I think you mean PID, not P&ID, which is a Process & Instrumentation Diagram. PID, is an acronym for Proportional, Integral Derivative.

But yes, the Arduino PWM function will be way too fast for most readily available SSR's, in that the PWM period is far too short.

Using digital write is a way around the problem.
For PID I use from the Playground, TimerOne or TimerThree, depending on the board, and use the PWM function provided by that.
It works very well indeed.

nukegara_blue:
Remember to understand how you wish your PID to work in terms of whether it's operating in heating or cooling mode.
You effectively change this in your PID by swapping your setpoint and present value input terms to alter the sign of the PID internal error term. Otherwise if you have it incorrect, you will have a positive feed situation, eg, get hotter and hotter.

It might be that for your project, you may only need the P or at most, the P and I terms to have it controlling the temperature as well as you can. By this I mean, just try initially setting the P term with the I and D terms set to zero.
Depending on the PID control strategy you employ, P will be either a 'gain' or a 'bandwidth' term.

Usually a PID code block will express an output as a value, either as an integer in a range, eg. 0 - 16383 or as a percentage, eg. 0 - 100%
Remember that when setpoint equals present value, the output will remain at that fix value, it will only deviate as the present value moves away from setpoint.


Paul