Simple DC voltage modifier

D

Dan

Guest
Hi,

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)

daniel
 
On Fri, 1 Oct 2010 08:49:00 -0700 (PDT), Dan
<danpat@danpat.net> wrote:

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)
I didn't read the PDF and I don't know the current drive
requirements for your 10V outputs. Some 0-10V inputs are on
the order of 100k ohm, though. So currents should, guessing,
should be on the order of 100 microamps. Is that about
right?

I'm not sure what's easier for you -- microcontroller or
otherwise. But I believe three cheap BJTs and four resistors
plus a bipolar power supply providing +15V and -15V would do
it without the micro. And some tinkering to nail the offset
and gain. What kind of power supply might be convenient?

Jon
 
On Fri, 1 Oct 2010 08:49:00 -0700 (PDT), Dan <danpat@danpat.net> wrote:

Hi,

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)
Could be done with an op amp, although you'll need to find a way to
power it. For values above 2.2 V you have a linear relationship where
V.out = 0.68 * V.in + 12.7. With a single supply op amp, you'll need a
gain greater than one so say we divide the input in half, yielding V.out
= 1.36 * V'.in + 12.7. From there, it's a fairly straight line (no pun
intended) to the resistor values needed for this.

Rather than banging it all out here, I'd recommend that you pick up the
free PDF "Op Amps for Everyone" from TI at
http://focus.ti.com/lit/an/slod006b/slod006b.pdf It's good reading if
you need a refresher. Specifically, section 4.3.1 addresses just this
problem of a V.out = m * V.in + b design.

--
Rich Webb Norfolk, VA
 
"Dan" <danpat@danpat.net> wrote in message
news:1f1fb7f6-35db-4583-8b8c-cabbfe392318@h7g2000yqn.googlegroups.com...
Hi,

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)

daniel
If I interpreted your post right, there is a point where the controller's
output and the boiler's response agree.
That would be 4.578 volts. The controller is demanding 45.8 degrees and the
boiler will provide 45.8 degrees.
You can check my calculations. It's a simple linear thing.
So I would say use a voltage reference of 4.578 volts and an op amp wired as
a difference amplifier. Let Vc = controller voltage, and Vout = the
difference amplifier's output.
You want Vout = 1.543 (Vc-4.578)
 
"Michael Robinson" <nospam@billburg.com> wrote in message
news:g0qpo.13785$nl4.1085@newsfe21.iad...
"Dan" <danpat@danpat.net> wrote in message
news:1f1fb7f6-35db-4583-8b8c-cabbfe392318@h7g2000yqn.googlegroups.com...
Hi,

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)

daniel

If I interpreted your post right, there is a point where the controller's
output and the boiler's response agree.
That would be 4.578 volts. The controller is demanding 45.8 degrees and
the boiler will provide 45.8 degrees.
You can check my calculations. It's a simple linear thing.
So I would say use a voltage reference of 4.578 volts and an op amp wired
as a difference amplifier. Let Vc = controller voltage, and Vout = the
difference amplifier's output.
You want Vout = 1.543 (Vc-4.578)
Correction: Vout = 1.543 (Vc - 1.611)

You can use an adjustable voltage regulator like the LM317 to get the 1.6
volt reference. Then set your op amp difference amplifier resistors to give
you a gain of 1.543.
 
On Oct 1, 10:59 am, Jon Kirwan <j...@infinitefactors.org> wrote:
I didn't read the PDF and I don't know the current drive
requirements for your 10V outputs.  Some 0-10V inputs are on
the order of 100k ohm, though.  So currents should, guessing,
should be on the order of 100 microamps.  Is that about
right?

I'm not sure what's easier for you -- microcontroller or
otherwise.  But I believe three cheap BJTs and four resistors
plus a bipolar power supply providing +15V and -15V would do
it without the micro.  And some tinkering to nail the offset
and gain.  What kind of power supply might be convenient?

Jon
The controller manufacturer docs say "0-10 V Minimum 2500ohm" for the
output, so I assume that means the controller can supply max 4mA. The
boiler docs don't say how much it needs, but it seems safe to assume
that it's less than 4mA.

There are some 12V and 24V wires floating around that I can hook
into. Alternatively, I was considering plain old alkaline batteries
if I could come up with something that would give me reasonable
battery life (i.e. >1 year).

