Conflicto de bus: Pin de salida que impulsa a otro Pin de salida

3

Me he encontrado con un problema inusual. Comenzaré describiendo mi objetivo: estoy diseñando un circuito que puede realizar pruebas de cortocircuitos y circuitos abiertos en un arnés de cableado. El arnés de cableado no tiene un bus CAN ni nada tan complicado como eso, solo cables simples.

Así es como funciona

Tengo dos CPLD, uno como un extremo conductor designado (todos los pines se envían) y el otro como un extremo receptor (todos los pines son de entrada). El CPLD del extremo conductor está programado para ser un registro de desplazamiento de salida en paralelo en serie y el extremo de recepción es un registro de desplazamiento de salida en paralelo en serie.

Supongamos que todos los cables en el arnés son uno a uno, es decir, que no hay uniones. Supongamos también que solo hay 8 cables. Por lo tanto, para probar el primer cable en el arnés, el registro del extremo conductor está cargado con 10000000. El extremo receptor también ve esto y todo termina bien. El final de conducción se sincroniza y se lee 01000000. Si el receptor también lee esto, entonces ese cable está bien.

Pero supongamos que hay un cortocircuito entre el cable 2 y 3. Si ese es el caso, entonces el extremo receptor leerá 01100000. Esto también está bien, ya que hemos detectado el cortocircuito y podemos actuar.

¿Pero qué pasa al final de la conducción? El pin 3 de CPLD forzará 0V y el pin 2 forzará 3.3V. El cortocircuito entre los pines 2 y 3 dará como resultado dos pines de salida conectados entre sí. Supongo que una corriente significativa fluirá desde el pin 2 al pin 3 y podría producirse un daño.

Tenga en cuenta que los registros de desplazamiento / CPLD están siendo controlados por un microcontrolador. También tenga en cuenta que el arnés suele ser bastante grande, alrededor de 200-300 cables. Algunos de los cuales son conexiones uno a muchos. Esta es la razón por la que un CPLD era una opción atractiva, ya que me permite programar un registro de desplazamiento grande y permite probar un arnés grande con un circuito relativamente pequeño.

¿Cómo puedo manejar este problema?

    
pregunta Saad

3 respuestas

6

Personalmente utilizaría salidas de tres estados en esta situación.

En lugar de manejar un 0 o un 1, puede tener resistencias de bajada (o subir dependiendo de su preferencia) en las salidas, y conducir el pin que le interesa más alto o más bajo, lo opuesto a su elegido Resistencia pull-up / down. Las otras salidas deben configurarse en alta impedancia para que no interfieran con los resultados esperados.

Las resistencias pull-up / down probablemente se ubicarán mejor en el extremo receptor del arnés de cableado, de modo que "omita" las entradas a un estado conocido y las detenga, en lugar de omitir la señal a través del arnés.

Hace que sea un poco más complejo que un simple registro de desplazamiento ...

Además, quizás Open Collector (o Open Drain para tus adictos al CMOS) haría el truco de manera similar ...

    
respondido por el Majenko
3

Algunas ideas:

  • Si es para un prototipo a corto plazo, no te preocupes demasiado. ¡Daño de ese tipo lleva mucho tiempo para patear! Es probable que un '0' "gane" sobre un '1', por lo que es posible que no obtengas ningún '1' si hay un corto.
  • Agregue resistencias en serie a los pines del variador para limitar la corriente a un valor seguro.
  • Ponga resistores desplegables de alto valor en todas las líneas y solo maneje una línea a la vez. Trate las otras líneas en el PLD.
  • Coloque una resistencia de pull-up en cada línea y use el modo de salida de drenaje abierto en los pines PLD.

Debe hacer algunos cálculos sobre qué tan alta es la resistencia del cortocircuito que desea detectar. A medida que aumenta, sus resistencias de límite / tracción actuales también deben aumentar para que no "superen" la falla.

    
respondido por el Martin Thompson
0

Las resistencias de serie adecuadas evitarán daños.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas