# Precision dual current source is software-programmable

Post a comment

For PIN-diode biasing and other applications that require precise current control, the circuit of **Figure 1** provides an accurate dual current source using only two small ICs.

__Click to Enlarge Image__*Figure 1: A dual, precision current source can be realized using two small surface-mount ICs (U*

_{1}in a 4x4mm, 16-pin TQFN package, and U_{2}in a 14-pin TSSOP package).
U_{1} is a dual 10-bit, current-output DAC whose I^{2}C/SPI-compatible serial input lets you program the full-scale output current to six different levels, up to 30 mA. The full-scale output selected can be further adjusted by connecting a resistor (20 kΩ to 40 kΩ) to the "FSADJ" terminal. This circuit substitutes a digital potentiometer (U_{2}) for the resistor. U_{2} is a dual 50 kΩ device with 256 taps, connected in the "rheostat" configuration.

**Table 1** lists the six output-current ranges, each headed by the range of full-scale values obtainable by adjusting the FSADJ resistor. For each output-current range, the table shows the full-scale currents corresponding to the values listed for R_{FSADJ}.

__Click to Enlarge Image__
The ideal output current from either U_{1} DAC (pin 12 or 9) is

I_{OUT} = (CODE_{10} x I_{FS})/1024,

where CODE_{10} is the decimal value of U_{1}'s input code, and I_{FS} is the desired full-scale output current, based on the output range and adjustment resistor selected.

U_{2} serves as an adjustment resistor to set the maximum output-current levels via software. **Figure 2 **shows U_{1}'s output current versus digital input code for the limiting resistor values (20 kΩ and 40 kΩ), with U_{1} programmed for a 9 mA maximum output current (4^{th} column in Table 1).

__Click to Enlarge Image__*Figure 2: A full-scale adjustment resistor (R*

_{FSADJ}) sets the maximum current limit in the Figure 1 circuit. You can program the digital potentiometer (U_{2}) for any output current up to the R_{FSADJ}boundary limit, without changing hardware.
Either of U_{2}'s digital potentiometers gives the following resistance value between its high terminal (HA or HB) and its wiper or low terminal (WA, LA, WB, or LB, all of which connect to ground):

R = (D x R_{HL})/256,

where D is the decimal value of U_{2}'s digital input code, and R_{HL} is the potentiometer's end-to-end resistance.

For a given output range (programmed via U_{1}), the digital potentiometer lets you adjust the full-scale value through a range of 100% (minimum to maximum), without changing hardware. The adjustment resolution of U_{2} is 8 bits (256 taps). For better precision, you can substitute a higher-resolution dual digital potentiometer such as the MAX5495, which is a 10-bit device with 1024 taps.

You can parallel the dual outputs of U_{1} to obtain current outputs as high as 60 mA. U_{1} is also SPI compatible, and its DOUT output lets you daisy-chain multiple MAX5550s to obtain even higher output currents. For a functional equivalent of U_{2} that is also SPI compatible, substitute the MAX5488 digital potentiometer.

**About the authors**

Both authors are with Maxim Integrated Products, Sunnyvale, CA. ** Alex Shih** is a Member of the Technical Staff, in Applications Engineering, while

**is a Technical Business Manager for Signal Processing and Conversion.**

*Joe Neubauer*