Я создаю плату управления роботом для подключения к Raspberry Pi в качестве хобби. Мне нравятся специализированные платы для различных функций, и я изучаю решения для коммуникационной шины. В прошлом я пробовал:
Ниже приведено изображение для справки одного из роботов, которые я сделал в прошлом, используя шину RS485 с настраиваемым протоколом через аудиокабели с разъемом 3,5 мм.
Ниже изображение для справки моей последней версии робота-шляпы Raspberry Pi. Я хочу добавить дисплей и разъемы для коммуникационной шины, добавить улучшенный регулятор мощности и перенести элементы управления двигателем и сервоприводом на подчиненные платы.
Я думаю либо о реализации шины CAN, либо о шине RS485 с менее специализированным протоколом, который имеет некоторое применение на рынке.
Вот пример ведомого устройства, использующего шину CAN.
Вот пример ведомого устройства, использующего шину RS485 со своими пользовательскими протоколами.
Технические характеристики:
Мне бы хотелось узнать, какую шину вы бы использовали в этом приложении, в частности, если есть шина, которую я не принял во внимание, предложение по стандартному протоколу через шину RS485 или ваши причины, по которым вы бы выбрали шину CAN. Спасибо за ваш вклад!
В RS485 не используются доминирующие протоколы, а CAN имеет большие накладные расходы на кадры данных.
Я решил реализовать два 3-контактных разъема 3,5 мм Jack с приемопередатчиком RS485, подключенным к AT4809 для аппаратного обеспечения. По шине RS485 я буду повторно использовать свой собственный протокол master-slave.
Боюсь, вы сравниваете яблоки с апельсинами.
RS-485 — это просто способ управления автобусом. Вы берете свой вывод UART, транслируете его через передатчик RS-485, принимаете его с помощью приемника, а затем передаете его в UART назначения. Очень просто.
CANBus - гораздо более сложное предложение. Вы должны кормить CAN-контроллер пакетами данных. Затем контроллер передает физическую шину получателю по гораздо более сложному протоколу, и получатель создает реконструированный пакет. По сути, два контроллера заменят ваши UART.
Что касается надежности, то CANBus лучше. Весь дополнительный мусор, который использует CANBus, идет на две цели: выбор одного из множества устройств, которые все подключены к шине, и обнаружение и исправление ошибок.
Когда вы говорите, что вам нужна пропускная способность 1 Мбит/с, вы никогда не получите ее от CANBus. Это правда, что вы можете управлять CANBus на частоте 1 МГц, но если вы отправляете 1 байт за раз, вы получите эффект только 140 кбит/с. Для отправки 1-байтового кадра CANBus требуется 58 тактовых циклов. Это правда, что можно управлять шиной на частоте 5 МГц, но это дает вам только эффективные 700 кбит/с.
Хотя, честно говоря, UART, работающий на частоте 1 МГц, будет иметь пропускную способность всего 700–800 кбит/с, в зависимости от вашего выбора настройки кадра, но вы легко можете управлять им быстрее.
См. https://en.wikipedia.org/wiki/CAN_bus для обзора.
Также нормально, если один источник CANBus обеспечивает питание 5 вольт для всех остальных устройств. Это означает, что вам нужно 4 сигнала на вашей шине, и аудиокабель не сможет их разрезать.
Джероен3
Только я
Оливер
Лундин