This project provides a USB-controlled, high dynamic range, precision current supply. It was designed as a calibration tool for MetaShunt V2, but can be used anywhere high accuracy, isolation, and high dynamic range is needed.
It is open source hardware, firmware, and interface.
Note: The fabrication costs of the first 2 prototype units were provided by JLCPCB as part of the OSHWLab Stars promotion. Thanks to them for the support!
I was able to perform some accuracy testing with a Rigol DM3068 6 1/2 digit desktop digital multimeter. This testing provides another level of validation of the accuracy of this project. I tested two units. The first unit was in the constant reference voltage mode. The second unit was in the adjustable reference voltage mode, with various current commands set. The below tables shows the actual commands (which are sometimes slightly odd numbers due to the limited bits of the DAC in the adjustable reference voltage mode.) The accuracy claims are from the DM3068 datasheet for the 1 Year accuracy specification. The accuracy is given in % of reading and % of range, so both are shown here. The first table consists of measurements for the constant reference voltage mode.
Actual Commanded
Measured Current
Error
Error (%)
DM3068 Claimed Accuracy
0.3000 uA
0.2965 uA
-0.0035 uA
-1.2%
0.00015 uA + 0.03uA = 0.03015 uA
3.3000 uA
3.2945 uA
-0.0055 uA
-0.17%
0.00165 uA + 0.03 uA = 0.03165 uA
30.2999 uA
30.2469 uA
-0.053 uA
-0.17%
0.01515 uA + 0.03 uA = 0.04515 uA
0.300296 mA
0.300211 mA
-0.085 uA
-0.028%
0.15 uA + 0.06 uA = 0.21 uA
3.00016 mA
2.99853 mA
-1.63 uA
-0.054%
1.5 uA + 3 uA = 4.5 uA
29.9859 mA
29.9920 mA
6.1 uA
0.020%
15 uA + 6 uA + 21 uA
0.234107 A
0.233970 A
-0.137 mA
-0.059%
0.23 mA + 4 mA = 4.23 mA
0.389206 A
0.388789 A
-0.417 mA
-0.11%
0.39 mA + 4 mA = 4.39 mA
Note that for every single measurement, the measured error was smaller than the claimed 1-year accuracy of the DMM used, indicating that this device is precise to a higher level than I can measure!
The table below shows the measurements for the adjustable reference voltage mode.
Actual Commanded
Measured Current
Error
Error (%)
DM3068 Claimed Accuracy
0.0500 uA
0.0436 uA
-0.0064 uA
-13%
0.000025 uA + 0.03 uA = 0.03uA
0.0200 uA
0.0156 uA
-0.0044 uA
-22%
0.00001 uA + 0.03 uA = 0.03 uA
0.1000 uA
0.0960 uA
-0.004 uA
-4%
0.00005 uA + 0.03 uA = 0.03 uA
1.000 uA
0.9960 uA
-0.004 uA
-0.4%
0.0005 uA + 0.03 uA = 0.0305 uA
9.9999 uA
9.9877 uA
-0.0122 uA
-0.12%
0.005 uA + 0.03 uA = 0.035 uA
99.9999 uA
99.9818 uA
-0.0181 uA
-0.018%
0.05 uA + 0.03 uA = 0.08 uA
1.00052 mA
1.000397 mA
-0.123 uA
-0.012%
0.50 uA + 0.06 uA = 0.56 uA
9.99302 mA
9.99955 mA
6.53 uA
0.065%
5.0 uA + 3.0 uA = 8.0 uA
99.9638 mA
99.935 mA
-28.8 uA
-0.029%
50 uA + 6 uA = 56 uA
250.000 mA
249.810 mA
-0.19 mA
-0.076%
0.25 mA + 4 mA = 4.25 mA
Again, for every single measurement, the measured error was significantly smaller than the claimed 1-year accuracy of the DMM used, indicating that this device is precise to a higher level than I can measure!
An important factor to the usefulness of this device is the worst-case accuracy of the current supply. I performed an analysis, which is included in the Github repo and described here. To understand the calculations, let's first discuss the key components and accuracy metrics. Note: all calibration is assumed to occur in climate controlled locations, so variability over temperature is ignored here.
Component
Accuracy Metric
Notes
REF3030
0.2%
Fixed reference voltage
DAC80501
TUE 0.06% FSR
Adjustable reference voltage
AD8603
50uV max offset voltage
AD8276
0.05% gain error; 500uV max system offset voltage
Shunt Resistors
All 0.1% accuracy
AO3400A
26.5-48mOhm range Ron --> assume 22mOhm variability
Extra resistance in PCB is not known, but designed to be minimal
Analysis was done in Python here to compute the maximum percent error for each current level in the fixed reference voltage mode and for a variety of current settings for the adjustable reference voltage mode. The chart below shows the results.
There are three interesting results here:
The accuracy is quite good, typically +/- 0.25% accuracy over a lot of the operational range.
The accuracy is worse at higher currents - this is due primarily to uncertainty of the on resistance of the shunt FET. At lower currents, that variability is small relative to the shunt resistance (e.g. 22mOhm vs 10MOhm), but it becomes relatively meaningful at lower shunt resistance (e.g. 22mOhm vs 7.66mOhm).
The accuracy diverges to be worse than -1% at several levels. These correspond to the adjustable reference mode at small DAC output voltage. The total unadjusted error (TUE) for the DAC is 0.06% FSR worst case, which is 1.5mV. In this analysis, the lowest output DAC voltage shown is 100mV, so 1.5mV becomes a substantial error and dominates the error. Note that this is the worst case, and typical TUE is 0.025% FSR, which brings the typical error down within +/-0.6%
Overall, this analysis shows that for fixed current mode, the worst case expected accuracy based on datasheets is +/-0.3%, while the worst case expected accuracy for the adjustable reference voltage mode ranges based on the reference output voltage. If 100mV is the minimum output voltage used, the accuracy is +/-1.5%. If 500mV is the minimum output voltage used, the accuracy is +/-0.3%.
The second mode of operation for this device uses a precision 16-bit DAC to set the reference voltage, and the MOSFETs to set the shunt resistance. This enables a highly adjustable current supply across a huge dynamic range. Firmware and interface software was developed (and is on the open source Github repo) to allow for a command of any current. The system will chose settings that are as close as possible to that command. To demonstrate this, a few tests were performed at current levels that are not possible with the constant reference voltage mode. Results are below:
To evaluate the performance of this device, I started with connecting it up to a MetaShunt V2, without prior calibration of anything except the highest 2 current shunts of MetaShunt V2.
The table below compares the expected current (from the design), compared to measurements from MetaShunt V2. The images below also show these results. Overall, the expected and measured current matches very well, all within 1% or better. Future testing will show the reliability of the current supply as a reference truth.
This project is fairly straightforward. The constant current supply circuit is based off of the Analog Devices AN-1530 application note for a low cost, precision constant current supply. The AD8276 Difference Amplifier and the AD8603 Op Amp are used in the current supply circuit. However, to achieve a high dynamic range, 8 different MOSFET controlled shunt resistors are used for setting the current, and the reference voltage is provided either by a fixed high 0.2% accuracy precision voltage reference or by a precision DAC (TI DAC80501). With this design then, there are two operational modes:
High precision, constant reference voltage mode
Precision, adjustable reference voltage mode
The MOSFETs and DAC are controlled by an onboard STM32L4 microcontroller, with USB and power isolated so that this device can get power from and communicate with a computer over a USB-C cable, while remaining electrically isolated.