Reemplace BSS138 con AO3400A en el circuito de cambio de nivel

Tengo que usar el circuito de cambio de nivel para conectar MAX31855 con Arduino funcionando con 5V.

Encontré un circuito de cambio de nivel fácil de construir en el sitio web de SparkFun . Está usando BSS138 ( hoja de datos ) que no tengo. Estoy pensando en construir el mismo circuito con AO3400A ( hoja de datos ), que ya pedí la semana pasada por un paquete de 100, así que espero recibirlo en los próximos días.

Mi pregunta es si estará completamente bien reemplazar BSS138 con AO3400A en este circuito en particular.

Según ambas hojas de datos, creo que AO3400A es mucho mejor en términos de R D S ( O norte ) . V GRAMO S ( t h ) también es bueno para AO3400A. q gramo es ligeramente superior en AO3400A. (Estos son los parámetros que suelo comparar para elegir MOSFET).

Pregunto esto porque aún no tengo AO3400A para probar. Si AO3400A está mal aquí, entonces puedo pedir BSS138 pronto. Sin embargo, no creo que encuentre ningún otro uso para BSS138, particularmente debido a su gran R D S ( O norte ) (la hoja de datos dice que es extremadamente bajo R D S ( O norte ) !!) y capacidad de baja corriente de drenaje.

ingrese la descripción de la imagen aquí

@TomCarpenter Gracias. De hecho, ¡no sé exactamente cómo funciona este circuito!
He agregado un poco sobre cómo funciona el circuito.

Respuestas (3)

TL;RD; Funcionará, pero será lento. Probablemente no más de 200 kHz de velocidad de datos.


R d s ( o norte ) es irrelevante en este circuito para ser honesto.

La resistencia del canal actúa esencialmente como un divisor potencial con R4 o R3 cuando la salida se reduce. Entonces, incluso si fuera 100 Ω, el bajo voltaje de salida aún no sería más de 100 mV.

Una resistencia de encendido más grande ralentizará ligeramente el flanco descendente, pero dado que el flanco ascendente está completamente controlado por la resistencia pull-up de todos modos, el cambiador de nivel no es bueno para circuitos de alta velocidad (unos pocos MHz como máximo dependiendo de la longitud del rastro y carga capacitiva).

Cualquier MOSFET con un V gramo s ( t h ) de menos de V L V V s d (suministro de bajo voltaje menos voltaje directo del diodo del cuerpo) debería ser suficiente para que el circuito funcione a cierta frecuencia, AO3400A cumple con ese requisito.

Sin embargo, como señala @SpehroPefhany, esta no es la historia completa. Como ya se mencionó, estos circuitos son lentos, en parte debido a las resistencias pull-up, pero también debido a la capacitancia del MOSFET, su C i s s y C o s s (capacitancias de "entrada" y "salida").

Los MOSFET tienen capacitancias entre cada uno de los terminales, que pueden considerarse como capacitores entre la puerta y la fuente ( C i s s ), y entre drenaje y fuente ( C o s s ). Estos condensadores también actuarán para ralentizar el circuito. Cuanto mayor sea la capacitancia, más lento será el circuito.

La capacitancia tiene el mayor impacto en el cambio descendente tanto en los flancos ascendentes como descendentes. Para los cambios ascendentes, el efecto se minimiza en el flanco ascendente, ya que C_{iss} ayuda a impulsar, sin embargo, el flanco descendente se ve afectado tanto como el modo de cambio descendente.

Su MOSFET elegido tiene una capacitancia muy alta, lo que limitará la velocidad del circuito. Como una simulación aproximada muy rápida, esto muestra el circuito en funcionamiento a 2 MHz tanto para el BSS138 como para el AO3400A. A continuación se muestra una captura de pantalla de los resultados en caso de que la URL se rompa.

Resultados de la simulación

Como era de esperar, el AO3400A funciona mal en esta frecuencia. De hecho, al disminuir la frecuencia de la simulación, podemos ver un cambio descendente de aproximadamente 800 ns de tiempo de subida (10 % a 80 % Vdd) y aproximadamente 50 ns de tiempo de caída. Esto se compara con un tiempo de subida de solo 40 ns para el BSS138.

