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".
microcontroller
voltage
input
pins
cristiano
fuente
fuente
Respuestas:
Use un circuito como este:
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.
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.
fuente
Intentaría una solución de divisor de resistencia como se muestra a continuación.
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.
fuente
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.
fuente
Si los niveles de señal son GND y 12V (o> 5V), la forma más simple y 100% segura es esta:
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.
fuente
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.
fuente
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:
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
fuente
simular este circuito : esquema creado con CircuitLab
Figura 1. Interfaz optoaislada. Use pull-up interno en GPIO.
Un optoaislador resuelve varios problemas.
fuente
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.
fuente
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.
fuente
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.
fuente