AD587 digital temperature compensation - Page 1
Forum section: electronics / general

author: robert.rozee
author_rank: Frequent Contributor
timestamp: November 03, 2020, 02:20:24 pm
content: has anyone thought of using a digital potentiometer to perform temperature compensation of an AD587 voltage reference?have just been playing around with an AD587 from ebay (a genuine ceramic part), and it performs extremely impressively without any trimming. admittedly, i've only got a 5 1/2 digit fluke 8842 to check against, but for an absolute metrology amateur it is quite amazing to watch a solid 10.0009v on the meter's display!what i am thinking of is having the AD587 initially trimmed slightly low(?) with a couple of fixed-value resistors, custom selected to match the specific device. a secondary trim would consist of something like an MCP4151-103E/P (10k digipot) along with a relatively high series resistor connected in parallel with the ground-side fixed trim resistor - the 4151 requires that the analog pins sit between its ground and Vcc pins, where Vcc is 5v max.in operation, temperature would be monitored with a DS18B20, giving fractional degree measurements to a small microcontroller having an internal (EEPROM) lookup table used to adjust the digipot setting every few seconds. between adjustments the microcontroller could sleep.one big advantage of this arrangement, as opposed to using a PTC thermistor for analog compensation, is that the compensation profile is not limited to first (or second) order. the profile would be exactly as complicated/convoluted as the specific device being compensated required.initial temperature calibration would involve using some sort of improvised oven slowly running the temperature from (say) 0 degrees C up to 50 degrees C. the drift of the (boxed) reference would be continuously measured by a remote multimeter and fed back to the microcontroller, which would build the lookup table as the temperature of the whole setup increased over the calibration range.the microcontroller could also have a single absolute calibration value (to be added to each lookup value) that allowed for later recalibration against a standard without need to recreate the whole lookup table.an interesting idea?cheers,rob :-)

author: dietert1
author_rank: Super Contributor
timestamp: November 03, 2020, 03:01:09 pm
content: In fact your idea isn't that new and the "real thing" is a reference including a real time clock to correct aging effects depending on power on/off. Why don't you just develop a demonstration and see how interesting it is? As you wrote, the implementation should be fairly straightforward, except it requires some research on your reference. As far as i know an implementation would be something new, but maybe i missed something.Regards, Dieter

author: guenthert
author_rank: Frequent Contributor
timestamp: November 03, 2020, 04:57:16 pm
content: I'm not aware of such schemes for the AD587, but generally, yes, temperature compensation of references has been performed analog and digitally e.g. the schematics of a Solartron 7081 shows a combination of analog (temperature) compensation and digital (calibration) for a 1N829 Zener.Those digipots have only fairly low resolution and poor temperature coefficient. If there's a MCU in the system already, you might be better off using some PWM scheme with precision parts.

author: Andreas
author_rank: Super Contributor
timestamp: November 03, 2020, 06:49:04 pm
content: Hello,yes the idea is interesting.I do this already with my AD586 based ADCs.I use a NTC which gives ~0.1 deg C average resolution in a 10 .. 40 deg C range with 10 bit ADC resolution.Some things that I have learned:- the largest problem is to measure the exact internal chip temperature (or having a constant offset).if you do not get the exact temperature your cirquit gets sensitive to temperature gradients and also dependant on orientation.- with only 0.1 deg C resolution you need to select the references for minimal T.C. (I recommend below 1 ppm/K)a typical AD587 has between 2 .. 7 ppm/K.with 5 ppm/K and 0.1 K resolution the jumps between 2 neighboured steps is 5 uV so far more than the effective 1/f noise of the reference.- for the same reason you might want to have at least 12-16 bits resolution to trim. (so at minimum a coarse/fine trimming scheme).I have already thought of a temperature compensated version of my AD587LW reference.Either with a 12 Bit ADC/DAC (and selected AD587) with PIC24FV32KA301 + LTC1257.Or with PIC16F18426 and 16-24 Bit effective PWM.But unfortunately I have more projects on my list than time....with best regardsAndreas

author: fcb
author_rank: Super Contributor
timestamp: November 03, 2020, 06:57:33 pm
content: You can do it, and it is done. We've been doing it for awhile using an LT1021 and a PWM DAC for a possible future product.The biggest headache is calibration and it is huge, but you can go from 1-2ppm/C to almost unmeasureable ppm/C if you can be bothered. Aging compensation is complicated as you now have to consider the analog temperature sensor longterm stability.The win is that you can effectively compensate the whole system plus you get an extra source of data to add to feed the volt-nuttery.

author: robert.rozee
author_rank: Frequent Contributor
timestamp: November 04, 2020, 04:05:15 pm
content: attached below is an initial 'proof of concept' of what i have in mind:the 10k pot represents the initial calibration resistors selected. these are selected while the middle link (680k resistor to junction of the two 4k7 resistors) in place, ie the digipot is set to mid-scale. given the +3%/-1% trim range of the AD587 the top calibration resistor will end up being around 2.5k, with the lower one around 7.5k. this means pin 5 will sit around 7 volts or so.the two 4k7 resistors represent the digipot, simplified to just 3 taps. the TL431 is configured as (effectively) a 5v zener, and is required to keep the MCP4151 analog pins within the devices supply range. any temperature drift in the TL431 will end up being calibrated out, but we do still need to consider long-term drift as the device ages. i don't think that drift of the digipot will matter, as it is being fed with a constant voltage.with a 680k resistor between the digipot and pin 5 of the AD587 i get around +/- 400uV of adjustment, that is +/-40ppm. given that the digipot has 257 taps, this translates to roughly 3uV (0.3ppm) step size when trimming. these steps will not quite be linearly distributed, but close, sitting along a shallow curve. decreasing the value of the 680k resistor will increase the adjustment range, at the expense of increased step size.the device i have is an AD587LQ, which looks like it should have 5ppm per degree of temperature change maximum. this means that worst case it can be compensated over a 16 degree temperature range (80/5). if i were happy to only compensate to within 1ppm, then i could expand out to a 50 degree range (256/5).the question is now, how useful is it to have temperature compensation over a 50 degree range (0 degrees C up to 50 degrees C) that is to within 1ppm? does this represent a useful performance improvement?the next time someone i know locally puts in an order to RS i'll order half a dozen MCP4151 10k digipots to experiment more and get the digital side up and running.cheers,rob :-)

author: dietert1
author_rank: Super Contributor
timestamp: November 04, 2020, 05:34:25 pm
content: Please have a look at the TI 8532 DAC. It's similar to a digipot, except with 65536 steps and tight specs. I mean if you want a metrology grade implementation.Regards, Dieter

author: Andreas
author_rank: Super Contributor
timestamp: November 04, 2020, 09:45:58 pm
content: Quote from: robert.rozee on November 04, 2020, 04:05:15 pmcaution the TL431 calls for a minimum current ~1 mAFor me the useful temperature range is the temperature in my "lab":18 deg C on a cold day in winter33 deg C on a hot day in summer (but I am not shure if I want to do measurements at that temperature).with best regardsAndreasEdit: and please keep that nasty switchmode supply far away from any precision stuff.

author: robert.rozee
author_rank: Frequent Contributor
timestamp: November 05, 2020, 09:54:54 am
content: version 2 'proof of concept' below:switching to a dual digipot (MCP42010-I/P) allows for both coarse-range and fine-range temperature compensation. as an added advantage, this also ups the TL431 current to 1mA. each of the two digipots have 256 steps.coarse-range compensation is now +/-2700uV using a 100k resistor, which more than covers the worst-case 5ppm (50uV) per degree temperature component over a 50 degree range (0 to 50 degrees C). each step is now roughly 20uV.fine-range compensation is handled with the second digipot and a 2.2M resistor. this provides +/-100uV of adjustment, with each step a little under 1uV.i rather prefer a digipot over a DAC as any temperature effects on the digipot do not matter. as long as the 256 resistors remain more-or-less matched against each other, it will still accurately divide the voltage across it. and the part is CHEAP, and available in a DIP package.the switchmode boost converter in the earlier photo is just an easy way of quickly getting the required 15v supply. i'm also using very cheap carbon film resistors, and everything is assembled on a very sub-optimal breadboard. but this is just for getting a feel of how things work, and certainly not indicative of any final implementation.any final version would require 4 low-drift resistors (~2.5k, ~7.5k, 100k, 2.2M), but none would need to be excessively precise or temperature stable. the TL431 would likely benefit from being replaced with something a little higher-tech, although only if this gave better long-term drift results.does this cover most of the concerns? any comments?cheers,rob :-)

author: dietert1
author_rank: Super Contributor
timestamp: November 05, 2020, 10:15:10 am
content: The DAC8532 i mentioned has two resistor strings with 65536 resistors each. That's 256 times more than a two channel digipot, so it should be more expensive. In the same product line you can also find the DAC8560, this time a one channel DAC including a 2 ppm/°C reference. I hope you understand why two 8 bit digipots can make a 9 bit DAC but not a 16 bit DAC. Have a look at the specs!Regards, Dieter

author: MasterT
author_rank: Frequent Contributor
timestamp: November 05, 2020, 02:23:13 pm
content: My understanding, that EEPROM look-up table makes 16-bits DAC out of two pots, not 9-bits. Calibration procedure would compensate both error - voltage deviation vs temperature & DAC's DNL/ INL at the same time.

