Estoy intentando leer algunos comandos de un dispositivo que usa niveles de voltaje no estándar para la comunicación en serie. Utiliza 0V para 0 y 12V para 1. Por lo que sé, los niveles TTL son 0-5V, así que si quiero comunicarme con mi Arduino, necesito bajar los 12V para igualar los 5V. El Arduino Mega proporciona un pin con una salida de 5 V, así que pensé que podría usarlo, agregar un diodo y obtener unos 5 V que puedo conectar a RX. Por ahora solo necesito leer los datos. TX pin permanece sin tocar.
Hice un esquema, presentado a continuación:
Medicuentadequelacaídaeneldiodo(aproximadamente1.8V)mepermitirátener(~)5VenelpinRXcuandolaseñaldeldispositivoestáa12V,y0,cuandoes0V.12V-5V-1.8V=5.2V.ElR1es3kOhm.¿Alguienpodríaexplicarmeporquénofunciona?¿Esestasolucióninclusoadecuada?¿Quénecesitocambiarparaquefuncione?
EDITAR:Logréquefuncionara,modifiquéelcircuito:
El diodo es un diodo rojo simple, que tiene una caída de 1.8V. Las tres resistencias son todas de 1kOhm. De mis cálculos, si el voltaje máximo de la señal es 12V, ahora puedo obtener 5V después de volver a conectar el diodo a la GND.
Lo que no entiendo es que, cuando se desconecta la línea roja de la imagen, no obtengo nada, mi Arduino no responde. ¡PERO cuando conecto el RX del dispositivo con TX, leo los datos exactos que quería! Ahora que no es muy obvio para mí, lo conseguí accidentalmente jugando con el tablero. ¿Hay alguna razón obvia por la que el dispositivo comienza a transmitir después de conectar el cable rojo?
EDIT2: A continuación se muestra el esquema del dispositivo. El SISTEMA DE CONTROL es el único conector al que puedo llegar. 12V proviene de un simple adaptador de 12V, la tierra también está conectada al adaptador. Rx está conectado a arduino, el resto es exactamente como en la imagen con el cable rojo. Versión más grande en Imgur