Go Down

Topic: Falcon 1 Flight Controller (Read 179 times) previous topic - next topic

MartinL

May 11, 2016, 01:03 pm Last Edit: May 22, 2016, 10:26 pm by MartinL
The Falcon 1 is a 50mm x 50mm (2" x 2") multi-rotor (drone) flight controller based on the Arduino Zero.

It uses the same tiny 32-bit, 48MHz ARM Cortex M0+ microcontroller: the SAMD21G18A. The Falcon 1 itself is programmable via the microcontroller's own native USB port. This allows the board to be selected as an Arduino/Genuino Zero (Native USB Port) and for programs to be uploaded directly using the Arduino IDE. It's essentially an Arduino Zero in a flight controller's body.





The Falcon 1 is a primarily a manual flight controller, capable of both rate (gyroscope only) and auto-level modes. To this end, it uses an I2C based MPU-6050 gyroscope and accelerometer.

The flight control firmware's been written from the ground up and isn't based on any existing code such as multiwii, baseflight, cleanflight, etc... This allows for seamless integration with the hardware and freedom to control all aspects of the design.

Communication with the processor is via 4 buttons and a super fast, SPI driven, miniature OLED display. Using a menu system, the pilot can select the flight controller's various settings, all stored in its on-board 16K EEPROM. There's also a reset button (top left).

The Falcon 1 has 5 input channels (on the left hand side), these connect to a traditional RC receiver and are for throttle, airelon, elevator, rudder and aux, (aux is the auxillary channel used to switch between flight modes). Alternatively, it's possible to connect a single CPPM (Pulse Position Modulation) receiver channel, or a satellite receiver, (nothing to do with satellites, just a tiny receiver that communicates the channels' data over a serial port instead). 

It also has 8 PWM outputs (on the right hand side), these are high resolution, hardware PWM outputs allowing the flight controller to control various brushless motors and servos from Tri, Quad, Hexa and Octocopters, through to stranger configurations such as Single and Dual copters. The mixer tables for each PWM channel allow custom configurations for the stabilization of any practical motor and servo combination. In addition to 400Hz PWM for motors/digital servos, or 50Hz PWM for analog servos, there's also an option for Oneshot125.

The Falcon 1 has provision for a battery monitor, that's capable of measuring LiPo battery voltages up to 6S (25V) and a +5V buzzer connector. The buzzer can be used to indicate to the pilot: a change of flight mode, motors armed, battery low warning, lost alarm, etc... On board LEDs indicate power and armed status. The Falcon 1 also has an external I2C and serial port, these are reserved for future expansion.  I've already used these ports to connect an external gyro/accelerometer/magnetometer/barometer breakout board and GPS, to test my autonomous flight firmware for the Falcon 2: https://forum.arduino.cc/index.php?topic=401203.0.



Here's a Youtube video of my earlier "Raven" flight controller (8-bit, Mega based design) in action: https://www.youtube.com/watch?v=rx33SYrK2aE

MartinL

#1
May 11, 2016, 02:53 pm Last Edit: May 18, 2016, 10:27 am by MartinL
Here's another image and the Falcon 1's specification:



Hardware:

Board Dimensions: 50.5mm x 50.5mm (KK2 sized)
Mounting Holes: diameter 3mm, 45mm spacing
Processor: RISC 32-bit, 48MHz, Atmel Arm Cortex M0+ SAMD21G18A, 48 pin TQFP package
Memory: 256k flash, 32k RAM, 16k or 32k external on board EEPROM
Display: 1.3" monochrome OLED (super fast hardware SPI bus driven)
Gyro/Accel: MPU6050 (I2C bus)
Inputs: 5 receiver channels (T, A, E, R & 1) + battery voltage monitor input
Outputs: 8, 11-bit resolution PWM channels at 400Hz (motors/digital servos) or 14-bit resolution at 50Hz (analog servos) + buzzer output
Serial1: general purpose serial port
Serial2: located on the throttle input (for satellite receivers)
I2C: I2C expansion port
Firmware updates: via micro USB connector

Software:

Flight Control Firmware: Custom
Modes: Rate, Auto-Level
Receivers: currently Standard, CPPM, plus DSM2 and DSMX satellite receivers
Mixer modes: 8 channels with the following pre-set configurations - Tricopter, V-Tail, Quadcopter x, Quadcopter +, Hexacopter x, Hexacopter +, Octocopter x, Octocopter +, Singlecopter 1M4S, Singlecopter 2M2S, Dualcopter, Y4, Y6, X8 +, X8 x, H6, H8, V6 and V8
Sub Menus: Radio, PI Editor, Settings, Display, Calibrate, Motor Layout, Factory Reset and Version
Camera Gimbal: 2 axis gimbal option on outputs 7 and 8, standard and SS gimbals supported, (though currently only tested on two HS-82MG servos)

AloyseTech


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy