Conmutación de nivel bidireccional 5V <-> 3.3V

Estoy buscando conectar un dispositivo de 3.3V con uno de 5V. Esto requerirá el cambio de los niveles lógicos entre los dos dispositivos.

Hacer esto en una dirección es un asunto trivial, pero necesito hacerlo en ambas direcciones (lectura y escritura, es un bus de datos).

Sé que hay conductores de autobús que pueden hacer esto, pero soy un tacaño, así que estoy buscando para ver si puedo hacerlo con los discretos que tengo a mi alcance.

Se me ocurrió este circuito:

ingrese la descripción de la imagen aquí

No sé si realmente hará lo que quiero, pero al leer otras fuentes (incluyendo ¿Es posible manejar entradas TTL desde un microcontrolador de 3.3v y un aumento y disminución bidireccional (3.3v <-> 5, etc.) ) [este último menciona un tutorial de chispas que ya no existe]) podría.

Mi opinión es que los datos de 5v a 3.3v pasan por D2 y la resistencia en serie R2 para reducir el voltaje. Los datos de 3.3v a 5v pasan por D1 y R1 los extrae.

¿Funcionaría esto? ¿Es un completo galimatías?

Actualizar

Ok, hemos acordado que el circuito es un galimatías total.

He hecho algunos ajustes, y se me ocurrió esto:

ingrese la descripción de la imagen aquí

Jugar con mi alcance me da niveles de alrededor de 1V-4V en el lado de +5V y de 0V a 3V en el lado de 3.3V. Ambos lados tienen por defecto un nivel alto y la conexión a tierra en un lado provoca un nivel bajo en el otro lado.

Las resistencias son todas de 10 KΩ, y ambos extremos se alimentan a través de resistencias de 100 KΩ para simular algún tipo de carga. Los diodos son todos Schottky.

¿Pensamientos?

¿Cómo fuerza el lado de 3,3 V al lado de 5 V bajo y viceversa?
El tutorial de sparkfun ya está en sparkfun.com/tutorials/65
1V es demasiado alto para un nivel bajo si necesita niveles TTL; bajo es 0.8V máximo.
@Brian: retrocedí porque el esquema original es relevante, incluso si está mal. Las respuestas se refieren a él, por lo que no sabría de qué están hablando, y también hay algo que aprender de un circuito incorrecto; por qué no funciona, por ejemplo.
¿Tiene FET de nivel lógico disponibles? Me sorprende que no esté utilizando algún tipo de traducción de nivel activo.
@Kevin no, no tengo ningún FET de nivel lógico disponible :(

Respuestas (3)

Creo que el circuito más fácil que hace lo que quieres usaría un MOSFET de canal N como el bss138 y dos pull-ups, enganchados de la siguiente manera:

Convertidor de nivel 5-3.3V

Dime si no se ajusta a tus necesidades y por qué.

Dicho esto, debo recomendarle que eche un vistazo a la serie MAX3000 de convertidores de nivel. Los he usado antes y son excelentes convertidores bidireccionales que "simplemente funcionan" (en términos de Apple).

Espero eso ayude.

editar: parece que la imagen aparece rota con algunos navegadores, puedes verla aquí

Imagen rota: puede volver a cargar la imagen.
Pedí un par de series MAX3000 como muestras, pero requieren la "aprobación del gerente comercial" antes de poder enviarlas... :L Los únicos FET que tengo son FET de potencia MOSFET, también :L
La técnica MOSFET se explica en esta nota (también la menciono en mi respuesta)
@Matt-Jenkins Sí, obtener muestras o incluso intentar comprar componentes electrónicos es una aventura salvaje últimamente. Estamos teniendo muchos problemas en el trabajo porque usamos muchos semiconductores ON y piezas químicas japonesas... parece que se fabrican cerca de Fukushima...

Yo voto galimatías :-).
No obtendrá mucha caída de voltaje sobre R2 ya que apenas habrá corriente y, por lo tanto, el diodo tampoco perderá mucho voltaje. Si su dispositivo de 3,3 V no es compatible con E/S de 5 V, puede freírlo de esta manera.
Además, si el dispositivo de 3,3 V emite un nivel bajo, podemos ignorar D1, y el nivel en la entrada de 5 V estará determinado por R1, D2 y R2. R1 + R2 elevarán el nivel bajo hasta cierto nivel, y el diodo agregará otros 0,7 V, por lo que el nivel que se ve en el lado de 5 V puede no ser bajo en absoluto.

