Entrada de 12 V en el pin del microcontrolador

8

Estoy tratando de contar pulsos / seg. en un pin microcontrolador en el rango de ~ 5 a 100Hz. El µC puede funcionar a una entrada de 5V, por lo que tengo que bajar el nivel de voltaje de manera segura.

Me viene a la mente una resistencia simple, pero que deja abiertas las sobretensiones directamente al pin µC - meh .

He encontrado esta respuesta, pero la pregunta sigue siendo si ese circuito es capaz de cambios "rápidos" de 100Hz.

¿Existe una forma probada y confiable (por medio de un IC, tal vez) de contactar pines de 5V o 3.3V a entradas de 12V "sucias" ? Tengo los 12V y 5V disponibles para manejar cualquier IC "listo para usar".

cristiano
fuente
2
divisor resistivo + zener / diodos de sujeción?
Wesley Lee
2
¿Es realmente una pregunta que no se puede responder con una simple búsqueda en Google?
Ale..chenski
16
Se puede responder, pero me gustaría mucho una respuesta de calidad antes de destruir mi equipo a través de mi propia estupidez. Vamos a conformarnos con la "paz mental"?
Christian
8
@AliChen stackexchange tiene como objetivo ser un repositorio canónico de preguntas y respuestas. Incluso las preguntas simples pueden ser buenas si recopilan respuestas útiles.
Wayne Conrad
2
100Hz no es rápido.
user253751

Respuestas:

13

Use un circuito como este:

esquemático

simular este circuito : esquema creado con CircuitLab

R1 y R2 determinan el rango de voltaje y realizan la división inicial. Estas resistencias deben ser capaces de algo de potencia. Típico es MELF 0.4W. Todos los demás pueden ser resistencias de chip / condensador.

R3 evita que cualquier sobretensión cause daño al gatillo schmitt. R4 y R5 son opcionales para evitar cualquier señal flotante.
Sin embargo, la combinación R3 / R4 también se puede utilizar para ajustar el umbral, si es necesario.

C1 y C2 determinan la velocidad máxima. La combinación R3 / C2 puede filtrar lentamente. C1 filtra los transitorios.

Se utiliza un disparador schmitt por separado, ya que puede obtenerlos realmente pequeños y baratos. Y evita el enrutamiento de una señal débil en trazas largas. Si bien también es una parte de sacrificio en grandes oleadas.

He diseñado este circuito basado en lo que he visto dentro de los PLC. El circuito anterior es para 24V. Ajuste las resistencias para que coincidan con 12V de acuerdo con IEC61131-2.

iec 61131-2
El concepto del estándar es garantizar que la entrada tenga que absorber una cantidad mínima de corriente antes de considerarla como '1'. Los tres tipos especifican cuánto y se aplican en función del ruido ambiental. Esto evita que las fallas lo toquen o los relés cercanos. El inconveniente es que R1 / 2 tiene que ser de buena potencia y baja resistencia.

Jeroen3
fuente
Guau. Una respuesta muy completa a lo que inicialmente parecía una pregunta simple. Gracias.
Christian
Tengo mucha curiosidad sobre R4 y R5. ¿Cuándo harán algo útil? R2 + R3> R4 de todos modos. ¿Es en caso de que alguno de los componentes de "servicio pesado" se rompa?
tubería
@pipe R3 y R4 pueden ayudar a configurar el umbral, al tiempo que proporcionan una ruta de alta impedancia a la lógica. R5 es superfluo la mayor parte del tiempo, pero en el diseño que se usó no se pudo usar el menú desplegable de mcu. Si por alguna razón el búfer fallara, la entrada mcu no leería 50hz zumbido. (Nota: se solicitó confiable)
Jeroen3
17

Intentaría una solución de divisor de resistencia como se muestra a continuación.

ingrese la descripción de la imagen aquí

Seleccione la relación de resistencia para que el voltaje dividido esté en el nivel adecuado para la MCU cuando la entrada esté en su voltaje nominal. El voltaje del diodo zener se selecciona para sujetar la entrada MCU cuando la entrada supera la entrada máxima. El zener también protegerá la MCU si la entrada resulta ser negativa.

Esta solución funcionará muy bien para el rango de frecuencia relativamente bajo que ha especificado.

Michael Karas
fuente
1
¿Por qué elegir zener para ser 4v7? ¿Sería 5v2 (5v1?) Una mejor solución?
R.Joshi
77
@ R.Joshi: Si el microcontrolador de 5V se alimenta con un suministro tolerante al 10% (4.5-5.5V VDD), entonces la aplicación de 5.2V en el pin podría ser más que el VDD típico + 0.3V absoluto máximo. La lógica alta se reconoce a 2V para TTL y 2/3 * VDD para CMOS, por lo que no hay problemas con un Zener 4V7 allí.
Hans
2
Realmente desearía poder marcar dos respuestas como "elegidas". Tu camino es el camino a seguir todos los días, pero la respuesta de Jeroen es un poco más profunda. Sin embargo, gracias por tomarse el tiempo de responder.
Christian
8

