1989 vintage ADC replacement - Page 1
Forum section: electronics / projects

author: kubeek
author_rank: Contributor
timestamp: June 06, 2013, 11:35:53 pm
content: My dad's got a precision lab-grade scale, but recently it stopped working. Tracking the original manufacturer I got hold of the service manual for the scale, and figured out that the fault lies in the ADC module as it doesn't output any data and the pin is floating.Now the ADC is a quite simple 15-bit multiple ramp converter module, but it is potted into the case quite well, and since it was made in the early 90s I doubt I can get a spare from anywhere, so the final choice is to replicate one.As you can see from the DS5601 datasheet, the ADC simply does the conversion on its own, and then you can read out the data serially, the conversion takes 10ms so this should be easy to achieve.The bigger question is what ADC should I choose? The main problem probably being linearity and low drift. I found this LTC2389-18 one at Linear which seems that should be far superior to the original, but I am a little worried that the very fast conversion time could introduce noise into the system.Any thoughts?

author: Paul Price
author_rank: Super Contributor
timestamp: June 06, 2013, 11:56:07 pm
content: The speed of conversion is not going to be your problem.The real problems are matching the hardware interface, whether it is single-ended or differential, and especially the device software interface commands, do they match the original? What about logic voltage levels, power supply voltages for the A2D, output format, and sequence of command timing, matching of serial control codes, matching control pin functions, sequence of commands, etc.You didn't mention if the chip you've chosen exactly matches the original in hardware and software.Then if you somehow get through all that, you may consider the calibration issue.

author: kubeek
author_rank: Contributor
timestamp: June 07, 2013, 12:29:36 am
content: Yes I forgot to mention that, the original interface is just a pulse when conversion is done and then the data is read by the mcu in an spi fashion, so I will definitely need to use a microcontroler to fetch the data from the ADC and feed it to the original controller in the way it expects it, but this part will be the easy one.The original ADC has a +/-15V supply, a 5V supply and an external 6.85V reference voltage which I'd like to retain. I expect to use some opamp front end to accomodate the differential input, the original circuit uses OP77 in inverting amp configuration to provide the negative input to the ADC (see page 36 of that service manual).

author: Rufus
author_rank: Super Contributor
timestamp: June 07, 2013, 01:25:38 am
content: It isn't going to be easy. What you are replacing claims up to 25 bit resolution (at which each conversion would take 10 seconds). 0.5ppm/C tempco. 1 ppm residual non-linearity.How many bit the scale actually uses would be interesting. That is what is its slowest display update rate?You probably need to be looking at the best 24 bit sigma delta converters and take a lot of care with the implementation.You will also have to jump through hoops providing the data 15 bits at a time. The scale accumulates as many 15 bit counts as it wants. The scale gets 15+n bits of resolution for every 2^n samples (10ms) it reads. The scale might take the average of so many samples and your replacement converter won't know which set of samples it is averaging. The scale might also do a running average or decimation of the samples.You will need to make a 24 bit measurement for each sample the scale makes (or possibly several) then accumulate these measurements and subtract the high order 15 bits which the scale read from the accumulator.

author: C
author_rank: Super Contributor
timestamp: June 07, 2013, 02:21:41 am
content: Instead of trying to find a adc chip,why not recreate what was in the original adc?You could use the new mpu's built in adc as a comparator. Just recreate what is before this with new parts. You should be able to pull the patent to get more detail.The same methods with todays better parts should let you equal what was in that old package.C

author: kubeek
author_rank: Contributor
timestamp: June 07, 2013, 10:58:53 am
content: C: I don´t think I want to bother with recreating the original double slope ADC, since the analog requirements would be even tighter than when using an off the shelf ADC + MCURufus: I should have said that I have acces to a working piece, so this might ease the process a little.The display looks like it is updating around 5 times a second, so this would be consistent with 16x 10ms oversampling to get 19 bits - the scale has 4000g range with 0.01g resolution which adds up to 19bits as well.The thing with this oversampling is that if I get a fairly precision measurement of say 16 or 18 bits with some sigma-delta converter, what happens when the scale makes 16 readings and then presents the result, wouldn´t a more precise and less noisy adc make for lower overall resolution here?Would I have to do dithering or something of the readings in order for the scale to read an accurate result?

