1 2 3
GameboyRMH
GameboyRMH MegaDork
3/14/17 10:08 a.m.

OK I think I understand what you're trying to do now. You basically have a heater that overshoots the target temperature due to this cooldown cycle where it dumps extra heat into the room every time it runs.

The trouble is that the system you have in mind to fix it is unstable, no matter what equipment you implement it with. You want it to heat the room if it falls to your desired temperature, and then stop heating if it gets even colder than that. So once the desired temperature is reached, the heater will run flat-out until the heat in the room causes something to fail. I think you may be trying to run this system from a temperature reading that's only possible to get in your imagination.

To fix this you have two options: Settle for a temperature level that spikes occasionally, perhaps at a lower, comfortable temperature; or do away with the cooldown mode, which is probably not good for the heater.

Edit: Maybe I'm thinking about this wrong, and you're not trying to control the room temperature with this system, but to reduce the cooldown running on the heater?

If this is what you're trying to do, you can use the same controller I linked to in cooling mode, high point to room temperature, low point to off temperature, hysteresis to 0 (or 1 if the fan flickers on and off).

java230
java230 SuperDork
3/14/17 10:16 a.m.

Yes so what I want is this for a cycle:

A desired room setpoint (like a normal T-Stat) Turn heat on when temp falls 5 (just for example, maybe less?) degrees, once heat is on, let heater to to 2 degrees below set point and turn off. Reset cycle. Heter automatically controls its own cool down cycle, so it would run and continue to heat after the off signal is sent. Its just an open/closed contact. Close contact heater initiates lighting/startup, runs, at off signal, fuel is cut, flame is out, then fan runs to cool burner. (its a diesel fired heater)

So setpoint is 65, heat on at 60, heat off at 63, reset cycle. So heater would again be kicked on at 63.

GameboyRMH
GameboyRMH MegaDork
3/14/17 10:27 a.m.
java230 wrote: So setpoint is 65, heat on at 60, heat off at 63, reset cycle. So heater would again be kicked on at 63.

OK, so you're not trying to mess with the cooldown operation from what I understand. You want to let the heater do its cooldown cycle but keep the room at a comfortable level, which means accepting some sharp temperature swings, even if they're small.

So why does the "setpoint" matter to the controller? It's valid to your goal, it's the temperature you want the room to be at, but the controller has no need to know about it. You just need to know how much the heater is likely to overshoot and set the on and off temperatures somewhere below it. You probably also want a lower hysteresis than the typical home thermostat.

To achieve this, you can use the controller I linked to in heating mode, high point to 63, low point to 60, hysteresis to 0 (or 1 to prevent power flickering if necessary). Fine-tune the high and low points up or down so that the overshoot keeps the room as close to 65 as possible.

java230
java230 SuperDork
3/14/17 10:52 a.m.

In reply to GameboyRMH:

This will cause a big temp swing though, yes we will hit 65 in the room, but them it will have to drop to 60 before the heat kicks back in. (no idea what a typical temp swing is on a "standard" Tstat)

Yes we can simply set the temp lower, but it causes much larger temp swings.

But yes controller does not necessarily need to know the temp. Another option is to add a timer to the output of the heater, IE tstat tell heater to turn on, but heater is only allowed to run for 2 mins. This might not work well though... IE when we first get to the truck it may take 5 mins run time to warm it up. It would lock into "off" mode because the Tstat would never reset. Nevermind.....

GameboyRMH
GameboyRMH MegaDork
3/14/17 10:57 a.m.

Yeah the only thing you could do about the temp swings is to interfere with the operation of the cooldown mode to smooth them out.

Typical temp swings on a full home heating system are tiny, maybe 2degF at most.

codrus
codrus SuperDork
3/14/17 11:07 a.m.
GameboyRMH wrote: To fix this you have two options: Settle for a temperature level that spikes occasionally, perhaps at a lower, comfortable temperature; or do away with the cooldown mode, which is probably not good for the heater.

What's needed is a controller that models the behaviour of the heater, one which knows about the cool down mode, can estimate how much residual heat is in the unit, and will shut off the unit early as it approaches the target temperature so that it can coast up to hit the goal. You can't do it just based off measured temperature and target temperature, you also need the history of how long the heater has been enabled in order to estimate how much additional heat will be coming out during the cool down mode.

This isn't something you're likely to find in an off-the-shelf consumer-grade thermostat. An industrial controller could probably do it, but I think DIY is the right approach.

java230
java230 SuperDork
3/14/17 11:29 a.m.
codrus wrote:
GameboyRMH wrote: To fix this you have two options: Settle for a temperature level that spikes occasionally, perhaps at a lower, comfortable temperature; or do away with the cooldown mode, which is probably not good for the heater.
What's needed is a controller that models the behaviour of the heater, one which knows about the cool down mode, can estimate how much residual heat is in the unit, and will shut off the unit early as it approaches the target temperature so that it can coast up to hit the goal. You can't do it just based off measured temperature and target temperature, you also need the history of how long the heater has been enabled in order to estimate how much additional heat will be coming out during the cool down mode. This isn't something you're likely to find in an off-the-shelf consumer-grade thermostat. An industrial controller could probably do it, but I think DIY is the right approach.

Exactly, I dont need it to be perfect, but having both roof vents open and the heat cycling to keep it sorta the same temps is not a good long term solution.

I think if I can shut off x degrees before setpoint that will be good enough. I think Arduino is the answer

GameboyRMH
GameboyRMH MegaDork
3/14/17 11:35 a.m.

You will have a more stable temperature if you use the Arduino and calculate the amount of residual heat in the system, but assuming the temperature of this room would otherwise stay fairly stable, a plain ol' thermostat would be very nearly as good - you might get a big overshoot if the room is heated up from being very cold, but once it's just maintaining the temperature, there won't be much variation.

cliff95
cliff95 New Reader
3/14/17 11:48 a.m.
codrus wrote: This isn't something you're likely to find in an off-the-shelf consumer-grade thermostat. An industrial controller could probably do it, but I think DIY is the right approach.

Coming from the homebrewing world, we use PID controllers for electric heating elements so that it will hit the set-point without going over, same theory as a sous vide cooker. There are PID libaries out there for the arduino (http://playground.arduino.cc/Code/PIDLibrary), and auber builds some pretty nice controllers for not a lot of cheddar - http://www.auberins.com/

Although that would only really work on a heater that doesn't mind being turned on/off quite quickly, a gas burning appliance probably wouldn't like it.

For an out of the box thermostat - something that learns or has a pre-heat mode should do it. The nest has an option where will turn on early (which varies with inside/outside temp) so the house gets to the set point at the set time. I can't remember if it has a mode on the heat side to turn off the burner, but keep the fan running for the residual heat - but it will do that on the cooling side (a/c condenser turns off before the fan which runs for a couple extra minutes to use up the last of the cooling from the interior coil.)

java230
java230 SuperDork
3/14/17 11:54 a.m.

In reply to cliff95:

Yeah looked at PID controllers, but they are too precise for what I am looking for. Heater really doesn't want to be cycled rapidly. It has a couple minute cool down after each cycle at a minimum.

codrus
codrus SuperDork
3/14/17 1:48 p.m.

Yeah, I don't think PID is the right solution here, this process is too slow and PID is a pain to tune. Also, the input is binary (heater on/off), rather than something with a lot of intermediate states.

2002maniac
2002maniac Dork
3/15/17 12:58 p.m.

Could a more appropriate heater be implemented? I'm assuming this is for your RV project?

java230
java230 SuperDork
3/15/17 1:42 p.m.
2002maniac wrote: Could a more appropriate heater be implemented? I'm assuming this is for your RV project?

Not at this point... I could likely find a 2k watt version, and it should bolt to the same holes, but thats $$. I can live with temp swings if I need to.

I have been wanting to find an arduino project anyway

T.J.
T.J. UltimaDork
3/15/17 2:03 p.m.

It sounds like you could save a lot of the hassles involved and just set your thermostat a little lower so that the overshoot temperature is as hot as you want it to get in the room. The thermostats in my house have an adjustable hysteresis settings and they are just regular old thermostats, not fancy programmable ones.

I'm not seeing how using an arduino will make any difference other than you get to learn about arduionos.

java230
java230 SuperDork
3/15/17 2:20 p.m.
T.J. wrote: It sounds like you could save a lot of the hassles involved and just set your thermostat a little lower so that the overshoot temperature is as hot as you want it to get in the room. The thermostats in my house have an adjustable hysteresis settings and they are just regular old thermostats, not fancy programmable ones. I'm not seeing how using an arduino will make any difference other than you get to learn about arduionos.

Because this causes a huge temp swing. Set temp to 60, at 58 it will turn on (assuming 2 degree hysteresis) Turns off at 62, cool down cycle drives temp to 68. Heater doesn't come on again till temp drops 10 degrees back to 58.

alfadriver
alfadriver MegaDork
3/15/17 4:19 p.m.

BTW, how good of a programmer are you?

I'm having some major issues getting someone else's project to even compile, let alone run, on my Arduino.

Lets just say that it's nowhere near as straight forward as many make it out to be.

java230
java230 SuperDork
3/15/17 4:20 p.m.
alfadriver wrote: BTW, how good of a programmer are you? I'm having some major issues getting someone else's project to even compile, let alone run, on my Arduino. Lets just say that it's nowhere near as straight forward as many make it out to be.

I have done exactly Zero with anything arduino related.

T.J.
T.J. UltimaDork
3/15/17 5:26 p.m.

In reply to java230:

To use your example, set at 60F, turns on at 58F then off at 62F then goes up to 68F as the furnace cools down. Then as the room starts to cool you want to turn the furnace on at something more like 60F and back off at 62? If you have it come back on at a higher temp to minimize the temperature swing, say 65F, you are already above the turn off temp and the temp will be going up, so what will turn it off? You'd need another off setpoint above 65F and then then cool down swing would take you 6F higher. Your room would just get hotter and hotter. If you get a 6F heat up after the furnace is off, that is your smallest temperature swing you can get. I guess I'm not seeing how you want it to operate to make the temperature swing any less. Seems like the issue is the furnace and not the thermostat.

I may just be missing the concept here and I'm not trying to shoot down your idea.

alfadriver
alfadriver MegaDork
3/15/17 5:33 p.m.
java230 wrote:
alfadriver wrote: BTW, how good of a programmer are you? I'm having some major issues getting someone else's project to even compile, let alone run, on my Arduino. Lets just say that it's nowhere near as straight forward as many make it out to be.
I have done exactly Zero with anything arduino related.

You might consider an alternate plan, then.

java230
java230 SuperDork
3/15/17 7:37 p.m.

In reply to T.J.:

Yeah close, except I want it to turn off Before the set point gets hit. Then reset the cycle.

May be completely over complicated.

We are going to use it a few times before anything happens.

java230
java230 SuperDork
3/15/17 7:38 p.m.
alfadriver wrote:
java230 wrote:
alfadriver wrote: BTW, how good of a programmer are you? I'm having some major issues getting someone else's project to even compile, let alone run, on my Arduino. Lets just say that it's nowhere near as straight forward as many make it out to be.
I have done exactly Zero with anything arduino related.
You might consider an alternate plan, then.

I'm sadistic ive been wanting to play with these things forever

codrus
codrus SuperDork
3/15/17 8:24 p.m.
java230 wrote:
alfadriver wrote:
java230 wrote:
alfadriver wrote: BTW, how good of a programmer are you? I'm having some major issues getting someone else's project to even compile, let alone run, on my Arduino. Lets just say that it's nowhere near as straight forward as many make it out to be.
I have done exactly Zero with anything arduino related.
You might consider an alternate plan, then.
I'm sadistic ive been wanting to play with these things forever

Don't start with someone else's project -- start with a tutorial. :)

alfadriver
alfadriver MegaDork
3/16/17 6:37 a.m.
java230 wrote:
alfadriver wrote:
java230 wrote:
alfadriver wrote: BTW, how good of a programmer are you? I'm having some major issues getting someone else's project to even compile, let alone run, on my Arduino. Lets just say that it's nowhere near as straight forward as many make it out to be.
I have done exactly Zero with anything arduino related.
You might consider an alternate plan, then.
I'm sadistic ive been wanting to play with these things forever

I thought it would be cool, too.

But have found out that there appears to be some secret handshakes to use other people's projects. Or the IDE broke in the last year, making the old sketches not usable.

It's supposed to be basically C coding. But there's no real sense of why things don't work.

java230
java230 SuperDork
3/16/17 9:22 a.m.

In reply to alfadriver:

I guess I will find out. I did some very very basic C++ a decade or more ago, none of which I remember. This is kinda why I was thinking going Pi, supposed to be much easier to program.

This isn't something that needs to work right away, I can mess with it for awhile. My wife seemed to think I was nuts when I tired to talk to her about it....

codrus
codrus SuperDork
3/16/17 10:59 a.m.
alfadriver wrote: But have found out that there appears to be some secret handshakes to use other people's projects. Or the IDE broke in the last year, making the old sketches not usable.

The most likely reason for why it wouldn't work is that you don't have the same versions of the same libraries installed as the person who wrote it.

1 2 3

You'll need to log in to post.

Our Preferred Partners
gDxZayVb9nOOpMvnkcUBeKSUzr2bMPEkYkaIgdCxLe3j5xue86056MHSgpGDEZyt