¿Mi razonamiento sobre un ATMega328p conectado a un equipo que requiere un pin de drenaje abierto es correcto?

0

Soy parte de un grupo de investigación que está desarrollando un concepto para una PCB para un equipo externo. Este equipo puede ser controlado con un microcontrolador. Se comunica con mi microcontrolador a través de I2C, utilizando pines SDA y SCL. Sin embargo, utiliza otro pin; lo llaman un "pin de interrupción" y les permite a los esclavos enviar comandos al maestro. La pieza externa del equipo indica en su descripción de interfaz que este pin de interrupción debe controlarse mediante un pin de drenaje abierto en un microcontrolador. Lo suficientemente justo.

Nuestro microcontrolador es un ATMega328p con el cargador de arranque Arduino. En el prototipado he abusado del modo Pin de Arduino para emular el drenaje abierto:

void setup ()
{
  digitalWrite (pin, LOW) ;
}

void loop ()
{
  ...
  pinMode (pin, OUTPUT) ; // drive pin low
  ...
  pinMode (pin, INPUT) ; // hi-Z state
}

Pero como probablemente sepa, esto produce formas de onda impares cuando las señales se verifican con un osciloscopio . En el hilo vinculado, el tipo que se encontró con el mismo problema agregó un pullup externo de 10k al pin y resolvió sus formas de onda. Parecía funcionar correctamente.

Como ninguno de nosotros tiene mucho conocimiento sobre este tema específico; ¿Estamos en lo cierto al suponer que si una pieza de equipo externo requiere el control mediante un pin de drenaje abierto en "algún microcontrolador", esto se puede lograr al cambiar INPUT / OUTPUT en un ATMega328p junto con una resistencia pullup de 10k agregada al pin?

    
pregunta Zimano

3 respuestas

3

Su código de "drenaje falso abierto" (el cambio entre bajo y alto-Z) puede funcionar siempre que el voltaje de alimentación del microcontrolador sea igual o superior al voltaje en esa conexión de interfaz que requiere el desagüe abierto.

Si esta condición no se cumple (el microcontrolador usa un voltaje más bajo), los diodos ESD que se encuentran dentro del microcontrolador comenzarán a conducir:

simular este circuito : esquema creado usando CircuitLab

Para arreglar eso, intentaría esto:

simular este circuito

Para el NMOSFET que comenzaría con un 2N7000, cualquier otro MOSFET de canal N podría funcionar tan bien como tenga un voltaje de umbral lo suficientemente bajo. No es que invierta el comportamiento, si el microcontrolador genera un "1", el NMOSFET estará "encendido", lo que hará que la entrada del otro dispositivo sea "baja".

    
respondido por el Bimpelrekkie
1

Sus suposiciones y métodos de control son bastante precisos.

Sin embargo, dependiendo de qué señal de colector abierto sea y lo que haga, el hecho de que parezca extraño en un osciloscopio no indica necesariamente que algo esté mal.

Lo que está conduciendo puede ser algún tipo de receptor de modo actual, por ejemplo, un lado de un opto-acoplador. Como tal, un pull-up no proporciona ningún beneficio particular más que facilitar la depuración con el alcance.

Realmente es una situación caso por caso.

Como menciones Bimpelrekkie , también puede requerir un drenaje abierto por razones de voltaje. La lectura cuidadosa y la comprensión de la hoja de especificaciones del objeto adjunto es fundamental.

Por cierto: creo que el dispositivo ATMega tiene extensiones internas que puede usar a través del comando pinMode en lugar de una resistencia externa

    
respondido por el Trevor_G
0

Un pin de salida que se establece en bajo y luego se cambia entre habilitado y Hi-Z se comporta como un drenaje abierto.
Donde tengo un problema es

  

Pero como probablemente sepas, esto resulta en formas de onda ridículamente malas

No estoy de acuerdo. Una salida opendrain (o tri-state) no producirá formas de onda ridículamente malas. Sé a qué te refieres. Si la señal conectada a una salida opendrain (o tri-state) no se activa, comenzará a flotar y seguirá a cualquier fuente de señal cercana. Por lo tanto, usted quería agregar una resistencia de pull-up.
Eso es incorrecto. Hablando estrictamente, un pull-up NO es realmente parte de una salida de un sistema operativo. Sospecho mucho que su "equipo" tendrá un pull-up o equivalente. Si no, esa es una discrepancia entre los requisitos y lo que realmente tienen.

    
respondido por el Oldfart

Lea otras preguntas en las etiquetas