Synchronized heat control

I am currently working on a project that requires me to use multiple small heaters to heat up a single piece of metal. The geometry of the piece doesn't allow me to use a single heater and there are attachments that preclude me from using an oven. I am using nichrome wire inside of heatsinks as the heaters and have solenoids activated via relays.

So, my first attempt was to use a K thermocouple welded under each heater and a PID controller for each thermocouple. After a lot of fiddling, I have a PID with basic Ramp/soak capability for each one successfully running. Where I am stuck now is on tying all of them together so that they don't get out of sync. In order for this to do what it needs to, each PID needs to stay within a few degrees of all the others. So, I am trying to work out the best way to communicate between the different PIDS and tell the ones that are at a higher temperature to pause at the current point in the ramp until the slower heating ones can catch up. Basically, I want to be able to slave the additional instances to the primary controller.

I am also trying to figure out if it would simply be better to put all the thermocouple boards on a single Arduino for this, as it might simplify the code somewhat; I am concerned that doing so would limit my ability to control enough other units, because there might need to be as many as 15 or 16 heaters individually controlled.

Basically, I will need to be able to set a temperature of around 100C that it will come up to without going over very much and then all of the individual sections will need to heat up at a controlled ramp of approx 150C/hr Max to approx 550C and then hold the temperature at that point for a set interval, after which the temperature will come down at no more than 100C/hr to 100C and then turn off.

I have a sort of mocked up version going now that works for each spot/heater, but I have had to add in a pause function and I have to sit and manually pause the higher temperature controllers repeatedly and the process takes about 12 hours on average total, so it is extremely tedious.

I don't mind starting over from scratch if I need to, but I really need to make this work well because it needs to be done every single day and sitting in front of it for 80 plus hours a week is driving me mad, lol.

I would be more than willing to spend some money to get this working.

Thank you in advance.

Overall it sounds doable.

One thing you have to worry about: how representative is the temperature right under the heating element for the bulk temperature of your object? That's one thing that I saw in your description as a potential issue. The heating element itself tends to be at a (much) higher temperature than the bulk of the material.

Where do the solenoids come in? Those are coming a bit out of the blue. You're talking about heating elements to heat up an object, and then there are these relay operated solenoids. What's the function of those?

So you have the PID control of a single heating element done, that's great. To keep them in sync, I would use a single setpoint/target temperature that is communicated to all these controllers. Change that setpoint over time to force the heating elements to follow, but at a speed that they can all follow fast enough. So for your 150 deg/hour change that could be a 0.1 deg increase every 2.4 seconds. For your first heating up you could make that faster of course.

It'd be easiest if you can fit all on one Arduino (a Mega has 15 PWM outputs - otherwise you may consider an external PWM pin extender).

Key to this approach is the setpoint: when at room temperature you don't immediately make it 100 C, asking the heaters to heat up as fast as they can, but you increase it at a speed the slowest heater can follow. The PID controls themselves should do the rest: speeding up the slow ones, slowing down the fast ones.

Have you worked out how much power you are going to need, 550C is pretty high to keep something at.
What is the volume of the area and the mass/volume of object your want to heat stress relieve?
By the way 550C at the radiation point is not 550C at the work you are trying to heat.
Do you have the entire heating area in an enclosure, kiln, to keep the heat energy in as you increase input power.

Your nichrome wire will need to be on a ceramic former so it keeps its shape and does not short out on adjacent turns or the heatsink.

This is a good place to use PID, but interfacing heavy power control to Arduino will be the main concern.

Can ypou post a diagram of the layout of the heater boxes and the object being

Tom.... :slight_smile:

Thank you for your response. The relays activate the solenoids which turn on the heaters. The relays I'm using are nowhere near the rating they would need to be to operate the heaters themselves (the heaters are operating at 60v and pull approx 34amps each). The thermocouples are physically welded to the metal directly under the center of each heater so that the hottest point is known and control goes from there; this is done so that we don't overheat the material past where it should be. Because it is held at the peak temperature for an extended period of time, the overall mass is all within a few degrees of the same (which we have tested extensively with additional thermocouples in various locations, including the inside of the vessel itself).

