Documentation/mini/v0.1

'''This page is undergoing a remodeling! Please be patient.'''

Summary
The mini version of the openmulticopter is a first version of our project. It's only for bootstrapping our work and for testing/development purposes. As simple as possible. And of course, as small as possible. We forbear from putting unnecessary components onto the board such as air pressure and compass or a GPS module. It's just about flying and testing.

Features

 * Heading Hold Flight Mode
 * ACC Flight Mode
 * Support for telemetry

Design ideas

 * Use the internal ADC of the STM32 for sensor inputs
 * JTAG programming interface exposed
 * I2C/CAN interface exposed for motor controller interfacing
 * PPM input for sum signal receivers
 * UART interface for DSL receivers (RCOPEN24 support?)
 * UART interface exposed for PC/RF modem interface
 * Some LEDs for status indication
 * AUX connector containing as many of the remaining pins of the STM32 as possible and some of the already exposed pins (for further tests and expansions)

LC low-pass filter
Calculations


 * $$f_c = \frac{1}{2\pi \cdot \sqrt{LC}} \rightarrow 3.5kHz = \frac{1}{2\pi \cdot \sqrt{100\mu H \cdot C}} \rightarrow C = 20.68\mu F \rightarrow \underline{C_{E12}=22\mu F}$$

Recalculate cut-off frequency with selected capacitor.


 * $$f_c = \frac{1}{2\pi \cdot \sqrt{100\mu H \cdot 22\mu F}} = 3.39kHz$$

The inductor hasn't just an inductance. There's also a series resistor (ohmic load). If this resistance is too low we'll have voltage peaks around the cut-off frequency. The perfect series resistor value is calculated as follows:


 * $$X_L = 2\pi \cdot f_c \cdot L = 2\pi \cdot 3.39kHz \cdot 100\mu H = 2.13\Omega$$


 * $$R_L = \sqrt{2} \cdot X_L = \sqrt{2} \cdot X_C = \sqrt{2} \cdot 2.13\Omega = 3\Omega$$

Now, the chosen inductors from Digikey (490-4065-1-ND and 445-3617-1-ND) have a resistance of 3Ω and 3.5Ω. So, they are very close to the calculated "ideal" resistor value. The bode-diagram shows us that the curve-progression of the real components is nearly identical to the ideal one.



Accelerometer


Due to the integrating nature of MEMS gyroscopes in an IMU other sensors have to be used to compensate the zero-drift. Acceleration sensors provide an accurate and reasonably cheap solution which works outdoors as well as indoors.

As a result of a recent trend to include acceleration sensors in mobile phones, gaming devices and cameras there are currently many sensors from different manufacturers on the market. Almost all of them share the same principle of operation. So called MEMS devices include an oscillating solid proof mass. This technology has one major drawback for our application. The oscillation frequency of the solid proof mass is the resonance frequency of the device and located in a band of frequencies generated by the BLDC motor controllers. Turning on the motors often results in a significant zero-point shift at the accelerometer output.

MEMSIC is the only manufacturer we know of which currently fabricates acceleration sensors based on heat convection of a small amount of a gas embedded in the sensor. The MXR9500 is therefore not susceptible to vibrations caused by the motors and an ideal choice for our purpose. We are using the +/- 1.5g tri axis MXR9500 that operates from 3.3V and is able to withstand shocks of up to 50'000g.

RC low-pass filter
Existing projects often found a simple first order low-pass filter to be sufficient to eliminate aliasing effects and reduce unwanted frequency components in the gyroscope signals. The Nyquist-Shannon sampling theorem basically tells you to use a sampling frequency of at least more than twice the highest frequency in your signal. However, as a rule of thumb one can assume a sampling rate of ten times the cut-off frequency is needed in order to easily reconstruct the original signal and perform additional digital filtering if necessary.

A first order low-pass filter will have a rather flat roll-off at 20dB/decade. This means even though frequencies beyond the cut-off frequency will be damped, they are not immediately virtually zero. We will therefore choose a cut-off frequency of 50 Hz and be well aware that there will be significant frequency components of up to 100Hz.

MEMS gyroscopes often operate from a supply voltage of 5V. However, our STM32 microcontroller doesn't allow voltages higher than 3.3V at the ADC input pins. A simple voltage divider consisting of two resistors will scale the voltage down. In order to minimize the amount of components we will use the output impedance of our voltage divider as the resistive component of our RC low-pass filter. The output impedance of the voltage divider can be calculated by thinking of our gyroscope as a voltage source. The superposition theorem tells us to short-circuit a voltage source (or 'open-circuit' a current source, resp.) when calculating the internal impedance of a circuit. The output impedance of the voltage divider will therefore be the replacement value of two parallel resistors.

Calculating filter components often happens based on a heuristic approach. You have to guess at least one component value in advance, make your calculations and adjust your initial choice if necessary. The calculations listed below do not represent a step by step guide but prove the chosen values to be valid.


 * $$U_{out} = U_{Gyro} \cdot \frac{R_2}{R_1 + R_2} = 5V \cdot \frac{43k\Omega}{22k\Omega + 43k\Omega} = 3.31 V$$


 * $$R_{out} = \frac{R_1 \cdot R_2}{R_1 + R_2} = \frac{22k\Omega \cdot 43k\Omega}{22k\Omega + 43k\Omega} = 14.55 k\Omega$$


 * $$f_c = \frac{1}{2 \pi \cdot R_{out} \cdot C} = \frac{1}{2 \cdot \pi \cdot 14.55k\Omega \cdot 220nF} = 49.7 Hz$$

ADC


The STM32 unfortunately has low-impedance ADC inputs. Additional buffering of sensor signals is therefore necessary. A simple op-amp in voltage follower configuration provides this functionality.

Log
The log is available on github.com. Click here to get there.