Multiwii Configuration: BASIC SETUP


The type of multicopter:

GIMBAL: this is used just to pilot a two servo camera gymbal, This is used to add camera stabilization capabilities to an already existant platform

BI: this is used for a non very common aircraft platform: the bicopter, a dual tilting motor. The Bicopter stability (especially in pitch) is its weak point having just two motors. Each motor is tilting with a servo so the power of motors actually can control just the roll, instead the pitch is controlled by these two servos which act on the motor orientation.

TRI: this is a very common platform, which uses 3 arms, 3 motors and 1 servo which tilts the tail rotor. Each arm designs a 1/3 of 360 degrees so each arm is 120° degrees angled to the next. It’is very stable and there are several project for DIY platforms such as the one proposed by the site Also it turns out that apart from stability, it is a cheap platform, at least 1/4 cheaper that building a quadcopter with the very same components, without mentioning the great flyability and stability for fpv purposes.

QUADP: This is the contracted Quadcopet + also known as PLUS. It has four arms, four motors, no servo. It is different from the quad X for the orientation of its arms: it has one arm on the front and one on the tail (so one on the left arm and one on the right arm). It is less diffused from the similar quad X, probably for the coolness of the X shape. It is as effectiove as the X shape is. At least teorethically, instead in real world we know that forward mode would b emanaged in a totally different way.

QUADX: this ia the same as the previous model except fr the arms orientation: two arms at ~90° each other on front and same on rear (so the same for each side). Very diffused form factor, used both for acrobatic flying and as FPV platform. Quiet stable. it can suffer for winds compared to a same shape with doubled motor and weight.

Y4: This has 4 motors and 3 arms

Y6: This has 6 motors and 3 arms

HEX6: this has 6 motors

HEX6X: this is as the previoue exctept for the motors configuration (2 motors on front)

HEX6H  // New Model

OCTOX8: 8 motors, 8 arms, 2 motors on front

OCTOFLATP: 8 motors, 8 arms, 1 motors on front

OCTOFLATX: 8 motors 4 arms

FLYING_WING: airplane model

VTAIL4: airplane model






Motor minthrottle
Set the minimum throttle command sent to the ESC (Electronic Speed Controller). This is the minimum value that allow motors to run at a idle speed
//#define MINTHROTTLE 1300 // for Turnigy Plush ESCs 10A
//#define MINTHROTTLE 1120 // for Super Simple ESCs 10A
//#define MINTHROTTLE 1064 // special ESC (simonk)
//#define MINTHROTTLE 1050 // for brushed ESCs like ladybird

This is the value i’ve used for cheap 25 Amp ESC:
#define MINTHROTTLE 1140

Motor maxthrottle
This is the maximum value for the ESCs at full power, this value can be increased up to 2000
#define MAXTHROTTLE 1830

This is the value for the ESCs when they are not armed. In some cases, this value must be lowered down to 900 for some specific ESCs, otherwise they failed to initiate.
#define MINCOMMAND  1000

I2C speed
This will set the I2C port transmission rate. 100kHz normal mode, this value must be used for a genuine WMP; 400kHz fast mode, it works only with some WMP clones
#define I2C_SPEED 100000L
//#define I2C_SPEED 400000L

Internal i2c Pullups
This will enable internal I2C pull ups (in most cases it is better to use external pullups). I went through this already. In that occasion i was working on an arduino pro mini with an external gy-80 10DOF IMU and I had to add 2 pullup resistors (2.2k each) between the sda-vcc and between scl-vcc. This will correctly address the feedback from the IMU. But as you can see, i used external pullups as adviced here, on the source code

Boards and sensor definitions

This section is dedicated to the board definition. If you are using a commercial and well diffused board, you will probably find it here. You can also find it here under another nickname. DO NOT use the IMU Components in order to deduce your board, use google!. Using a wrong board definition could produce wrong readings from sensors because each board addresses the sensor feedback on the i2c bus in a probaby different way, otherwise you have to be lucky.

Combined IMU Boards
This will use a set of predefined parameters for each of the boards listed below. In pther words, if you use this part of the configuration, you don’t have to configure single components if your IMU.
Please submit any correction to this list.

