Start date |
February 2014 |
Weight |
700g with batteries |
Overview
Third version of my quadcopter, the previous one is described
here.
Flight controller
Microcontroller |
STM32F103C8T6 32-bit ARM Cortex-M3 |
Clock |
32 MHz |
Peripherals |
MPU6050
Accelerometer/gyroscope
LSM303D
Magnetometer
HP203B
Pressure sensor
FGPMMOPA6E
GPS module
RFM69HW
Radio module (FSK)"
|
Power supply |
LM2674 DC/DC converter from 12V to ~6V AMS1117 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
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
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
|
Sensors reads
|
|
Sensors reads
|
|
Calibration
|
|
Motors
|
|
Flight data
|
|
Flight control panel
|
Features
-
Stabilization using Madgwick quaternion based AHRS algorithm
-
Altitude hold based on barometer and accelerometer reads
-
In-flight parameters tuning
-
Real-time FPV
Gallery
See full gallery on Flickr