Solución para la traducción de nivel (3.3V Arduino Due - 5V shield)

5

La nueva placa Arduino Due tiene su microcontrolador a 3.3V, pero desafortunadamente la mayoría de los protectores adicionales (placas) de Arduino funcionan a 5V, por lo que sus señales de E / S están en diferentes niveles lógicos.

El número de señales es de aproximadamente 20, e incluye:

  • líneas digitales estándar (algunas con capacidad de interrupción de hardware)
  • E / S analógica
  • líneas UART serie
  • así como las señales SPI e I2C

Ahora, me gustaría agregar un escudo intermedio (placa) para facilitar la compatibilidad entre la placa Arduino Due de 3.3V y todas las señales de cualquier escudo de 5V dado. Esta placa intermedia debería permitir la interconexión entre las señales de 3.3V y las señales de 5V (es decir, de ambas formas).

¿Cuál es la mejor manera de crear una traducción de nivel bidireccional para un caso como el anterior? Aquí, por "mejor", me refiero a simple, barato y que funcionaría sin problemas en los distintos Escudos y tipos de señales.

Según mi investigación de este tipo de cambio de nivel hasta ahora, las opciones disponibles parecen ser:

  • Un conjunto de diodos que crean una caída de voltaje (pero esto sería unidireccional)
  • Un conjunto de divisores resistivos (de nuevo unidireccionales)
  • ¿Un chip de cambio de nivel especializado? ...
pregunta boardbite

2 respuestas

1

He diseñado un pequeño sistema que podría funcionar para su aplicación en particular. Aquí está el esquema:

Olvidéelnododereferencia,debeestarconectadoalterminal2deBT1.¿Cómofuncionaesto?

Dealtoabajo

Enprimerlugar,supongamosquepodemosdescuidarlacorrientequefluyeen/desde"bajo".

Cuando se levanta alto (5V) en R1, no fluye corriente, mientras que los tres diodos están conduciendo. Suponiendo un voltaje de caída directa de 0.6V, el voltaje a bajo será de 3.2V, y la corriente que fluye desde el alto será de aproximadamente 320uA.

Cuando se baja el valor alto (0 V), todos los diodos se interceptan, por lo que R2 baja el voltaje en el nivel bajo. La corriente que debe hundirse es de aproximadamente 500 uA.

De bajo a alto

Ahora supongamos que alto no está consumiendo corriente.

Cuando baja la tensión (3,3 V), los diodos no pueden conducir porque la tensión a alta sería mayor que 5 V, por lo que la R1 eleva la altura, los diodos están apagados y la baja debe proporcionar aproximadamente 330uA.

Cuando se baja el nivel bajo (0 V), los diodos están polarizados correctamente, el R2 tiene un voltaje de cero voltios, el voltaje alto es aproximadamente 1,8 V y la corriente hundida por bajo es aproximadamente 180 uA.

Como puede ver, el gran problema es que 1.8V es demasiado: un circuito CMOS probablemente diría que "bajo", mientras que un TTL probablemente lea ese "alto". Un mejor enfoque podría utilizar un diodo Zener de 1.5 V en lugar de los tres diodos de señal pequeña, con el cátodo conectado a R1 y el ánodo a R2. Probablemente será necesario reducir la resistencia para cumplir con la corriente de polarización mínima del diodo Zener.

Una última cosa acerca de los evaluadores es que puede usar cualquier valor de 1k a 100k, por supuesto, los valores de resistencia más altos corresponden a un menor consumo de corriente, pero también a una respuesta transitoria más lenta, y viceversa.

    
respondido por el Vladimir Cravero
1

Muy fácil, solo golpea un escudo y funcionará, no es necesario corregir el voltaje. The Due funciona con Ethernet Shield y WiFi Shield muy bien. Si su entrada de energía a los blindajes es de 3.3 voltios, los chips de esos blindajes no tienen aumentadores de voltaje y luego emitirán 3.3 voltios. Si está comprando un protector con un controlador en él, verifique la hoja de datos del dispositivo y verifique si es capaz de tener una entrada de alimentación de 3.3 voltios. CMOS alta es de 1,5 voltios y por encima, creo. (Sería casi imposible comunicarse a ese voltaje, diría que su bajo seguro es de 3 voltios). Si tiene una potencia de 3.3 voltios, conéctelo y verifique las salidas de los pines, si todos los 3.3 voltios lo conectan al Arduino y divertirse :)

    
respondido por el Kyle

Lea otras preguntas en las etiquetas