4-20mA Precision Source Ideas

Hi,

Anyone have any ideas for a good "4-20mA" driver circuit? I want to convert 0-2.5V from a DAC into 0-25mA, driven by 9-36V supply.

I have a circuit that works well, see below LTspice netlist, It's basically National AN1515 fig 6 "improved howland current source" with a transistor added to offload the power dissapation.

Only drawback is it uses a lot of precision resistors. Is there something that uses less resistors (and more opamps perhaps?). Seems like it should be possible with just one precision part.

Thanks,

John

Version 4 SHEET 1 2076 1524 WIRE 224 -48 -96 -48 WIRE 400 -48 224 -48 WIRE 176 64 160 64 WIRE 272 64 176 64 WIRE 512 64 352 64 WIRE -96 80 -96 -48 WIRE 400 112 400 -48 WIRE 224 128 224 -48 WIRE 176 144 176 64 WIRE 192 144 176 144 WIRE 336 160 256 160 WIRE 192 176 160 176 WIRE 160 224 160 176 WIRE 224 240 224 192 WIRE 400 240 400 208 WIRE 512 240 512 64 WIRE 512 240 400 240 WIRE 400 256 400 240 WIRE -64 368 -96 368 WIRE 64 368 16 368 WIRE 160 368 160 304 WIRE 160 368 144 368 WIRE 192 368 160 368 WIRE 400 368 400 336 WIRE 400 368 272 368 WIRE 592 368 400 368 WIRE 592 416 592 368 WIRE -96 432 -96 368 FLAG 80 64 0 FLAG -96 160 0 FLAG -96 512 0 FLAG 592 496 0 FLAG 224 240 0 SYMBOL res 160 352 R90 WINDOW 0 0 56 VBottom 0 WINDOW 3 32 56 VTop 0 SYMATTR InstName R1 SYMATTR Value 10k SYMBOL res 288 352 R90 WINDOW 0 0 56 VBottom 0 WINDOW 3 32 56 VTop 0 SYMATTR InstName R2 SYMATTR Value 10000 SYMBOL res 384 240 R0 SYMATTR InstName R3 SYMATTR Value 100 SYMBOL res 256 80 R270 WINDOW 0 32 56 VTop 0 WINDOW 3 0 56 VBottom 0 SYMATTR InstName R4 SYMATTR Value 10k SYMBOL res 64 80 R270 WINDOW 0 32 56 VTop 0 WINDOW 3 0 56 VBottom 0 SYMATTR InstName R5 SYMATTR Value 10k SYMBOL npn 336 112 R0 SYMATTR InstName Q1 SYMATTR Value MJD31C SYMBOL voltage -96 64 R0 SYMATTR InstName V1 SYMATTR Value 40 SYMBOL voltage -96 416 R0 WINDOW 123 24 132 Left 0 WINDOW 39 0 0 Left 0 SYMATTR Value2 AC 1 SYMATTR InstName V2 SYMATTR Value PULSE(0.4 2.0 100m 1u 1u 100m) SYMBOL voltage 592 400 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V4 SYMATTR Value 0 SYMBOL res 32 352 R90 WINDOW 0 0 56 VBottom 0 WINDOW 3 32 56 VTop 0 SYMATTR InstName R6 SYMATTR Value 100 SYMBOL voltage 160 208 R0 WINDOW 3 -326 61 Left 0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR Value PULSE(0 .001 .5 1u 1u .1) SYMATTR InstName V3 SYMBOL Opamps\\opamp2 224 96 R0 SYMATTR InstName U2 SYMATTR Value MC33071 TEXT 168 -168 Left 0 !.tran 1 TEXT 168 -128 Left 0 !;ac oct 100 10 1e7 TEXT 760 -496 Left 0 !.SUBCKT MC33071 1 2 3 4 5\n*\nC1 11 12 8.660E-12\nC2