Ideally, I'd like to power it from the 0-10V supply itself and keep
the circuit entirely in-line, but that may not be feasible. The
boiler input has some hysteresis, so the "converter" wouldn't actually
need to put anything out until the input rose above 2.2V, and cutting
out anywhere below that would work fine too. There are several low
power, low cost microcontrollers that'll run from 1.8V which should do
the job.

The output voltage would only rise above the input when the input
reaches about 7V, and the maximum difference is going to be about
1.5V. The rest of the time, the output will be lower than the input.
 
"Dan" <danpat@danpat.net> wrote in message
news:1f1fb7f6-35db-4583-8b8c-cabbfe392318@h7g2000yqn.googlegroups.com...
Hi,

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)

daniel
Go to this link
http://webpages.ursinus.edu/lriley/ref/circuits/node5.html
and click on "differential amplifier."
Apply 1.61 volts at V1 and apply the controller output at V2.
Set R2/R1 ratio at 1.543
You are going to need a power supply a few volts higher than the controller
output. For 100* C the op amp output will be nearly 13 volts for a
controller voltage of 10 volts. Of course your boiler isn't going to ask for
quite such a high temperature, but let's use the figure of 3 volts to guide
us.
If your op amp has rail-to-rail output, you need to run the op amp on a 13
volt power supply. For an ordinary 741 op amp or some such you will need
something like 15 volts. Depending on how close to the top rail your op amp
output gets.
 
On Oct 1, 11:49 am, Dan <dan...@danpat.net> wrote:
Hi,

  It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

  I've got a heating system control and a hot water boiler that need
to talk.

  The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
  The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

  However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V.  At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C.  Both scales are basically linear within that
range.  Details on the scale differences are available here:http://www.tekmarcontrols.com/sb/sb046.pdf

  I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler.  Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

  I've been scratching my head for a couple of days, and I can't come
up with anything simple.  A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible.  This might be hard as above
about 7V, the output would end up needing to be higher than the input.

  Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)

daniel
Sounds like an opamp (or two) and a few resistors would do it. You
need to have an offset and then a scale change. That's pretty easy.
Powering it off the input line is going to be a problem since a lot of
the time you need to output a voltage larger than the input voltage...
I suppose you could add some sort of DC-DC converter if there was
enough current available from the source.

George H.
 
On Fri, 1 Oct 2010 10:39:04 -0700 (PDT), Dan
<danpat@danpat.net> wrote:

On Oct 1, 10:59 am, Jon Kirwan <j...@infinitefactors.org> wrote:
I didn't read the PDF and I don't know the current drive
requirements for your 10V outputs.  Some 0-10V inputs are on
the order of 100k ohm, though.  So currents should, guessing,
should be on the order of 100 microamps.  Is that about
right?

I'm not sure what's easier for you -- microcontroller or
otherwise.  But I believe three cheap BJTs and four resistors
plus a bipolar power supply providing +15V and -15V would do
it without the micro.  And some tinkering to nail the offset
and gain.  What kind of power supply might be convenient?

Jon

The controller manufacturer docs say "0-10 V Minimum 2500ohm" for the
output, so I assume that means the controller can supply max 4mA. The
boiler docs don't say how much it needs, but it seems safe to assume
that it's less than 4mA.

There are some 12V and 24V wires floating around that I can hook
into. Alternatively, I was considering plain old alkaline batteries
if I could come up with something that would give me reasonable
battery life (i.e. >1 year).

Ideally, I'd like to power it from the 0-10V supply itself and keep
the circuit entirely in-line, but that may not be feasible. The
boiler input has some hysteresis, so the "converter" wouldn't actually
need to put anything out until the input rose above 2.2V, and cutting
out anywhere below that would work fine too. There are several low
power, low cost microcontrollers that'll run from 1.8V which should do
the job.

The output voltage would only rise above the input when the input
reaches about 7V, and the maximum difference is going to be about
1.5V. The rest of the time, the output will be lower than the input.
As others point out, an opamp is the obvious modern solution.
With caveats. One of them being whether or not they are
designed for inputs very close to the (-) rail voltage, or
not. The wonderful thing about them is lots of gain for
linearity far beyond what you need, I suspect, and very
simple calculations and no real need for tweaking since
everything can be worked out in advance... close enough for
your needs.

You want 0V out to become 0V in and, I gather 10V out to
become about 8.08V in. (This is where I think Michael
Robinson gets this wrong... but maybe it is me.)

