The Falcon Project
The Falcon Project began life as a Arduino project, whose goal was to create a simple quadcopter flight controller. The project consisted of a Arduino Micro (a 16MHz, Atmega32U4, 8-bit microcontroller on a stick of gum) and a gyroscope/accelerometer breakout board (pictured). After many test flights, unintended landings and a few quadcopter frames later, it gradually became fully fledged flight control board. It incorporated both rate and auto-level modes, KK2 style transmitter stick arming sequence, battery voltage low detector, buzzer, as well as the most important design consideration: LEDs.
The project then continued using the larger, more capable Arduino Mega, on which was stacked a proto shield that contained a gyroscope, accelerometer, magnetometer, barometer and GPS, all the sensors necessary for automated flight. The set-up also included a KK2 like OLED display and buttons. This board although looking like an electronic multi-story car park, was used to build and test the display menu system and the automated flight firmware, such as altitude hold, loiter and RTL.
Later this prototype was miniaturised on to a KK2 sized board called the Raven flight controller (pictured). The lighter weight alone made for better flight handling. Firmware testing continued on this new board, however as more code was added it became apparent that the 16MHz, Atmega2560, 8-bit microcontroller, although performing admirably was starting to struggle. This limited the Raven’s scope for future development. The search started to find a faster replacement. Only 3 examples of the Raven were ever produced.
Two microcontrollers were chosen for evaluation. The 48MHz, 32-bit, ARM Cortex M0+ based Atmel SAMD21G18A used on the Arduino Zero and the 84MHz, 32 bit, ARM Cortex M3 based Atmel SAM3X8E used on the Arduino Due. Arduino was favoured, because of its software libraries, code portability and USB bootloader. Two Arduino prototypes were built and the Raven’s firmware ported across.
The Arduino Zero prototype was only ever intended to be a manual (rate and auto-level) board, due to the microcontroller’s limited IO capabilities. Shortly after the board’s successful maiden test flight, work started to move the prototype’s circuit on to PCB. The result was the Falcon 1 flight controller.
Studying the Atmel SAMD21’s product tree, it became apparent that a larger 64 pin, SAMD21J18A microcontroller existed. Essentially identical to the SAMD21G used on the Arduino Zero, but with extra IO pins, making it a excellent candidate for a board capable of also running the automated modes. At this stage though, it was unclear if it would be possible to transform the SAMD21J into an Arduino, thereby allowing it to use the Arduino USB bootloader, software libraries and use the Arduino IDE (Integrated Development Environment)? After some research it was concluded that the two microcontrollers’ designs were similar enough that it would indeed be possible. Work started on designing the this new board called the Falcon 2, (pictured together with the Falcon 1). Fortunately the research paid off, because after assembling the first board it successfully ran its first Arduino test program…
The 84MHz Arduino Due prototype (pictured) is currently being used to test improvements to the automated modes. Note the (black) external magnetometer and the (red) data logging boards. The Arduino code portability between different processors means that any developments can easily be transfered on to both Falcon boards.
Research to enhance the Falcons’ features continues.