We have tried to choose a ramp rate that they could all reach without issue, but there are several problems that arise in doing so. Sometimes the vessels are of differing proportions and we end up choosing wrong for instance because it can be difficult to estimate it. We also have a heater fail sometimes and have to fix it or replace it and need to hold everything else steady while that is done. Also, the vessels have molten salt in them, in various formulations (which is what we do; we are doing research on the best salt formulas for a specific purpose, so we test a different formula every day and eventually plan to move up to testing several at a time). When the salt changes states or flows, it sometimes affects the way the overall system heats up. We have found that it is very simple to resolve these issues manually by simply pausing the temperature of the higher temperature areas while we wait for the ones that are behind to rise, but I am always interested in a better way to do things. If I have them all one Arduino, will it be able to handle a bunch of independent PIDs running? I am sorry for the long response, but while I have a basic or better understanding of the principles of what I need to do, I am relatively new to microprocessor control systems and the Arduino in particular.

Tom, thank you for your response as well. I can make a diagram tomorrow and will post. The heatsinks we are using to transmit the heat to the material are in fact ceramic on the portion that touches the material and every heater and all portions of the vessel not close to a sensor are covered in ceramic fiber Insulation (kaowool) 2inches in thickness). Each coil is a bit over 1.7ohms and is operated at 60V and we are currently running 11 coils, for a total of right under 23kw of total peak draw if all heaters are engaged at the same time. Engaging each heater is accomplished by a relay activating a large solenoid that completes the 60V circuit. We have 3 phase 480V transformers with 60V output from each leg AC and each leg is capable of powering 6 of the heaters (maybe more, but this is the limitation that has been set). The transformers are rated at 65KVA.

The concept is feasable.
Mega would be fine.

The Arduino can read from a K type theromcouple with an interface module.

The output is only 5V, but using an Opto-Coupler and MOSFET to control your relay would do the job.
Opto coupling would help isolate the controller from the heating element switching circuit which would present large switching interference when opening and closing the main contactors.

Keep the controller and K-type circuitry away from the main switching contactors, put then in a separate metal enclosure may be the best bet.

Forget the PWM outputs, they are to to fast for contactor operation.
You would configure your PID for ON/OFF operation over a much longer time period, seconds ,not mS.

Calculating ramp rates is basically some maths, and probably a RTC, Real Time Clock, to keep time, would be best included.

What sort of Visual/HMI are you thinking of?

Interesting project, I many years ago did a similar thing with a laboratory kiln and green bricks ramping up to 1100C in back in 24hours. (Using Ladder Programming)

Tom... :slight_smile:

Heatsink may not be the best description for the heaters. They are composed of formed alumina silicate and have grooves for the nichrome wire. On the side that does not connect with the vessel, there is also a layer of some mettalic alloy with fins, but in practice the entire unit is covered in insulation, so it's ability to act as a heatsink in practice is minimal.

We are shipped different vessels periodically, as our work by nature is experimental.

In the past, we were using off the shelf PLCs manufactured by a company called Eurotherm with basic PID capabilities. There was a separate controller for each set of 6 that would control the others, but these only gave us the ability to put in a set point and a ramp to reach that set point and did not have the ability to program in an entire run with the hold time and ramp down. These, as well, used the pause method for syncing together.

The solenoids we use are manufactured by Albright and are sometimes called contactors.

I’m almost embarrassed to say that we are using vastly overpowered human interfaces right now that we haven’t figure out how to get to talk to each other. They are Arbor IOT-800s.

The contactors themselves sit in a large metal box with the transformer about 50ft away from where our control room is.

We have the individual systems working well and the relays don’t have a problem activating the contactors. We also don’t have a problem controlling the ramp rate (although it took us months to get the settings right).

