Soy prácticamente un principiante en electrónica y actualmente estoy trabajando en un proyecto personal, donde tengo un dispositivo que emite una señal digital (onda cuadrada) que va de 0V a 2.7V y necesito leer eso. señal con mi Arduino. Eso, desafortunadamente, no es suficiente para el Arduino Mega 2560 ya que el voltaje mínimo para subir el pin digital es de al menos 3V.
He estado haciendo algunas "investigaciones" y encontré el cambiador de nivel hexagonal MC14504B que parecía la solución perfecta para mi problema. Sin embargo... tengo algunos problemas para interpretar la hoja de datos...
TL;DR: Necesito cambiar el nivel de mi señal de 2,7 V a al menos 3 V o más.
Este es el diagrama lógico del cambiador de nivel:
Y estas son las características:
No estoy exactamente seguro de cómo interpretar estos números. Planeo usar el modo TTL-CMOS.
Por lo que puedo decir, siempre que la entrada se considere 1 (alta), mi voltaje en la salida será ~ 5V si Vdd es 5V, lo cual es perfecto. ¿Estaría bien un Vdd de 3.3V ya que Arduino necesita al menos 3V para subir un pin?
Ahora a mi verdadera pregunta... No entiendo la parte de Vcc y Vin (Vol, Voh).
De la tabla, podemos ver que si Vcc es 5V y Vdd es 10V, el Vin será un 0 lógico si el voltaje aplicado a la entrada es <= 0.8V, lo mismo ocurre si Vcc es 5V y Vdd es 15V.
Ahora, por lo que puedo decir, la entrada se considerará alta si se aplican al menos 2 V o más a la entrada cuando Vcc = 5 V y Vdd = 10 V/15 V, pero tanto el Voh como el Vol cambian según el Vdd. ¿Qué significa esto para mi caso de uso?
¿Qué pasa si uso 5V para Vcc y Vdd ambos? ¿Qué pasa si uso 3.3V para Vcc y Vdd? ¿Qué pasa si uso 3.3V para Vcc y 5V para Vdd y viceversa? ¿Qué sucede en estos escenarios? ¿Alguien podría explicar esto de una manera muy simple, por favor? Parece que me estoy perdiendo algo aquí ya que mi interpretación no tiene sentido para mí.
¡Gracias!
TL; DR: use Vcc = 5V, Vdd = 5V, modo TTL-CMOS, y debería estar bien.
"Por lo que puedo decir, siempre que la entrada se considere 1 (alta), mi voltaje en la salida será ~ 5 V si Vdd es 5 V, lo cual es perfecto. ¿Estaría bien un Vdd de 3.3 V ya que Arduino necesita al menos 3 V para encender un pin alto?"
Correcto, obtendrá una salida de ~ 5V si usa Vdd = 5V. Sin embargo, en el modo TTL-CMOS, tanto Vdd como Vcc deben tener al menos 5 V (Figura 4 de la hoja de datos). Dado que el punto de conmutación de la lógica de entrada es de 1,5 V para Vcc = Vdd = 5 V, funcionará perfectamente con su entrada lógica de 2,7 V.
"Ahora mi verdadera pregunta... No entiendo la parte de Vcc y Vin (Vol, Voh)".
Esta hoja de datos enumera sus datos de una manera bastante extraña, y en realidad no está del todo claro lo que significa. Mi interpretación es que "VOL = 1.0VDC" significa que cuando se opera en esta condición, se garantiza que el voltaje de salida sea inferior a 1VDC. Afortunadamente, no creo que sea realmente un problema para su aplicación.
"La entrada se considerará alta si se aplican al menos 2 V o más a la entrada cuando Vcc = 5 V y Vdd = 10 V/15 V, pero tanto el Voh como el Vol cambian según el Vdd. ¿Qué significa esto para mi caso de uso?"
Sí, lo estás interpretando correctamente. Para su caso de uso, ignore los números "Voh y Vol" en la sección "Voltaje de entrada" y, en su lugar, preste más atención a la sección superior etiquetada como "Voltaje de salida", que solo dice que si usa Vdd = 5V obtenga una salida de ~ 5V.
"¿Qué pasa si uso 5 V para Vcc y Vdd? ¿Qué pasa si uso 3,3 V para Vcc y Vdd? ¿Qué pasa si uso 3,3 V para Vcc y 5 V para Vdd y viceversa".
Nuevamente, vea la Figura 4. En el modo TTL-CMOS, necesita usar 5V para Vcc y Vdd. Diría que usar 5V para ambos es la solución correcta para su aplicación.
Mientras no le importe una inversión lógica, puede usar algo simple como un transistor y dos resistencias.
simular este circuito : esquema creado con CircuitLab
Los voltajes de salida del sensor por encima de aproximadamente 0,8 V encienden Q1. R2 lleva la entrada de Arduino a su riel de suministro cuando Q1 está apagado. Si usa una entrada de pin de E/S con una resistencia pull-up programable, puede omitir R2. La mayoría de los BJT NPN de señal pequeña servirán para Q1.
Las entradas de Arduino deben cumplir con los niveles lógicos especificados para el margen.
VIL <= 0,3 Vcc máx.
VIH >= 0,7 Vcc mín.
Por lo tanto, la onda cuadrada de entrada debe ser >= 0,4 Vcc y para 5 V, o 0,4 * 5 = 2,0 Vpp y tiene 2,7 V con un margen de 0,7 V.
Alternativamente, puede acoplar CA a la entrada con polarización R a Vcc/2.
Hay muchas soluciones de cambio de nivel para 2,7 V a 5 V.
Rev B.
simular este circuito : esquema creado con CircuitLab
Los niveles de voltaje de entrada TTL son >=0.8V bajo y >=2.0V alto. El MC14504B acepta estos niveles lógicos cuando está en modo TTL con Vcc = +5V. Sus niveles de señal son 0V y 2.7V, así que todo está bien.
El MC14504B tiene salidas CMOS que van desde 0V hasta Vdd. El Arduino funciona a 5V, por lo que también debe configurar Vdd en +5V.
Ignacio Vázquez-Abrams
Selvek
0xd4v3
Selvek
0xd4v3
Pedro Mortensen