entrada de 12V en el pin del microcontrolador

8

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

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

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

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

    
pregunta Christian

10 respuestas

13

Use un circuito como este:

simular este circuito : esquema creado usando CircuitLab

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

R3 evita que las sobretensiones causen daño al disparador de 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. Combinación R3 / C2 puede filtrar lento. C1 filtra los transitorios.

Se utiliza un desencadenador schmitt separado, ya que puede obtenerlos realmente pequeño y barato. Y evita el enrutamiento de una señal débil en trazas largas. Aunque también es una parte de sacrificio en oleadas importantes.

He diseñado este circuito en base a lo que he visto dentro de PLC's. Por encima del circuito es de 24V. Ajuste las resistencias para que coincidan con 12V según IEC61131-2.


El concepto de la norma es garantizar que la entrada tenga que acumular una cantidad mínima de corriente antes de considerarlo un '1'. Los tres tipos especifican cuánto y se aplican en función del ruido ambiental. Esto evita que los fallos técnicos lo toquen o los relés cercanos. El inconveniente es que R1 / 2 tiene que tener una potencia nominal decente y baja resistencia.

    
respondido por el Jeroen3
17

Probaría una solución divisoria de resistencia como se muestra a continuación.

Seleccione la relación de resistencia de modo que la tensión dividida esté en el nivel adecuado para la MCU cuando la entrada esté en su tensión nominal. La tensión 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 pasa a ser negativa.

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

    
respondido por el Michael Karas
8

Usaré un divisor de resistencia y luego protegeré la unidad de usuario con un Zener de 5.1v

Si coloca el zener entre el pin y el suelo en paralelo con, digamos, una resistencia de bajada de 10k, luego alimenta su señal dividida de voltaje, entonces ... el zener es más rápido y barato / fácil.

A menudo hago esto y divido la señal antes del bit Zener con un pot.

Otra opción está vinculada, si realmente le preocupa que se pueda usar una opción, si no es un problema de seguridad, me gustaría ir con lo anterior o tener el pin normalmente alto de 5V Vcc y tirar hacia abajo con un feto de mi cabeza 2N7000 debería funcionar), pero es menos simple que la opción zener.

    
respondido por el Rendeverance
6

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

simular este circuito : esquema creado usando CircuitLab

Si realmente sirve, su propósito depende de la impedancia real de la señal de 12 V (debería estar muy por debajo de R1) y de lo que se entiende por "sucio".

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

    
respondido por el JimmyB
5

Yo usaría un opto-aislador, 100Hz está fácilmente dentro del rango de cualquier decente. 4n25 viene a la mente como un número de pieza común, y sé que es capaz de mucho mejor que 100Hz.

    
respondido por el 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 12V? ¿Tiene picos o ruido? ¿Cuánta corriente puede conducir? ¿Se puede conducir la corriente hacia ella? ¿Tomar corriente de ello afectará a cualquier otra cosa? ¿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, voy a solicitar una entrada FET.

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

simular este circuito : esquema creado usando CircuitLab

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

Ventajas

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

simular este circuito : esquema creado usando CircuitLab

Figura 1. Interfaz opto-aislada. Utilice el pull-up interno en GPIO.

Un opto-aislador resuelve varios problemas.

  • Termine el aislamiento eléctrico entre el circuito de 12 V y la lógica de 5 V.
  • Maneja la señal de 12 V sucia sin riesgo.
  • Simplicidad.
respondido por el Transistor
1

simular este circuito : esquema creado usando CircuitLab

R1, R2 y C1 forman un divisor de voltaje con un filtro de paso bajo de 1kHz. Cualquier señal de alta frecuencia no deseada que viaja en el 12V se puede filtrar. El cálculo de 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 el 12V aún esté activo, pero el 5V para su uC esté apagado, el BJT no pasará corriente al pin y causará daños.

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

    
respondido por el Jason Han
-2

En general, las entradas de 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 bypass entre VDD y VSS, no No tienes que preocuparte por eso. Entonces, solo una resistencia es suficiente.

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

    
respondido por el Ayhan
-5

Usted puede optar por un regulador de voltaje LM7805 / LM7803 para 5V y 3.3V respectivamente. Supongo que el uC está aislado de una carga actual exigente, en su caso.

    
respondido por el Yash

Lea otras preguntas en las etiquetas