6 7 8.000E-12\nCEE 10 99 1.231E-12\nDC 5 53 DX\nDE 54 5 DX\nDLP 90 91 DX\nDLN 92 90 DX\nDP 4 3 DX\nEGND 99 0 POLY(2) (3,0) (4,0) 0 .5 .5\nFB 7 99 POLY(5) VB VC VE VLP VLN 0 8.842E6\n+ -9E6 9E6 9E6 -9E6\nGA 6 0 11 12 251.3E-6\nGCM 0 6 10 99 3.550E-9\nIEE 3 10 DC 120.2E-6\nHLIM 90 0 VLIM 1K\nQ1 11 2 13 QX\nQ2 12 1 14 QX\nR2 6 9 100.0E3\nRC1 4 11 3.979E3\nRC2 4 12 3.979E3\nRE1 13 10 3.542E3\nRE2 14 10 3.542E3\nREE 10 99 1.664E6\nRO1 8 5 30\nRO2 7 99 45\nRP 3 4 34.09E3\nVB 9 0 DC 0\nVC 3 53 DC 1\nVE 54 4 DC .3\nVLIM 7 8 DC 0\nVLP 91 0 DC 30\nVLN 0 92 DC 30\n.MODEL DX D(IS=800.0E-18)\n.MODEL QX PNP(IS=800.0E-18 BF=600)\n.ENDS TEXT 120 -512 Left 0 !.MODEL MJD31C npn\n+IS=9.06202e-11 BF=3418.7 NF=1.17603 VAF=29.2393\n+IKF=0.108267 ISE=5.37193e-07 NE=4 BR=367.353\n+NR=5 VAR=1.631 IKR=1.15207 ISC=1.15754e-09\n+NC=1.49179 RB=22.4853 IRB=0.00220937 RBM=1e-12\n+RE=0.0001 RC=0.138633 XTB=9.99997e-13 XTI=1e-12\n+EG=1.05 CJE=3.73889e-10 VJE=0.67672 MJE=0.575056\n+TF=1e-08 XTF=3.4926 VTF=12.6615 ITF=0.0523952\n+CJC=3.5251e-10 VJC=0.884306 MJC=0.473486 XCJC=0.1\n+FC=0.8 CJS=0 VJS=0.75 MJS=0.5\n+TR=3.29803e-06 PTF=0 KF=0 AF=1 TEXT 128 592 Left 0 ;4-20mA Driver circuit using improved Howland generator, see National AN1515.\n2V Input = 20mA.\nRuns from ~5 - 44V supply. \nPower dissapated moved to external NPN transistor.\nLow voltage version could do without.\nR1,2,4,5 matched 10k. R3,6 matched 100R (set 2V/20mA scale)
--

John Devereux
Reply to
John Devereux
Loading thread data ...

The Howland current source is only worth the trouble if you want a bidirectional output.

Using the same op amp to drive a N-channel MOSFET gate makes a much cheaper current source. You only need one precision resistor - between the MOSFET source and ground, and you take your feed-back from the source.

The extra lag through the MOSFET can give you stability problems, but since you already need to put a resistor between the MOSFET gate and the op amp output to minimise the risk that the MOSFET will self- oscillate at a few hundred MHz, it's to cheap by-pass the lag by hooking up a small capacitor between the op amp output and the inverting input.

The drain of the MOSFET serves as your constant current sink.

A complementary Darlington can do almost as good a job as the MOSFET.

-- Bill Sloman, Nijmegen

Reply to
Bill Sloman

Thanks Bill, but the circuit needs to be a current "source" (rather than "sink") - as per my attempt.

A PNP/P-channel version would work but the command signal would then be referenced to the high-voltage incoming supply rather than to zero volts.

--

John Devereux
Reply to
John Devereux

John Devereux writes:

OK, this one works, uses 3 precision resistors vs 5. The high side high-voltage opamp inputs and output need to go near +VCC which is not so convenient.

Version 4 SHEET 1 2076 1524 WIRE 384 -272 -96 -272 WIRE 816 -272 384 -272 WIRE 816 -224 816 -272 WIRE 384 -208 384 -272 WIRE 816 -96 816 -144 WIRE 816 -96 544 -96 WIRE 544 -48 544 -96 WIRE 576 -48 544 -48 WIRE 816 -48 816 -96 WIRE 768 -32 640 -32 WIRE 384 -16 384 -128 WIRE 576 -16 384 -16 WIRE 480 48 160 48 WIRE -96 80 -96 -272 WIRE 384 80 384 -16 WIRE 160 144 160 48 WIRE 192 144 160 144 WIRE 816 144 816 48 WIRE 336 160 256 160 WIRE 192 176 160 176 WIRE 160 224 160 176 WIRE 384 240 384 176 WIRE 480 240 480 48 WIRE 480 240 384 240 WIRE 384 304 384 240 WIRE 384 416 384 384 FLAG -96 160 0 FLAG 160 304 0 FLAG 816 224 0 FLAG 384 416 0 SYMBOL voltage -96 64 R0 SYMATTR InstName V1 SYMATTR Value 40 SYMBOL voltage 160 208 M0 WINDOW 123 24 132 Left 0 WINDOW 39 0 0 Left 0 SYMATTR Value2 AC 1 SYMATTR InstName V2 SYMATTR Value PULSE(0.4 2.0 100m 1u 1u 100m) SYMBOL voltage 816 128 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V4 SYMATTR Value 0 SYMBOL nmos 336 80 R0 SYMATTR InstName M1 SYMBOL res 368 288 R0 SYMATTR InstName R1 SYMATTR Value 10k SYMBOL res 368 -224 R0 SYMATTR InstName R2 SYMATTR Value 10k SYMBOL res 800 -240 R0 SYMATTR InstName R4 SYMATTR Value 100 SYMBOL pmos 768 48 M180 SYMATTR InstName M2 SYMBOL Opamps\\opamp 608 -96 R0 SYMATTR InstName U1 SYMBOL Opamps\\opamp 224 96 R0 SYMATTR InstName U2 TEXT -552 176 Left 0 !.tran 1 TEXT -552 336 Left 0 ;4-20mA Driver circuit\n2V Input = 20mA.\nRuns from ~5 -

44V supply. TEXT -544 448 Left 0 !.lib opamp.sub
--

John Devereux
Reply to
John Devereux

John Devereux writes:

Hey, I Larkinized it :) :)

Version 4 SHEET 1 2076 1524 WIRE 224 -272 48 -272 WIRE 448 -272 224 -272 WIRE 656 -272 448 -272 WIRE 48 -224 48 -272 WIRE 448 -224 448 -272 WIRE 224 -208 224 -272 WIRE 448 -96 448 -144 WIRE 448 -96 384 -96 WIRE 512 -96 448 -96 WIRE 448 -16 448 -96 WIRE 384 0 384 -96 WIRE 416 0 384 0 WIRE 512 16 512 -96 WIRE 512 16 480 16 WIRE 224 32 224 -128 WIRE 416 32 224 32 WIRE 224 128 224 32 WIRE 192 144 112 144 WIRE 304 160 256 160 WIRE 192 176 160 176 WIRE 112 224 112 144 WIRE 224 224 224 192 WIRE 224 224 112 224 WIRE 304 224 304 160 WIRE 304 224 224 224 WIRE 224 272 224 224 WIRE 448 272 448 48 WIRE 160 304 160 176 WIRE 224 384 224 352 FLAG 48 -144 0 FLAG 160 384 0 FLAG 448 352 0 FLAG 224 384 0 SYMBOL voltage 48 -240 R0 SYMATTR InstName V1 SYMATTR Value 40 SYMBOL voltage 160 288 M0 WINDOW 123 24 132 Left 0 WINDOW 39 0 0 Left 0 SYMATTR Value2 AC 1 SYMATTR InstName V2 SYMATTR Value PULSE(0.4 2.0 100m 1u 1u 100m) SYMBOL voltage 448 256 R0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR InstName V4 SYMATTR Value 0 SYMBOL res 208 256 R0 SYMATTR InstName R1 SYMATTR Value 1k SYMBOL res 208 -224 R0 SYMATTR InstName R2 SYMATTR Value 1k SYMBOL Opamps\\UniversalOpamp2 224 160 R0 SYMATTR InstName U3 SYMBOL Opamps\\UniversalOpamp2 448 16 R0 SYMATTR InstName U1 SYMATTR SpiceLine ilimit=100m rail=0 Vos=0 phimargin=45 SYMBOL res 432 -240 R0 SYMATTR InstName R3 SYMATTR Value 100 TEXT -552 176 Left 0 !.tran 1 TEXT -552 336 Left 0 ;4-20mA Driver circuit\n2V Input = 20mA.\nRuns from ~5 -

