0
$\begingroup$

I have an nvidia xavier with gpio running linux. It should work very similarly to raspberry pis. I need to connect a bunch of pressure sensors, thermistor, potentiometers, and vibration sensors to my robot. I expect to have over 100 analog sensors that I need to read from so I can control my servo motors accordingly.

Is there a good on the market chip with a linux library that makes it easy for me to daisy chain and read analog values from over 100 sensors?

If not, what are the key components I would need to create a circuit that accomplishes such a goal?

$\endgroup$
  • 3
    $\begingroup$ you first question cannot be answered because we do not know what you would consider easy ............. second question: the key components would be A/D converters and possibly analog multiplexers ..... also you need to determine if some of the sensors could be read by a digital input instead of an analog input $\endgroup$ – jsotola Feb 16 at 7:45
1
$\begingroup$

Depending on the resolution you need, you could use a few multi-channel ADC chips. The TLC1543IN is a through-hole (would work in a breadboard) 10-bit 11-input ADC that communicates over SPI. Connect however many you need to the same SPI bus, and then wire each chip's CS (chip select) pin to a GPIO on the Xavier. Whenever a chip's CS line is held high (at VCC), it'll ignore all activity on the SPI bus, allowing you to have multiple identical chips on the same bus - simply set all CS lines to high except for that of the ADC chip you wish to communicate with. I doubt there's a Linux driver, but it shouldn't be too hard to slap something together in C/C++. You could implement all of this with nothing but breadboards/perfboards, saving you the need to make a custom PCB.

Alternately, you could use a few microcontrollers communicating over SPI/I2C/CAN/your protocol of choice. something like an ATTINY828 could work - each chip is only \$1 or so, and has 28x 10-bit ADC channels. For more power and resolution, the STM32F303ZDT6 is a good choice - \$8/chip, but 40x 12-bit channels. Either way, that'll require some extra programming and probably PCB development.

$\endgroup$
0
$\begingroup$

Since we don't know what kind of sensors you want, here is the most specific-broad answer I (and maybe anybody) can give you:

The first order of business is to attach a device to the Jetson Xavier that allows for so many GPIO pins. Since I can't think of a single device, what you can do is use multiple devices, like a Teensy 3.6. They have a bunch of I/O pins (around 40 total), AND all digital input pins are interruptible. Then, for your analog input needs, you can use a chip like this to convert Analog to Digital readings into an SPI bus readout. This chip can then interface with the Teensy through SPI. The only issue is the voltage conversion, but Sparkfun also has a logic level shifter chip that can connect 2 different voltage devices. After all that, the Teensy board(s) can all connect to the Xavier through USB or CAN or I2C or whatever you choose. If you need more Teensy boards, add more as needed. At the moment, the Sparkfun website is down (presumably for maintenance, it is a Sunday night), so I can't link the level shifter in this answer now. Basically, your question is a bit broad, but that is what I would do. Also, as @jsotola said, "easy" is relative, and with 100s of sensors, nothing is easy, (please) don't lie to yourself: this is bound to be a wiring nightmare. Companies like Pololu sell wiring equipment so that you can either buy premade wires or make your own, but again: too much opinion/options/not specific in a question.

$\endgroup$

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.