Probablemente pueda obtener ~ 200 kHz con el transistor propuesto frente a ~ 4 MHz con el BSS138.


Cómo funciona

Agregaré un poco sobre cómo funciona el circuito para completarlo. Hay dos modos de funcionamiento, cambio ascendente (entrada LV1, salida HV1) y cambio descendente (entrada HV1, salida LV1).

Para simplificar la explicación, supondré que LV es 3.3V y HV es 5V. Los números de la lista corresponden al número en el diagrama al final de la respuesta.

Cambio ascendente (LV1 = Entrada, HV1 = Salida)

El cambio ascendente es el más fácil de entender.

  1. Cuando el pin de entrada es alto, entonces el V gramo s del MOSFET será cero: tanto la puerta como la fuente están a 3,3 V. Como tal, el MOSFET se apaga y el pin de salida se elevará a 5V por R4.

  2. Cuando la entrada se baja, la fuente estará en 0V, pero la puerta permanecerá en 3.3V. Como tal V gramo s ahora es 3.3V y el MOSFET se enciende. El MOSFET bajará el drenaje al voltaje de la fuente (0V), lo que significa que el pin de salida ahora estará bajo. (El pin de entrada está hundiendo la corriente de R3 y R4).

Desplazamiento hacia abajo (LV1 = Salida, HV1 = Entrada)

El cambio hacia abajo es un poco más complicado.

  1. Cuando el pin de entrada es alto, no hay nada en el circuito que tire de la salida hacia abajo. Como tal, R3 lo elevará a 3,3 V. Esto hará que el V gramo s del MOSFET cero, evitando que cualquier corriente fluya de entrada a salida. Como tal, el voltaje de salida no puede exceder los 3,3 V, aunque la entrada sea de 5 V.

  2. Cuando la entrada se reduce, el diodo del cuerpo del MOSFET que va de la fuente al drenaje comenzará a conducir y reducirá la salida. A medida que la salida desciende, el voltaje de la fuente se mueve hacia V s d (voltaje directo del diodo del cuerpo).

  3. Mientras esto sucede, V gramo s ahora será 3.3 V V s d , que debe ser suficiente para encender el MOSFET. Una vez que se enciende el MOSFET, el voltaje de salida caerá hacia cero a medida que la corriente a través de R3 fluye a través del canal en lugar del diodo del cuerpo.


Diagrama de cambio de nivel MOSFET

¡Gracias por la explicación detallada! Como habrás adivinado, fue fácil de entender el cambio ascendente. El cambio descendente con entrada alta tampoco es difícil de entender.
Como mencioné, es para interactuar con MAX31855 para comunicarse a través de SPI. ¿Hasta qué velocidad será seguro usarlo?
@Junaid He obtenido 4 MHz de este tipo de cambiador de nivel antes usando resistencias pull-up de 2.2k. Eso fue en una tirada muy corta (~2 cm de cable). También era para un dispositivo que era muy sensible al redondeo de los bordes de la señal (era un dispositivo flash SPI).
Sin embargo, eso fue con un BS170, que tiene un Ciss y Coss mucho más bajo que el AO3400A, por lo que será más rápido. Es posible que pueda obtener 1MHz del transistor que desea usar si no le importan los bordes muy redondeados.
@TomCarpenter Su respuesta es muy detallada y fácil de entender. Hay una cosa que me pregunto. ¿Qué determina el HV máximo posible? AdaFruit vende un módulo basado en este diseño y dice HV es 10V máx. Leí la hoja de datos de BSS138 y no pude determinar qué evitaría el cambio descendente de 12 o incluso 24 V. ¿Puedes explicar por favor?
@GenePavlovsky, la hoja de datos tiene VDss (voltaje de fuente de drenaje) como 50 V, por lo que el lado alto puede subir hasta 50 V, para el BSS138.
@TomCarpenter Solo para aclarar: "Una vez que se enciende el MOSFET, el voltaje de salida caerá hacia cero a medida que la corriente a través de R3 fluye a través del canal en lugar del diodo del cuerpo". Este será un flujo de polarización inversa a través del canal ya que el flujo "normal" es drenaje a fuente, ¿verdad? Con BDiodeVf = 0,6, la corriente de drenaje inversa es de 100 mA; ver la hoja de datos. También 3.3v - 0.6v = 2.7V que es > 0.8V (Vgth_min), por lo que el MOSFET está encendido.

