KDcopter v3
Project info
Start date February 2014
Weight 700g
with batteries


Third version of my quadcopter, the previous one is described here.

Flight controller

Module info
Microcontroller STM32F103C8T6
32-bit ARM Cortex-M3
Clock 32 MHz
Peripherals MPU6050
  Pressure sensor
  GPS module
  Radio module (FSK)"
Power supply LM2674
DC/DC converter from 12V to ~6V
Linear converter from ~6V to 3.3V
Main part of the whole system. Two-sided board powered with DC/DC converter followed by linear regulator providing stable 3v3 voltage. All computations are done by STM32F103 microcontroller running at 32MHz. Thanks to DMA and off-loading lot of work to peripherals, it is possible to run complicated Madgwick AHRS algorithm, calculate stabilization parameters and send motors duty values 250 times per second. The board is equipped with µSD card slot for storing all of the sensors data in order to further processing (e.g. simulation, parameters tuning). GPS module provides current location and with conjunction with barometer and accelerometer data it is possible to calculate approximation of real-time current location using Kalman filters.

BLDC drivers

Module info
Microcontroller STM32L100RBT6
8-bit AVR Atmega8A
Clock 8 MHz
Finally, I decided to make a small family of BLDC drivers instead of one quadruple driver as it is much easier to maintain. Every device consists of ATmega8 microcontroller, 3 high and low side MOSFET drivers and 6 power N-MOSFETs. Commutations are based on Back-EMF sensing of a non-conducting wire. Communication with main controller is done via I2C bus with own protocol.

Remote controller

Module info
Microcontroller STM32F103CBT6
Clock 64 MHz
Main control device. Current version is a standalone remote controller with IMU module as an extension (for steering via hand rotation). Board is equipped with LCD display which shows all data from quadcopter and remote controler. Remote controller allows to changle almost every single parameter of flying (including PID coefficients, calibration values, flying mode and flying helpers).

PC interface

This interface allows to communicate with quadcopter and remote controller from PC. There are several applications for controlling the flight and sensors calibrating mostly written in C++ with use of Qt framework.

Camera gimball

FPV module which allows to send real-time video stream to the ground form First Person View flying. It is equipped with full 3-axis camera stabilization for better experience. It is based on 1/4" CMOS camera module and 2.4GHz AV transmitter. Thanks to using servos it is possbible to change camera orientation even during the flight using remote controller.

Control panel


  • Stabilization using Madgwick quaternion based AHRS algorithm
  • Altitude hold based on barometer and accelerometer reads
  • In-flight parameters tuning
  • Real-time FPV


See full gallery on Flickr