티스토리 뷰

지난 포스팅에서 보여드리기만 하고 증명이나 설명은 거의 없었던 그 식에 대해서 설명드리겠습니다.


이게 바로 저번 포스팅에서 얘기했던 식입니다.

각 부분에 대해서 다시 설명해보자면




변환할 값(새로 갱신된 데이터)에 변환 이득값을 곱해 작은 범위를 큰 범위로 늘려주고 마지막으로 모자란 보충값을 더해줍니다.


한번 세부적으로 예를 들어보도록 하겠습니다.


sbus data는 지난 번에 얘기한 대로 352 ~ 1696의 범위를 가집니다.(모든 리시버의 데이터가 이 범위를 가지는 것은 아닙니다. 여러분 각자 하드웨어마다 다른 범위를 가질 것입니다.)

그럼 범위의 scale은 1696 - 352 = 1344입니다.


한편 우리가 sbus data를 가지고 만들어야 할 pulse 값의 범위는 4619 ~ 8147입니다.(지난 포스팅에 왜 이 범위인지 설명되어 있습니다.)

그럼 범위의 scale은 8147 - 4619 = 3528입니다.




그럼 우리는 sbus data의 범위 scale 1344를 pulse의 범위 3528로 늘려야 합니다.

도식으로 표현하자면 아래와 같습니다.



그럼 이 작은 범위를 큰 범위로 늘리려 할 때 얼마나 곱해주어야 할까요?

이때 사용되는 값이 바로 이득값입니다.

위에서 얘기했던 식에서 바로 이 부분이죠.



따라서, 1344의 scale을 3528의 scale로 늘리기 위해서 곱해주어야 하는 값은

2.625입니다.

(이 값 또한 리시버가 출력하는 데이터의 범위나 PWM 설정에 따라 달라집니다. 여러분의 H/W 환경에 따라 이득값이 저와 다를 것입니다.)



그럼 이제 sbus data에 이득을 곱하게 되면 값은 아래와 같이 변할 것입니다.


scale을 1344에서 3528로 늘렸지만 우리가 원하던 pulse 값의 범위는 4619 ~ 8147이었으므로 일정한 수를 더해주어야 합니다.


그때 필요한 값이 위 식에서 바로 이 부분입니다.


자, 그러면 거의 다 왔습니다.

마지막으로 정리하자면 SBUS가 출력하는 데이터의 범위를 통해 우리가 원하던 Pulse의 범위 안에서 SBUS 데이터를 Pulse로 바꾸어 Duty Cycle을 실시간으로 변경시키면서 출력하는 과정은 다음과 같습니다.


여기서는 pulse 값이 4620 ~ 8148의 범위가 나오게 되는데, 사실상 저희가 구했던 범위는 4619 ~ 8147이었습니다.(차이가 1정도 납니다.)

그래서 3696이 아닌 3695를 더해야 되지 않을까 궁금해하실 수도 있는데 제 멘토분께서 3696이 맞다고 하시더군요... 그렇게 큰 차이는 없으니 사용해도 별 문제 없을 것 같습니다.


이렇게 sbus data를 pulse로 변형시켜서 실시간으로 PWM의 Duty Cycle을 변경시킬 수 있습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
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
글 보관함