1
\$\begingroup\$

Sorry if this is a simple question, but I‘m quite new to Arduino. What I‘m looking for is a way to connect 100+ strain gauges to one Arduino board.

Now, those each need a separate ADC (HX711) to convert the input from snalog to digital (best would be if only 1 was needed)(Also, I use 3 resistors to make it a quarter-bridge, so only 1 strain gauge per HX711 is needed.)

What I thought would be a good way, is to connect the HX711 to the Arduino like normal, but also connect the Arduino and the HX711 to something like a switchboard, in which the Arduino tells it to which setup to connect to, and the switchboard then changes the connections (pretty much like a transitor.)

Not sure if I‘m clear here, so something like this:

(This - means connected to)

  1. Arduino - HX711
  2. Arduino - Switch
  3. HX711 - Switch
  4. Switchboard - StrainGaugeQB [1,2,3,4...100] (All 100+ quarter bridges = 400 wires.)

Something like this: It‘s not really a masterpiece, but I think it‘s clear

Basically, the Arduino switches between which strain gauge is to be read currently. Although they should at the end still each be read at least 4-5 times a second.

I read something about multiplexers, but they don‘t seem to be exactly what I‘m looking for. They seem to be only serial, or did I get that wrong? They only have one in/out connected, but if it‘s not serial, could I maybe use 4 or those each getting one of the wires of the HX711? Something like multiplexer 1 being connected to wire e+ of multiple quarterbridges, 2 being e- of those, 3/4 being connected to their a+/a-?

\$\endgroup\$
  • 1
    \$\begingroup\$ How far apart are all the strain gauges? I'm wondering about the lengths of the 400 wires. \$\endgroup\$ – jonathanjo Jan 15 at 19:17
  • \$\begingroup\$ The Strain gauges are ~ 2 - 5 cm from another (though some are further, but none closer) \$\endgroup\$ – Lexyth Jan 15 at 22:02
1
\$\begingroup\$

i use 3 resistors to make it a quarter-bridge

I don't see your wiring in the schematics, but if what you are doing is what I think, then you basically killing the performance of the strain gauge. Not a good idea. You need to switch all four lines.

Also, i read something about multiplexers, but they don‘t seem to be exactly what i‘m looking for

You were reading about wrong multiplexers. What you are looking for is called analog switch, and it is designed exactly for switching analog signals.

Some of them controlled by binary address lines (e.g. ADG726), others have internal shift register (e.g. ADG725). In first case you need more free control lines but can randomly access any specific gauge. In the second case you save control lines but an access is sequential.

The problem, however, is that analog muxes will affect the signals somewhat, reducing precision and linearity of your measurements. So, it all depends on your requirements.

For better precision you could use a hundred 4PST relays, but those are more expensive than HX711 modules and need additional switching circuits.

I think the best solution would be to use multiple HX711 permanently connected to their gauges. Since you are talking about hundreds of gauges, they cannot possibly be located in close proximity to the control board. Running analog signals all the way from the gauges to your "switchboard" will be another way to look for troubles.

By placing HX711 next to each gauge you will be shifting wiring into digital domain, greatly improving resolution and simplifying switching. In this case you can still use analog muxes mentioned above but since you only be switching 2 lines you need only half of chips and wiring is easier.

UPDATE:

You've commented that you are going to look into ADG725. Unfortunately, ADG725 does not have carry output, so you'd need additional lines to select groups of MUXes. Using directly addressable ADG726 MUX might be more convenient.

Connect clock pin to 7-bit counter (74HC4024), connect first 5 bits of counter to address inputs of all muxes, then use decoder chip (74HC138D) to convert next two bits into 4 enable lines for groups of muxes. This will enable you to switch up to 128 gauges with only 2 pins (3 if you count optional "clear" signal).

