I need design a variable precision current source which able to produce 1nA to 10mA. The current output will be controlled through a Micro controller using a DAC. The purpose this circuit is to calibrate another device which need 1nA to 10mA.

I did some research and found below options:

  1. Analog Devices: Precision Nanoamp Bidirectional Current Source Not enough information to how can be modified for my application

  2. simple opamp and Mosfet which output current should be I = Vdac/(R4 or R3) Figure

  3. Also I read about Multi-Range Current Pump too.


simulate this circuit – Schematic created using CircuitLab

(*forget about the part numbers on drawing, just for reference)

Please let me know if any of these option will work for me, or if there is better option out there.

How can I design a precision 1nA - 10mA current source circuit?

  • 10
    \$\begingroup\$ 1 nA to 10 mA is a range of 1:10\$^7\$. A 12-bit DAC has a resolution of 1:4096. How do you plan on doing this? \$\endgroup\$
    – Transistor
    Oct 23, 2019 at 17:50
  • 1
    \$\begingroup\$ @Transistor - The schematic does have a range select where either 100Ohm or 1Megohm is used in the source of the FET, extending the range by 10^4. \$\endgroup\$ Oct 23, 2019 at 17:58
  • \$\begingroup\$ You can apply different circuit topologies to different current ranges and switch their outputs with reed-relays (low-leakage). At the nA scale you will want to go the op-amp route because of the plethora of opamps which have their input bias current tested/characterized/guaranteed in the pA and fA ranges (finding equivalent discrete FETs not as easy). \$\endgroup\$
    – sstobbe
    Oct 23, 2019 at 17:59
  • \$\begingroup\$ Adaptation of eevblog.com/projects/ucurrent ? \$\endgroup\$
    – rdtsc
    Oct 23, 2019 at 18:50

1 Answer 1


These circuits work well, I've built several variations of them to deliver accurate amounts of current, but mostly on the load side. I have a few suggestions:

  • Use a low noise amplifier
  • Use a low leakage mosfet
  • Make sure the feedback loop is compensated properly, the mosfet has small amounts of capacitance and can create poles in the kHz to MHz range. If the poles are higher than the DC gain, then this can create a resonance point and causes oscillations. The best way is to simulate in SPICE with different DC levels while running an AC analysis to ensure stability.

  • Make sure you use a low noise DAC

  • If you use a MUX put the feedback loop so it includes the mux (this is a big hint).

  • Instead of a mux, if the leakage could be controlled, you might be able to use two circuits in parallel.

enter image description here

The circuit above simulates down to 1nA with a 1mV input.

If you need absolute calibration to a specific level of current, I'd buy a Keithly current source meter (like the 2400 Keithly SMU)

  • \$\begingroup\$ Thanks for the detail comment, what do you mean by keep the mux in feedback loop, since the mux is choosing the R6 resistor. I can not use two difference circuit because I need be able to generate nano , micro, and mA which need more than two circuit. \$\endgroup\$
    – Shahreza
    Oct 23, 2019 at 19:11
  • \$\begingroup\$ So, if you roll the mux into the feedback loop the feedback will make it look like the mux isn't there, you might need two muxes to do this. \$\endgroup\$
    – Voltage Spike
    Oct 23, 2019 at 20:23
  • \$\begingroup\$ I am still confuse, I will be appreciated if you can draw me an schematic \$\endgroup\$
    – Shahreza
    Oct 23, 2019 at 21:27
  • \$\begingroup\$ I question the location of C3. \$\endgroup\$
    – EinarA
    Oct 23, 2019 at 21:30
  • \$\begingroup\$ @EinarA And you have a better location? \$\endgroup\$
    – Voltage Spike
    Oct 23, 2019 at 21:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.