자주 묻는 질문중의 하나가 F1, F3, F4 는 어떤 차이가 있고, 어느것이 성능이 좋느냐 하는 것이다.
이 글은 Betaflight 혹은 Cleanflight를 사용하고 있는 사람들에게만 의미가 있고 유용할 것이다. 이 글은 F1 및 F3만 집중적으로 다룬다. 현재의 비행컨트롤러 중 대다수가 이 프로세서를 사용하고 있기 때문이다.
F1, F3, F4의 의미?
기본적으로 F1, F3는 비행콘트롤러의 두뇌인 STM32 프로세서의 다른 시리즈이다. STM32 시리즈는 현재 F7, F4, F3, F2, F1, F0, L4, L1, L0, W 등 10가지가 있다.
F1 비행 콘트롤러의 좋은 예가 Naze32 와 CC3D이며, F3 보드로는 X-Racer, Motolab Tornado, Seriously Pro Racing F3, RMRC Dodo 등이 있다. 자세한 사항은 레이싱 드론용 비행 콘트롤러를 확인하라.
또한 이미 F4 비행콘트롤러도 나와 있다. OpenPilot Revolution, Sparky V2 등이 그 예이다.
Seriously Pro Racing F3
F1과 F3 의 차이
간단히 말해 F3는 F1에 비해 다음과 같은 장점이 있다.
- 클럭속도는 동일하지만, 부동소숫점연산(floating point calculation)이 빠르다.
- UART 포트가 하나 더 있다.
- 일부 새로운 F3 FC는 F1 FC 보다 설계/기능이 더 좋다.
XRacer F303 flight controller top
처리 성능(속도)
F1 과 F3는 최대 클럭 속도가 72 MHz로 동일하다. 반면 F4의 최대 클럭 속도는 180 MHz 이다.
F1 과 F3의 속도가 동일하지만, 수치 코프로세서가 있어 부동소숫점 연산을 더 빠르게 수행할 수 있다. F3는 PID controller 2 (Luxfloat)에서 상당히 빠르게 작동한다. Luxfloat가 부동소숫점을 기반으로 한 알고리듬이기 때문이다. 하지만, PID contoller 1 (Rewrite)의 경우 정수 기반 알고리듬으로써, 성능향상은 없다.
많은 사람들이 이미 아는 바와 같이 Betaflight에서 현재의 최적 looptime 은 1000 이다. 자이로 샘플속도(1kHz)에 동기화 되어 있다. (약간의 배경 설명. 이 1kHz 샘플 제한은 자이로셑서와 프로세서를 연결하는 I2C 연결 때문이다. 예를 들어 CC3D의 경우 더빠른 통신이 사용된다. SPI라고 하는데 8 kHz로 작동된다. 따라서 이론상 looptime은 125까지 내려갈 수 있다. 그러나, 널리 적용하기전에 그처럼 낮은 looptime이 가능한지는 좀더 테스트해봐야 할 것으로 생각한다.)
F3 보드는 가속도계, LED 줄, Soft-serial 과 같이 CPU-intensive 작업을 돌릴 때에도 PID controller 1 및 2에서 1000 looptime까지 쉽게 내릴 수 있다. 그러나, F1 보드의 경우, 이러한 기능을 먼저 비활성화시켜야 한다. 예를 들어 1000 looptime을 달성하려면 가속도계를 꺼야 한다. 다행히 F1에 여러가지 조치나 해킹, 오버클록 등을 하여 ACC 가 활성화된 상태에서 조차 Luxfloat에서 1000 looptime을 돌릴 수 있게 되었다.
betaflight 펌웨어가 아니라면 F3 보드에서 FPU가 있다는 건 엄청난 이득이다. 가속도계 계산은 상당한 양의 부동소수점 계산이 필요하다. Cleanflight 1.10 공식발매버전의 경우 우리가 아는 바와 같이 F1 비행콘트롤러에서 1200 looptime 이해로 내릴 수 없고, 가속도계를 끄면 600 looptime을 얻을 수 있지만, autolevel은 포기해야 한다. 하지만, F3의 경우엔 가속도계를 켠상태에서도 600 looptime을 획득할 수 있다.
Betaflight를 돌릴 경우, 나는 사실 F3 보드를 꼭써야 할 필요가 없다는 데 동의하지만, 모든사람이 Betaflight를 원하는 것은 아니다.
MotoLab Tornado F3
UART 포트의 수
F1은 F3와 마찬가지로 최적 looptime이 1000이기 때문에 내 생각에 F3의 가장 큰 장점은 시리얼포트(UART)가 하나 더 있다는 점일 것이다.
MiniOSD, SBUS SmartPort telemetry, Blackbox(Openlog 와 SD카드를 이용한), 컴퓨터와의 연결, GPS 등 이 모든 것들이 시리얼 포트를 사용한다.
Naze32와 같은 F1 비행콘트롤러의 경우 UART가 2개 뿐이다. 나의 경우 보통 blackbox, SBUS, MIniOSD를 동시에 다는데, F1의 경우에는 불가능하다. F3보드에는 UART가 하나 더 있어 편리하다.
F3 의 또다른 장점
어떤 F3 보드의 경우 5v 레귤레이터 또는 Pololu backpack 용 핀을 가지고 있다. 따라서, 이론적으로는 비행콘트롤러를 직접 LiPo 배터리에 연결할 수 있다.
F3보드는 또한 UART에 내장 hardware inversion 이 있어서 SBUS와 SmartPort를 연결하기 위해 X4B-SB 수신기를 해킹할 필요가 없다. F1 보드는 추가 하드웨어나 해킹이 필요하다.
F3는 거의 STM32 F1 시리즈와 pin-to-pin으로 호환가능하여, 어떤 사람의 댓글에 따르면 CC3D에서 F1 칩을 F3으로 성공적으로 교체하여 125 looptime으로 돌리고 있다고 한다.
참고로 F3는 플래시 데이터 용량과 직접적인 관계는 없다. 실제로는 보드에 사용되는 메모리가 어떤 메모리칩인가에 의해 결정된다.
RMRC Dodo F3
그래서, 어떤 걸 사용할까?
나는 아직 모든 드론에 F1 보드를 사용하고 있다. betaflight를 사용중으로 그것만 필요하다면 구지 F1 비행콘트롤러를 차버릴 필요는 없다.
그러나 언급한 바와 같이 Luxfloat와 가속도계를 사용하게 되면 F1 보드는 거의 한계에 근접하게 된다. soft-serial과 같이 다른 기능을 켜야 한다면 looptime을 1000에 맞추는데 문제가 생길 수 있다. 아울러 Cleanflight/Betaflight는 계속 진화하고 있어, F1 보드는 좀더 높은 처리능력이 필요할 기능을 사용하지 못할 수도 있다.
만약 내일 새로운 FC를 사야한다면 나는 아마도 F3를 구입할 것 같다. 하지만, 예산이 부족하다면 F1도 나쁘지 않다.
이글은 2015년 10월 15일에 올린 글임