\$\endgroup\$
  • \$\begingroup\$ Thanks, i think i‘ll look into the ADG725 one for now. Seems to be pretty much what i‘ve been looking for. As for killing performance, well, it‘s a prototype for now, so i‘d like to have it as low cost as possible (else i‘d use at least a halfbridge to compensate for heat, or maybe even fullbridge, depending on the results)which should be fine, as long as it proves the concept. Also, the Gauges are actually relatively close and in small spaces, so i can‘t fit a HX711 closeby (closest would be between 20-30 cm away). And,as long as i can see changes that‘s fine, so some loss in Resolution is ok \$\endgroup\$ – Lexyth Jan 15 at 22:27
  • \$\begingroup\$ 20-30 cm to HX711 should be OK. It's when you run analog signals over 1m the troubles begin. The axial load cells we are using in our products come with 5ft shielded cable and that is a maximum recommended by the manufacturer. \$\endgroup\$ – Maple Jan 15 at 22:46
1
\$\begingroup\$

If I understand correctly:

You would want 4 on/off switches in parallel in front of each signal line from the strain guage. Each of the switches would be wired to one of the four quadrants of the wheatstone bridge. Only one (or none) of the 4 switches would ever be on.

Repeat this for all strain gauges.

Then you would just have to be careful what to only turn on 4 load cells (in general) for each quadrant of the load cell. You would also have to calibrate every combination.

Something along the lines of this: https://www.analog.com/media/en/technical-documentation/data-sheets/ADG1633_1634.pdf or similar to do the switching. I have no experience with these chips, so maybe someone else can answer better.

\$\endgroup\$
  • \$\begingroup\$ If only one of the 4 switches on the 4 wires from the wheatstone Bridge is on, how does that work? \$\endgroup\$ – Lexyth Jan 15 at 18:24
  • \$\begingroup\$ ...can‘t edit and pressed Enter by mistake... Anyway, what i‘d like is more one choice switch that can choose which wheatstone Bridge should be read (so basically activating the access to the 4 wires of a wheatstonebridge). \$\endgroup\$ – Lexyth Jan 15 at 18:26
  • \$\begingroup\$ @Lexyth, below the text of your post are the options: "share edit close flag". \$\endgroup\$ – The Photon Jan 15 at 18:30
  • \$\begingroup\$ Yes i know, but they are not available for some reason (also had a problem with a question not having delete option...) I only have Share and Copy as options now... Might be a problem with the IOS app... \$\endgroup\$ – Lexyth Jan 15 at 18:33
0
\$\begingroup\$

You could use 100+ sets of 2 DPDT relays, with 3 signals+power+Gnd from the Arduino to shift data into TPIC6B595 shift registers to sink the relay's coil current, one pair at a time. The ADC is then connected to one H-bridge at a time.

You can use 5V relays, telecom relays need 31mA or less to energize them from 5V. Examples: https://www.digikey.com/products/en/relays/signal-relays-up-to-2-amps/189?k=relay&k=&pkeyword=relay&sv=0&pv1989=0&pv72=208767&pv1409=340465&sf=0&FV=-8%7C189&quantity=&ColumnSort=0&page=1&stock=1&pageSize=25

Each TPIC6B595 can control 8 relay sets, so you'd need a string of 100/8 = 13 shift registers, with SPI.transfer() used to send in 13 bytes to the daisy chained shift registers. I've daisy chained 45 of them and updated them at a 20 KHz rate, so 13 will not be an issue. At the worst, maybe a buffer for SCK and the latch signal, both of which go to all chips.

digitalWrite (ssPin, LOW);
for (x = 0; x < 14; x = x+1){
SPI.transfer (dataArray[x]);
}
digitalWrite (ssPin,  HIGH);

dataArray[] is 13 bytes long, start with it filled with 0s, = no relays energized. Then march a 1 across the array to energize one relay at a time:

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40

0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80

etc. up to

0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

for the last two relays (assuming 104 relays, 8 x 13).

\$\endgroup\$
  • 1
    \$\begingroup\$ how do you switch between 100+ gauges by "7 or 8 sets of 2 DPDT relays"? 2^7 math does not work this way here \$\endgroup\$ – Maple Jan 15 at 19:48
  • 1
    \$\begingroup\$ Yeah, that can't work. \$\endgroup\$ – Duncan C Jan 15 at 22:51
  • \$\begingroup\$ Ok, I was going by the diagram, which showed 7. I'll edit the answer. \$\endgroup\$ – CrossRoads Jan 15 at 23:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.