¿Cómo multiplexar una línea de datos bidireccional?

Tengo un caso de uso en el que necesito controlar más de 4 sensores de sonda con un microcontrolador pic 628A. El pic también es responsable de controlar un GPS y una pantalla LCD, por lo que los pines son escasos. Cada uno de los sensores del sonar tiene un solo pin de señal. Para operarlos, pulsa este pin que produce un chirrido ultrasónico y luego espera a que vuelva a subir, lo que indica que se detectó un eco. El tiempo entre el pulso inicial y el pulso de respuesta corresponde al tiempo de vuelo del chirrido.

Me gustaría poder multiplexar todos los sensores de sonda en un solo bus, pero no estoy seguro de cómo lograrlo. Me gustaría usar solo componentes básicos si es posible (no circuitos integrados especializados) porque el objetivo principal de este experimento es comprender mejor los conceptos básicos. Dado que el canal de señal debe permitir tanto la entrada como la salida, no creo que los transistores bipolares funcionen. He considerado usar FET para multiplexar cada línea de señal, pero soy muy inexperto con estas cosas y agradecería alguna dirección.

Si usó un modelo superior del PIC, podría tener un bus I2C, que le permitiría agregar chips de puerto de E/S al sistema.
Esa es una buena sugerencia, pero la razón por la que estoy haciendo esto es para obtener una mejor comprensión de la construcción de circuitos usando componentes discretos.

Respuestas (2)

Lo que quiere es un multiplexor/demultiplexor 8:1. Puede obtenerlos como un IC , pero no sé si eso cae dentro de su idea de un IC "especializado" o no. Es el tipo de cosa que usarías en una clase de lógica digital de primer año.

Si eso no es lo suficientemente básico para ti, el diagrama de bloques aún te muestra lo que necesitas construir.diagrama de bloques mux/demux

La mitad inferior son sus MOSFET. La mitad superior se llama decodificador si desea obtener eso en un solo IC. También puede obtener los inversores y las puertas AND de 4 entradas como circuitos integrados separados, o puede construirlos a partir de transistores si eso le gusta. Depende de lo difícil que quieras hacerlo por ti mismo.

PTL está un poco más allá de mi nivel de comprensión. Digamos que tengo 3 pines para usar en la selección de sensores (permitiéndome direccionar 8 sensores de sonda separados) y 1 pin para datos. ¿No podría simplemente conectar el pin de datos PIC a 8 FET separados, cada uno de los cuales va a un sensor de sonda para lograr un canal bidireccional? Entonces, ¿no podría usar la selección de 3 datos para multiplexar de alguna manera las puertas FET?
@ odysseus.section9 ¿cómo vas a conectar 8 FET a 3 pines?
Pensé que tal vez podría usar los 3 pines como pines de selección de datos en un multiplexor de 1 a 8 yendo a las puertas de 8 FET.

El enfoque más simple puede ser usar algo como un 74HC4051 junto con algún tipo de chip contador para seleccionar entre hasta siete dispositivos. Probablemente se podría usar un solo pin de procesador para hacer todo si el contador fuera operado por el flanco ascendente en el cable de datos, aunque probablemente sería una buena idea agregar un retraso corto (tal vez usando un par de inversores de activación Schmidt con un RC retardo entre ellos) entre el cable de datos y la entrada del reloj del contador (para asegurarse de que el cable de datos esté completamente alto antes de que avance el contador). Para evitar la necesidad de un cable separado para restablecer o detectar el estado del contador, conecte una de las entradas 74HC4051 a una resistencia pull-down que sea lo suficientemente fuerte como para dominar el pull-up "normal" en el pin. Afirmar y soltar repetidamente el pin haría que el contador avanzara lo suficiente como para seleccionar esa entrada;