author: Cerebus
author_rank: Super Contributor
timestamp: November 05, 2020, 03:31:01 pm
content: Quote from: dietert1 on November 05, 2020, 10:15:10 amWhile you can't combine two 8 bit DACs to get aneffective16 bits, you can get considerably more than 9. Quite how many is going to be limited mostly by the errors on your 'coarse' DAC. As long as it has stable, consistent errors, you ought to be able to calibrate quite a lot of that out.There's a, now classic, Jim Williams design that combines two 16 bit DACs to get an effective 20 bit DAC with ~0.5 ppm linearity. That's an extra 4 bits, not the extra 1 bit you imply would be the case, and is attested to by actual measurements of the resulting circuit.Williams combined the DAC outputs in the ratio 1:2060 (11 bits worth), which results in a lot of overlap of the ranges of the 'coarse' and 'fine' DACS. Worst case uncorrected error for the DACs he was using was about 4 bits (16 LSB).

author: fcb
author_rank: Super Contributor
timestamp: November 05, 2020, 06:04:52 pm
content: Rather than trying to build a 16bit DAC out of low-count DAC's. I would propose a slightly different way of trying to solve the linearity issue of and COARSE/FINE DAC pair, it's more to do with calibration.Overlap your COARSE DAC setup so that it 1 LSB is something like 2-4 times smaller than the total adjustment offered by the FINE DAC. The FINE DAC should be capable of compensating 150% of the total drift between two calibration temperature points. So lets say you aim to calibrate at 1C intervals (between 15C and 30C):1. Goto 15C2. Set the FINE DAC to perhaps 25%.3. Adjust the COARSE DAC till you get as close to 10.0000V as possible.4. Zero in on the 10.00000V with the FINEDAC5. Record the measurements6. INCREMENT TEMPERATURE BY 1C7. Zero in on the 10.00000V with the FINEDAC8. Record the measurements9. Goto step 2This way the difference between any two adjacent temperature points (e.g. 1C) is always covered by the FINEDAC.

author: dietert1
author_rank: Super Contributor
timestamp: November 05, 2020, 10:55:49 pm
content: It's a typical beginner error to start a project with optimization. For setting up a prototype/study you should use the best parts available. Otherwise it's easy to loose focus. The question of how to combine two DACs to get a higher resolution DAC is irrelevant to building a reference with automatic and continuous ambient temperature compensation. Better think about a software scheme that includes AI to unify initial calibration with later recalibration. Once you have something useful you can still try and optimize to make it a competitive product.Regards, Dieter

author: uski
author_rank: Frequent Contributor
timestamp: November 06, 2020, 04:06:05 am
content: Calibration will be interesting and will probably require some time in a temperature controlled oven. You will need to calibrate against the drift of the digital pot itself, if any.Also, it is possible that the digital pot will age too. I don't know the extend, but it is possible that the net aging of the entire system will be worse than the aging plus the temperature drift of the reference, resulting in a decrease of performance and not an increase.I don't know if it's the case but I would start at looking at the datasheets of all components, calculate the worst case drift and see if it makes sense, before even ordering parts.

author: dietert1
author_rank: Super Contributor
timestamp: November 07, 2020, 06:51:35 am
content: A calibration procedure should be included in the firmware. A reference adjusted by a processor may still include a heater for calibration purposes. Or you try using ambient temperature changes for collection of data.Regards, Dieter

author: fcb
author_rank: Super Contributor
timestamp: November 07, 2020, 12:17:44 pm
content: Quote from: uski on November 06, 2020, 04:06:05 amNot really. You don't need a temperature-controlled oven to calibrate a digitally compensated reference, just a source of slowly changing ambient heat - could even be an incandescent bulb in a cardboard box.What you have to make sure of is that your reference IC and associated circuitry is at the same temperature as your temperature measurement device, this could mean using a piece of aluminium over the whole circuit and a bit of gap-pad (Bergquist product), or possibly just using the big copper PCB planes and surface mounting everything. Main thing is to keep a everything at the same temperature or at least maintain the same difference between parts.Once you can do this then all you do is run your slow thermal sweep and actively adjust the output of the reference to 10.0000V (building a table of temperature-to-adjustment voltage) – this method compensates out all temperature related errors with the whole circuit.Obviously, it can’t compensate for age related drifting without further work.