Some of your points conflict a bit with others. You mention
the possibility of battery, but only with longish life. But
that conflicts with something else you said... that it is
safe to assume the input requires less than 4mA. Anything
near 4mA, multiplied by a year, comes in near 35 amp-hours.
Batteries do that, I suppose. But that's a lot all the same.
And that assumes 0% for everything else... rather unlikely.

So either give up on the 4mA output or else the battery idea.

Is it possible to measure the current with an ammeter there?
As I mentioned earlier, I did take a look at one device on
the web and it suggested to me that standard inputs are 100k
ohm but that outputs should assume 20k ohm because sometimes
there is more than one input tied in.

The only reason all this is important is if you decide you
want a discrete BJT option rather than an opamp. If you
decide for an opamp, you probably don't need to worry as
much. But if I propose something BJT-wise, I need to know.
Opamps get to use dozens of BJTs. I'm stuck reaching for the
least case, so more factors need to be worked out.

Jon
 
On Fri, 1 Oct 2010 10:39:04 -0700 (PDT), Dan <danpat@danpat.net>
wrote:

On Oct 1, 10:59 am, Jon Kirwan <j...@infinitefactors.org> wrote:
I didn't read the PDF and I don't know the current drive
requirements for your 10V outputs.  Some 0-10V inputs are on
the order of 100k ohm, though.  So currents should, guessing,
should be on the order of 100 microamps.  Is that about
right?

I'm not sure what's easier for you -- microcontroller or
otherwise.  But I believe three cheap BJTs and four resistors
plus a bipolar power supply providing +15V and -15V would do
it without the micro.  And some tinkering to nail the offset
and gain.  What kind of power supply might be convenient?

Jon

The controller manufacturer docs say "0-10 V Minimum 2500ohm" for the
output, so I assume that means the controller can supply max 4mA. The
boiler docs don't say how much it needs, but it seems safe to assume
that it's less than 4mA.

There are some 12V and 24V wires floating around that I can hook
into. Alternatively, I was considering plain old alkaline batteries
if I could come up with something that would give me reasonable
battery life (i.e. >1 year).

Ideally, I'd like to power it from the 0-10V supply itself and keep
the circuit entirely in-line, but that may not be feasible. The
boiler input has some hysteresis, so the "converter" wouldn't actually
need to put anything out until the input rose above 2.2V, and cutting
out anywhere below that would work fine too. There are several low
power, low cost microcontrollers that'll run from 1.8V which should do
the job.

The output voltage would only rise above the input when the input
reaches about 7V, and the maximum difference is going to be about
1.5V. The rest of the time, the output will be lower than the input.
What you are writing about is a simple Op Amp circuit - they can
adjust the Span (range of the signal) and Zero (what voltage the
"baseline" is, if not actually Zero).

You sound as if this is out of your experience - no doubt you could do
what you want, but it will take some learning... The "Op Amp
Cookbook" has it all.

A micro controller is a bit over kill. You want easy, check out the
picaxe controllers. They are ideal for this application. The 08M
(all you need) sips current in the micro amp range so batteries will
last (but you do have voltages available and it would be no big deal
to just use what you have). The only fly in the ointment? is that all
micros work on <2-5 volt supplies, so they can't output a 10V signal
directly or read a 10 volt signal without a voltage divider.

It will do what you want, but an op amp and linear approach is
probably the best (most elegant) way to do it.

www.rev-ed.co.uk/picaxe/ The site with the software and manuals and
links to the forum. (they answered all my questions when I had
problems - these things are GREAT FUN and I highly recommend them) $3
for the chip and ~$5-15 for the "development system" (an RS232 serial
cable and a few resistors - every piece of software is free)

www.phanderson.com/picaxe/picaxe.html Good source for the parts in
the US
--
 
On 10/01/2010 08:49 AM, Dan wrote:
Hi,

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)
You could do it all with a passive resistor network and any voltage
source greater than 5.52V, although not from your alkaline batteries
unless the boiler input is _really_ high impedance.

You could do it with a passive resistor network, a voltage supply, and a
couple of op-amps if you want to be textbook about it.

You could make a self-powered circuit with a switching booster if you
wanted to be bizarre.

What do you want?

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" was written for you.
See details at http://www.wescottdesign.com/actfes/actfes.html
 
