Some time ago I have presented my new design a mini QuadroCopter. This new design required a controller but tailored to the size of the mini UAV.
The flight controller as the previous one has the same microcontroller STM32F103RET6. This MCU has a Cortex-M3 core, 512kB of Flash and 64kB of RAM. It is capable of driving up to 8 motors which basically allows to control an octocopter. Also it is able to read signal from up to 8 channels. This versatility allows to not only control the UAV itself but also for example a camera on a gimbal.
In the figure below I have presented the controller with the highlights of the systems:
Quick summary of the flight controller:
- ARM Cortex-M3 based MCU,
- 8 independent PWM channels for motors,
- 8 input channels from RC receiver,
- IMU connector with I2C,
- additional I2C connector,
- CAN interface,
- GPS interface,
- Bluetooth interface,
- micro SD card interface,
- 2 push buttons for user input,
- 4 LED for signalization,
- battery status.
Beside the described hardware it is running on FreeRTOS using the ST HAL drivers. Using the FreeRTOS instead of a custom operating system gives a lot of advantages. The maintenance of the tasks is a lot easier. It allows the designer to take precise control over the timings and the dependencies between tasks. The last but not the least is the pre-emption which comes really handy.
Below there are photos of two such flight controllers showing it from different perspective.