La nueva placa Arduino Due tiene su microcontrolador funcionando a 3,3 V, pero lamentablemente la mayoría de los escudos (placas) adicionales estándar de Arduino funcionan a 5 V, 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:
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 necesitaría permitir la interfaz entre las señales de 3,3 V y las señales de 5 V (es decir, en ambos sentidos).
¿Cuál es la mejor manera de crear una traducción de nivel bidireccional para un caso como el anterior? Aquí, por "mejor", solo me refiero a sencillo, económico y funcionaría sin problemas en los distintos tipos de escudos y señales.
Basado en mi investigación de este tipo de cambio de nivel hasta el momento, las opciones disponibles parecen ser:
He diseñado un pequeño sistema que podría funcionar para su aplicación en particular. Aquí está el esquema:
Olvidé el nodo de referencia, debe estar conectado a la terminal 2 de BT1. ¿Cómo funciona esto?
En primer lugar, supongamos que podemos ignorar la corriente que fluye hacia/desde "bajo".
Cuando se eleva alto (5V) en R1, no fluye corriente, mientras que los tres diodos están conduciendo. Suponiendo una caída directa de voltaje de 0,6 V, el voltaje bajo será de 3,2 V, y la corriente que fluirá desde alto será de aproximadamente 320 uA.
Cuando se reduce el nivel alto (0 V), todos los diodos están bloqueados, por lo que R2 reducirá el voltaje en el nivel bajo. La corriente que debe hundir la alta es de aproximadamente 500uA.
Ahora supongamos que alto no consume corriente.
Cuando se eleva el nivel bajo (3,3 V), los diodos no pueden conducir porque el voltaje en el nivel alto sería más de 5 V, por lo que R1 eleva el nivel alto, los diodos están apagados y el nivel bajo debe proporcionar aproximadamente 330 uA.
Cuando se reduce el nivel bajo (0 V), los diodos están correctamente polarizados, R2 tiene cero voltios, el voltaje alto es de aproximadamente 1,8 V y la corriente absorbida por el nivel bajo es de aproximadamente 180 uA.
Como puede ver, el gran problema es que 1.8V es demasiado: un circuito CMOS probablemente leería eso "bajo", mientras que un TTL probablemente leería eso "alto". Un mejor enfoque podría utilizar un diodo zener de 1,5 V en lugar de los tres pequeños diodos de señal, 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 sobre los resistores es que puede usar cualquier valor de 1k a 100k, por supuesto, los valores de resistencia más altos corresponden a un consumo de corriente más bajo, pero también a una respuesta transitoria más lenta, y viceversa.
Muy fácil, solo coloque un protector y funcionará sin necesidad de corrección de voltaje. El Due funciona bien con Ethernet Shield y WiFi Shield. Si la entrada de energía a los escudos es de 3,3 voltios, los chips en esos escudos no tienen amplificadores de voltaje y luego generarán 3,3 voltios. Si está comprando un protector con un controlador, consulte la hoja de datos del dispositivo y verifique si es capaz de tener una entrada de energía de 3.3 voltios. CMOS alto es de 1,5 voltios y más, creo. (Sería casi imposible comunicarse con ese voltaje, diría que su bajo seguro es de 3 voltios). Si es capaz de una potencia de 3,3 voltios, conéctelo y verifique las salidas de los pines, si es todo de 3,3 voltios, conéctelo al Arduino y divertirse :)
Gustavo Litovsky
mordedura de tabla
joe panadero
mordedura de tabla
Anindo Ghosh
Gustavo Litovsky