Where we are stuck is getting them to work together without having to manually pause each one to allow the others to catch up. The relays we are using are built into I/o boards that came with the iot-800s and plug directly into them. I can get the models off of them tomorrow, but that is not the problem area for us.

We are using MAX 31855 Quad K type shields on breakouts for thermocouple input and have compensation lead that runs to quartz insulated thermocouples that are physically welded to the vessel. Right now, each IOT-800 has one shield, so we have the ability to read 4 thermocouples, but are only using one for controlling the heater, although we do have additional thermocouples hooked up to see what the temperature is around the heater on some units.

The way we have this implemented is overly complicated and a bit of a mess to be honest.

In fact 60V, 34A is well within reach of solid state solutions. You'd need beefy MOSFETs or IGBTs, or maybe solid state relays. You definitely will need opto-isolation between the two with this kind of currents and a good heat sink. Not going to be cheap of course, but for this kind of project that's probably less of a concern.

Indeed PWM output won't go well with relays, it'd kill them very soon. But even at a few seconds on/off periods that'd be a lot of clatter for 15-16 relays.

For your "catching up" problem, another, very basic approach could be to keep track of which one has the lowest temperature, and then when any one heater is more than say 5 °C higher than the lowest, switch that one off until it is no more than 1°C higher than the lowest, then switch it on again (this as it takes a while for the heater to react, so don't wait until it's at the lowest point). That would be a few lines of code to handle. This is basically what your human controls are doing now.

The keeping it at a fixed temperature is more of a PID thing.

1100C is hot! That must have been quite a project. I thought we were working with some heat.

WVMARLE: yes, that is exactly what we are trying to do, to a T. I think this is the relay board we are using, but would have to check:

Basically, I am just having a hard time getting the different units to talk to each other. This has been a massive exercise in learning.

The relays have worked well. Solid state would certainly be less noisy; there is a pretty much constant clacking of one contactor or another. I will research SSRs. We tried some a couple or years ago, but had issues with them overheating and went back to the original contactors that came in the power packs. The equipment we are using was actually used in industrial heat treating using similar heating elements and is rather robust. It's just implementing new controls to make it do exactly what we want that is tricky (for me anyway). We have another division that is using flexible ceramic heaters at 80v/45Amps and they are talking about switching us over to those, which will almost certainly happen as soon as I get the bugs worked out of this system, lol. Those units use the exact same contactors.

We do work under a budget, although we don't have to be too cheap. If we had someone that was really good at using these Arduinos, we probably have enough pieces to build this several different ways. Just getting to his point has taken a long time and we literally have a room full of different HMI's, relay boards, I/O boards, shields, individual Arduinos, power supplies, etc.

A quick look on Digikey showed me a few MOSFETs at about USD 3 a piece that can handle your current with on resistance of about 4 mΩ, which means they dissipate "only" about 10W at a 34A current. There are MOSFETs with an even lower on resistance, but the price goes up of course. You'd need a few other cheap components such as resistors and optocouplers, plus maybe a gate driver, though you're not doing PWM so probably not necessary. I guess you'd end up with about USD 100-150 total in new parts.

DC switching SSRs are usually also based on MOSFETs, so have the same heat problem and also need a heat sink. This heat is probably going to be your biggest challenge (the advantage of your relays is that they do not produce heat).

The rest of the project is relatively easy. You already know how to read your thermocouples, just have to connect all to a single Arduino (straightforward assuming you have enough analog inputs).

Another approach would be to keep the current rats nest, and have the things communicate. If the devices are reasonably close together you could connect them using I2C to a single master. That master would then regularly (ever second or so) query all the controller Arduinos for the temperature of the various probes; then based on that tell the slaves which heaters to switch on and which to switch off.

While you can't use a kiln or an oven, there are thermal blankets that may be wrapped around your device to control the escaping heat.