Futaba S.Bus
Некоторое время назад FUTABA представила на рынок новую революционную технологию S.Bus. По аналогии с автомобильной шиной CAN, S.Bus позволяет избавиться от прокладки большого количества проводов: от приемника к каждому сервоприводу. Под эту технологию были выпущены специальные приемники, приводы, гироскопы и прочее оборудование. И стоят они конечно денег не малых… Что же такое S.Bus и какова ее эффективность? На просторах интернета на эту тему до сих пор ведутся нешуточные споры. Все в основном сводится к двум точкам зрения:
1. Решение крайне полезное для больших и дорогих моделей. 2. Неоправданное удорожание оборудования. Возможность использования только фирменного оборудования Futaba.
И еще не известно, чем бы все кончилось, но как всегда подсуетились китайцы. На рынке появились дешевые приемники с выходом S.Bus и специальные декодеры, позволяющие подключать к шине обычные сервоприводы. А совсем недавно появился совсем уж невозможный в мире гигантов рынка продукт. Orange выпустила линейку приемников, работающих в стандарте DSM2(Horizon Hobbies USA) и имеющих в числе прочего выход S.Bus.
Давайте все же посмотрим повнимательнее на это изобретение и определимся, чем же оно может быть полезно рядовому моделисту. S.Bus – это не что иное как протокол передачи команд сервоприводам по цифровому последовательному порту. Протокол этот является закрытым и Futaba его описание ни где не публиковала. Однако некоторое время назад я смог найти его описание на одном из зарубежных сайтов. Вот что мне удалось установить:
1. Протокол позволяет передавать информацию о 16-и пропорциональных каналах с разрешением 11бит на каждый и двух цифровых каналах (1 бит на канал). 2. Протокол передает информацию об ошибке пакета (Frame lost) и активации режима failsafe. 3. Скорость последовательного порта нестандартная – 100000 бод. 4. Длинна одного пакета 25 байт 5. Передача пакета происходит каждые 14мс для аналогового режима или каждые 7мс для цифрового.
Пакет данных устроен следующим образом: [startbyte] [data1] [data2] .... [data16] [flags][endbyte] [startbyte] = 0xF0 [dataX] = 11 бит информации канала X, которые задают ширину импульса ШИМ в микросекундах. [flags] = 8 бит, каждый из которых имеет следующее назначение: 7 – цифровой канал 2 6 – цифровой канал 1 5 – Frame lost 4 – включен режим failsafe 3 – не используется 2 – не используется 1 – не используется 0 – не используется [endbyte] = 0x00 Надо так же иметь ввиду, что сигналы шины, как во всех продуктах Futaba, инвертированы.
Область применения.
Если Вы обладаете моделью самолета с размахом крыла 1.5м и управляющейся по 5-ти каналам без использования каких-либо систем стабилизации сложнее RX3S OrangeRX, то Вы скажете «а зачем козе баян» и будете правы. В таких случаях нет смысла усложнять оборудование. Никаких выигрышей оно явно не несет. У Вас большая модель? Тут каждый решает сам. Ведь обходились же как-то без этого раньше. А оправданы ли доп. Вложения или нет – каждый решит сам. На мой взгляд, самые интересные перспективы открываются для людей, которые занимаются строительством моделей с программируемым микроконтроллером на борту. В общем случае возможны 2 варианта подключения к приемнику: 1. Использование обычного приемника с подключением микроконтроллера к каждому каналу. Данный вариант самый расточительный с точки зрения использования ресурсов микроконтроллера. Во-первых, надо задействовать столько выводов микроконтроллера, сколько каналов приемника мы хотим использовать. Для определения ширины импульсов надо задействовать таймер. При измерении ширины импульса же неизбежно возникает погрешность. 2. Использование приемника с выходом PPM. Отличие этого варианта от первого в том, что все каналы передаются последовательно друг за другом по одному проводу. Это позволяет экономить выводы и прерывания микроконтроллера. Остальные же проблемы сохраняются – надо использовать таймер и рассчитывать ширину импульса для каждого канала.
Что может дать нам использование S.Bus?
1. Использование обычного хардварного последовательного порта позволяет отказаться от прерываний. Теперь микроконтроллер будет принимать данные без использования ресурсов ядра. 2. Несколько несложных побитовых операций над 25-ю байтами позволяют получить точные данные сразу о 16-ти каналах. Если быть сосем точным, то о 16-ти пропорциональных, двух цифровых и о активации приемником режима failsafe. При этом нам не нужен таймер для вычисления времени. В пакете передаются уже готовые числа. Это же позволяет избежать погрешности: мы получим ровно те числа, которые передал приемник. Теперь о минусах: 1. Нам нужен приемник с поддержкой S.Bus. В стандарте FASST(Futaba) можно использовать например FrSky TFR4, для аппаратуры - DSM2 можно использовать приемник OrangeRx R710. 2. Между приемником и микроконтроллером придется поставить инвертор. Для этих целей подойдет микросхема 74HC14. Она содержит сразу 6 необходимых нам элементов. 50 рублей, маленькая макетка и пять минут пайки. Это что касается приема сигнала. А как обстоит дело с управлением сервоприводами? Опять рассмотрим типовую ситуацию: ATmega 328 имеет всего 6 выводов, на которых можно генерировать ШИМ аппаратным путем. Стоит так же сказать, что при этом накладывается ряд ограничений на использование таймеров и прерываний. Можно генерировать ШИМ и программным путем, но для этого нам потребуются таймер и вычислительные ресурсы ядра. Ну и конечно же нам понадобится по одному выводу микроконтроллера на каждый канал управления (серву, ESC и пр.). На мой взгляд, это просто расточительство. Чем же тут может быть полезен S.Bus? Ответ очевиден: вместо всего описанного выше нам понадобится все тот же аппаратный последовательный порт, все тот же инвертор и… несколько строчек кода для формирования байтового массива. Но родные сервоприводы Futaba использовать достаточно дорого. И в этом случае нам снова помогут предприимчивые китайцы. SBD4 S.BUS декодер за 500р. позволит нам подключить четыре обычные сервы или ESC к шине S.Bus. Есть также комплект с картой программирования. Увы, чтоб использовать все 16 каналов нам понадобится либо еще 3 последовательных порта микроконтроллера, либо хаб Futaba S.Bus Terminal Box 4-Way. Последнее предпочтительнее ввиду того, что на взятом для примера микроконтроллере всего один последовательный порт, а ATmega 2560 с четырьмя портами уже дороже и гораздо сложнее в распайке. Она уже не выпускается в удобном для сборки «на коленках» DIP корпусе. Хотя тут уже все зависит от конкретного места применения и используемых аппаратных средств. Итого: В случае использования с микроконтроллерами S.Bus позволяет полностью избавиться от работы с ШИМ, переложив это на аппаратную часть. Как следствие – упрощение кода, уменьшение загрузки микроконтроллера и увеличение быстродействия. Полезные ссылки: http://www.futaba-rc.com/sbus/index.html http://mbed.org/users/Digixx/notebook/futaba-s-bus-controlled-by-mbed/ http://arduino.cc/forum/index.php/topic,99708.0.html http://github.com/mikeshub/FUTABA_SBUS |