On 2010-10-01, Tim Wescott <tim@seemywebsite.com> wrote:
On 10/01/2010 08:49 AM, Dan wrote:
Hi,

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

You could do it all with a passive resistor network and any voltage
source greater than 5.52V, although not from your alkaline batteries
unless the boiler input is _really_ high impedance.

That was my thought until I realised he wants 10.0 volts output with
8.0 volts input and 2.2V output for 2.7v input

so he needs a gain stage, and a reference other than ground.


--
¡spuɐɥ ou 'ɐꟽ ʞooꞀ
 
On 2 Oct 2010 08:18:59 GMT, Jasen Betts <jasen@xnet.co.nz>
wrote:

On 2010-10-01, Tim Wescott <tim@seemywebsite.com> wrote:
On 10/01/2010 08:49 AM, Dan wrote:
Hi,

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

You could do it all with a passive resistor network and any voltage
source greater than 5.52V, although not from your alkaline batteries
unless the boiler input is _really_ high impedance.


That was my thought until I realised he wants 10.0 volts output with
8.0 volts input and 2.2V output for 2.7v input

so he needs a gain stage, and a reference other than ground.
I was earlier confused by his writing and now I'm still more
confused, revisiting this.

The OP writes, "2.2V from the controller indicates a desire
for 22C water, but the boiler will produce 27C." He also
writes "10V DC out from the controller indicates a 99C water
temperature, but the boiler will only produce 80C at 10V."

Assume 0V implies 0C for both controller and boiler. The
controller equation is:

V_out = 0V + (10V - 0V)*[(T_set - 0C)/(99C - 0C)]
V_out = T_set / 9.9

The boiler equation is:

T_boil = 0C + (80C - 0C)*[(V_in - 0V)/(10V - 0V)]
T_boil = V_in * 8

Before looking at what the OP wants (T_boil = T_set), let's
go back to what the OP writes. He writes, "2.2V from the
controller indicates a desire for 22C water, but the boiler
will produce 27C." Now let's double-check a few things.

First. Go to the equations I laid out above and let's check
_my_ work. If the controller wants T_set=99C, then the
equation says V_out=10V. This conforms to his writing, "10V
DC out from the controller indicates a 99C." If the boiler
is being controlled with V_in=10V, then the equation says
T_boil=80C. This again conforms to his writing, "the boiler
will only produce 80C at 10V." Assuming the 0C/0V factor I
mentioned, the equations I wrote above work out. Maybe that
assumption is wrong?

Then let's examine the OP's writing, "2.2V from the
controller indicates a desire for 22C water." Again, from
the above equation for V_out, we get V_out=22/9.9=2.222V.
Okay. Not exactly 2.2V. But close enough, probably, so that
I'm not far off and might be right. The OP also writes, "but
the boiler will produce 27C" from that 2.222V input, I
assume. Using the equation above, I get T_boil=17.7C, not
27C.

Maybe he miswrote 27C and meant 17C?

Perhaps someone can set me straight, here.

Jon
 
On Fri, 1 Oct 2010 08:49:00 -0700 (PDT), Dan <danpat@danpat.net> wrote:

:Hi,
:
: It's been years since I've done any basic circuit design, so I'm
:looking for a couple of pointers in the right direction to get me
:started.
:
: I've got a heating system control and a hot water boiler that need
:to talk.
:
: The control system puts out a 0-10V DC voltage to indicate what
:water temperature it needs.
: The hot water boiler takes a 0-10V DC analog input signal to
:indicate what water temperature it should produce.
:
: However, the 0-10V DC scales for the two devices are not the same.
:10V DC out from the controller indicates a "99*C" water temperature,
:but the boiler will only produce 80*C at 10V. At the low end, 2.2V
:from the controller indicates a desire for 22*C water, but the boiler
:will produce 27*C. Both scales are basically linear within that
:range. Details on the scale differences are available here:
:http://www.tekmarcontrols.com/sb/sb046.pdf
:
: I'd like to put a simple circuit on the line to properly adjust the
:voltages being sent to the hot water boiler. Currently, the scales
:are close enough that the system works, but the water temperatures are
:a bit off.
:
: I've been scratching my head for a couple of days, and I can't come
:up with anything simple. A small microcontroller with an ADC/DAC
:combination would do the job, but I'd like to power the device off the
:input signal if that's at all possible. This might be hard as above
:about 7V, the output would end up needing to be higher than the input.
:
: Can anyone point me in the right direction (or if this is a well-
:known problem, point me at the terminology I should be searching
:around for?)
:
:daniel


