Hi! I’ve been using several of the Pimoroni +/-24v ADC modules in my Eurorack synth projects, with great success.
According to the schematic, cutting the address selection pad that connects the “address select” pin to GND leaves the address select pin connected to VDD - but on the actual device it seems to go first through a component I don’t recognise that can be seen in the product image (marked ‘103’, so maybe a resistor pack of some kind?).
The datasheet for the ADC1015 says that its possible to configure two additional addresses, by connecting the address select pin to SDA or SCL instead, and I want to ‘unlock’ those extra addresses (as I want to have 2+ ADCs and also have another i2c device on the same bus that uses 0x48 and can’t be changed).
Has anyone made this modification on the Pimoroni +/24v ADC board, or able to give some clues on how this could be achieved? I presume it should be possible by identifying the correct trace and adding a jumper to the desired pin, but I could do with a second opinion on where to cut and solder before I ruin a board!
The 103 is a resistor code and you read it as 10*10^3, so you see a 10kΩ resistor. This is a pullup to VDD. But since it is also connected to GND, the level of ADDR_SELECT will be low as long as you don’t cut the trace to GND. And indeed you see a resistor pack in the product image. The other resistors in the pack are used for pullups on SCL, SDA and INT.
I don’t think you can mod this, because you would have to cut the ADDR_SELECT trace to VDD.
And this is an expensive device.
Suggestion: use an I2C multiplexer, Pimoroni has a few different units. I once ran a large BME280 tests with seven devices, all with the same I2C address behind a single PCA9548. Worked like a charm. This is much cheaper than modding the ADC directly.
I usually buy a few extra of these boards every time there is a sale, as I find them very useful for several projects; so I could sacrifice one to make this work, so I think I’ll probably give this a try anyway.
As I use them on daughterboards for custom PCBs it would actually be cheaper for me to make this modification than to redesign the PCBs and add a multiplexor. I’m also concerned that a multiplexor would slow the i2c bus even further since being able to read quickly and then move on to the rest of the code is critical to my project…
(If I were going to redesign the boards at this stage then I would probably consider adding a dedicated “coprocessor” MCU to handle reading from multiple i2c channels simultaneously and transmit the readings to the host MCU via UART in order to save on pins and processing time on the host… but I digress :D)
I am not sure if cutting the trace is the best option because you don’t have a lot of space between the ADC and the resistor pack. Maybe you could just desolder the address pin, isolate it from the pad and then connect a wire to SDA or SCL. All this needs good soldering skills because of the size.
Also, at least the SDA choice has some implications regarding the timing of the I2C protocol (see the datasheet for details).
Anyhow, good luck and maybe you can report back on what you did and if you were successful.
Damn, first attempt at the surgery and I managed to get the pin off the pad but it snapped off while attempting to solder to it! Gonna see if I can find some ADS1015/ADS1115s I can use as a replacement. Given how brittle the pin was I do think that careful cutting of traces might be the more reliable option, though (short of designing a clone board from scratch, that is…)