I was stuck in a situation when i was measuring solar panels connected in series using I2C communication protocol. The common ground between the system makes the panel disconnected making a short loop. As i am new to this community please help in this regard. image of connection https://imgur.com/a/dazZyga
i used voltage divider circuit with ATTiny85 as slave which measures individual panel voltage and communicates to master unit through I2C Protocol.
The problem is that the Ground of solar panel and the I2C are common which is making other panels out from the system. I get reading of 12Volts in first panel and 0 Volts in other pannel.
What would be the best way to measure individual voltage and communicate to master unit.
i searched for operational and differential amplifier but not able to get it. Kindly enlighten me in this aspect as i am new to electronics as my core is software development and product design.
Have you thought about using opto-isolators? here is a quad opto-isolator. It,s a wallet breaking $.81. Not including miscellaneous glue parts. Resistors, etc. LTV-847 Datasheet https://www.mouser.com/datasheet/2/239/LTV-8X7%20series%20201610%20-1218079.pdf
Looks like you would need to add a small voltage regulator to this type solution to match the Arduino voltage, But with the amount of power needed you could go with a small linear 3 pin regulator, just to keep things simple. Plus no switcher noise to corrupt your I2C signal.
Your problem apparently comes down to getting low-bandwidth telemetry from multiple devices, each floating at various potentials.
Opto-isolators are good for getting data across arbitrary potentials. However, IIC protocol is not well suited for this. This is due to the bi-directional nature of the SDA line.
A better choice would be using a UART in each device. You could gang all the optos that drive the individual RX lines together on your side. In other words, you broadcast the same data to all devices. You then also OR the outputs of the TX optos together. Any device can drive the ganged TX line (your RX line) low, and it floats high when no opto is activated.
You use a higher level protocol where each device has a unique address, and responds only to a request to that address. In other words, it is up to the protocol to ensure that only one device is trying to send at a time. Your code on the master device then polls each of the slave devices in a endless loop.