¿Volver a la mesa de dibujo?

editar
Echa un vistazo a esta nota de aplicación de NXP . Solución muy elegante, sin IC de cambio de nivel especial.

Hmmm... Estoy experimentando algo así en la protoboard. Mi lado bajo de 5V está terminando alrededor de 3V.
@Matt: ¿qué valores son las resistencias?
Sin definir todavía ;)
Mira mi edición....

Ese circuito está roto. Solo por un lado, considere el caso del lado izquierdo manejando 5V y el lado derecho de alta impedancia. El lado derecho irá a 5V menos la caída del diodo. También está roto para otros casos. Revise los 4 casos posibles y verá que el resultado no es el que pretendía.

Estás perdiendo el tiempo tratando de jugar juegos con cambios de nivel. Si realmente quiere hacerlo usted mismo, ¿no debería comenzar con la arena de la playa y refinar su propio silicio? En el mejor de los casos, terminará con algo que es más grande y más tosco que un IC de cambio de nivel deliberado.

Los cambiadores de nivel de una sola línea vienen en paquetes SOT-23 e incluyen una línea de dirección y los estados de alta impedancia resultantes según la dirección. Si necesita traducir varias líneas paralelas con la misma señal de dirección, la solución integrada es aún más pequeña por línea.

Sin embargo, la mejor manera de lidiar con esto es diseñar el sistema para que necesite la menor cantidad posible de cambios de nivel. A veces eso es imposible o poco práctico, pero un autobús completo que requiere cambios de nivel es una especie de bandera roja. También tenga en cuenta que las entradas de 5 V con niveles TTL (como los chips 74HCTxxx, por ejemplo) funcionan directamente desde las salidas de 3,3 V, ya que 3,3 V está por encima del umbral de entrada alto garantizado.

Agregado:

Veo que ha publicado un circuito revisado, pero todavía tiene problemas. Cuando el lado de 5 V se está agotando, puede hacer que el lado de 3,3 V solo baje a 2 gotas de diodo sobre el suelo. Eso es demasiado alto para algunos tipos de lógica. Por ejemplo, muchos microcontroladores PIC tienen entradas de disparador Schmitt que funcionan de 0,2 Vdd a 0,8 Vdd. .2Vdd sería solo 660mV con un suministro de 3.3V, por lo que dos caídas de diodo son demasiado altas para garantizar una lógica baja.

Esto se está volviendo tonto. Incluso si su circuito funcionara, solo mostraría que si usa suficiente goma de mascar y cinta adhesiva y 6 partes, puede hacer algo que no es tan bueno como un solo IC barato en un paquete SOT-23.

¿Mi circuito editado resolvería el problema de alta impedancia?
La nota de la aplicación proporcionada por Steven ( nxp.com/documents/application_note/AN10441.pdf ) hace un trabajo maravilloso al aprovechar la arena de la playa y el chicle. 2 líneas en un SOT23-6 usando un FET dual.
Oye, ¿quién se burla del chicle y la cinta adhesiva?
@Mac: Buena. En este caso, los cambiadores de nivel son baratos, están disponibles y funcionan mejor que lo que la mayoría de la gente puede improvisar por su cuenta. Tenga a mano el chicle, la cinta adhesiva y los sujetapapeles para cuando tenga que improvisar una bomba nuclear o algo así.