Entre las señales a medir y los pics no hay una masa comun, hay una masa comun de cada pic con las medidas de cada fuente, pero los pics no tienen masa comun entre si, por tanto no se pueden comunicar por el bus I²C. Para una comunicacion serial las lineas de datos deben estar referidas a una masa comun, como esto no lo podemos conseguir, optaremos por optoacoplar las señales.

Ahora se presentan dos problemas:
-El bus I²C tiene una velocidad superior a la que soportan optoacopladores normales y el exceso de slew rate impedira la comunicacion.
-El bus I²C es bidireccional, y un optoacoplador no lo es.

El problema sobre el aislamiento del bus I²C ya ha sido resuelto por los ingenieros de phillips en su nota "Opto-electrical isolation of the I2C-bus":
http://www.nxp.com/documents/application_note/AN10364.pdf
En mi caso, usare el esquema mostrado en la figura 6, pagina 7. Segun especifica se limita a una velocidad de unos 100khz y segun he observado con el osciloscopio, en mi caso va a unos 200khz, pero funciona perfectamente y la señal no se deforma.
Hay un esquema preparado para una velocidad de 400khz, pero los optoacopladores utilizados y el buffer no los puedo conseguir ahora mismo y he optado por el otro esquema, que tiene un componente poco habitual: el buffer I²C bidireccional P82B96, que se puede pedir como sample a TI.
El transistor 2N2907 se puede conseguir facilmente pero no disponia de el y he utilizado un 2N4403.
El esquema mostrado seria la solucion para una de las lineas, SDA o SCL, tendriamos, por tanto, que construir dos veces este circuito. Teniendo en cuenta que el P82B96 es doble, no necesitariamos otro.
Este seria el esquema final creado con altium designer:
Y esta la PCB:

En altium designer uso preferentemente librerias propias para modificar los pads de los footprints y agrandarlos un poco, para facilitar las modificaciones (soldar y desoldar), y obligadamente cuando los componentes no se encuentran en las librerias de altium designer ni en su web:
http://www2.altium.com/forms/libraries/designer6/IntLib_search_ad06.asp
http://www.altium.com/community/libraries/altium-designer-libraries/altium-designer-board-level/en/altium-designer-board-level_home.cfm

En este caso he creado los componentes 6N137 y P82B96P.
La libreria personalizada "MILIB" se puede descargar al final del articulo.




(la resistencia que se ve en la foto de la PCB por debajo esta ya incluida en el proyecto de altium designer, es la R1b. En el momento que hice la pcb se me olvido ponerla y luego modifique el proyecto pero no hice otra placa nueva porque era un error minimo)
Descargas:Las descargas estan alojadas en mi pagina de google sites: https://sites.google.com/site/danirebollo/ :
La librería se puede descargar de mi pagina en este enlace: MILIB
Los archivos del proyecto (Proyecto, PCB y esquema) se pueden descargar desde el siguiente enlace: I2Copt (al descomprimirlo, con abrir el archivo del proyecto, I2Copt2.PrjPCB, se abren los otros dos)
Enlaces:
http://www.eetimes.com/design/embedded/4025023/Opto-electrical-isolation-of-the-I2C-Bus
http://www.nxp.com/documents/application_note/AN10364.pdf
http://www.eetindia.co.in/STATIC/PDF/200411/EEIOL_2004NOV02_EMS_EDA_INTD_TA.pdf?SOURCES=DOWNLOAD