Problema con USB e I2C

Hola a todos, es la primera vez que pongo un tema, y realmente necesito ayuda de los que puedan. El problema que tengo es el siguiente:
Estoy usando 2 PICs 18F2550 para comunicación con varios esclavos por medio del protocolo I2C, algunos esclavos están a 10 metros del maestro. Inicialmente tuvimos problemas en este sentido, y decidimos hacer unos cambios en el cableado de acuerdo a las especificaciones del cableado, mandando (SDA y VCC) y (SCL y VSS) en cables separados y apantallados. Estamos trabajando la programación de los PICs con el PCWHD Compiler, usando la instrucción #use I2c con la opción SLOW.
Hasta ahí no hay problemas, ya que cada PIC por separado funciona a la perfección, y se conecta al PC por medio de USB. Para esta parte usamos la MPUSBAPI.dll de Microchip. Cambiando el Selection para cada PIC.
El problema aparece cuando queremos conectar los dos PICs por USB y usando el I2C. Ya hice pruebas borrando el código de I2C del PIC y la conexión también funciona perfectamente.
Les agradezco cualquier ayuda que me puedan dar en este sentido, si requieren más información por favor hacérmelo saber.

Bueno, luego de un trabajo de 2 dias encontré la respuesta al problema, y quiero dejar algunas consideraciones para aquellos que estén interesados en este tema:
-Se puede trabajar el I2C a largas distancias, personalmente lo trabajamos hasta más de 12 metros.
-Preferiblemente usar una resistencia de Pull Up variable para el I2C, con el fin de modificarla en caso de presentarse problemas en la comunicación.
-Enviar en un cable trenzado el VCC con SDA y en el otro cable el VSS con SCL, esto evita que las señales introduzcan ruido entre sí, nosotros habíamos cableado inicialmente SDA y SCL en un solo par trenzado.
-Usar condensadores de desacople a ambos extremos de la comunicación, entre VCC y VSS. En nuestro caso éste era el problema, ya que el ruido presente en el cableado al parecer estaba molestando la tierra del USB, y por eso no funcionaba.
Cualquier duda que tengan con respecto a este tema, estoy para servirles, ya que llevamos un proceso largo, tratando de entender el código y funcionamient de I2C y hemos tenido todos los problemas posibles.
Gabriel
 
Última edición:
que bien que encontraste los problemas de ruido y pudiste solucionarlo, solo una pregunta que aplicacion estas realizando para que uses i2c a mas de 10 metros ?

Saludos
 
Hola, estamos manejando a través del I2C varias tarjetas de recepción y envío de datos, para encender motores DC, LEDs, y recibir datos de pulsadores y botones que se encuentran en una plataforma.
En un tablero tenemos los maestros y algunos esclavos, a unos 8 metros del tablero se encuentran los demás esclavos, la longitud total del bus diría yo que es de unos 20 metros.
La verdad es muy complicado usar el I2C para este tipo de aplicaciones, he leído en todas partes de mejores protocolos como el CAN, RS485 entre otros. Sin embargo, al usar PICs, el I2C viene incluído y no es tan dificil de manejar.
 
ya veo, te felicito por tu proyecto suena bastante interesante y como bien dices muchos pensarian en usar otro protocolo debido a la distancia, encajaria bastante el rs485 o usar una linea de 4-20 mA, pero es tambien bastante cierto lo que comentas de que el i2c es bastante sencillo y muy util a la hora de usar microcontroladores.

Saludos
 
Atrás
Arriba