¿Cambiando una señal digital de 2.7V a niveles lógicos de Arduino?

1

Soy prácticamente un principiante en electrónica y actualmente estoy trabajando en un proyecto personal, donde tengo un dispositivo, que está emitiendo una señal digital (onda cuadrada) que va de 0V a 2,7 V y necesito Para leer esa señal con mi Arduino. Eso, desafortunadamente, no es suficiente para el Arduino Mega 2560, ya que el voltaje mínimo para elevar 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 de nivel mi señal de 2.7V a al menos 3V o más.

Este es el diagrama lógico del cambiador de nivel:

Yestassonlascaracterí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.3 V ya que Arduino necesita al menos 3 V para aumentar la altura de un pin?

Ahora, en mi pregunta real ... No entiendo la parte Vcc y Vin (Vol, Voh).

En la tabla, podemos ver que si Vcc es 5V y Vdd es 10V, Vin será un 0 lógico si la tensión aplicada 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 al menos 2V o más se aplica a la entrada cuando Vcc = 5V y Vdd = 10V / 15V, pero tanto el Voh como el Vol cambian dependiendo del Vdd ? ¿Qué significa esto para mi caso de uso?

¿Qué pasa si uso 5V para Vcc y Vdd? ¿Qué pasa si uso 3.3V para Vcc y Vdd ambos? ¿Qué pasa si uso 3.3V para Vcc y 5V para Vdd y viceversa? ¿Qué pasa 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!

    
pregunta 0xd4v3

4 respuestas

1

TL; DR: Use Vcc = 5V, Vdd = 5V, modo TTL-CMOS, y debería estar bien.

"Por lo que puedo decir, siempre y cuando la entrada se considere 1 (alta), mi voltaje en la salida será ~ 5V si Vdd es 5V, lo cual es perfecto. ¿Sería correcto un Vdd de 3.3V ya que Arduino necesita ¿Al menos 3 V para girar 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 1.5V para Vcc = Vdd = 5V, eso funcionará totalmente bien con su entrada lógica de 2.7V.

"Ahora, en mi pregunta real ... No entiendo la parte Vcc y Vin (Vol, Voh)".

Esta hoja de datos enumera sus datos de una manera bastante extraña, y en realidad no está totalmente 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 al menos 2V o más se aplica a la entrada cuando Vcc = 5V y Vdd = 10V / 15V, pero tanto el Voh como el Vol cambian dependiendo del Vdd. ¿Qué significa esto? para mi caso de uso? "

Sí, estás interpretando esto 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 más alta etiquetada como "Voltaje de salida", que simplemente dice que si usa Vdd = 5V obtener ~ 5V de salida.

"¿Qué pasa si uso 5V para Vcc y Vdd? ¿Qué pasa si uso 3.3V para Vcc y Vdd? ¿Qué pasa si uso 3.3V para Vcc y 5V para Vdd y viceversa?"

De nuevo, vea la Figura 4. En el modo TTL-CMOS, necesita usar 5V para Vcc y Vdd. Yo diría que usar 5V para ambos es la solución correcta para su aplicación.

    
respondido por el Selvek
2

Mientras no te importe una inversión lógica, puedes usar algo simple como un transistor y dos resistencias.

simular este circuito : esquema creado usando CircuitLab

Tensiones de salida del sensor por encima de aproximadamente 0,8 V, interruptor Q1 encendido. R2 lleva la entrada Arduino a su riel de suministro cuando Q1 está apagado. Si utiliza una entrada de pin de E / S con una resistencia de activación programable, puede omitir R2. La mayoría de los BJT de NPN de señal pequeña funcionarán para Q1.

    
respondido por el TonyM
2

Las entradas de Arduino deben cumplir con los niveles lógicos especificados para el margen.

VIL < = 0.3Vcc máx.
VIH > = 0.7Vcc min

Por lo tanto, la onda cuadrada de entrada debe ser > = 0.4 Vcc y para 5V, o 0.4 * 5 = 2.0 Vpp y tienes 2.7V con un margen de 0.7V.

Como alternativa, puedes unir la CA para ingresar con sesgo R a Vcc / 2.

Hay lots de shifter de nivel Soluciones para 2.7V a 5V.

Rev B.

simular este circuito : esquema creado usando CircuitLab

  • asumiendo suministro y señal sin ruido.
respondido por el Tony EE rocketscientist
1

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 de 0V a Vdd. El Arduino funciona a 5 V, por lo que también debe configurar Vdd a + 5 V.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas