Measuring lots of resistors using very few signals - a new method! - Page 1
Forum section: electronics / general

author: daqq
author_rank: Super Contributor
timestamp: August 13, 2017, 08:09:51 pm
content: Hi guys,I'm publishing a method I've developed for measuring a large quantity of resistors (or resistive elements) using a minimal number of signals. To the best of my knowledge this is a new method, not done before. I have later found out that the method is similar on the surface to electrical impedance tomography, but has major differences and a totally different set of target applications.http://www.daqq.eu/?p=1333http://www.daqq.eu/?p=1412There will be another part where I discuss an actual physical implementation of this method on a device.A quick summary: You connect a horrible mess of resistors to a bunch of switchable connections that connect them to either one of two (or more) excitation voltages or leave them floating. Then you vary the connections, switching between them, applying various combinations on the ends of the mess, and measure all of the voltages. From this you compile a system of linear equations, add equations for known (reference) resistors, pass it through a solver for systems of linear equations, do some extra math and you get all of the resistances.With this you can measure up to N*(N-1)/2 resistors using only N wires. Which is a great saving on wiring. For example: Using just 8 signals you can measure up to 28 resistors (some of them have to be reference resistors).Enjoy!David

author: martinr33
author_rank: Frequent Contributor
timestamp: August 20, 2017, 06:40:06 am
content: Very clever -I really like this.The system can make more readings- something like (8!/2)^2 - so readings could be selected for maximum sensitivity.On the down side, this is a tricky set of connections. Useful in a circuit, but not ideal for a box of resistors.Thanks for cooking this up. There are some useful things in here.

author: doktor pyta
author_rank: Frequent Contributor
timestamp: August 20, 2017, 01:23:17 pm
content: For metrology-grade applications such methods are not apropriate in most cases however for electrical impedance tomography they are important.https://www.youtube.com/watch?time_continue=89&v=N9c4hINa2BkThanks for posting!

author: daqq
author_rank: Super Contributor
timestamp: August 20, 2017, 05:42:39 pm
content: Heh, I know that this will not be replacing 4 wire Kelvin measurements any time soon, but the target application is not that. It's just another tool you can use when you are limited by the amount of cabling you can use. For example, with just 8 wires you can measure 28 (minus a few reference resistors), say, thermistors pretty accurately. Which is a better ratio of cables to measurable resistors than you'd get with anything else (to the best of my knowledge). If you wish to avoid using some kind of digital bus with local analog conversion of course.It's a very niche area I suppose.

author: martinr33
author_rank: Frequent Contributor
timestamp: August 21, 2017, 04:15:18 am
content: Why do you need (i.e. no cable losses) reference resistors? If you have a true voltage reading at the edge nodes, and you can measure the current, then it should be possible to calculate the resistances - given enough useful readings. If the switching can be automated, you can get all the readings!You could set this up with one of those Keithley 20 channel scan cards in a 2000 series multimeter. That's a lot of permutations to read, but a reasonably small hardware setup.

author: daqq
author_rank: Super Contributor
timestamp: August 21, 2017, 04:48:24 am
content: QuoteTo avoid current measurementI have been thinking along those lines, but at the end of the day it just complicates things.Yup, I could do a lot of things with better and more complicated acquisition equipment. The point here was to use as special equipment as possible and do it on hardware that's as simple as possible. You don't get much simpler slapping than slapping a mess of resistors on the GPIOs of an ATMega32.QuoteI know :-) It would be fun to try, but:- This method is a proof of concept that you can do it this way.- The model would be somewhat different.- The scan time needs to be pretty fast- the method tolerates SOME resistance change during the measurement, but not a lot. If a full scan time was, say, 10 seconds and the sensor resistance changed during that time by, say, 2%, then the initial part of the matrix would be dealing with a completely different set of equations then the end of the matrix. Which, trust me, sends the whole accuracy down the drain. At the moment a full scan with 248 different permutations takes less than 0.5 seconds.- The relays clicking madly would probably drive me loopy.QuoteI've simulated this and tried a bit - there's a minimal amount of readings that need to be taken to gain anything useful, then there's an optimum amount of situations that need to be set and afterwards measuring a lot more situations does not yield any noteworthy increase in accuracy. It's like oversampling really - the gains fall off pretty quickly.QuoteIt's really meant for a very niche area, say a long thin rod full of thermistors. Imagine a rod, which is populated with thermistors along its length. It's easier to route 8 cables than 28. The cross sections of such a rod could look like the attachment.

author: nisma
author_rank: Regular Contributor
timestamp: August 21, 2017, 03:11:55 pm
content: The penality is one digit of resolution, at least on low count connections and some additional uncertainy.For 28 resistors, 44 measurements are necessary.

author: Conrad Hoffman
author_rank: Super Contributor
timestamp: August 21, 2017, 06:50:51 pm
content: Wasn't there a network like this used to torture EE students during their exams?

author: daqq
author_rank: Super Contributor
timestamp: August 21, 2017, 08:37:47 pm
content: QuoteYup, now you get to torture your PC!

author: nisma
author_rank: Regular Contributor
timestamp: August 21, 2017, 09:28:45 pm
content: Measurement is simple.Measure1 A(+) BCDEFGH(-)Measure2 B(+) ACDEFGH(-)Measure3 AB(+) CDEFGH(-)In this case if memory is not wrong,Resistor AB = M1*7 + M2*7 - M3*12Normally you measure the 8 sum(7) resistance,All the 28 sum(12) resistance and repeate the eightSum(7) measures for averaging it and checking forBigger difference in order to repeat it in that case.Yes, cross checking the sum measurements and isolatingfault value is possible if one want doing it.

author: martinr33
author_rank: Frequent Contributor
timestamp: August 22, 2017, 02:39:22 am
content: Things are a bit different if the resistor values are all close, as they would be with thermistors (same order of magnitude). Plus, I am thinking you can get away with much lower precision if you are using an Arduino to do the readings.

author: daqq
author_rank: Super Contributor
timestamp: August 22, 2017, 07:10:00 pm
content: I'm publishing part 3 where the actual hardware implementation is discussed:http://www.daqq.eu/?p=1676SPOILER: It's very simple.Quote:-) It's not an Arduino. You could of course get better results if you used a better ADC. I'll be adding a list of a few simulations I did later, but a preview:These are error contour plots for a simulation where the smallest resistor was 1/5 of the largest, there were 8 nodes and during one whole measurement the values changed by a maximum of 100ppm of their initial value. Depending on the measurement noise you can look up what kind of maximum measurement error you can get.These are the result for a 10 bit ADC:These are the result for a 16 bit ADC:The simulation are in the general area of reality. The real results are better. The simulation is essentially the worst case scenario. Probably :-)The parameter resistors to reference resistors shows the ratio of knowns to unknowns (a ratio of 0.2 means that per every 5 resistors you use 1 reference resistor).The parameter Noise amplitude in LSB is obvious, how much noise the ADC gets.

author: Vtile
author_rank: Super Contributor
timestamp: August 24, 2017, 12:10:13 pm
content: Quote from: daqq on August 21, 2017, 08:37:47 pmYep. The delta-wye transform is special case of these. I just can't recall the general term. Nice application.