Usaría un divisor de resistencia y luego protegería el uC con un Zener de 5.1v

Si coloca el zener entre el pin y la tierra en paralelo con, por ejemplo, una resistencia de extracción de 10k, luego alimente su señal de voltaje dividido en ... zener es más que rápido y barato / fácil.

A menudo hago esto y divido la señal antes de que Zener muerda con una olla.

Otra opción es la vinculada, si realmente le preocupa que se pueda usar un opto, si no es un problema de seguridad, iría con lo anterior o tendría el pin normalmente alto de 5 V Vcc y lo bajaría con un fet (fuera de mi cabeza) 2N7000 debería funcionar), pero es menos simple que la opción zener.

Rendeverance
fuente
7

Si los niveles de señal son GND y 12V (o> 5V), la forma más simple y 100% segura es esta:

esquemático

simular este circuito : esquema creado con CircuitLab

Si realmente cumple con su propósito depende de la impedancia real de la señal de 12V (debe estar muy por debajo de R1) y de lo que quiere decir con "sucio".

Además, como señala correctamente @MichaelKaras, el nivel bajo en la entrada de µC puede desplazarse al nivel bajo de la señal de 12V más Vf del diodo (hasta aproximadamente 0.7V). Debe verificar si esto es un problema en su caso o no. Si es así, aún puede intentar usar un diodo Schottky con un Vf de aproximadamente 0.35V.

JimmyB
fuente
En la mayoría de los µC, incluso se podría soltar la resistencia y activar el pullup interno para ese pin.
Janka
La solución de diodo propuesta aquí no siempre es la mejor u óptima solución. El voltaje de entrada de bajo nivel presentado a la MCU va a estar por encima de GND por una caída de voltaje directo de un diodo más cualquier voltaje de salida de bajo nivel que esté creando la señal de 0 a 12V. Esto puede ser particularmente un problema donde las señales pueden transportar ruido y la entrada MCU se especifica con niveles de voltaje de tipo TTL para V <sub> IL </sub>. A menudo, esta especificación puede ser solo 0.8V. Entonces, si se usa esta solución, tenga cuidado y al menos específicamente un diodo de baja caída de voltaje directo como un BAT54.
Michael Karas
@MichaelKaras Tienes razón sobre el cambio del nivel bajo por el Vf del diodo; Esto debe tenerse en cuenta. Para mí, para un 5V µC, V [IL] de 0.8V parece excepcionalmente bajo. Parece que generalmente encuentro 0.3Vcc (~ 1.5V) especificado.
JimmyB
Si su MCU tiene una especificación de tipo CMOS para V <sub> IL </sub>, entonces tal vez funcione bien. Todavía me gusta diseñar de manera que funcione incluso si la especificación fuera mucho más baja que eso solo para obtener el mayor margen operativo posible. Incluso la diferencia de especificar un diodo de baja caída es un buen paso hacia eso si elige usar este tipo de circuito. Su circuito no es particularmente bueno para los casos en que puede haber excursiones negativas en la entrada de 12V.
Michael Karas
Estoy de acuerdo. Diseñar para margen es algo bueno. Y los voltajes negativos en la señal de 12V pueden causar estragos en el circuito.
JimmyB
5

Usaría un optoaislador, 100Hz está fácilmente dentro del rango de cualquier decente. 4n25 me viene a la mente como un número de parte común, y sé que es capaz de mucho mejor que 100Hz.

John U
fuente
El problema con el uso de un optoaislador para resolver este problema es que supone que puede extraer corriente de la señal de 12V. Puede almacenar la señal de 12V pero eso requeriría un suministro adicional.
Jason Morgan
Estoy seguro de que puede obtener un opto que sería efectivo a casi la misma corriente que una entrada micro, desde 12v no va a poner mucha carga para encender un LED pequeño.
John U
1
Una fuga de entrada digital es típicamente entre 10nA y 1uA (depende de la temperatura y el proceso). Nunca me he encontrado con un optoacoplador que funcione incluso a 1uA. Un optoacoplador típico, comercializado como de baja potencia, por ejemplo, Broadcom ACPL-x6xL necesita 1,6 mA. Eso es entre 1600 y 160000 veces más corriente. Pero luego, como afirmo en mi respuesta, depende de los requisitos lo que funcionará, por lo que no descarto una solución opto.
Jason Morgan
xkcd.com/386
John U
2