44V supply. TEXT -544 448 Left 0 !.lib LTC.lib TEXT 472 136 Left 0 ;Iout
--

John Devereux
Reply to
John Devereux

--- If the load (R2) can be high-tied, this seems to work pretty well:

Version 4 SHEET 1 880 680 WIRE 352 -48 -128 -48 WIRE 352 0 352 -48 WIRE 176 80 -64 80 WIRE 352 112 352 80 WIRE 176 128 176 80 WIRE 144 144 0 144 WIRE 288 160 208 160 WIRE 144 176 96 176 WIRE 96 256 96 176 WIRE 352 256 352 208 WIRE 352 256 96 256 WIRE -128 304 -128 -48 WIRE 0 304 0 144 WIRE 176 304 176 192 WIRE 352 304 352 256 WIRE -128 432 -128 384 WIRE -64 432 -64 80 WIRE -64 432 -128 432 WIRE 0 432 0 384 WIRE 0 432 -64 432 WIRE 176 432 176 384 WIRE 176 432 0 432 WIRE 352 432 352 384 WIRE 352 432 176 432 WIRE -128 496 -128 432 FLAG -128 496 0 SYMBOL Opamps\\LT1368 176 224 M180 WINDOW 3 12 7 Left 0 SYMATTR InstName U1 SYMBOL npn 288 112 R0 SYMATTR InstName Q1 SYMATTR Value FZT849 SYMBOL res 336 288 R0 SYMATTR InstName R1 SYMATTR Value 99.6 SYMBOL voltage 0 288 R0 WINDOW 3 24 104 Invisible 0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR Value 2.5 SYMATTR InstName V1 SYMBOL voltage -128 288 R0 WINDOW 3 24 104 Invisible 0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR Value PULSE(9 36 0 1) SYMATTR InstName V2 SYMBOL voltage 176 288 R0 WINDOW 3 24 104 Invisible 0 WINDOW 123 0 0 Left 0 WINDOW 39 0 0 Left 0 SYMATTR Value PULSE(5 30 0 1) SYMATTR InstName V3 SYMBOL res 336 -16 R0 SYMATTR InstName R2 SYMATTR Value 100 TEXT -112 464 Left 0 !.tran 2

-- JF

Reply to
John Fields

Hi John,

Thanks, that was Bills idea too I think. Sorry I didn't make it clear it needs to supply current into a low-tied load AFAIK.

[...]
--

John Devereux
Reply to
John Devereux

And a precision voltage reference to go with it, and/or the sensor.

4-20mA was never meant to be that fast :) As long as the electronics take less than 4mA over temperature, it's fine. Local voltage can be quite high (up to 20V? depends on loop distance and drop), so there's a fair amount of power available to run sensors and the electronics.

Why? The thing is loop powered? Doesn't matter which way you connect the current control, John D. is saying stuff I agree with, I didn't like your circuit, it's too complex by far and has errors in the current sense.

Have a look at the LM10 app note? Some ideas in there.

All current should pass through the sense resistor in order to be a precision 4-20mA source, and you get that 4mA at zero signal to run the electronics, if you want the desired loop powered operation. Not hard, this 4-20mA or 10-50mA current loop stuff been used for industrial measurement for decades.

