Енкодер от SBUS към РРМ

nikiforiv

Потребител
Необходимоста от тази платчица възникна когато трябваше да управлявам двуосов гимбал на хексакоптера ми. Приемника ми изкарваше само SBUS сигнал а на мен ми трябваха още два отделни РРМ канала за управлението и на гимбъла. Ако полетния контролер беше Pixhawk нямаше да има проблеми тъй като този контролер има възможност неизползваните PWM изходи или на AUX изходите да се изкарат който и да е канал от радиоуправлението. Полетния ми котролер обаче е PixRacer и въпреки че той има същите възможности, то всичките му PWM изходи са заети а AUX изводи няма.

Така че трябваше да направя нещо което взема SBUS и го преобразува в два нормални стандартни PPM канала.

Оказа се SBUS протокола не е толкова страшен а представлява малко „поизчанчен“ USART с
който почти всеки контролер би се справил. Какво всъщност преставлява SBUS протокола може
да прочете от тук: https://os.mbed.com/users/Digixx/notebook/futaba-s-bus-controlled-by-mbed/
За контролер използвам контролер на microchip PIC12F1840
(https://store.comet.bg/Catalogue/Product/14052/# ).
За програмирането му използвам програматор PICkit 3 (http://www.ebay.com/itm/PICkit3-PIC...rogrammer-Emulator-ICSP-for-FLASH-ROM-EEPROM-
/192046175744?hash=item2cb6d81600:g:~4gAAOSwz-5Zfw~U ).
( Линковете не са реклама, а просто съвет от къде може да си купите нужните части )
И програмата „PICKit 3 Programmer” който можете да изтеглите от тук:
http://www.microchip.com/development-tools/downloads-archive
или направо нужния файл за инсталиране
https://drive.google.com/file/d/0B1ZfUCi6s4sMVGxVOWd2S0dsUnc/view?usp=sharing .
Кабелът от приемника се свързва с един от предните пинове и от там отива към полетния
контролер, т.е. прави се отвод така че ресивера захранва с SBUS сигнал както платката така и
полетния контролер.

sbus-2-ppm.jpg

Двата пина Test/Programming служат за програмиране на контролера и за тест на приемания
SBUS сигнал. Кабелчето запоено на краче 4 на контролера служи за настройка на платката. При
нормална работа Test/Programming и кабелчето се премахват и цялата платка се поставя в
термосвиваем шлаух.
Настройката на платчицата се свежда до следното:
1. Задаване на радиоканалите, които ще се изкарат на Out 1 и Out 2. По дефалт на Out 1 се
изкарва канал 6 а на Out 2 канал 7.
2. Задаване режима Falsave, по дефалт режим „0“.
a. Режим „0“. При него след отпадане на радиосигнала, на изходите Out 1 и Out 2
се изкарва последната валидна стойност.
b. Режим „1“. При него след отпадане на сигнала, на изходите Out 1 и Out 2 се
изкарва предварително записани в EEPROM стойности.
3. Задаване стойностите за режим „1“ на Falsave. По дефалт там е записано 1500us
(0x05DC) и за двата канала.
Най-лесно настройката става с промяна стойностите в EEPROM преди записа на фърмуера.


sbus-2-ppm2.jpg

Макар и малко по-сложно, настройките на платчицата могат да се направят и ръчно, което
става по следния начин:
1. Задаване режима Falsave.
a. Поставя се джъмпер м/у пинове SBUS и +5V.
b. Краче 4 на контролера се дава на GND.
c. Подава се захранване 5V на която и да е двойка пинове +5V/GND.
d. Индикатора започва да премигва един път ако е в режим „0“ и два пъти ако е в
режим „1“.
e. Чрез окъсяване за кратко на Out_1 и GND, например с пинсета, променяме от
режим „0“ на режим „1“ и обратно.


sbus-2-ppm3.jpg

2. Задаване на радиоканалите, които ще се изкарат на Out 1
и Out 2.
a. Включва се предавателя.
b. Поставя се джъмпер м/у пинове Out 1 и GND.
c. Свързва се приемника.
d. Краче 4 на контролера се дава на GND.
e. Подава се захранване 5V на която и да е двойка пинове +5V/GND.
f. Запис на канала който трябва да излиза на Out 1. За 5секунди индикатора мига
единично. През времето което мига индикатора трябва да промените желания
канал( например да врътнете копчето за канал 6 докрая ). Ако записа на Out_1 е
успешен, ще преминете към следващата стъпка. Ако записа е неуспешен
индикатора ще премигне три пъти и ще ви даде отново да пробвате да зададете
Out_1.

sbus-2-ppm4.jpg

h. Запис на канала който трябва да излиза на Out 2. За 5секунди индикатора премигва
двойно. През времето което мига индикатора трябва да промените желания канал.
( например да врътнете копчето за канал 7 докрая ). Ако записа на Out_2 е
успешен, ще преминете към следващата стъпка. Ако записа е неуспешен
индикатора ще премигне три пъти и ще ви даде отново да пробвате да зададете
Out_2.
i. Индикатора премигва бавно с което ви информира че тази настройка е приключила
и може да изключите зхранването.
3. Задаване стойностите за режим „1“ на Falsave.
a. Включва се предавателя.
b. Каналите които трябва да се изкарват на Out1 и Out2 се поставят на тази стойност
която искаме да излиза на Out1 и Out2 в режим „1“ на Falsave
c. Свързва се приемника.
d. Краче 4 на контролера се дава на GND.
e. Подава се захранване 5V на която и да е двойка пинове +5V/GND.
f. След малко индикатора светва постоянно с което ни информира че тази настройка е
приключила и може да изключите зхранването.

sbus-2-ppm5.jpg

Ако вместо SBUS.HEX се програмира SBUS_Test.HEX то платчицата става като монитор на SBUS
сигнал. За целта в предните пинове се свързва приемник, ТХ на Test/Programming се свързва с
RX на СОМ порт на компътъра ( RX на Test/Programming се оставя свободен! ). Чрез програма от
типа HyperTerminal или подобна за работа с СОМ портовете на компютъра може да се види
какво излиза от приемника. HyperTerminal е стандартна програма за ОС Windows XP надолу, за
съжаление не и нагоре. Например в Windows 7 липсва тази програма. В тези случай може да
изтеглите HyperTerminal или подобна (например putty ) от мрежата. Настройките за
HyperTerminal (както и за подобните програми ) са елементарни: задавате бода 38400 б/с, Data
bits=8, Parity=None, Stop bits=1, Flow control=None. Например това ще излезе при SBUS 8D при
валиден сигнал

sbus-2-ppm6.jpg

Всеки кадър от SBUS започва с 0F и завършва с 00, винаги! (0F в действителност е F0. В SBUS
байта се предава с бит7 най напред а UARTна контролера приема бит0 най напред.) След
входния индикатор 0F следват 16те 11битови канала. Понеже кодировката тук е D8 след 0F
следват 8те канала. 9ти канал тук е RSSI. Следват неизползваните канали от10 до 16. 03Е0
всъщност отговаря на 1500us. Предпоследния байт най-общо можем да кажем че ако е 00 то
всичко е наред. Ако не е равен на 00 то липсва сигнал. (по подробно тук
https://os.mbed.com/users/Digixx/notebook/futaba-s-bus-controlled-by-mbed/ )
Това например е D8 при изключен предавател. Ясно се вижда че при Falsave каналите запазват
последната си стойност а RSSI = 0000
sbus-2-ppm7.jpg

А това е D16 при валиден сигнал

sbus-2-ppm8.jpg

И D16 при липса на сигнал. Тук отново при Falsave каналите запазват последната си стойност но
при някои приемници при липса на сигнал валидните канали са 0000 което отговаря на около
980us. Всичко е въпрос на настройка.

sbus-2-ppm9.jpg

Схемата е проста.

sbus-2-ppm10.jpg

Платката се изработва от двустранен стъклотекстолит по метода на ютиената технология, като
долната страна фолио не се маха а се ползва за маса.


sbus-2-ppm11.jpg





Архив на целия проект има тук
https://drive.google.com/file/d/0B1ZfUCi6s4sMdHBxaDJWZlhnRzQ/view?usp=sharing

Както и ZIP-а закачен към темата.
 

Attachments

  • SBUS.pdf
    1.4 MB · Прегледи: 2
  • SBUS.zip
    7.3 KB · Прегледи: 1
Последна промяна от модератор:

Tassadar

Редовен Потребител
Поздравления за положения труд!

Само да добавя, че в оригиналните Futaba Fasstest приемници, формата на SBUS леко се различава - последният байт не е нула, a някакъв индекс с неизвестно предназначение. Може би е добре фърмуера да разпознава пакетите по тайминг, а не по маркерите F и 0 за по-голяма сигурност. Също така тези приемници не инжектират RSSI в SBUS стрийма. Възможно е този нов SBUS вариант вече да е разгадан, но отдавна не съм се интересувал.

====================================================================
Futaba R7008SB
Fasstest 14CH mode:

normal
F 4 1C A1 43 9 48 40 4 7A 10 2C 0 4 20 58 C0 13 7 38 0 10 80 0 4
F 4 1C A1 43 9 48 40 4 7A 10 2C 0 4 20 58 C0 13 7 38 0 10 80 0 14
F 4 1C A1 43 9 48 40 4 7A 10 2C 0 4 20 58 C0 13 7 38 0 10 80 0 24
F 4 1C A1 43 9 48 40 4 7A 10 2C 0 4 20 58 C0 13 7 38 0 10 80 0 34


frame drop #
F 4 1C A1 43 9 48 40 4 7A 10 D4 3 4 20 A8 41 D 7 38 0 10 80 4 24
F 4 1C A1 43 9 48 40 4 7A 10 D4 3 4 20 A8 41 D 7 38 0 10 80 0 34
F 4 1C A1 43 9 48 40 4 7A 10 D4 3 4 20 A8 41 D 7 38 0 10 80 4 4
F 4 1C A1 43 9 48 40 4 7A 10 D4 3 4 20 A8 41 D 7 38 0 10 80 4 14

failsafe #
F 4 1C A1 75 9 48 40 4 7A 10 D4 3 4 20 A8 41 D 7 38 0 10 80 C 4
F 4 1C A1 75 9 48 40 4 7A 10 D4 3 4 20 A8 41 D 7 38 0 10 80 C 14
F 4 1C A1 75 9 48 40 4 7A 10 D4 3 4 20 A8 41 D 7 38 0 10 80 C 24
F 4 1C A1 75 9 48 40 4 7A 10 D4 3 4 20 A8 41 D 7 38 0 10 80 C 34




Futaba R7008SB
Fasstest 12CH mode:
F 0 1C 20 5B 9 8 C0 13 7A 10 2C 0 4 20 0 1 8 40 0 2 10 80 0 8
F 0 1C 21 59 9 8 C0 13 7A 10 2C 0 4 20 0 1 8 40 0 2 10 80 0 8
F 0 1C 21 5B 9 8 C0 13 7A 10 2C 0 4 20 0 1 8 40 0 2 10 80 0 8
F 0 1C 21 5B 9 8 C0 13 7A 10 2C 0 4 20 0 1 8 40 0 2 10 80 0 8
F 0 1C 21 59 9 8 C0 13 7A 10 2C 0 4 20 0 1 8 40 0 2 10 80 0 8

====================================================================

FrSky TFR8SB in FASST-MULTI
F 4 1C A1 43 B 48 40 4 7A 10 2C 0 4 20 58 C0 13 7 38 0 10 80 0 0
F 2 1C A1 43 B 48 40 4 7A 10 2C 0 4 20 58 C0 13 7 38 0 10 80 0 0
F 4 1C A1 43 B 48 40 4 7A 10 2C 0 4 20 58 C0 13 7 38 0 10 80 0 0
F 4 1C A1 43 B 48 40 4 7A 10 2C 0 4 20 58 C0 13 7 38 0 10 80 0 0
 

nikiforiv

Потребител
приемниците на които го пробвах са на Frsky :

FD802: https://www.banggood.com/FD802-Tiny...TDFTDHT-For-QX90-p-1116724.html?rmmds=myorder

RX-F8P: https://www.banggood.com/RX-F8P-8CH...-X9D-X12S-X7-DJT-p-1166272.html?rmmds=myorder

XSR: https://www.banggood.com/FrSky-XSR-...DP-X12S-X-Series-p-1031481.html?rmmds=myorder

FX400R: https://www.gearbest.com/radios-receiver/pp_618558.html

а предавателя е Taranis Q X7

На пробваните приемници и предполагам че за всички приемници на Frsky последния байт винаги е 0х00. За съжаление нямам приемници на Futaba, но на тези файлове съм премахнал проверката последния байт да е 0х00. Прави се проверка само за първият байт да е 0x0F и се проверява за вярност бита за четност на всеки приет байт.
 

Attachments

  • sbus_futaba.rar
    4.2 KB · Прегледи: 0
Нагоре