Since Tekmar controls are compatible with Viessman Vitodens boilers one would
have thoughtthat the necessary interface for correct temperature control would
already be taken care of for whatever application you require. There should be
no need for any custom user interface design at all. I would request information
regarding your problem directly from Tekmar to start with.

Here is another relevant Tekmar bulletin regarding their 420, 422 and 423
modules http://www.tekmarcontrols.com/sb/sb035.pdf

For example, it says you need a Viessmann Vitocom 0-10Vdc interface module - do
you have this part?
 
In article
<1f1fb7f6-35db-4583-8b8c-cabbfe392318@h7g2000yqn.googlegroups.com>, Dan
<danpat@danpat.net> wrote:

However, the 0-10V DC scales for the two devices are not the same. 10V
DC out from the controller indicates a "99*C" water temperature, but the
boiler will only produce 80*C at 10V. At the low end, 2.2V from the
controller indicates a desire for 22*C water, but the boiler will
produce 27*C.
Just a small thought. What is the SAFE max temp the boiler should run at ?
.... 99 DegC is too high. Most electrtical thermostats would max out at
around 80ish. I'm presuming it's a hot TAP water supply ?? If so you
wouldn't want the water at or near boiling. The commercial hot water
systems we have in stores run at around 55DegC so there is no scalding
issues and above 50 should eliminate problems with bacteria (legionella
etc).

Have you tried wiring up what you've got and seen how it performs ?