You can choose whatever supply voltage you like in a current loop, the idea of the high voltage compliance is to allow for loop resistance when the sensor is a long way from the readout or control box. Put a couple

5V zeners in and you can work with +/-5V in the local voltage frame of reference. The rest of the excess voltage is dropped at the loop driving, signal receiving end.

Grant.

Reply to
Grant

h a

n

But perfectly practical with a rail-to-rail input op amp. If you chose your P-channel MOSFET carefully, the output doesn't need to get all that close to the rail, and the venerable LM301A could probably do the job. The data sheet doesn't guarantee that the the input common mode range goes up to the positive rail, probably because the input bias current and offset might go off a bit when the bases are close to the rail, but in practice they work fine. We exploited that from time to time back in the 1970s.

-- Bill Sloman, Nijmegen

Reply to
Bill Sloman

Hi Grant.

No it's not loop powered unfortunately. There is a lot of other circuitry taking much more than 4mA. And there will be at least 2 channels of 4-20mA outputs. I guess it is not the classical "current loop" but the howland version I made does work fine with the instrumentation it needs to drive.

I looks like you are mixing me (John D) up with Bill? If so, I agree about the complexity (although I don't see the sense errors).

Thanks, I guess it'ss easy if the loop is allowed to float (as I am sure it is supposed to normally).

--

John Devereux
Reply to
John Devereux

Yes, it's not that bad a circuit given my constraints. The inputs don't need to work accurately when at the positive rail since that will only happen when below the "4mA" level.

--

John Devereux
Reply to
John Devereux

You can mirror it off the + supply using a couple of op amps total. Maybe use 0.4-2 mA for the control current. You might need a zener etc. to get the high side op-amp inputs within CM range.

Best regards, Spehro Pefhany

--
"it's the network..."                          "The Journey is the reward"
speff@interlog.com             Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog  Info for designers:  http://www.speff.com
Reply to
Spehro Pefhany

...

Sorry. I thought you might've been constrained to not floating but wrote the 'classic' view of 4-20mA just in case. I worked with it decades ago, had a difficult time realising it was okay to output less than 4mA.

Sure is, now I'll have to look at the new circuits you and other produced...

Grant.

Reply to
Grant

Hi Spehro,

Plus two more precision resistors, right?

Thanks, hadn't thought of the zener.

--

John Devereux
Reply to
John Devereux

R2 is not seeing base current into the transistor, you need to tip your circuit up the other way?

Grant.

Reply to
Grant

I can remember NS data sheets and app notes specifically mentioning the LM301A was good for inputs up to positive, examples for high side current measurement and so forth definitely had the inputs going up to +ve rail. Grant.

Reply to
Grant

[...]

Here are the three circuits I posted in case people don't want to use LTSpice:

"Improved" Howland

Current mirror with mosfets

Larkinized version:

(no offense intended, it just reminds me of some ideas I saw in some of JL's circuits!)

[...]
--

John Devereux
Reply to
John Devereux

Nice - I am finding during this excercise that the parts coming up tend to be all the classic 30 year old stuff. Everything new is too low voltage to be useful.

--

John Devereux
Reply to
John Devereux

[snip]

This simple-minded one...

formatting link

dates back ~10 years, in answer to an original post by Spehro. ...Jim Thompson

--
| James E.Thompson, CTO                            |    mens     |
| Analog Innovations, Inc.                         |     et      |
| Analog/Mixed-Signal ASIC's and Discrete Systems  |    manus    |
| Phoenix, Arizona  85048    Skype: Contacts Only  |             |
| Voice:(480)460-2350  Fax: Available upon request |  Brass Rat  |
| E-mail Icon at http://www.analog-innovations.com |    1962     |

      Remember: Once you go over the hill, you pick up speed
Reply to
Jim Thompson

Thanks Jim, that drives current into the wrong rail for me, I neglected to specify that in my OP.

I am trying to reduce the number of precision resistors for a "referred to zero volts" configuration. Three is the best I have come up with, I quite like this one:

See my other posts for LTspice version.

--

John Devereux
Reply to
John Devereux

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.