Estoy construyendo un tablero de control de robot para conectarlo a una Raspberry Pi como pasatiempo. Me gusta tener tableros especializados para varias funciones y estoy explorando soluciones para el bus de comunicación. En el pasado probé:
A continuación, una imagen de referencia de uno de los robots que hice en el pasado usando un bus RS485 con protocolo personalizado sobre cables de audio con conector de 3,5 mm.
A continuación, una imagen como referencia de mi última versión del sombrero de robot Raspberry Pi. Quiero agregar una pantalla y conectores para un bus de comunicación, agregar un mejor regulador de potencia y mover los controles del servo y del motor a las placas esclavas.
Estoy pensando en implementar un bus CAN o un bus RS485 con un protocolo menos personalizado que tiene algún uso en el mercado.
Aquí un ejemplo de un esclavo que usa el bus CAN
Aquí un ejemplo de un esclavo que usa el bus RS485 con sus protocolos personalizados.
Especificaciones:
Me gustaría sugerencias sobre qué bus usaría en esta aplicación, en particular si hay un bus que no he tenido en cuenta, sugerencias sobre un protocolo estándar sobre el bus RS485 o sus razones por las que elegiría un bus CAN. ¡Gracias por tus aportes!
No se utilizan protocolos dominantes con RS485 y CAN tiene una gran sobrecarga de tramas de datos.
Decidí implementar dos conectores Jack de 3,5 mm de 3 pines con un transceptor RS485 conectado a un AT4809 para el hardware. Sobre el bus RS485 reutilizaré mi protocolo maestro-esclavo personalizado.
A continuación un esquema y colocación inicial de componentes.
Me temo que estás comparando manzanas con naranjas.
RS-485 es simplemente una forma de conducir un autobús. Toma su salida UART, la traduce a través de un transmisor RS-485, la recibe con un receptor y luego la alimenta al UART de destino. Pan comido.
CANBus es una propuesta mucho más complicada. Tienes que alimentar un controlador CAN con paquetes de datos. Luego, el controlador maneja el bus físico con un protocolo mucho más complicado para el receptor, y el receptor produce un paquete reconstruido. En efecto, los dos controladores reemplazarían sus UART.
En cuanto a la fiabilidad, CANBus es mejor. Toda la basura adicional que usa un CANBus se destina a dos cosas: seleccionar una de varias unidades que están todas conectadas al bus y detección y corrección de errores.
Cuando dice que quiere un ancho de banda de 1 Mb/s, nunca lo obtendrá de CANBus. Es cierto que puede conducir CANBus a 1 MHz, pero si envía 1 byte a la vez, solo obtendrá un efecto de 140 kb/s. Se necesitan 58 ciclos de reloj para enviar una trama CANBus de 1 byte. Es cierto que es posible conducir el bus a 5 MHz, pero eso solo te lleva a 700 kb/s efectivos.
Aunque, para ser justos, un UART impulsado a 1 MHz solo tendrá un rendimiento de 700 - 800 kb/s, dependiendo de la configuración de trama que elija, pero puede manejarlo más rápido que eso.
Consulte https://en.wikipedia.org/wiki/CAN_bus para obtener una descripción general.
También es normal que una sola fuente CANBus proporcione la alimentación de 5 voltios para todas las demás unidades. Esto significa que necesita 4 señales en su bus y un cable de audio no lo cortará.
Jeroen3
Sólo yo
oliver
Lundin