Tony Williams wrote...
Which is similar to some excellent advice you and other
people gave me in a thread here about 3 years ago.
Google for thread title "Voltage Controlled Resistor?".
The original question was posted by me on 11 Dec 02.
At 10:35 am
Message-ID: <
[email protected]>
That was a great thread, with several conversations going on
at once, and by the 15th you had a working circuit you were
happy with, although it did have a multiplier.
I made a copy this morning, edited for brevity, posted below.
The multiplier solution comes near the end of the text, where
Google put it, although it was one of the early forks.
==============================================================
Subject: Voltage Controlled Resistor?
Group: sci.electronics.design
From: Tony Williams
Date: Wed, Dec 11 2002 10:35 am
Message-ID: <
[email protected]>
Email: Tony Williams <
[email protected]>
What's a good way of doing a precision VCR?
I thought it was easy, but have been doodling
on paper for half a day now. I could have
sworn it could be done without a multiplier.
Must be going senile.........
The spec; Vcontrol= 0-10V, Rout= 0-1k, over
the range 0-10v or 0-10mA. 15-0-15 available.
--
Tony Williams.
----------------------------------------------------------
From: Jim Thompson
Date: Wed, Dec 11 2002 10:53 am
I addressed this recently on A.B.S.E at...
Message ID: <
[email protected]>
There's also a Voltage Variable Resistor part for PSpice on my
website.
...Jim Thompson
From: fred bartoli
Date: Wed, Dec 11 2002 12:04 pm
That kind of resistor made in POLY ???
From: Jim Thompson
Fred, I'll presume you're not already into the Christmas cheer and
assume you mean POLYnomial and not POLYsilicon ;-)
You can do it with a polynomial, but PSpice has had, for several
years, the EVALUE and GVALUE parts, thus you can avoid the gruesome
polynomial notation.
From: fred bartoli
He he, I know that. Was just playing on the ambiguity...
From: Winfield Hill
Date: Wed, Dec 11 2002 12:09 pm
It has scrolled off the servers now.
From: Michael A. Terrell
I have a copy if you want it.
From: Spehro Pefhany
Why not repost it to abse?
From: Michael A. Terrell
That was why I asked if he wants it. I knew I had downloaded
it, but it took a while to find.
From: Tony Williams
Yes please Michael.
From: Michael A. Terrell
It has been posted to subject:
Repost for Win Hill. If you can't get it there, I can E-mail it to you.
From: Jim Thompson
Date: Wed, Dec 11 2002 7:09 pm
I sent Tony a copy via E-mail.
From: Michael A. Terrell
OK, I had posted it anyway. At least you know someone downloaded it.
From: Tony Williams
Received thank you. Still sitting here looking
at it. 00:20 in the morning is not my best time.
------------------------------------------------------
From: Tony Williams
Date: Thurs, Dec 12 2002 4:38 am
And I still can't see it. Because I can't get past
the interpretation that Q2's emitter is forced to
sit at -Vbe(Q1) permanently, by the opamp. So the
range of Vcontrol looks limited to the Vbe difference
between two transistors with their emitters joined.
--
From: Winfield Hill
Date: Thurs, Dec 12 2002 9:18 am
It's a small piece of an analog multiplier circuit.
IN o--+-----------------,
| ______ |
| | | |
R1 | Q1 | | Q2
| | |/ \| Vc
+----+----| |---o
| |\V V/|
| __ |_____| matched NPN
'---|- \ | transistors
| \______|
| /
,---|+_/
|
gnd
The current in R1 and hence Q1 is I1 = Vin/R1, so Vbe1 from
Eber-Molls is Vbe1 = VT ln(I1/Is), where VT = kT/q and Is is
the reverse saturation current (which in a complete setup
would ultimately disappear from our equations). Seeing that
Vbe2 = Vc + Vbe1, we can determine I2 as a function of Vc,
I2 = Is e^ (Vc/Vt + ln(I1/Is)). This can be manipulated into
an I2 = I1 * K form, where K is an exponential function of Vc.
So we see Rin = R1 in parallel with a programmable resistance.
Isolating R1's current from the IN terminal with a follower,
and deriving Vc from a current into a logging transistor to
fix the exponential-function issue, can clean up the control
equations. Two more transistors and three more opamps later
we'll obtain a resistance proportional to Vc looking like,
R = (Vc/R2)/(Vref/R3). I'll post a new drawing and explain
the equations tonight or early tomorrow morning; right now I
have to walk the dog and go to work. :>)
From: Tony Williams - view profile
Date: Thurs, Dec 12 2002 10:20 am
I'd already got as far as ln(I2/I1) = Vc*(q/kT) and
therefore the actual incoming control voltage would
have to be logged, such that Vc = kT/q * ln(Vin).
This would give I2 = I1 * Vin.
Rout = Vout/Iout = Vout/(I1+I2) = Vout/I1(1 + Vin).
And the easiest way to get rid of the non-linearity
due to the (1 + Vin) term is to buffer R1, so that
Iout does not have to include the I1 current to R1.
From: Winfield Hill
Date: Thurs, Dec 12 2002 10:13 pm
And the easiest way to get rid of the non-linearity
due to the (1 + Vin) term is to buffer R1, so that
Iout does not have to include the I1 current to R1.
Right.
OK, i'll indulge myself. Here's the full drawing and formula
for R ~ control voltage. R_in = R1 (Vset/Vref)(R3/R2), if
I avoided mixing up a numerator and denominator someplace!
.. Rin = 1.0k Vset/10
.. IN o----------------, ___ R3 ___ Vref = 10V
.. G =_+1 | | 10k
.. __ R1 ___/ |___| __ | ___ R2___ Vset
.. | 2.0k \_| | __/ -|----+ | 20k 0 to +10V
.. |_________ | | \_+|--G | |_________
.. | | | | | | |
.. | Q1 |/ Q2 \| | |/ Q3 \| Q4 |
.. +-------| |---+--------| |-------+
.. | |\V V/| |\V V/| |
.. | __ |_____| matched NPN |_____| __ |
.. '--|- \______| transistors |______/- |--'
.. G --|+_/ \+_|-- G
If Q1-Q2 and Q3-Q4 are each matched to 25uV, and with a beta
approaching 1000, the formula should be accurate to about 0.1%
Alternately a few trim-point adjustments can be added.
Thanks,
- Win
From: Tony Williams
Date: Fri, Dec 13 2002 4:11 am
That topology (4x transistors, log/antilog config) is
almost identical to the 'circuit' of the Raytheon
RC4200 analogue multiplier...still available, very cheap,
good linearity.
It would need an RC4200, two opamps, MOSFET and current
shunt. Quite a simple circuit really.
Both approaches result in Rout = Vout/Iout, = K.Vset,
but there is a subtle difference in the methods.
The topology above is of an output current device,
setting Iout according to the sum; Iout = Vout/K.Vset.
ie. It works by taking the reciprocal of Vset, so the
circuit is at highest 'Gain' at low values of Vset.
Speff's topology is of an output voltage device,
setting Vout according to the sum: Vout = Iout*K.Vset.
ie, It requires a straight multiplier.
From: Winfield Hill
Date: Fri, Dec 13 2002 7:47 am
.. o x o y o out o z
.. _______| | | |_______
.. | | | | | |
.. | |/ Q1 | | Q4 \| |
.. gnd --|-----| ______| | |-----|-- gnd
.. | |\V | | | V/| |
.. | | | Q2 |/ Q3 \| | |
.. | _ +--|----| |-----+ _ |
.. '--|-\__| | |\V V/| |__/-|--'
.. V1 ---|+/ | _ |_____| \+|--- gnd
.. '--|-\____|
.. V2 ---|+/ Iout = Ix Iy / Iz
It would need an RC4200, two opamps, MOSFET and current
shunt. Quite a simple circuit really.
OK, I wonder if it would need that much stuff. Try this on
for size. Apparently you'll need an R-C on each input pin.
.. Rin = 40k Vset/10
.. IN o-------------------------,
.. G =_+1 |
.. __ R1 ___/ |___| ____ R3 ___ Vref = 10V
.. | 40k \_| | / 40k
.. | ____ | __/
.. | | | ____ R2___ Vset
.. | | | | 40k 0 to +10V
.. o x o y o out o z
.. _______| | | |_______
.. | | | | | |
.. | |/ Q1 | | Q4 \| |
.. gnd --|-----| ______| | |-----|-- gnd
.. | |\V | | | V/| |
.. | | | Q2 |/ Q3 \| | |
.. | _ +--|----| |-----+ _ |
.. '--|-\__| | |\V V/| |__/-|--'
.. V1 ---|+/ | _ |_____| \+|--- gnd
.. '--|-\____|
.. V2 ---|+/ Iout = Ix Iy / Iz
Oops, I see the issue, you need higher output currents and a
1k rather than 40k range. I see, the extra opamp FET and
shunt are so you can keep the currents below 250uA.
I wonder how much effort is required to get all the offsets
right, etc., for 0.1% performance (fig 7). AD734, wink wink.
Anyway, very nice, I had forgotten that part. Great that it's
still available,
http://www.fairchildsemi.com/ds/RC/RC4200.pdf
And only $4.59 from Newark (stock # 34C1805 and 34C1803).
One thing I noticed, they used transconductance opamps in the
RC4200, which is a good idea. Small series resistors at the
opamp outputs would be a good idea in my circuit for loop
stability at high currents. Also note, no V+ supply!
From: Tony Williams
Date: Fri, Dec 13 2002 6:32 pm
Just to clarify, everything below the x,y,out,z line
is inside the RC4200.
Oops, I see the issue, you need higher output currents and a
1k rather than 40k range. I see, the extra opamp FET and
shunt are so you can keep the currents below 250uA.
Yes. Note also that the Q3 collector output is limited
to 5V above the 0v pin.
I wonder how much effort is required to get all the offsets
right, etc., for 0.1% performance (fig 7).
The Fig.7 in my data sheet is marked "Extended Range Divider
and the large collection of resistors around the RC4200
is to do with obtaining a bipolar Vx and Vout.
As noted in another post, this particular topology does
require taking the reciprocal of Vset (as per the use of
the z input in your circuit above). This would raise
concerns about the Vos of the z input when operating with
low values of Vset.
Note though that the z input opamp does not have a Vos
adjust facility.
AD734, wink wink. Anyway, very nice, I had forgotten that
part. Great that it's still available,
I've used the RC4200 twice on jobs. Worked ok both times,
no nasty surprises, all devices well within the tyical spec.
Trouble is it's one of those chips that grabs your interest,
but the minor limitations/inconveniences reduces the number
of job you can actually use it on.
--
Tony Williams.
From: Winfield Hill
Date: Fri, Dec 13 2002 10:05 pm
Tony Williams wrote...
Yes. Note also that the Q3 collector output is limited
to 5V above the 0v pin.
Right, and 0.25mA max for linearity, got it. The buffer for
the current-multiplying resistor, Rx, needs < 0.5mV offset,
and Qx needs a stable beta value.
.. Rin = 1.0k Vset/10 Qx
.. (x)---+----------, >>--+---------,
.. | _G=+1 \___/ | |
.. |_| \__ | 40Rx Rx __ R3 __ Vref
.. |_/ | | 2.0k _ 50 / 40k 10V
.. | gnd |____| \__| /
.. R1 | |_/ / __ R2____ Vset
.. 40k ___ | ______/ / 40k 0 to +10V
.. _ _ _ _ _ _ |_ _ _ _ _ /_ _ |_ _ _ _ /_ _ _
.. o x o y o out o z __trim Vset
.. _______| | | |_______ | offset
.. | | | | | | o
.. | |/ Q1 | | Q4 \| | | "gnd"
.. G --|-----| ______| | |-----|--+
.. | |\V | | | V/| | |
.. | | | Q2 |/ Q3 \| | | |
.. | _ +--|----| |-----+ _ | |
.. '--|-\__| | |\V V/| |__/-|--' |
.. V1 ---|+/ | _ |_____| \+|-----+--> G
.. '--|-\____|
.. RC4200 V2 ---|+/ Iout = Ix Iy / Iz
Note though that the z input opamp does not have a Vos
adjust facility.
It does now!
Trouble is it's one of those chips that grabs your interest,
but the minor limitations/inconveniences reduces the number
of job you can actually use it on.
I have drawers full of chips like that! :>)
Thanks,
- Win
------------------------------------------------------------
From: Spehro Pefhany
Date: Wed, Dec 11 2002 11:11 am
What's a good way of doing a precision VCR?
I thought it was easy, but have been doodling
on paper for half a day now. I could have
sworn it could be done without a multiplier.
Must be going senile.........
The spec; Vcontrol= 0-10V, Rout= 0-1k, over
the range 0-10v or 0-10mA. 15-0-15 available.
Could you PWM an analog switch (or just a
MOSFET) in parallel with a 1K00 resistor?
Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
[email protected] Info for manufacturers:
http://www.trexon.com
Embedded software/hardware/analog Info for designers:
http://www.speff.com
From: Tony Williams
Date: Wed, Dec 11 2002 5:01 pm
I don't think so Speff. Linear if poss.
-------------------------------------------------
From: Winfield Hill
Date: Wed, Dec 11 2002 11:59 am
Tony wrote...
What's a good way of doing a precision VCR?
I thought it was easy, but have been doodling
on paper for half a day now. I could have
sworn it could be done without a multiplier.
Must be going senile.........
The spec; Vcontrol= 0-10V, Rout= 0-1k, over
the range 0-10v or 0-10mA. 15-0-15 available.
You can make 2-quadrant voltage-controlled resistors
with a programmable transconductance amplifier (OTA)
such as an LM13700. These are not very expensive and
a 20:1 range is practical. OK, an OTA is a type of
multiplier. So what's wrong with using a multiplier?
Hmm, do you only need single-quadrant operation? You
could program a simple active resistor with an EEPOT.
From: Tony Williams
Date: Wed, Dec 11 2002 5:10 pm
+10v Vref +-------+
|
\
/ 1k(approx)
\
|
ADC<------------+----------+
|
#
Rx #<---Vcontrol
#
|
0v1---------- ------+-----------0v2
Rx has to look like 0 to 1k, 0.1%, varying with Vcontrol.
Just to make life complicated, 0v1 and 0v2 *are*
connected together (somewhere) but not precisely here.
From: Winfield Hill
Date: Thurs, Dec 12 2002 8:15 am
Tell us more about that "1k(approx)," maybe an appropriate
type of programmble current in place of Rx can do the job.
From: Bill Sloman
Date: Thurs, Dec 12 2002 4:08 am
Use a big dual FET? One drain-source connection would be Rx, the
other would have a precise 1k from drain to the +10V reference,
and you'dcouple both gates together and use an op amp (or maybe
an instrumentation amp) to drive both such gates such that
voltage across your precise 1k matched your Vcontrol.
First find a big well-matched dual FET ....
From: Tony Williams
Date: Thurs, Dec 12 2002 4:52 am
That's not so stupid Bill, because the Co I used to work
for did make an analogue multiplier based on exactly that.
Pairs of jfets, matched for VCR characteristics.
First find a big well-matched dual FET ....
Just one small prob.....
From: Jem Berkes
Date: Sun, Dec 15 2002 10:49 am
Is that based on the idea that drain-source resistance is
almost linear with small gate voltages? (Not sure about which
terminal is which)
From: Tony Williams
Date: Mon, Dec 16 2002 4:30 am
It was based on pairs of jfets, selected so that their
ON-resistances versus Vgs were matched. The yield of
such pairs was quite low, but it was viable because we
bought jfets by the bucketload, and charged an absolute
fortune for the final product.
--
Tony Williams.
------------------------------------------------------------
From: Spehro Pefhany
Date: Wed, Dec 11 2002 12:53 pm
*Precision* 0-1K (0.1-0.01 Ohm accuracy? ) would not
be very easy with a digital pot, directly anyway.
I did some work on this in terms of calibrator design
some years ago, can't recall the conclusions at the
moment, but it's certainly not insoluble.
Might have used a multiplying DAC and some circuitry.
From: Winfield Hill
Date: Wed, Dec 11 2002 1:22 pm
Whoa, 10-ppm! Maybe Tony'd better tell us more.
Might have used a multiplying DAC and some circuitry.
Yep.
From: Tony Williams
Date: Thurs, Dec 12 2002 11:03 am
Spehro Pefhany said:
I did some work on this in terms of calibrator design
some years ago, can't recall the conclusions at the
moment, but it's certainly not insoluble.
Might have used a multiplying DAC and some circuitry.
Speff emailed me a few details. Below is a development
of his ideas towards my spec.
/ | Iout
+-[R1]---<+1|--+-<--Vout
| 10k \ | |
Vin--|X1 Y2|<-R2+ | |
0v---|X2 Y1|<-R2- | Y2<--+ +
| | | <--AD633 [R2] 1k, 0.1%
|AD633| | Y1<--+ -
| | +---||--, |
| | | | |
| OUT|--[R4]--+--|- \ | |/e
10k | >+----| pnp
+--|+ / |\
| |
0V [R3] 470.
|
-15
I(R1) = Vout/R1.
From the AD633 analogue multiplier OUT pin.
I(R4) = (X1-X2)(Y1-Y2)/10*R4 =(Vin)(-Iout*R2)/10*R4.
The integrator will servo until I(R1) = -I(R4).
That gives, Vout/R1 = Vin(Iout*R2)/10*R4
Rout = Vout/Iout = Vin*R2*R1/10*R4.
If R4= R1, then; Rout = Vin * R1/10 = Vin * 1k/10
~~~~ ~~~~~~~~~~~
The pnp is there to provide the 10mA and the 470
is there to limit the 10mA.
--
Tony Williams.
From: Winfield Hill
Date: Thurs, Dec 12 2002 11:45 am
Tony Williams wrote...
Speff emailed me a few details. Below is a development
of his ideas towards my spec.
... AD633 ...
The AD734 has better performance.
The pnp is there to provide the 10mA and the 470
is there to limit the 10mA.
The opamp can't do the job alone?
From: Winfield Hill
Date: Thurs, Dec 12 2002 9:31 pm
Tony wrote...
Speff emailed me a few details. Below is a development
of his ideas towards my spec.
G= +1 Iout
_____ __ R1 __/|_________ Vout
| | | 10k \| |
Vin--|X1 | | ,---+
| Y2|------- | ---------' | +
0v---|X2 | | R2 1k, 0.1%
| Y1|------- | ---------, | -
| | | '---+
|AD633| +---||--, |
| | | | |
| OUT|-- R4 --+--|- \ | |
|_____| 10k | >+-------'
,--|+ /
|
0V
I had a trace of difficulty understanding your drawing, so
my schematic-editing compulsion took over...
Very nice, but use an AD734 and let the opamp do it's job
driving 10mA, I say!
From: Tony Williams
Date: Fri, Dec 13 2002 3:27 am
| \_/D1
| D2 |
_____ +------|>|------+
My app probably needs to prevent Vout going below 0v.
So I've tucked in two extra diodes to do that.
I had a trace of difficulty understanding your drawing, so
my schematic-editing compulsion took over...
I'm getting this aw(e)ful sinking feeling about
AoE III, particularly Appendix E.................
Very nice, but use an AD734....
Reducing the Vpk seen by the multiplier is quite a
help to linearity. I've done measurements on the
AD633 and keeping Vpk at no more than about 6 volts
is handy.
,,and let the opamp do it's job driving 10mA, I say!
Holdover Win, from the days when 5mA was the standard
max output, and the habit was to avoid offset drift
due to dissipation in the opamp package.
From: Winfield Hill
Date: Fri, Dec 13 2002 8:27 am
If you use an AD734, watch out for the 50k Rin; followers
can solve the issue, shown above. Perhaps these aren't
necessary with an AD633, although there can be 2uA bias.
From: Tony Williams
Date: Sun, Dec 15 2002 10:10 am
3k
+15v----/\/\-------------+--\/\/\--0v
1.5k |
[Ammeter] for Iout.
|
I breadboarded the above this morning.
R1= 33.378k, R2= 601, R4= 10.035k.
This was to give me 200 ohms/volt over a Vin range of 0-6V.
I've only had time to have a quick look, adjusting the Zero
and Gain of the decade voltage source for 0 and 1200 ohms.
Vin Vout/Iout
~~~~ ~~~~~~~~~
0 0.0 <-- Adjusted.
1 201.2 ohms.
2 402.0
3 602.5
4 802.1
5 1001.2
6 1200.0 <-- Adjusted.
The +1 amp has a Vos of -2.5mV, the integrator -ve
input was at +1.95mV, and the output of the AD633
when Vin = 0v was +0.7mV.
More measurements if possible, but no time atm.
From: Spehro Pefhany
Date: Sun, Dec 15 2002 11:31 am
Within spitting distance, Tony, depending on how
your error budget is defined exactly!
From: Tony Williams
Date: Mon, Dec 16 2002 2:34 am
Just a quick lash-up to get a feel for the circuit,
see if there are any unexpecteds, etc.
From: Winfield Hill
Date: Sun, Dec 15 2002 10:41 am
Very nice, I'm sure you must be pleased. How did you make
the "adjusted" adjustments?
Hmm, I suspect you'll want to make the rest of your
measurements with better opamps, so all the blame can be
laid on the poor old struggling AD633.
From: Tony Williams
Date: Mon, Dec 16 2002 3:33 am
In rather a hurry, just before lunch. I was more
interested in seeing whether there were any ambushes
in the circuit. If/when time permits I'll do a more
careful series of measurements.
Hmm, I suspect you'll want to make the rest of your
measurements with better opamps,..........
If this circuit goes to layout then of course better
components will be used (inc multiplier), but did a
quick breadboard with what is available.
............. so all the blame can be
laid on the poor old struggling AD633.
Ok, that AD633 is being (over)pushed, but not as bad
as you think. ( Oh buggerit! .... see [*] below.)
The non-linearity of the Y input is 0.1% (0.4) for
a 10-0-10V swing. So I use Y as the Vin, 0-6V max.
The non-linearity of the X input is 0.4% (1.0) for
a 10-0-10 swing. With a spec range on resistance
of 1000 to 250 ohms, the current only varies from
about 5mA to 8mA, a 1.6:1 range. So the swing on
the X input is not large. With a 601 ohm shunt
that would be a swing from 3V to 4.8V only.
[*] Except that clever-clogs here wired it without
looking at the data sheet and forgot that Y is the
linear input on some multipliers and X on others.
Modified below to suit the AD633.
3k
+15v----/\/\-------------+--\/\/\--0v
1.5k |
[Ammeter] for Iout.
|
G= +1 |
_____ __ R1 __/|_____|<-Voltmeter
| | | 33.3k \| | for Vout
Vin--|Y1 | | ,---+
| X2|------- | ---------' | +
0v---|Y2 | | R2 601
| X1|------- | ---------, | -