분류 전체보기

    [Drone Firmware using STM32CubeIDE] 4-2. FS-i6 Transmitter Setting

    [Drone Firmware using STM32CubeIDE] 4-2. FS-i6 Transmitter Setting

    드론의 송신기로 사용할 FS-i6의 초기설정이다. 이는 생략하려 했으나 최근 FS-i6X 송신기의 구매로 이전에 사용했던 FS-i6 초기설정 과정을 다시 확인할 겸 포스팅을 진행한다. (FS-i6X는 최대 10채널 송신기로 기존의 최대 6채널 송신기인 FS-i6 보다 4채널이 더 많다.) 초기 설정의 과정은 다음과 같다. 공장 초기화 송신기 - 수신기 연결 스틱 모드 설정 Aux 채널 설정 Fail-safe 설정 Display 확인 1. Factory Reset 먼저 공장 초기화를 진행한다. 공장 초기화 과정은 이전에 연결되어있는 수신기와의 연결을 해제하는 것이다. 송신기를 처음 쓸때는 이 과정을 생략해도 되지만 그래도 한번씩 해주자. 오른쪽 상단의 OK 키를 길게 누르면 MENU 창이 뜨는데 여기서 S..

    [Drone Firmware using STM32CubeIDE] 8-1. 3DR Telemetry Configuration

    [Drone Firmware using STM32CubeIDE] 8-1. 3DR Telemetry Configuration

    8번째 파트로 GCS를 다뤄볼 것이다. GCS란 Ground Control Station의 약자로 지상에서 드론을 제어하고 모니터링하는 프로그램이다. GCS를 이용하면 드론이 비행하는 중에도 FC의 상태를 실시간으로 확인할 수 있고 그 정보를 저장할 수 있다. FC에서 GCS로 데이터를 송신하는 정보들은 다음과 같다. 주로 FC의 상태 정보를 보낸다. GCS와 FC간의 통신에도 무선 통신 프로토콜 정의가 필요한며, 메시지 프레임 단위별로 구분하였다. (BNO080) Roll, Pitch, Yaw, (LPS22HH) Altitude, FS-i6 Stick Data --> PID 제어의 목표값으로 변환된 데이터 GPS, Battery Voltage, FS-i6 Switch Data, fail-safe sta..

    [Drone Firmware using STM32CubeIDE] 2-2-1. ICM-20602 DC Offset Remove

    [Drone Firmware using STM32CubeIDE] 2-2-1. ICM-20602 DC Offset Remove

    자이로 3축 + 가속도 3축, 총 6축 센서인 ICM-20602는 드론의 각속도를 측정한다. 책상에 위에 가만히 놔둔 채로 ICM-20602의 센서값을 출력해보면 다음과 같이 출력된다. 이론상으로 책상 위에 가만히 올려두면 각속도의 값은 0이 나와야한다. 하지만 그래프에 보이는바와 같이 0이 아닌 다른 값이 출력되고 있는 것이 확인된다. 이는 DC offset이 껴있기 때문이다. 이를 DC Bias라고도 한다. 이렇게 오프셋이 껴있는 상태로 비행 제어를 하면 드론이 한쪽으로 흐르는 현상이 발생할 수 있다. 따라서 이 오프셋을 제거해야한다. DC offset을 소프트웨어적으로 처리하여 제거할 수 있지만, ICM-20602은 자이로 오프셋을 제거해주는 기능을 제공한다. ICM-20602 Gyro Offset..

    [Drone Firmware using STM32CubeIDE] 7-2. EEPROM Protocol Definition

    [Drone Firmware using STM32CubeIDE] 7-2. EEPROM Protocol Definition

    EEPROM에 데이터를 오류없이 전송하고 받아오기 위해 EEPROM 프로토콜을 정의한다. EEPROM에 데이터를 저장하는데에 있어서 프로토콜 정의가 꼭 필요한 것은 아니다. 하지만 EEPROM에 저장할 데이터는 바로 PID Gain값인데, 이 Gain값 정보는 제어에 큰 영향을 미치는 중요한 정보이므로 데이터를 오류없이 전송하고 수신하여야 한다. 따라서 데이터를 저장, 관리하는 단계에서 데이터의 무결성을 보장하기 위해 프로토콜을 정의한다. 프로토콜을 정의한다고 해서 데이터에 오류가 100% 없다고 보장할 수 없다. 오류가 날 확률을 감소시켜주는 것이다. 그러나 프로토콜 정의가 안되어 있으면 데이터에 오류가 있는지 확인 조차 못한다. 따라서 EEPROM Protocol 정의는 이런 면에서 중요한 역할을 한..

    [Drone Firmware using STM32CubeIDE] 7-1. EEPROM: AT24C08

    [Drone Firmware using STM32CubeIDE] 7-1. EEPROM: AT24C08

    PID 제어 시에 드론의 게인값을 저장하기 위하여 메모리 공간이 필요한데, FC에는 비휘발성 메모리인 EEPROM이 내장되어 있다. 내장되어 있는 EEPROM은 AT24Cxx 시리즈 중 'AT24C08'으로 1Kbytes의 용량을 가진다. AT24Cxx 데이터시트를 참고하여 AT24C08의 스펙을 살펴보자. EEPROM: AT24C08 비휘발성 메모리 AT24Cxx 이 뒤의 숫자가 용량을 의미 (kbits) AT24C08 -> 8kbits -> 1Kbytes 내부적으로 64개의 pages로 영역을 구분 1page당 16bytes의 크기를 가짐. I2C Interface (MAX 400kHz @ 3.3V) 쓰기금지 (WP) 핀 제공 (데이터 보호) AT24C04 이상부터는 Page Write Mode로 W..

    [Drone Firmware using STM32CubeIDE] 6-4. BLDC Motor Control

    [Drone Firmware using STM32CubeIDE] 6-4. BLDC Motor Control

    ESC Calibration을 한 후 이제 모터 구동을 해보자. BLDC Motor 모터의 회전 속도는 PWM 신호의 펄스폭으로 조절한다. 펄스폭은 타이머의 CCR 레지스터로 조절할 수 있다. 이 전 포스팅(6-2)에서 타이머와 PWM에 대한 설명을 간략히 하였으니 이를 참고하자. [STM32F405를 이용한 드론 개발] 6-2. Oneshot125 PWM 드론에 사용할 ESC는 Oneshot125, Oneshot42, Multishot 프로토콜을 지원한다. 그 중 Oneshot125 프로토콜을 사용할 것이며 ESC에 신호를 보내주기 전에 먼저 FC에서 Oneshot125 프로토콜 신호를 생성해보자. On.. ahystroy.tistory.com 모터 구동은 FS-i6 조종기의 Throttle키로 한다...

    [Drone Firmware using STM32CubeIDE] 6-3. ESC Calibration

    [Drone Firmware using STM32CubeIDE] 6-3. ESC Calibration

    ESC Calibration BLHeli_S 펌웨어의 ESC Throttle Calibration 과정을 모터의 Beep음에 따라 나타냄. Calibration 모드에서 ESC에 전원을 인가한 후, ESC에 Oneshot125 프로토콜 규격에 맞는 PWM 신호를 넣어준다. 이 때, ESC에 최대 펄스폭을 넣어주면 ESC Calibration 모드로 진입한다. 이 최대 펄스폭은 모터가 최대 속도로 출력될 때이다. 측정 중과 측정 완료시의 Beep음은 위와 같다. 다음으로 모터가 정지할 때의 PWM 신호(최소 펄스폭)를 넣어준다. 최소 펄스폭까지 넣어주면 ESC Calibration이 완료되었다. 이 때, 최대 펄스폭과 최소 펄스폭은 각각 7초, 8초 이상 넣어주는 것이 좋다. ESC Calibration ..

    [Drone Firmware using STM32CubeIDE] 6-2. Oneshot125 PWM

    [Drone Firmware using STM32CubeIDE] 6-2. Oneshot125 PWM

    드론에 사용할 ESC는 Oneshot125, Oneshot42, Multishot 프로토콜을 지원한다. 그 중 Oneshot125 프로토콜을 사용할 것이며 ESC에 신호를 보내주기 전에 먼저 FC에서 Oneshot125 프로토콜 신호를 생성해보자. Oneshot125 Oneshot125 프로토콜의 규격은 다음과 같다. PWM 방식 펄스의 주기: 2kHz 펄스의 폭: 125us ~ 250us 약 10000 단계로 조절 (10500 단계) 모터의 출력 속도는 펄스의 폭에 의해 결정된다. 모터의 최소 출력(모터 정지)과 최대 출력을 ESC 캘리브레이션을 통해 설정해주어야 한다. 또한 이 펄스폭의 최소 폭과 최대 폭을 10000 단계로 나누어 모터의 속도를 제어한다. What is Oneshot ESC Prot..