El método seleccionado depende parcialmente de lo que hace la señal de entrada, cómo se comporta y cómo podría afectar el circuito de entrada y el código que lo lee.

por ejemplo, ¿siempre es de 12V? ¿Tiene picos o ruido? ¿Cuánta corriente puede conducir? ¿Se puede introducir corriente en él? ¿Tomar corriente de él afectará algo más? ¿Es crítico para la seguridad? ...

Debido a esto, nunca puede haber una respuesta universal a esta pregunta, ya que la solución 'correcta' depende de lo que haga el resto del sistema. La solución elegida que cumpla con los requisitos tendrá diferentes costos y complejidad.

Dicho esto, como nadie más lo ha sugerido aún, buscaré una entrada FET.

Se puede usar un JFET o MOSFET y puede ser una fuente común o modos de drenaje comunes. Por ejemplo, drenaje común:

esquemático

simular este circuito : esquema creado con CircuitLab

La ventaja del modo de drenaje común es que permite que la entrada se conecte a un pin analógico (por ejemplo, ADC) o digital. Si la señal es verdaderamente digital, habilitaría el disparador schmitt en la entrada de la CPU (si tiene una), o agregaría un búfer schmitt externo al pin de entrada de la CPU.

Ventajas

  • Muy alta impedancia de entrada
  • Entrada parcialmente aislada (puede soportar +/- 30V, dependiendo de la selección FET)
  • Posible analógico
  • Efecto mínimo en la señal externa
Jason Morgan
fuente
1

esquemático

simular este circuito : esquema creado con CircuitLab

Figura 1. Interfaz optoaislada. Use pull-up interno en GPIO.

Un optoaislador resuelve varios problemas.

  • Completo aislamiento eléctrico entre el circuito de 12 V y la lógica de 5 V.
  • Maneja la señal sucia de 12 V sin riesgo.
  • Sencillez.
Transistor
fuente
1

esquemático

simular este circuito : esquema creado con CircuitLab

R1, R2 y C1 forman un divisor de voltaje con un filtro de paso bajo de 1 kHz. Cualquier señal de alta frecuencia no deseada que viaja en el 12V puede ser filtrada. El cálculo para la frecuencia del filtro es 1 / (2 pi R2 C1). Nota: La Base requiere al menos 0.7V para funcionar correctamente, tenga cuidado al ajustar la resistencia.

BJT se está utilizando porque es muy común en comparación con mosfet. En el caso de que los 12 V sigan activos pero los 5 V de su uC estén bajos, el BJT no pasará corriente al pin y causará daños.

Para la programación uC, use un disparador de mayor a menor para contar su pulso. Como este circuito revertirá el pulso.

Jason Han
fuente
-2

En general, las entradas MCU ya están protegidas con diodos de pinza, siempre que tenga una resistencia con un valor optimizado (lo suficientemente alto para las pinzas y lo suficientemente bajo para el muestreo) y tenga una buena capacidad de derivación entre VDD y VSS, no tiene preocuparse por eso. Entonces, solo una resistencia es suficiente.

editar: Gracias al comentario de PeterJ, quiero explicarlo un poco más. La menor potencia que consume la MCU (suponiendo que no duerma), la capacidad de derivación, el valor de la resistencia; cuando todos estos se encuentran en el punto comprometedor, que es fácilmente el caso muy general con solo la condición que usa una resistencia de aproximadamente 10 kOhm, la única resistencia está bien para la simple aplicación del OP.

Ayhan
fuente
44
Un problema que encontré con esto hace muchos años es que, si bien puede no dañar nada, Vcc internamente puede aumentar un poco (hasta que el diodo conduce) y, dependiendo del microcontrolador, puede arrojar cosas como lecturas de ADC.
PeterJ
@PeterJ Funciona bien si puede garantizar que al menos esa cantidad de corriente se elimine del suministro. En el peor de los casos, agregue una resistencia ficticia ...
CL.
Aunque 'desagradable' he visto esto hecho en muchos bienes de consumo baratos. Reparé una vez un reloj despertador donde la red eléctrica se alimentaba a una entrada digital a través de una resistencia de 10M como referencia de temporización. Como era de esperar, el chip estaba muerto.
Jason Morgan
-5

Puede optar por un regulador de voltaje LM7805 / LM7803 para 5V y 3.3V respectivamente. Supongo que el uC está aislado de una carga exigente de corriente, si la hay.

Yash
fuente
1
Es creativo Pero operará fuera de especificaciones en alta velocidad. Si fuera todo lo que tenías por ahí, tal vez.
Jeroen3