author: Rufus
author_rank: Super Contributor
timestamp: June 07, 2013, 01:47:32 pm
content: Quote from: kubeek on June 07, 2013, 10:58:53 amYou have to do what I said accumulate your conversions and subtract what the scale reads.Simplify it to a 1 digit BCD reading by the scale and 2 digit BCD converter and consider the ADC reads 17 each time. What you send to the scale and the accumulator will look likeCode:Scale Acc1 072 042 011 082 052 021 092 062 032 00The scale adds the 10 readings and get the 17 the ADC was reading.

author: kubeek
author_rank: Contributor
timestamp: June 07, 2013, 02:13:16 pm
content: Erm, what do you mean by that scale and accumulator columns, or why are you subtracting 3 from the accumulator?Also, is there some recommendation as to how much noise should I add to the measured results?

author: Rufus
author_rank: Super Contributor
timestamp: June 07, 2013, 03:46:07 pm
content: Quote from: kubeek on June 07, 2013, 02:13:16 pmScale is the reading you supply to the scale. Acc is the accumulation of new ADC readings minus 10 times the reading you supplied to the scale.Adding noise would not help anything.

author: kubeek
author_rank: Contributor
timestamp: June 07, 2013, 09:27:00 pm
content: Ok thanks, it took a little time to sink in written like that. Does this process have some name, I would call it a digital to digital delta-sigma converterWhat do you think about this one?http://www.linear.com/product/LTC2442

author: kubeek
author_rank: Contributor
timestamp: June 11, 2013, 12:34:39 am
content: So I finally made the board with the LTC2440 ADC. The only thing I am not too sure about is how I should do the ground plane. The chip itself doesn´t have the digital and analog ground differentiated, so should I use a split ground plane like in the picture, or shoudl I use a continous ground plane?

author: C
author_rank: Super Contributor
timestamp: June 11, 2013, 01:31:07 am
content: LTC2440 ADC has a differential input.Pin 8 of the original circuit is analog ground.You circuit connects both to a big noise source/C

author: Rufus
author_rank: Super Contributor
timestamp: June 11, 2013, 01:59:07 am
content: Quote from: kubeek on June 07, 2013, 09:27:00 pmDunno, I made it up. It is a bit like "Bresenham's line algorithm".The converter looks OK. You will have to do more work on it. The Vref you are feeding it looks more than it can stand and be more careful with grounds. I don't have the time or inclination to go through checking all the details.

author: kubeek
author_rank: Contributor
timestamp: June 11, 2013, 11:47:44 am
content: Quote from: Rufus on June 11, 2013, 01:59:07 amI changed the vref-, in- and the opamp reference ground to the analog ground at pin 8 of the module.What did you mean with the Vref looks more than it can stand? I don´t quite understand that.I am buffering the Vref as it is merely an ovenized zener reference.

author: Rufus
author_rank: Super Contributor
timestamp: June 11, 2013, 12:00:50 pm
content: Quote from: kubeek on June 11, 2013, 11:47:44 amLike I said you need to do some more work like reading the data sheet. Absolute maximum reference pin voltage is VCC + 0.3 you are feeding ref+ with a volt more than that.

author: kubeek
author_rank: Contributor
timestamp: June 11, 2013, 12:30:56 pm
content: I am aware of that limit, that is why the ref. voltage is divided by R3//R4+R5.edit: oops thanks for spotting that out, the Vref should be after R3, not before.... actually not even that, I will have to go trhough it again, seems I missed something when I was moving from simulator to layout..

author: kubeek
author_rank: Contributor
timestamp: June 11, 2013, 01:33:57 pm
content: Found the missing resistor divider, so here is the new shchematic. The input impedance of the ADC and REF should be on the order of 180kohm according to datasheet so I should be safe there, but I added a 100nF cap just to be sure.

author: kubeek
author_rank: Contributor
timestamp: June 11, 2013, 07:18:35 pm
content: So here it is along with the board, any more tips please?

author: Rufus
author_rank: Super Contributor
timestamp: June 11, 2013, 07:57:15 pm
content: Quote from: kubeek on June 11, 2013, 07:18:35 pmI don't see anything obvious wrong, you should consider the data sheet recommended RC network for op-amps driving the converter inputs.

author: Rerouter
author_rank: Super Contributor
timestamp: June 11, 2013, 08:32:50 pm
content: adc local decoupling cap?

author: kubeek
author_rank: Contributor
timestamp: June 11, 2013, 09:14:26 pm
content: Thanks for the input, I added the RC filter and also corrected the swapped digital output pins.The decoupling caps are on the bottom side of the board both for the opamps and the ADC.