Saturday, October 8, 2016

Preliminary accuracy estimation for the voltmeter

It is time to make preliminary accuracy calculation before making the first PCB prototype.
Initially I had target of 100ppm year accuracy for the low accuracy version with off-the-shelf ADC and 20ppm for multi-slope ADC version. Lets see if selected components will fit into the sub 100ppm target.
The relative accuracy of the voltmeter is given as +/- percent of reading plus percent of the range. The reading corresponds to the gain error of the voltmeter and the range is related to the offset error. Because the voltmeter contain several components, the worst case error is the sum of all errors from each component, but if errors are uncorrelated, root sum square method can give more accurate estimation.
I will try to estimate the accuracy for one year period and for 10 °C temperature range between 18 and 28 °C.
The picture below shows all components contributing to the accuracy errors of the voltmeter:


The accuracy estimation is shown in the table below. I used the worst maximum values extracted from the datasheets of the components.
The accuracy of the LTC2057 op-amp is calculated twice : as input buffer and as buffer in front of the SPDT switch. The accuracy of the voltage divider resistors LT5400 is only calculated for the 20V range, because it is used only for this range. The gain error of the op-amps are calculated based on the open loop gain value. The gain error of the ADC is calculated when the offset is subtracted from the Full Scale Error (FSE).

2V Range20V Range
Gain error, ppmOffset error, ppmGain error, ppmOffset error, ppm
Offset
2.50
0.25
Offset drift temp.0.130.01
Gain0.180.18
Offset
2.50
0.25
Offset drift temp.0.130.01
Gain0.180.18
Temp drift0.00
10.00
Long term year0.002.00
Offset
7.50
0.75
Offset drift year6.000.60
Offset drift temp.3.000.30
Gain3.333.33
INL
5.005.00
Offset2.500.25
Offset drift temp.0.100.01
Gain (FSE-Offset)8.00
8.00
Gain drift temp.1.921.92
Temp drift20.00
20.00
Long term year20.0020.00
2V Range20V Range
AccuracyReading, ppmRange, ppmReading, ppmRange, ppm
Using worst case method53.6129.3565.617.44
Using root sum square method29.6512.0431.355.12

Using the worst case method, I got ~83ppm for full-scale measurement for the 2V range and ~73ppm for the 20V range.
Using the root sum square method, I got ~42ppm for full-scale measurement for the 2V range and ~36ppm for the 20V range.

The actual accuracy can be reduced even more with the software calibration for the gain and the offset and only temperature drift and long term gain and offset errors will remain. 

Looking into the table data, the voltage reference will contribute the most for the gain error and the ADC buffer for the offset error, except for the 20V range, where the ADC INL is dominant.

Of course, the final accuracy shall be measured after one year usage of the voltmeter using a laboratory grade voltmeter or with voltage standard. 

Sunday, September 18, 2016

Preliminary price estimation for the voltmeter's analog front end

Here is a preliminary price estimation for the analog front end of the digital voltmeter.
The BOM includes only the most expensive and important parts, but not :
- The micro controller. 
- The power supply.
- Mechanical parts like banana terminals or case. 
- Passive components except the matched resistors for the voltage divider.

The price are for single quantities, without taxes and shipping taken from www.digikey.com site.

Component nameDescriptionpcsPrice, USD
LTC2057HVIMSInput, switch and comparator op-amps420
LT5400BCMS8E-8Quad matched resistors17.46
ADG5419BRMZAnalog switch14.7
MAX990Comparator for the auto voltage range11.62
MCP1501-20Comparator Vref 2.048V10.78
MCP6062Dual opamp for comparator Vref10.82
LT1001ACN8ADC buffer16.53
LTC2440CGN24 bit ADC111.18
LTC6655BHLS8Voltage reference 5V114.92
74HC4053PW3x SPDT10.41
MMBT3904NPN transistors30.48
Total price, without tax and shipping68.9

Additional cost should be added for the PCB. If all components can fit in the 50mm x 50mm PCB, it will cost ~10-12 USD for 4 layer PCB with ENIG finish.

Tuesday, September 6, 2016

Final breadboard tests

I connected all small breadboards for the final tests and got big mess of wires:


The noise when inputs of the LTC2057 are shorted was in the 10-12uV p-p range which is ok if take in consideration the used voltage reference specs and the buffered op-amps (LTC2052) in the auto-range breadboard.

Unfortunately during the noise tests, I saw a voltage drift which is not acceptable. It is always positive and can reach 1-2 mV in period of 30-60 min:


For now I suspect the front end LTC2057 op-amp, because if I connect the voltage source direct to ADC driver or ADC itself, I do not get such drift. So I have to try one or more op-amps to resolve this issue.

Update:
I used 1.5 AAA battery when I saw the voltage drift. I measured with a Keithley 2002 and got similar drift again, so it is not from the LTC2057, but from the battery. I do not have yet explanation for this fact.

Thursday, September 1, 2016

Breadboarding automatic voltage range

The proof of concept automatic voltage range is ready and it is working as expected.

The automatic voltage range is based on voltage divider, window comparator and single-pole, dual-throw (SPDT) switch. The middle point of voltage divider is connected to a window comparator which triggers input signal to the SPDT when the voltage is greater then fixed positive and negative threshold. In result the SPDT switch connects middle point of the voltage divider to the ADC buffer. When the voltage is less then the threshold, SPDT switch connect directly the output of the input buffer to the ADC buffer.

I made a breadboard with the following components:
  • Input buffer LTC2057.
  • Voltage divider with LT5400-3 (quad matched resistor network). This is the 100K/10K variant, but the final should be 9K/1K (LT5400-8) for 1:10 ratio and lower resistor noise.
  • MAX990 as window comparator. 
  • ADG5419 SPDT switch. Here I used IC solution, but pair of P and N-channel MOSFET can be used too for cost reduction. 
  • MCP1501 voltage reference 2.048V with MCP6061T for reference negative voltage.  The voltage reference was divided with the spare resistors from the LT5400-3 which is the stable voltage threshold +/- 0.2048V for the window comparator.  
  • LTC2052 : 2 additional op-amp buffers for input of the SPDT switch, one for the window comparator input and one for buffering the input of the negative voltage threshold.  
When the input voltage is less than 2.048V and greater than -2.048V, the comparator output is in a low logical level and the SPDT switch connects direct the LTC2057 to the ADC buffer. When the input voltage is greater than 2.048V or less than -2.048V, the comparator output is in high logical level and the SPDT switch connect the middle point of the voltage divider to the ADC buffer.

To use low cost, low voltage window comparators, the middle point of the voltage divider is connected to comparators. In this case the second pair of LT5400 resistors are used for decreasing the comparator's voltage reference.

The reference voltage of 2.048 was selected, because the SPDT switch needs time to switches between input buffer and voltage divider. If this time is too long, the ADC buffer and ADC inputs can be damaged by input voltage if power supply of the buffer is less then the input voltage. The maximum input voltage of the LTC2440 ADC is now 2.5V with the dual supply schematics. The rising slew rate of the LTC2057 is typically 1.3V/uS, which means that maximum time for switching should be no more then 0.347uS [(2.5-2.048)/1.3].

Picture of the breadboard and the power supply is shown below. This is the most density breadboard which I had ever made. From left to the right are placed : LTC2057, LT5400-3, ADG5419, MAX990, MCP1501 and MCP6061T. There was no space left for the ADC input buffer (LT1001A) so I have to place it in the ADC breadboard later.


The picture above is before to place additional op-amp buffers for the SPDT switch and for the comparator. The reasons behind this I found during testing functionallity of the schematics:
- If one of the switch is switched off, there is a float voltage which influence the input of the voltage comparator. In result when the higher or lower voltage than the comparator threshold is applied, the switch does not switches at all.
- During the noise test I found that input of the MAX990 comparators are too noisy, so adding one more low noise op-amp in front of the comparators resolved the issue. 
I used the LTC2052 quad op-amps which I had in stock from the ohmmeter schematics. Note that the maximum supply voltage for the op-amp connected directly after input buffer must be no less then the expected measured voltage.   

The schematics can be found in the git repository. Here is a screenshot:

Sunday, August 28, 2016

Breadboarding LTC2440 level shifting with dual supply

I finished this variant of level shifting and I got successful result. I had doubts about noise levels due fact that the voltage reference use ground which is the -2.5V output from the linear regulator. But the measured noise when the ADC inputs are shortcut to GND shows noise level less than noise specified in the voltage reference datasheet.

I used low cost +5V ADR395 voltage reference from Analog Devices for the breadboarding because I had only +2.5V version of the LTC6655. The noise level of this voltage reference is 8uV p-p according the datasheet, but when I short inputs of the ADC, I got less then 1uVp-p noise. 

The ADC LTC2440 can measure now +/- 2.5V on the input. The picture below shows my setup with power supply module made with cheap LDOs. This supply gives +/- 2.5V, +/- 5V and GND to rest of the breadboards. 
The breadboard at bottom contain the ADR395 and the LTC2440 IC. 
The breadboard in the middle contain the level translator for outputs and inputs from the ADC to the uController. The outputs from the ADC are level translated with bipolar transistor MMBT3904 as this is shown in the LTC2442 datasheet page 32. The inputs for ADC are level translated with 74HC4053 which is triple single-pole double-throw analog switch.
In the bottom right corner is shown the Cutecom application which trace measured results from Pro Micro Arduino board. 


Measuring negative voltage less then -0.3V (I tried with AA battery) which is the maximum allowed from the LTC2440 datasheet does not cause malfunction of the ADC.

The schematics is shown below and can be found in opendcm git repository in the following link. This schematics was made with the LTC6655 voltage reference, because I was too lazy to make new component for the ADR395.  


Next step is to implement the automatic voltage range on the breadboard and to connect it to the ADC. I already received all parts and hope that next week will have enough time to finish it. This is the final step before start working on the first PCB prototype.