AO3400A es un MOSFET de potencia y tiene Cgs mucho más altos (20 veces más) y carga de puerta y Coss. Si no te importa en absoluto la velocidad, funcionará.

La velocidad ya es bastante terrible debido al pullup de 10K y otras capacitancias. Si reduce la resistencia pullup, puede recuperar parte de la velocidad, pero lo que sea que lo esté impulsando tendrá que absorber más corriente (y tener un voltaje de salida adecuadamente bajo para producir suficiente inmunidad al ruido) y el consumo de energía será más alto.

Haga una simulación y vea si excederá sus requisitos exactos por un margen suficiente.

Necesito aprender a simular circuitos :)
Como mencioné, es para interactuar con MAX31855 para comunicarse a través de SPI. ¿Hasta qué velocidad será seguro usarlo?
Puede simularlo o construirlo y probarlo. Mi bola de cristal está un poco turbia esta tarde.

Bueno, esta pregunta es bastante antigua, pero creo que debería participar: para SPI, a veces no necesita un cambiador de nivel para conectar dispositivos de 3.3 a 5V.

MISO:

A menudo, los 3,3 V en la línea MISO son suficientes para llevar los pines de entrada de su microcontrolador a ALTO. Debe leer las características eléctricas de su dispositivo.

Voy a suponer que usa un Arduino Uno, que usa un ATMEGA328P, veamos la hoja de datos: ficha de datosse especifica como: 2. "Min" significa el valor más bajo donde se garantiza que el pin se leerá como alto. Entonces, a 5 V, su Atmega328P está GARANTIZADO para leer como 1 siempre que el pin sea 0.7 veces Vcc. Entonces 3.5V a 5V. Su dispositivo funciona a 3,3 V. Entonces "puede o no funcionar". En mi experiencia, funciona a temperatura ambiente normal y velocidades bajas. Pero variará con el VCC, la temperatura y los dispositivos específicos.

MOSI, SCLK:

Trivial para configurar un divisor de voltaje para reducir 5V a aproximadamente 3.3V. Puede que no funcione a MHz muy altos, pero he conseguido que funcione con un MAX31856 a 5 MHz más o menos. A veces, también puede salirse con la suya con solo una resistencia de alto valor: lo más probable es que el dispositivo tenga diodos de sujeción a VDD, por lo que el voltaje se sujetará de manera segura y la resistencia en serie evitará que se queme. Esto puede o no funcionar con todos los dispositivos.

Para un atmega328 (y la mayoría de los microcontroladores), una entrada se ve así: reprimiciónlos diodos son, por supuesto, internos al microcontrolador. Cpin es la capacitancia parásita y Rpu es el impulso débil. No pude encontrar si el MAX31855 tiene este tipo de entrada, pero lo más probable es que la tenga (es realmente fácil de probar: use una resistencia de 100K y alimente 5V en el pin mientras suministra 3.3V en VDD. Mida el voltaje a través de la resistencia , y debe estar cerca de 3.3V). Una resistencia en serie de 10K puede ser suficiente para limitar la corriente sin dañar el pin. Es posible que deba ir más bajo para velocidades más altas, pero demasiado bajo hará que fluya demasiada corriente y se estropee, en este caso particular, el sensor de temperatura interno del MAX31855 para la unión fría).

CS:

CS es especial. Se puede conducir con una salida de drenaje abierta. Puede usar una resistencia de 3.3 V a su línea CS y configurar su microcontrolador en SALIDA BAJA para escribir un 0, o ENTRADA (Z alta) para dejar que flote de regreso a 1. Para su tranquilidad, puede usar un diodo inverso (Cátodo al pin del microcontrolador), lo que bloquearía el flujo accidental de 5 V hacia el dispositivo.

CIRCUITO SUGERIDO

Tendría que ser un diodo Schottky, porque un diodo de silicio 1N4148 normal puede mantener el ánodo a 0,7 V y evitar que el dispositivo se dispare. Sin embargo, en mi experiencia, el 1N4148 que estaba usando funcionó bien.