//#define FFIMUv1         // first 9DOF+baro board from Jussi, with HMC5843
//#define FFIMUv2         // second version of 9DOF+baro board from Jussi, with HMC5883
//#define FREEIMUv1       // v0.1 & v0.2 & v0.3 version of 9DOF board from Fabio
//#define FREEIMUv03      // FreeIMU v0.3 and v0.3.1
//#define FREEIMUv035     // FreeIMU v0.3.5 no baro
//#define FREEIMUv035_MS  // FreeIMU v0.3.5_MS
//#define FREEIMUv035_BMP // FreeIMU v0.3.5_BMP
//#define FREEIMUv04      // FreeIMU v0.4 with MPU6050, HMC5883L, MS561101BA
//#define FREEIMUv043     // same as FREEIMUv04 with final MPU6050 (with the right ACC scale)
//#define NANOWII         // the smallest multiwii FC based on MPU6050 + pro micro based proc
//#define PIPO            // 9DOF board from erazzmin
//#define QUADRINO        // full FC board 9DOF+baro board from witespy  with BMP085 baro
//#define QUADRINO_ZOOM   // full FC board 9DOF+baro board from witespy  second edition
//#define QUADRINO_ZOOM_MS// full FC board 9DOF+baro board from witespy  second edition
//#define ALLINONE        // full FC board or standalone 9DOF+baro board from CSG_EU
//#define ATAVRSBIN1      // Atmel 9DOF (Contribution by EOSBandi). requires 3.3V power.
//#define SIRIUS          // Sirius Navigator IMU
//#define SIRIUS600       // Sirius Navigator IMU  using the WMP for the gyro
#define MINIWII         // Jussi’s MiniWii Flight Controller
//#define MICROWII        // MicroWii 10DOF with ATmega32u4, MPU6050, HMC5883L, MS561101BA from
//#define CITRUSv2_1      // CITRUS from

//#define CHERRY6DOFv1_0
//#define DROTEK_10DOF    // Drotek 10DOF with ITG3200, BMA180, HMC5883, BMP085, w or w/o LLC
//#define DROTEK_10DOF_MS // Drotek 10DOF with ITG3200, BMA180, HMC5883, MS5611, LLC
//#define DROTEK_6DOFv2   // Drotek 6DOF v2
//#define DROTEK_6DOF_MPU // Drotek 6DOF with MPU6050
//#define DROTEK_10DOF_MPU//
//#define MONGOOSE1_0     // mongoose 1.0
//#define CRIUS_LITE      // Crius MultiWii Lite
//#define CRIUS_SE        // Crius MultiWii SE
//#define OPENLRSv2MULTI  // OpenLRS v2 Multi Rc Receiver board including ITG3205 and ADXL345
//#define BOARD_PROTO_1   // with MPU6050 + HMC5883L + MS baro
//#define BOARD_PROTO_2   // with MPU6050 + slave  MAG3110 + MS baro
//#define GY_80           // Chinese 10 DOF with  L3G4200D ADXL345 HMC5883L BMP085, LLC
//#define GY_85           // Chinese 9 DOF with  ITG3205 ADXL345 HMC5883L LLC
//#define GY_86           // Chinese 10 DOF with  MPU6050 HMC5883L MS5611, LLC
//#define GY_521          // Chinese 6  DOF with  MPU6050, LLC
//#define INNOVWORKS_10DOF // with ITG3200, BMA180, HMC5883, BMP085 available here
//#define INNOVWORKS_6DOF // with ITG3200, BMA180 available here
//#define PROTO_DIY       // 10DOF mega board
//#define Bobs_6DOF_V1     // BobsQuads 6DOF V1 with ITG3200 & BMA180
//#define Bobs_9DOF_V1     // BobsQuads 9DOF V1 with ITG3200, BMA180 & HMC5883L
//#define Bobs_10DOF_BMP_V1 // BobsQuads 10DOF V1 with ITG3200, BMA180, HMC5883L & BMP180 – BMP180 is software compatible with BMP085
//#define FLYDUINO_MPU
//#define CRIUS_AIO_PRO_V1
//#define DESQUARED6DOFV2GO  // DEsquared V2 with ITG3200 only
//#define DESQUARED6DOFV4    // DEsquared V4 with MPU6050
//#define LADYBIRD
//#define MEGAWAP_V2_STD     // available here:
//#define MEGAWAP_V2_ADV
//#define HK_MultiWii_SE_V2  // Hobbyking board with MPU6050 + HMC5883L + BMP085

Independent sensors
Leave it commented if you already checked a specific board above.

I2C gyroscope
//#define WMP
//#define ITG3200
//#define L3G4200D
//#define MPU6050       //combo + ACC

I2C accelerometer
//#define NUNCHUCK  // if you want to use the nunckuk connected to a WMP
//#define MMA7455
//#define ADXL345
//#define BMA020
//#define BMA180
//#define NUNCHACK  // if you want to use the nunckuk as a standalone I2C ACC without WMP
//#define LSM303DLx_ACC

I2C barometer
//#define BMP085
//#define MS561101BA

I2C magnetometer
//#define HMC5843
//#define HMC5883
//#define AK8975
//#define MAG3110

For visualization purpose currently – no control code behind
//#define SRF02 // use the Devantech SRF i2c sensors
//#define SRF08
//#define SRF10
//#define SRF23

ADC accelerometer
For 5DOF from sparkfun, uses analog PIN A1/A2/A3
//#define ADCACC

Individual sensor orientation
//#define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  =  Y; accADC[PITCH]  = -X; accADC[YAW]  = Z;}
//#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] =  X; gyroADC[YAW] = Z;}
//#define MAG_ORIENTATION(X, Y, Z)  {magADC[ROLL]  =  X; magADC[PITCH]  =  Y; magADC[YAW]  = Z;}

(Visited 12,042 times, 5 visits today)

Leave a Reply

Post Navigation