( just my 2p's worth)

--
Terminal_Crazy

Mitch - 1995 Z28 LT1 M6 terminal_crazy@sand-hill.freeserve.co.uk
Lancashire England http://www.sand-hill.freeserve.co.uk/terminal_crazy/
 
On Sat, 02 Oct 2010 02:51:25 -0700, Jon Kirwan
<jonk@infinitefactors.org> wrote:

On 2 Oct 2010 08:18:59 GMT, Jasen Betts <jasen@xnet.co.nz
wrote:

On 2010-10-01, Tim Wescott <tim@seemywebsite.com> wrote:
On 10/01/2010 08:49 AM, Dan wrote:
Hi,

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

You could do it all with a passive resistor network and any voltage
source greater than 5.52V, although not from your alkaline batteries
unless the boiler input is _really_ high impedance.


That was my thought until I realised he wants 10.0 volts output with
8.0 volts input and 2.2V output for 2.7v input

so he needs a gain stage, and a reference other than ground.

I was earlier confused by his writing and now I'm still more
confused, revisiting this.

The OP writes, "2.2V from the controller indicates a desire
for 22C water, but the boiler will produce 27C." He also
writes "10V DC out from the controller indicates a 99C water
temperature, but the boiler will only produce 80C at 10V."

Assume 0V implies 0C for both controller and boiler. The
controller equation is:

V_out = 0V + (10V - 0V)*[(T_set - 0C)/(99C - 0C)]
V_out = T_set / 9.9

The boiler equation is:

T_boil = 0C + (80C - 0C)*[(V_in - 0V)/(10V - 0V)]
T_boil = V_in * 8

Before looking at what the OP wants (T_boil = T_set), let's
go back to what the OP writes. He writes, "2.2V from the
controller indicates a desire for 22C water, but the boiler
will produce 27C." Now let's double-check a few things.

First. Go to the equations I laid out above and let's check
_my_ work. If the controller wants T_set=99C, then the
equation says V_out=10V. This conforms to his writing, "10V
DC out from the controller indicates a 99C." If the boiler
is being controlled with V_in=10V, then the equation says
T_boil=80C. This again conforms to his writing, "the boiler
will only produce 80C at 10V." Assuming the 0C/0V factor I
mentioned, the equations I wrote above work out. Maybe that
assumption is wrong?

Then let's examine the OP's writing, "2.2V from the
controller indicates a desire for 22C water." Again, from
the above equation for V_out, we get V_out=22/9.9=2.222V.
Okay. Not exactly 2.2V. But close enough, probably, so that
I'm not far off and might be right. The OP also writes, "but
the boiler will produce 27C" from that 2.222V input, I
assume. Using the equation above, I get T_boil=17.7C, not
27C.

Maybe he miswrote 27C and meant 17C?

Perhaps someone can set me straight, here.
I bollixed it up, too. From the PDF that the OP linked, my reading now
is that he has a system that is for a "tekmar Boiler Target" (tBT) but
which is actually driving a "Viessmann OpenTherm Target" (VOT).

When the tBT controller calls for, say, 80C it generates an 8.1 V
signal. However, the VOT heater system it's talking to works on a
slightly different scale, so that 8.1 V control signal only produces a
temperature of 67C.

What he needs is to input the 8.1 V tBT signal and then output 10 V to
the VOT heater. The slopes are different, so where the tBT sends 3 V
(for 30C) the module needs accept that 3 V and then output only 2.5 V to
the VOT.

The relationship then would be V.VOT = 1.47 * V.tBT - 1.89 (where the
top end V.VOT may need to be truncated to 10 V).

The below would be one realization, with the caveats that it uses a
magic op amp, is otherwise ideal (no bypassing etc.), has a 12 V supply
that is exactly 12 V (it's divided down to serve as a reference), and it
does not account for the possible need to cap the VOT at 10 V.

Version 4
SHEET 1 880 680
WIRE 304 -176 -208 -176
WIRE -208 -96 -208 -176
WIRE -128 -96 -208 -96
WIRE 16 -96 -48 -96
WIRE 128 -96 16 -96
WIRE 240 -96 208 -96
WIRE 336 -96 240 -96
WIRE 496 -96 416 -96
WIRE 16 -16 16 -96
WIRE 304 -16 304 -176
WIRE 240 0 240 -96
WIRE 272 0 240 0
WIRE 496 16 496 -96
WIRE 496 16 336 16
WIRE 576 16 576 0
WIRE 576 16 496 16
WIRE 688 16 576 16
WIRE -208 32 -208 -96
WIRE 272 32 160 32
WIRE 160 64 160 32
WIRE 688 64 688 16
WIRE 304 96 304 48
WIRE -208 176 -208 112
WIRE 16 176 16 64
WIRE 160 176 160 144
WIRE 688 176 688 144
FLAG -208 176 0
FLAG 16 176 0
FLAG 688 176 0
FLAG 160 176 0
FLAG 304 96 0
FLAG 576 0 Vout
SYMBOL res -32 -112 R90
WINDOW 0 0 56 VBottom 0
WINDOW 3 32 56 VTop 0
SYMATTR InstName R1
SYMATTR Value 2K
SYMBOL res 224 -112 R90
WINDOW 0 0 56 VBottom 0
WINDOW 3 32 56 VTop 0
SYMATTR InstName RG
SYMATTR Value 47K
SYMBOL res 0 -32 R0
SYMATTR InstName R2
SYMATTR Value 1K
SYMBOL res 432 -112 R90
WINDOW 0 0 56 VBottom 0
WINDOW 3 32 56 VTop 0
SYMATTR InstName RF
SYMATTR Value 22K
SYMBOL res 672 48 R0
SYMATTR InstName RL
SYMATTR Value 2500
SYMBOL voltage -208 16 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName Vsup
SYMATTR Value 12
SYMBOL voltage 160 48 R0
WINDOW 123 0 0 Left 0
WINDOW 39 0 0 Left 0
SYMATTR InstName Vsig
SYMATTR Value 8.1
SYMBOL Opamps\\UniversalOpamp2 304 16 R0
SYMATTR InstName U2
TEXT -242 200 Left 0 !.dc Vsig 0 10 .1

--
Rich Webb Norfolk, VA
 
On Sat, 02 Oct 2010 02:51:25 -0700, Jon Kirwan wrote:
On 2 Oct 2010 08:18:59 GMT, Jasen Betts <jasen@xnet.co.nz> wrote:
On 2010-10-01, Tim Wescott <tim@seemywebsite.com> wrote:
On 10/01/2010 08:49 AM, Dan wrote:

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

You could do it all with a passive resistor network and any voltage
source greater than 5.52V, although not from your alkaline batteries
unless the boiler input is _really_ high impedance.

That was my thought until I realised he wants 10.0 volts output with 8.0
volts input and 2.2V output for 2.7v input

so he needs a gain stage, and a reference other than ground.

I was earlier confused by his writing and now I'm still more confused,
revisiting this.

The OP writes, "2.2V from the controller indicates a desire for 22C water,
but the boiler will produce 27C." He also writes "10V DC out from the
controller indicates a 99C water temperature, but the boiler will only
produce 80C at 10V."

Assume 0V implies 0C for both controller and boiler. The controller
equation is:

V_out = 0V + (10V - 0V)*[(T_set - 0C)/(99C - 0C)] V_out = T_set / 9.9

The boiler equation is:

T_boil = 0C + (80C - 0C)*[(V_in - 0V)/(10V - 0V)] T_boil = V_in * 8

Before looking at what the OP wants (T_boil = T_set), let's go back to
what the OP writes. He writes, "2.2V from the controller indicates a
desire for 22C water, but the boiler will produce 27C." Now let's
double-check a few things.

First. Go to the equations I laid out above and let's check _my_ work.
If the controller wants T_set=99C, then the equation says V_out=10V. This
conforms to his writing, "10V DC out from the controller indicates a 99C."
If the boiler is being controlled with V_in=10V, then the equation says
T_boil=80C. This again conforms to his writing, "the boiler will only
produce 80C at 10V." Assuming the 0C/0V factor I mentioned, the equations
I wrote above work out. Maybe that assumption is wrong?

Then let's examine the OP's writing, "2.2V from the controller indicates a
desire for 22C water." Again, from the above equation for V_out, we get
V_out=22/9.9=2.222V. Okay. Not exactly 2.2V. But close enough, probably,
so that I'm not far off and might be right. The OP also writes, "but the
boiler will produce 27C" from that 2.222V input, I assume. Using the
equation above, I get T_boil=17.7C, not 27C.

Maybe he miswrote 27C and meant 17C?

Perhaps someone can set me straight, here.
I worry about that "at 10V input, the boiler produces 80C"; if he
wants 99C, does he get there by exceeding the boiler's input range?

Thanks,
Rich
 
On Fri, 1 Oct 2010 08:49:00 -0700 (PDT), Dan <danpat@danpat.net>
wrote:

Hi,

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)
---
If your controller sends 10V to the boiler when it wants 99C water and
the boiler responds by making 80C water, then it would seem that the
controller would have to make higher than 10V to send to the boiler to
increase the water temp to 99C.

Conversely, if the boiler sends 10V to the controller when it's making
80C water, then the controller will be fooled into thinking that the
water's at 99C and will servo the boiler around the 10V point in order
to keep the water temp more or less constant at 80C

So...

It seems that by reducing the output voltage from the boiler, the
water temp will have to increase in order to drive the voltage higher.

Without considering the 22C point for right now, the controller's
slope is:

10V
Sc = ----- = 0.101 volt per Celsius
99C

and the boiler's:


10V
Sb = ----- = 0.125C volt per Celsius.
80C

In order to make the boiler's slope equal to the controller's, we'll
rearrange the boiler's equation to solve for the slope we want:

E = 80C * 0.101V = 8.08V

Now we need a way to reduce 10V to 8.08V, and an easy, passive way to
do that is to use a resistor in series with the controller's input:
(View in Courier)


CONTROLLER BOILER
+----------+ +----------+
|ON/OFF OUT|------------|ON/OFF IN |
| | | |
| ANALOG IN|----[Rs]----|ANALOG OUT|
| | | |
| GND|------------|GND |
+----------+ +----------+

The analog input to the controller will present some resistance to
ground, so the circuit formed will be, essentially:


ANALOG OUT, E1
0-10V
|
[Rs]
| ANALOG IN, E2
+-----> 0-8.08V
|
[Rl]
|
GND

With Rl representing the resistance of the controller's analog input.

The procedure for determining the value of Rs is:

Rl * (E1 - E2)
Rs = ----------------
E2

So, for instance, if the controller's input looked like 10k, we'd
have:

10kR (10V - 8.08V)
Rs = -------------------- = 2376 ohms
8.08V

A problem with this solution might be that the controller's input
resistance may vary with input voltage or changes in ambient
temperature so, if that's going to be a problem, a better way would be
to drive it with a voltage source; an opamp.

Plus, we need to consider the 22C end of the range.

Can't do it now, I've gotta run some errands, but I want to get this
off, as a start.

---
JF
 
On Sun, 03 Oct 2010 13:17:33 -0500, John Fields
<jfields@austininstruments.com> wrote:

On Fri, 1 Oct 2010 08:49:00 -0700 (PDT), Dan <danpat@danpat.net
wrote:

Hi,

It's been years since I've done any basic circuit design, so I'm
looking for a couple of pointers in the right direction to get me
started.

I've got a heating system control and a hot water boiler that need
to talk.

The control system puts out a 0-10V DC voltage to indicate what
water temperature it needs.
The hot water boiler takes a 0-10V DC analog input signal to
indicate what water temperature it should produce.

However, the 0-10V DC scales for the two devices are not the same.
10V DC out from the controller indicates a "99*C" water temperature,
but the boiler will only produce 80*C at 10V. At the low end, 2.2V
from the controller indicates a desire for 22*C water, but the boiler
will produce 27*C. Both scales are basically linear within that
range. Details on the scale differences are available here:
http://www.tekmarcontrols.com/sb/sb046.pdf

I'd like to put a simple circuit on the line to properly adjust the
voltages being sent to the hot water boiler. Currently, the scales
are close enough that the system works, but the water temperatures are
a bit off.

I've been scratching my head for a couple of days, and I can't come
up with anything simple. A small microcontroller with an ADC/DAC
combination would do the job, but I'd like to power the device off the
input signal if that's at all possible. This might be hard as above
about 7V, the output would end up needing to be higher than the input.

Can anyone point me in the right direction (or if this is a well-
known problem, point me at the terminology I should be searching
around for?)

---
If your controller sends 10V to the boiler when it wants 99C water and
the boiler responds by making 80C water, then it would seem that the
controller would have to make higher than 10V to send to the boiler to
increase the water temp to 99C.

Conversely, if the boiler sends 10V to the controller when it's making
80C water, then the controller will be fooled into thinking that the
water's at 99C and will servo the boiler around the 10V point in order
to keep the water temp more or less constant at 80C

So...

It seems that by reducing the output voltage from the boiler, the
water temp will have to increase in order to drive the voltage higher.

Without considering the 22C point for right now, the controller's
slope is:

10V
Sc = ----- = 0.101 volt per Celsius
99C

and the boiler's:


10V
Sb = ----- = 0.125C volt per Celsius.
80C

In order to make the boiler's slope equal to the controller's, we'll
rearrange the boiler's equation to solve for the slope we want:

E = 80C * 0.101V = 8.08V

Now we need a way to reduce 10V to 8.08V, and an easy, passive way to
do that is to use a resistor in series with the controller's input:
(View in Courier)


CONTROLLER BOILER
+----------+ +----------+
|ON/OFF OUT|------------|ON/OFF IN |
| | | |
| ANALOG IN|----[Rs]----|ANALOG OUT|
| | | |
| GND|------------|GND |
+----------+ +----------+

The analog input to the controller will present some resistance to
ground, so the circuit formed will be, essentially:


ANALOG OUT, E1
0-10V
|
[Rs]
| ANALOG IN, E2
+-----> 0-8.08V
|
[Rl]
|
GND

With Rl representing the resistance of the controller's analog input.

The procedure for determining the value of Rs is:

Rl * (E1 - E2)
Rs = ----------------
E2

So, for instance, if the controller's input looked like 10k, we'd
have:

10kR (10V - 8.08V)
Rs = -------------------- = 2376 ohms
8.08V

A problem with this solution might be that the controller's input
resistance may vary with input voltage or changes in ambient
temperature so, if that's going to be a problem, a better way would be
to drive it with a voltage source; an opamp.

Plus, we need to consider the 22C end of the range.

Can't do it now, I've gotta run some errands, but I want to get this
off, as a start.
---
1. I made an error in assuming that the external controller output
could rise above 10V in order to allow the junction of Rs and Rl
to rise to 10V in order to get 99C water from the boiler.

2. If I'd RTFM like I should have, in the beginning, I would have
found that on page 74 of the manual, at:

http://www.viessmann.ca/etc/medialib/internet-ca/pdfs/doc/wb1b.Par.36164.File.tmp/Vitodens_100-WB1B_is.pdf


that the boiler is set for a maximum temp of 80C, and that the 99C is
an absolute, non-adjustable cutout.

Plus, nowhere did I find that the output goes to 99C for 10V in, so
please ignore, or at least don't lend any credence to, my earlier
post.

---
JF
 

Welcome to EDABoard.com

Sponsor

Back
Top