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
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: