본문 바로가기

교육 자료/Raduino & drone

SBUS

RC(radio control)은 무선통신을 통해서 제어를 합니다. 수신기(RX) 및 송신기(TX) 프로토콜의 경우 종종 PWM, PPM, SBUS, DSMX 등의 약어(두문자어)가 사용됩니다. 초보자들이 혼동하기 쉬운 무선 통신 프로토콜 유형의 차이점에 대해 설명하고 라두이노 미니가 지원하는 수신기 프로토콜인 SBUS에 대해 깊이 알아봅시다.


◦ 송수신 프로토콜의 종류

드론, RC 비행기 및 기타 무선 제어 비행체에서 사용되는 이러한 무선 통신 프로토콜은 두 그룹으로 나눌 수 있습니다.

• RX 프로토콜 (RX와 FC 간의 통신)

• TX 프로토콜 (TX와 RX 간의 통신)


< RX/TX 프로토콜 통신 >

일부 수신기(RX) 프로토콜은 여러 브랜드의 RF장비에서 보편적으로 사용되지만 일부는 특정 브랜드에만 적용될 수 있습니다. 반대로 송신기(TX) 프로토콜은 대부분 브랜드마다 다릅니다. 일부 브랜드는 페어링 라디오 수신기에 따라 여러 가지 다른 프로토콜을 제공 할 수 있습니다. 송수신 프로토콜은 다음과 같은 것들이 있습니다:


라두이노 미니 원에서 지원하는 SBUS(S.BUS, Serial BUS)에 대해서 자세히 알아봅시다. RC 라디오 수신기 프로토콜(protocol) 중의 하나인 SBUS는 라디오링크(Radiolink), 후타바(Futaba) 및 에프알스카이(FrSky)에서 사용하는 일종의 시리얼 통신 프로토콜입니다. 하나의 신호 케이블만 사용하여 최대 18개의 채널을 지원합니다. SBUS는 역전된 UART 통신 신호이기 때문에 UART 통신이 가능한 비행 컨트롤러(FC)라 하더라도 SBUS 신호를 수신 받기 위해서는 내장된 전용 신호 변환기를 통해 신호를 반전시켜야 제대로 된 프로토콜 수신이 가능합니다(예: Raduino mini one, F3 FC, Pixhawks).


PPM(pulse position modulation) 프로토콜은 구형 아날로그 신호이기 때문에 오류 검사 기능이 내장되어 있지 않으므로 이동평균필터를 사용하여 간섭으로 인해 수신기의 신호에서 발생할 수 있는 급상승 현상(spikes)을 제거하여 부드러운 출력을 만듭니다. 이 필터링 작업은 PPM 신호의 대기시간(latency)을 증가시키는 추가 지연을 발생시킵니다. 실제로 이 대기시간는 약 20ms이 지연이 발생하는 SBUS에 비해 PPM에서는 약 60ms가 지연됩니다. 대부분의 응용 프로그램에서 중요하지 않지만, 고속의 레이싱드론 경주를 할 때는 기체 속도가 100Km/h 인 경우 50ms의 지연은 약 1.4m의 이동 거리가 발생할 수 있습니다. 반면 SBUS는 디지털 신호이기 때문에 패리티 비트(parity bits)와 같은 계산을 신호에 포함시켜 가능한 간섭을 보정함으로써 대기 시간을 최소화합니다.


<SBUS 인버터 회로>


참고자료: 수신기 프로토콜의 종류


1. PWM(pulse width modulation): 파형 폭 변조

 가장 보편적이면서도 기본적인 제어 프로토콜입니다. 고정익 RC 드론에서는 수신기에서 각 서보모터 또는 ESC(Electronic Speed Controls) 한 채널을 표준 PWM 신호로 직접 제어하는데 사용되었습니다. 오늘날까지도 여러 기술 모델에서 동일한 기술이 사용되고 있습니다.

 PWM은 신호 파형의 폭을 변조하는 방식으로 파형의 길이가 서보 또는 ESC 출력를 지정하는 아날로그 신호입니다. 신호 펄스의 길이는 일반적으로 1000μs ~ 2000μs (마이크로 초) 사이에서 변화합니다.


2. PPM(pulse position modulation): 파형 위치 변조

 PPM은 CPPM 또는 PPMSUM이라고도 합니다. PPM의 장점은 여러 개의 개별 와이어 대신 여러 채널(일반적으로 최대 8개 채널)에 하나의 신호 와이어만 필요합니다. 따라서 접지, 전원 및 신호 케이블 만 연결하면 됩니다.

 기본적으로 일련의 PWM 신호가 동일한 와이어에서 전송되는 PPM 신호이지만 신호는 다르게 변조됩니다. PPM은 “시간 영역의 아날로그 신호”라고 부릅니다. 채널은 동시에 전송되지 않고 채널 순서대로 순차적으로 전송됩니다. 따라서 시리얼 통신 만큼 정확하지 않거나 지터(jitter, 전송된 파형의 시간적 위치가 정규 시점에서 전후로 변동하는 것)가 없습니다. 그러나 많은 FC(flight controller)가 더 광범위하게 지원하고 있습니다.


<Analog, PPM, PWM>


3. PCM(pulse code modulation): 파형 코드 변조

