Ive got about 36 batteries that all stay between 2.8v and 3.6v, and I want to be able to accurately monitor the voltage(and therefor the state of charge) of all of them using an Arduino Nano, the two ways I can think of is use some analog multiplexers to get the 36 different batteries down to the 6 analog pins on the Arduino, or to use an analog to digital converter and then multiplex the digital signal. would either of these ideas work or is there a better solution than what I can think of?
You can use analog mux/demux iCs such as CD4051 (8 channels to 1). In fact, you can use 5 of them for the 36 batteries (you'd be left with 4 extra channels) and connect each to one analog input, and then connect all three control pins of each to the same three digital pins outputs in the Arduino. Then you'd be binary counting from 0 to 7 on those three pins and reading all 5 analog inputs on every cycle.
I also recommend using some op-amp to shift the voltage range of 2.8V - 3.6V to 0V - 5V. This way you'd get better precision and with some simple math on the Arduino you'll be able to get a much more accurate reading.
The batteries are all isolated? Or connected in series? Makes a big difference.
If they are isolated, then you can also use 8-input ADC chips such as MCP3208 with SPI interface to quickly read them.
You would connect SCK,MISO,MOSI to all of them, and then use a slave select to each one to access a channel at a time. 12 bit readings, and faster reads- about 10x faster than using the internalADC for 10-bit readings.
If connected in series, you need a different method as the voltage could be up to 129V.
What I have suggested at arduino.cc is to use DPDT relays to connect each battery independently to an analog input and Gnd of Arduino that is powered indepently and Not grounded to the stack. Thus it would be like working a handheld multimeter across each battery.
If you want to send data serially to something, optoisolated signals would be needed between arduino and the other end.