Comunicación serie de 1 cable a puertos serie RX/TX estándar en microcontroladores

Solo quiero comenzar diciendo que soy relativamente nuevo en la ingeniería eléctrica en general, así que si sueno absolutamente retrasado, tengan paciencia conmigo.

Como parte de un proyecto de aprendizaje, estoy trabajando con algunos sensores de color, específicamente ColorPAL 28380s de Parallax , y tengo tanto un Arduino Uno como un Arduino Mega 2560 para obtener datos de ellos. He estado jugando con los detalles de este proyecto en Arduino SEpero supongo que esta pregunta podría ser para cualquier microcontrolador en general. Estos sensores usan un método de comunicación conocido como 1-Wire/MicroLAN en el que usan solo un pin para transmisión y recepción según el estado del pin al que están conectados, entre algunos otros detalles. Ahora, tengo tres de estos, y mi objetivo final es poder obtener datos de todos ellos en el mismo momento repetidamente para poder enviar los datos a otro programa que estoy escribiendo para ejecutar un algoritmo. . El problema es que el ejemplo utilizado se basa en un puerto serie emulado en Arduino al que no le gusta trabajar con varias instancias.

Ahora, el Mega 2560 tiene integrados tres conjuntos para comunicaciones en serie que serían perfectos... solo si pudiera separar el RX y el TX del 1-Wire. Un usuario de Arduino SE sugirió que usara un transistor para separarlo. Llámame tonto, pero no tengo repuestos, así que saldré a probarlo pronto una vez que pueda ir a una tienda de electrónica cercana. Sin embargo, al buscar en Internet, he leído que 1-Wires nunca debe conectarse a puertos seriales nativos debido a cómo funcionan con los estados.

En resumen, ¿los sensores de 1 cable pueden comunicarse con los puertos seriales nativos en los microcontroladores si hago un circuito para dividir las señales? Y, si esto es posible, ¿cuáles son los detalles detrás de tal circuito?

Respuestas (1)

  • Con un poco de esfuerzo de software, puede leer los tres sensores en el mismo cable: los periféricos de 1 cable tienen una identificación única.

  • Dallas 1-wire es un protocolo de comunicación específico, y usar hardware UART para comunicarse con un dispositivo de 1 cable es como usar una motosierra para girar un tornillo. Es mejor buscar una biblioteca de 1 cable que simplemente rompa el protocolo. Es probable que haya muchas bibliotecas de este tipo, ya sea para Arduino o para un Mega 2560 desnudo.

  • Si realmente desea 'dividir' la línea única (UART), puede usar un multiplexor analógico.

Muy bien, entonces es un poco tonto conducirlos con el UART nativo. Pude controlar un solo sensor usando una biblioteca, por lo que puedo entender esa parte. Entonces, con respecto a su primer punto, lo que me está diciendo es que simplemente puedo restablecer todos los sensores a la vez a través del mismo cable, cambiar el estado del pin a entrada y recorrer los ID con interrupciones/usando una máquina de estado para ser capaz de leer las entradas individualmente?
Lea sobre el protocolo de 1 cable, debe estar explicado en la hoja de datos de sus sensores. Hay comandos que apuntan a un periférico específico (identificado por su ID).
Después de analizar la hoja de datos un poco más, intentaré usar algunos de los comandos directamente allí y jugaré con ellos usando su sugerencia. Ampliaré si encuentro algo más, pero creo que el comando +nn puede ser útil en el caso del 28380, aunque dice lo contrario en la hoja de datos. Ampliaré los detalles en Arduino SE si consigo que funcione.