author: robert.rozee
author_rank: Frequent Contributor
timestamp: November 07, 2020, 01:44:38 pm
content: fcbis entirely right about the calibration process, it is actually a quite simple automated process, but will take some number of hours to run to completion. throughout this time one has to have connected either a high-precision voltmeter, or a precisely calibrated and stable reference + a comparator.i was thinking of having everything mounted in a sealed metal box, with that placed in a sealed plastic container in the freezer overnight. then just let the metal box and contents slowly warm up while running the calibration process; once up to room temperature then use lamps/etc to slowly get the rest of the way up to the 50 degree mark.a far bigger problem, alluded to bydietert1andCerebus, is that of combining two 8-bit trim devices to get substantially more than 8 bits of useful trim. using the coarse/fine adjustment method i was thinking about does in fact get you to around 13-bits of adjustment, but i have come to the conclusion that:(a) the coarse/fine approach i've outlined would be fine for setting the output to a specific value ONCE, but,(b) would be extremely sensitive to temperature-induced drifts and hence provide a repeatable compensation ability no better than just using a single 8-bit digipot on its own :-(IF one could get 10-volt tolerant digipots cheaply, then the coarse/fine system may (more-or-less) work with the TL431 bridged out, but the complex drifts introduced by using the TL431 to offset 5-volts off the top of the reference voltage makes things just far too complicated and prone to in-practice-failure. small shifts in the TL431 may effectively shift the coarse calibration by a single 1/256th step, which will swamp any useful setting of the fine calibration.i am still intrigued by a couple or so possibilities:1. using an NTC thermistor for coarse temperature compensation (as per the geller/larsdesign), and a 256-step digipot for making the fine adjustment, or,2. doing away with temperature compensation electronics altogether, and instead having DS18B20 + microcontroller + small LCD display in the same box as the reference but not electrically connected to it. the microcontroller would have a correction table programmed into it, and would on the small display show the predicted output voltage from the reference based upon a previously created lookup table. think of it as an electronic version of a correction curve printed on the outside of the reference housing, but a whole lot easier to use, or,3. possibly experimenting with an LT1021-5 reference, that has a 5-volt output.cheers,rob :-)

author: fcb
author_rank: Super Contributor
timestamp: November 07, 2020, 01:56:49 pm
content: "my goal is to create a cost effective reference"hahaha - you just removed this text from your last post - your game is up - you intend to compete in this field with us, Doug Malone, etc..

author: robert.rozee
author_rank: Frequent Contributor
timestamp: November 07, 2020, 02:14:06 pm
content: that last line was one i'd not completed and post accidentally!it was going to be something like:my goal is to create a cost effective reference that you can chuck in the draw for several years, and then use in winter or summer, with confidence that it is still going to be within calibration to 6 or 7 digits.but then i decided that sounded a tad silly - i was describing something far more high-end than i was ever likely to be able to design/produce.cheers,rob :-)

author: Andreas
author_rank: Super Contributor
timestamp: November 07, 2020, 06:12:17 pm
content: Quote from: robert.rozee on November 07, 2020, 01:44:38 pmThere are 2 beginner errors in that procedure.a) Putting a precision device into the freezer will most probably put permanent shift on the device.My 2 AD587LW devices which I put into the freezer had about -5 ppm permanent shift.https://www.eevblog.com/forum/metrology/ad587lw-10v-precision-travel-standard/msg2449794/#msg2449794Frank also reported that his 3458A had a permanent shift of some ppm after transporting it in winter by car for a volt nut meeting.So you should not make the temperature range much larger than the intended operating temperature range. Otherwise you may catch permanent shifts / hysteresis.b) when only measuring rising temperature you may not recognize any errors which might show up on a temperature cycle with equal gradients up and down.If the temperature sensor is mis-placed then you will see a difference at the same temperature when ramping up and down.This error will get larger if you increase the ramp speed.If your comparison instrument has a problem or if your device under test gets a permanent shift during ramping you will not meet at the beginning and end point. (same ramp direction and same temperature)I usually start from about 25 deg go to lower values (10 or 15 deg C) ramp to the upper limit (e.g. 40 deg) and ramp down to 25 deg C. On a good device with a stable measurement instrument the opening of the curve should be less than 1 ppm.with best regardsAndreas

author: robert.rozee
author_rank: Frequent Contributor
timestamp: November 10, 2020, 02:57:51 pm
content: Andreas: excellent information, will stick to 10 degrees C as my lower limit, and 40 degrees C as my upper, with slow ramping between; this in fact makes things a tad easier. am currently looking at using a MCP4921 12-bit DAC to implement the correction (about nz$3 each), as suggested by others earlier on. it still only has a 5 volt operating range, so will use a resistive divider and opamp to derive the DAC reference.ithink12 bits should be sufficient with the 10-40 degree C operating range to achieve0.1ppm1ppm(1uV)(10uV)step size.have a few peltier effect devices sitting spare, and will look into using one combined with an h-bridge (to alow switching between cooling and heating) and surplus PC power supply to create a 'poor mans' thermal chamber. the h-bridge + micro + DS18B20 will allow controlled ramping between temperatures. what i'm thinking of is a plastic butter dish, with a fairly thick aluminium plate in the base to provide thermal mass. the peltier effect device is bolted to the underside of this through a hole in the dish, and sandwiched in place with an inverted old CPU heatsink. the lot sits on top of the PC power supply, that has its fan reversed to blow air up onto the heatsink fins.and i thought this was going to be easy!!!cheers,rob :-)