PCM은 파형 코드 변조를 나타내며 PPM과 비슷한 데이터 유형을 갖습니다. 하지만 PCM 신호는 1과 0을 사용하는 디지털 신호이고 PPM 신호는 신호가 켜져있는 시간의 아날로그 신호입니다. PCM은 오류 수정에 있어서 신호 오류 감지가 가능하지만, 구입 제품에 따라 다를 수 있습니다. PCM은 PPM 보다 더 안정적이며 간섭에 덜 민감하지만, 추가적인 변환이 필요하므로 장비가 더 고가입니다.


4. Serial protocol: 직렬 프로토콜

시리얼 수신기는 다중 채널에 3선(신호, 전원, 접지)만을 사용하는 디지털 무손실 프로토콜입니다. 이름에서 알 수 있듯이 이 유형의 수신기에는 비행 컨트롤러의 직렬 포트가 필요합니다. 여기에서는 SBUS, XBUS, IBUS 및 SUMD가 포함됩니다.


4-1. iBUS – By Flysky

 IBUS는 새로운 플라이 스카이(Flysky)의 시리얼 프로토콜입니다. IBUS의 양방향 통신을 통한 데이터 송수신이 특징입니다.


4-2. XBUS – JR

 XBUS는 JR에서 사용되며 한 신호선에서 최대 14개의 채널을 지원합니다. XBUS는 각 채널 간 시간 지연이 매우 작은 것이 특징입니다.


4-3. MSP(multi-serial protocol): 다중 직렬 프로토콜

다중 Wii 소프트웨어의 일부로 작성된 프로토콜입니다. 기본적으로 RC 입력으로 MSP 명령을 사용할 수 있으며 하나의 신호 케이블에서 8개의 채널을 지원합니다.


4-4.Graupner Hott SUMD

Graupner SUMD는 Speksat 및 SBUS와 같은 시리얼 프로토콜입니다. 채널은 하나의 디지털 신호로 인코딩되며 눈에 띄는 대기 시간이 없습니다. SUMD은 SBUS와 비교하여 SUMD 전용 신호 인버터가 필요하지 않다는 점과, 250 단계의 해상도와 항상 4ms 지터가 있는 PPM과 비교하여 해상도가 더 높고 지터(jitter)가 없다는 장점이 있습니다.


 4-5. Graupner SUMH

 SUMH는 기존 Graupner 프로토콜입니다.




* 소스코드 다운로드

Sbus_Monitor.zip

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "raduino_sbus.h"
#include <Wire.h>                     // i2C 통신을 위한 라이브러리
SBUS sbus(Serial3);
 
// this is timer2, which triggers ever 1ms and processes the incoming SBUS datastream
ISR(TIMER2_COMPA_vect){sbus.process();}
 
void setup() {
  sbus.begin();
  sbus.SBUS_OUT= true//enable SBUS_OUT
  
  Serial.begin(115200);
  Serial.print("Ch_1  | Ch_2  | Ch_3  | Ch_4  | Ch_5  | Ch_6  | Ch_7  | Ch_8  | Ch_9  | Ch_10");  
}
 
void loop() 
{    
  int ch1  = sbus.getChannel(1); 
  int ch2  = sbus.getChannel(2);
  int ch3  = sbus.getChannel(3);
  int ch4  = sbus.getChannel(4);
  int ch5  = sbus.getChannel(5); 
  int ch6  = sbus.getChannel(6);
  int ch7  = sbus.getChannel(7);
  int ch8  = sbus.getChannel(8);
  int ch9  = sbus.getChannel(9);
  int ch10 = sbus.getChannel(10); 
 
  Serial.print(ch1);  //312 ~1690 우스틱 좌우 roll
  Serial.print("  |  ");
  Serial.print(ch2); //352 ~1698 좌스틱 상하 yaw
  Serial.print("  |  ");
  Serial.print(ch3);  // 330 ~1680 우스틱 상하 Throttle
  Serial.print("  |  ");
  Serial.print(ch4);  //312 ~1690 우스틱 좌우 roll
  Serial.print("  |  ");
  Serial.print(ch5); //352 ~1698 좌스틱 상하 yaw
  Serial.print("  |  ");
  Serial.print(ch6);  // 330 ~1680 우스틱 상하 Throttle
  Serial.print("  |  ");
  Serial.print(ch7); //325 ~1673 좌스틱 좌우 pitch
  Serial.print("  |  ");
  Serial.print(ch8); //325 ~1673 좌스틱 좌우 pitch
  Serial.print("  |  ");
  Serial.print(ch9); //325 ~1673 좌스틱 좌우 pitch
  Serial.print("  |  ");
  Serial.print(ch10); //325 ~1673 좌스틱 좌우 pitch
  Serial.println();
  delay(1000);
}
cs





출처

1) https://oscarliang.com/pwm-ppm-sbus-dsm2-dsmx-sumd-difference/

2) https://www.dronetrest.com/t/rc-radio-control-protocols-explained-pwm-ppm-pcm-sbus-ibus-dsmx-dsm2/1357

3) https://www.dronetrest.com/t/sbus-or-ppm-which-is-better/1356


'교육 자료 > Raduino & drone' 카테고리의 다른 글

미세먼지 측정 드론  (0) 2018.10.22
초음파센서 장애물 회피드론  (0) 2018.10.22
농업용 드론  (0) 2018.10.22