Необходимоста от тази платчица възникна когато трябваше да управлявам двуосов гимбал на хексакоптера ми. Приемника ми изкарваше само 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 сигнал както платката така и
полетния контролер.
Двата пина 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 преди записа на фърмуера.
Макар и малко по-сложно, настройките на платчицата могат да се направят и ръчно, което
става по следния начин:
1. Задаване режима Falsave.
a. Поставя се джъмпер м/у пинове SBUS и +5V.
b. Краче 4 на контролера се дава на GND.
c. Подава се захранване 5V на която и да е двойка пинове +5V/GND.
d. Индикатора започва да премигва един път ако е в режим „0“ и два пъти ако е в
режим „1“.
e. Чрез окъсяване за кратко на Out_1 и GND, например с пинсета, променяме от
режим „0“ на режим „1“ и обратно.
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.
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.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 започва с 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
А това е D16 при валиден сигнал
И D16 при липса на сигнал. Тук отново при Falsave каналите запазват последната си стойност но
при някои приемници при липса на сигнал валидните канали са 0000 което отговаря на около
980us. Всичко е въпрос на настройка.
Схемата е проста.
Платката се изработва от двустранен стъклотекстолит по метода на ютиената технология, като
долната страна фолио не се маха а се ползва за маса.
Архив на целия проект има тук
https://drive.google.com/file/d/0B1ZfUCi6s4sMdHBxaDJWZlhnRzQ/view?usp=sharing
Както и ZIP-а закачен към темата.
Така че трябваше да направя нещо което взема 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 сигнал както платката така и
полетния контролер.
Двата пина 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 преди записа на фърмуера.
Макар и малко по-сложно, настройките на платчицата могат да се направят и ръчно, което
става по следния начин:
1. Задаване режима Falsave.
a. Поставя се джъмпер м/у пинове SBUS и +5V.
b. Краче 4 на контролера се дава на GND.
c. Подава се захранване 5V на която и да е двойка пинове +5V/GND.
d. Индикатора започва да премигва един път ако е в режим „0“ и два пъти ако е в
режим „1“.
e. Чрез окъсяване за кратко на Out_1 и GND, например с пинсета, променяме от
режим „0“ на режим „1“ и обратно.
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.
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.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 започва с 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
А това е D16 при валиден сигнал
И D16 при липса на сигнал. Тук отново при Falsave каналите запазват последната си стойност но
при някои приемници при липса на сигнал валидните канали са 0000 което отговаря на около
980us. Всичко е въпрос на настройка.
Схемата е проста.
Платката се изработва от двустранен стъклотекстолит по метода на ютиената технология, като
долната страна фолио не се маха а се ползва за маса.
Архив на целия проект има тук
https://drive.google.com/file/d/0B1ZfUCi6s4sMdHBxaDJWZlhnRzQ/view?usp=sharing
Както и ZIP-а закачен към темата.
Attachments
Последна промяна от модератор: