MultiWii is NOT a product, NOR a plug and play solution.
Don’t expect to buy a compatible board and run it without a minimum knowledge.
介紹
不錯的中文網站
http://oaione.blogspot.tw/2014/02/muliwii-i.ht
http://velen966.pixnet.net/blog
韌體設定(config.h):
設定電變最低指令,就是ESC 沒有反應的數值(Mincommand)
由於我的遙控器(DEVO7)和接收器(DEVO RX1002)買回來後就直接插上去,但是久久都沒辦法解除鎖定
Multiwii 調整別篇:
1. Servo PWM Glitch
2.I2C speed
3.Servo refresh rate
4.ACC LPF (Especially for MPU6050)
幾種不同多軸機架的比較 :
+4 跟 X4 比, +4的 Pitch or Roll 都只需動對向的兩顆, 在 飛控板 Timer/PWM 控制上有更簡單的優勢, 翻起特技又猛又簡潔... 只是後來的 FPV 或空拍機種上, 因為前面擋著一根軸, 所以比較不採用了!
Y4 跟 Y3 一樣, 前進運動時後面的槳不會吃到前面槳風尾流擾動 .... Y3 比 Y4 的 Yaw 靈敏, Y4尾側面機積大, 比Y3, X4 不耐側風.. 而V尾4 更抗側風, 航道飛行很有優勢.
Porting 到 STM32 MCU 的 MultiWii 變種分支
https://github.com/multiwii/baseflight
https://code.google.com/p/afrodevices/downloads/list
國外玩家根據MultiWii重寫的一套新韌體,據說運算效能更佳(未測試)
https://github.com/bradquick/bradwii/tree/master/
硬體
以這個配置為主介紹:
控制板:MWC MultiWii Lite
遙控器:DEVO7 (會有較長距離的打算時, 最好第一次就使用RC 主流 Futaba FASST 系統)
遙控器接收器:DEVO RX1002
航空夾板 - 比一般建材合板 or 密集板, 細致輕量及有縱橫支撐向, 缺點是木料有含水 & 密度均一的顧慮, 好處是 吸震, 優質機架結構材, 容易加工黏著, 沒有2.4G 電波屏壁問題.
(露天有個賣家, 航空 & Balsa合板都有賣, 參考看看)
http://goods.ruten.com.tw/item/show?21312300829696)
馬爸給的結構件的故事
MultiWii main version history
V2.3
***Control mode***
- main PITCH/ROLL/YAW PID modification (r1474)
- the sticks scaling is no more affected by PID coefficients
- yaw rate (to the right of the PIDs in GUI) now works as stick scaling
- default yaw rate is increased (with yaw rate at 0)
- yaw PID principle is now different from PITCH&ROLL PID:
- yaw ITerm windup is very high, allowing an ’elastic’ direction return after a manual perturbation
- yaw ITerm is also constrained with a windup independent limit
- yaw PTerm is constrained in order to counter the yaw jump effect.
use yaw DTerm to increase this constrain (r1573)
- yaw ITerm is canceled if the yaw stick is not centered
- Throttle angle correction (r1374)
- Advanced Headfree mode added (see config.h for instructions) (r1374)
- DYNBALANCE option, individual motor can be controled via GUI, to test individual vibration
- better gyro & acc calibration accuracy (r1546)
- cannot arm is baro mode is on (r1550)
- only one baro mode : vario around a throttle deadband (r1554)
- magHold is reset when arm is switched on
- ONLYARMWHENFLAT option (r1587)
***receiver & UART***
- RCSERIAL is now deeply integrated. If a MSP_SET_RAW_RC comes,
it will just override legacy RX data. (r1420)
as a consequence, RCSERIAL is no more an option
- no RC averaging for Spektrum & SBUS (r1545)
- SBUS center define (r1568)
- FAILSAFE_DETECT_TRESHOLD configurable
***GPS***
- Enables sonar altitude from i2c-gps-nav board (1424)
- navigation code will follow after 2.3
***GUI***
- Gui with Servosettings. (r1441 & r1450)
All models with servo included.
- GUI globalsettings (for some settings previously only in config.h)
- do not display /dev/cu.* devices but only corresponding /dev/tty.* (r1442)
- GUI baudrate as configurable setting
***IMU and baro***
- correct GYRO_SCALE for all gyro (r1428)
- no more small angles while shaking the board (r1579)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=4112
- baro Alt based on ground temp compensation (r1570)
- not reset for FIXEDWING (r1590)
*** SERVO management ***
- add a generic way to configure servo settings : conf struct + MSP read/set messages (r1383)
- Added general servo handler (r1421 & r1429)
- allow preset of some servo stuff from config.h (r1432)
- Gui with Servosettings. (r1441)
We can get 180 degrees servo move without servo modification.
***internal improvements***
- migration to a cpp/h code structure
- huge flash size optimization (around 1k)
- read at most one analog channel per MWii main loop cycle (r1375)
- smoothing of RX_RSSI (r1379)
- make faster analog reads an option with default off to increase accuracy (r1375)
- detangle vbat & buzzer dependancy (r1375)
- optimization : small approximation bit shift used instead of * or / number
for TPA, rates, dynP, dynD and expo curb (r1376)
- Added checking for flash content change, and reload config parameters in this case. (r1389)
- split Serial into Serial(core UART management) & Protocol (r1548)
- loop is globally faster
***add-ons***
- no more than one MSP per port and per cycle
should smooth the delay while requesting MSP, especially for USB port on micro
V2.1
***Control mode***
- introduction of HORIZON MODE.
We have now 3 modes:
ACRO mode.
This is the default one when none of the ANGLE & HORIZON BOX is activated.
The copter will continue rotating in the direction in which you tilt sticks.
When you let go of sticks it will maintain that angle and not return to level
ANGLE mode
The position of the stick indicates the angle at which the copter tries to maintain. Sticks off = level.
Full sticks in any direction and it will tilt at around 50 degrees. It’s proportional in-between.
It maintains the angle set by the stick. Let go of sticks and it returns to level
HORIZON mode <- new
It’s a proportional mix of the two. Sticks off = level. Full deflection = ACRO.
In between it gradually mixes from LEVEL mode to ACRO.
It’s a fine mix to be able to do some ACRO with the safety of ANGLE mode when you release the sticks.
It allows also a more natural way of flying as the multi seems less constrained.
- failsafe code is more strict.
If activated, it takes into account all the main channels and it’s important to stay strictly inside the [1000-2000] range.
For instance a throttle of 995 will activate the failsafe
failsafe is optional and can be activated via #define FAILSAFE
- Acrotrainer mode introduced
a kind of non proportional horizon mode
more info here: http://www.multiwii.com/forum/viewtopic.php?f=16&t=1944
***add-ons***
- pilotlamp integration
via #define PILOTLAMP
- LEDRING pattern was refined
- variometer introduced
enable to get audio feedback upon rising/falling copter/plane
via #define VARIOMETER
***GPS***
- UBLOX GPS: the baud configuration is autodetected and the UBLOX binary protocol is automaticly set
- MKT GPS can now be parsed in binary mode is possible thanks to EOSBandi
made for DIYDrones MTK firmware v1.6 and v1.9
- I2C GPS:
correct directionToHome (change it to the opposite direction)
there is still a problem remaining when your distance to home reaches 654m: it overflows.
a I2C code evolution is needed to correct this problem
- a forward predictive filter was ported from the Arducopter code by EOSBandi
optional and by default activated: #define GPS_LEAD_FILTER
- first implementation of MSP_SET_WP
with the help of Ezio app (EZ-GUI), we can now control the multi with a smartphone:
set a new position on a map / follow me / follow heading
see Multiwii EZ-GUI specific topic: http://www.multiwii.com/forum/viewtopic.php?f=8&t=2034
some video about this functionality:
*Multiwii main verion history
V2.3
***Control mode***
- main PITCH/ROLL/YAW PID modification (r1474)
- the sticks scaling is no more affected by PID coefficients
- yaw rate (to the right of the PIDs in GUI) now works as stick scaling
- default yaw rate is increased (with yaw rate at 0)
- yaw PID principle is now different from PITCH&ROLL PID:
- yaw ITerm windup is very high, allowing an ’elastic’ direction return after a manual perturbation
- yaw ITerm is also constrained with a windup independent limit
- yaw PTerm is constrained in order to counter the yaw jump effect.
use yaw DTerm to increase this constrain (r1573)
- yaw ITerm is canceled if the yaw stick is not centered
- Throttle angle correction (r1374)
- Advanced Headfree mode added (see config.h for instructions) (r1374)
- DYNBALANCE option, individual motor can be controled via GUI, to test individual vibration
- better gyro & acc calibration accuracy (r1546)
- cannot arm is baro mode is on (r1550)
- only one baro mode : vario around a throttle deadband (r1554)
- magHold is reset when arm is switched on
- ONLYARMWHENFLAT option (r1587)
***receiver & UART***
- RCSERIAL is now deeply integrated. If a MSP_SET_RAW_RC comes,
it will just override legacy RX data. (r1420)
as a consequence, RCSERIAL is no more an option
- no RC averaging for Spektrum & SBUS (r1545)
- SBUS center define (r1568)
- FAILSAFE_DETECT_TRESHOLD configurable
***GPS***
- Enables sonar altitude from i2c-gps-nav board (1424)
- navigation code will follow after 2.3
***GUI***
- Gui with Servosettings. (r1441 & r1450)
All models with servo included.
- GUI globalsettings (for some settings previously only in config.h)
- do not display /dev/cu.* devices but only corresponding /dev/tty.* (r1442)
- GUI baudrate as configurable setting
***IMU and baro***
- correct GYRO_SCALE for all gyro (r1428)
- no more small angles while shaking the board (r1579)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=4112
- baro Alt based on ground temp compensation (r1570)
- not reset for FIXEDWING (r1590)
*** SERVO management ***
- add a generic way to configure servo settings : conf struct + MSP read/set messages (r1383)
- Added general servo handler (r1421 & r1429)
- allow preset of some servo stuff from config.h (r1432)
- Gui with Servosettings. (r1441)
We can get 180 degrees servo move without servo modification.
***internal improvements***
- migration to a cpp/h code structure
- huge flash size optimization (around 1k)
- read at most one analog channel per MWii main loop cycle (r1375)
- smoothing of RX_RSSI (r1379)
- make faster analog reads an option with default off to increase accuracy (r1375)
- detangle vbat & buzzer dependancy (r1375)
- optimization : small approximation bit shift used instead of * or / number
for TPA, rates, dynP, dynD and expo curb (r1376)
- Added checking for flash content change, and reload config parameters in this case. (r1389)
- split Serial into Serial(core UART management) & Protocol (r1548)
- loop is globally faster
***add-ons***
- no more than one MSP per port and per cycle
should smooth the delay while requesting MSP, especially for USB port on micro
V2.1
***Control mode***
- introduction of HORIZON MODE.
We have now 3 modes:
ACRO mode.
This is the default one when none of the ANGLE & HORIZON BOX is activated.
The copter will continue rotating in the direction in which you tilt sticks.
When you let go of sticks it will maintain that angle and not return to level
ANGLE mode
The position of the stick indicates the angle at which the copter tries to maintain. Sticks off = level.
Full sticks in any direction and it will tilt at around 50 degrees. It’s proportional in-between.
It maintains the angle set by the stick. Let go of sticks and it returns to level
HORIZON mode <- new
It’s a proportional mix of the two. Sticks off = level. Full deflection = ACRO.
In between it gradually mixes from LEVEL mode to ACRO.
It’s a fine mix to be able to do some ACRO with the safety of ANGLE mode when you release the sticks.
It allows also a more natural way of flying as the multi seems less constrained.
- failsafe code is more strict.
If activated, it takes into account all the main channels and it’s important to stay strictly inside the [1000-2000] range.
For instance a throttle of 995 will activate the failsafe
failsafe is optional and can be activated via #define FAILSAFE
- Acrotrainer mode introduced
a kind of non proportional horizon mode
more info here: http://www.multiwii.com/forum/viewtopic.php?f=16&t=1944
***add-ons***
- pilotlamp integration
via #define PILOTLAMP
- LEDRING pattern was refined
- variometer introduced
enable to get audio feedback upon rising/falling copter/plane
via #define VARIOMETER
***GPS***
- UBLOX GPS: the baud configuration is autodetected and the UBLOX binary protocol is automaticly set
- MKT GPS can now be parsed in binary mode is possible thanks to EOSBandi
made for DIYDrones MTK firmware v1.6 and v1.9
- I2C GPS:
correct directionToHome (change it to the opposite direction)
there is still a problem remaining when your distance to home reaches 654m: it overflows.
a I2C code evolution is needed to correct this problem
- a forward predictive filter was ported from the Arducopter code by EOSBandi
optional and by default activated: #define GPS_LEAD_FILTER
- first implementation of MSP_SET_WP
with the help of Ezio app (EZ-GUI), we can now control the multi with a smartphone:
set a new position on a map / follow me / follow heading
see Multiwii EZ-GUI specific topic: http://www.multiwii.com/forum/viewtopic.php?f=8&t=2034
some video about this functionality:
*
http://www.youtube.com/watch?v=qpoPanmVa9Y
*
http://www.youtube.com/watch?v=hPj6WZex8j0
*
http://www.youtube.com/watch?v=nPICiiaDTnc
***multiwii models***
- USE_THROTTLESERVO (for airplanes), COLLECTIVE_RANGE changed (second value not offset anymore)
***IMU and baro***
- gyro calibration could be held until the MWC stops moving
introduced by MIS, and made optional after via a specific define:?define GYROCALIBRATIONFAILSAFE
- mag gain calibration is improved thanks to EOSBandi
based on Fabio FreeIMU code. We won’t forget you Fabio...
- perfect euler angle computation in case of 9DOF (better heading)
no more gimbal lock in GUI representation with a 9DOF sensor
- force sensors orientation to override board specific defaults
optional in config.h
- default ACC LPF factor reduced from 16 (2^4), and is share with ACC LPF for alt hold
- gyro/acc complementary filter value increased from 400 to 600
- gyro/mag complementary filter now set to 250 instead of 200
- gyro scale factor changed from 2380 to 2279
- accelerometer now used below 1.15G and above 0.85G instead of previous 1.4G/0.6G settings
- option: SENSORS_TILT_45DEG_LEFT/RIGHT to change X/P configuration without changing board orientation
- baro calibration and calculation is improved
baro indicates now altitude 0 when it is powered. This is the reference altitude.
- calculation of barometric altitude changed to include temperature, faster update rate
***internal improvements***
- some default PID were changed for optimization speed in PID copmputation.
The default PID should behave exactly as the previous ones.
To restore your old PID settings, just a proportion is needed.
- EEPROM settings secured by checksum (thanks to MIS)
- optional permanent logging to eeprom
setting: LOG_PERMANENT
- change LED blink frequency for acc-uncalibrated or tilt>25 from 50ms to 10ms
- allow override of motor/servo mixing from config.h - no need to edit Output.ino
experimental
- faster cycle time than with v2.1
- many many hidden optimizations in the code
V2.0 (全面用新架構 .ino 拿掉 .pde)
WMP and NUNCHUCK are no longer auto recognized.
You must explicitly declare them (or just WMP) in config.h
Pullups are now undefined by default
LCD is not activated by default
Failsafe is not activated by default
VBAT monitoring is not activted by default
Multiwii Serial Protocol
It’s a new protocol to communicate with the FC
Compatible GUI:
open source code, compatible with the new serial protocol:
WinGUI from EOSBandi, which is fully equivalent with the original one,
with a better look
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1229
mwGui from kos
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1791
Android ones via serial bluetooth:
- adding a bluetooth module to multiwii
more info here: http://www.multiwii.com/forum/viewtopic.php?f=6&t=133
compatible apps:
https://play.google.com/store/apps/details?id=net.xrotor.andmultiwiiconf
https://play.google.com/store/apps/details?id=net.loide.games.bicopter
https://play.google.com/store/apps/details?id=com.naze32.configurator
Compatible OSD:
open source code, compatible with the new serial protocol
Rushduino:
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=922
mobiDrone:
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1498
LCD config
OLED display
thanks to contributions of howardhb and Hamburger
more info here: http://www.multiwii.com/forum/viewtopic.php?f=7&t=1350
VT100 terminal type addition
thanks to contribution of Hamburger
more info here: http://www.multiwii.com/forum/viewtopic.php?f=7&t=1096
A multiline option is added to allow the configuration on more than 2 lines
useful for displays like OLED or VT100
We have now a lot of possibilities regarding LCD:
SERIAL3W : original 2x16 line from Sparkfun
TEXTSTAR : Cat’s Whisker LCD_TEXTSTAR Module CW-LCD-02
VT100 : vt100 compatible terminal
ETPP : Eagle Tree Power Panel LCD
LCD03 : an i2c LCD
OLED_I2C_128x64
New proc: ATmega32U4
Servo:
Higher refresh rate:
Some servo (mostly digital ones) can work with a higher frequency than 50Hz.
The benefit to use a higher refresh rate is a sharper response.
Hardware PWM output:
On MEGA boards, it’s now possible to drive the gimbal servos with
a 11-bit PWM servo resolution. Thanks to ronco.
The hardware PWM output ensures a jitter free response.
LED flasher
A way to set a flash LED sequence from Tommie
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1505
Throttle expo
There is now another curve in the GUI to configure the Throttle expo.
It’s a way to smooth the throttle stick response around the hover point.
In order to help the setting, there is a small cursor in the graph to show
where is the current throttle input.
ACC LEVEL improvement
The LEVE mode is improved since 2.0 thanks to new choice of
other complementary filter coefficients and a floating point low pass filter
Headfree checkbox:
It’s possible to reset the headfree direction while flying via a checkbox.
thanks to Tommie
Internal code:
- the Serial part uses now less RAM (thanks to Tommie first mod)
RX/TX buffers are smaller than before.
- EEPROM parameters are stored in a struct, and are written in the
EEPROM in a single step.
- MAG declination was added by EOSBandi, to have more accurate orientation.
In some countries, it’s really mandatory to set this variable right,
otherwise it’s impossible to use GPS.
- Flag var was introduced for global boolean type variables.
- Hamburger introduced some "copter exemple" in order to check
if compilation is ok. (should be a way to remove some trivial bugs)
- code style (indentation, variable naming convention etc.) started
- GUI requires new ControlP5 library to compile
- interval variable activate[] is now 16 bit long
- new config.h structure
GUI:
- thanks to Danal, there is now the PIN number and the propeller direction
drawed in the graph representation
- thanks to kos, we can now load and save parameters into a file
- there is now a reset button to set all parameters to default
- there is now a GUI visual feedback on all states (checkbox items)
ESC calibration
experimental
It’s a special #define which allows to calibrate all ESCs with exaclty
the same signal.
more info here: http://www.multiwii.com/forum/viewtopic.php?f=13&t=1517
Telemetry
new telemetry manual stepping mode
Arming option
configurable TX stick combos for arm/disarm
this way, it’s possible to arm/disarm the multi via:
- one AUX switch like before
- YAW stick and/or ROLL stick
AIRPLANE mode
experimental
HELICOPTER mode
experimental
Dual & Single copter
experimental
VTAIL mode
motor rotation has changed:
Front Left & Rear Right: CCW, Front Right & Rear Left: CW , YAW_DIRECTION=1
V1.9 (進入穩定 1.0 IDE 環境)
A new processor
Coded by ronco based on ATMega 32U4, which can be seen
as an intermediate proc between 328 and 2560
STM32 porting
A nice initiative from dongs to port multiwii to a 32bit processor.
This code allows also to reuse some cheap FC boards and replace the
firmware by a multiwii one.
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1193
http://code.google.com/p/afrodevices/
Stable mode
The term D of the PID LEVEL settings is now used to limit the effect
of the level correction thanks to the suggestion of Shikra
(see http://www.multiwii.com/forum/viewtopic.php?f=7&t=905 ).
By default (D=100), the behaviour of the stable mode is unchanged.
With a lower D, effects are:
- a smoothing level change
- should prevent some wobbles of death
HeadFree mode
Something similar to MK Carefree mode was added.
Firstly introduced by mahowik as a imple mode?
http://www.multiwii.com/forum/viewtopic.php?f=7&t=925
A specific check box was added in the GUI to activate this mode via a switch.
You need to have a magnetometer and accelerometer on the board
Principle: The head/front will be remembered when you turn on the engines.
So it means that you can turn on/off the mode during the flight.
Pass-through mode
It a checkbox in the GUI.
The purpose is to bypass the IMU for some configs like flying wings.
Beeper mode
It a checkbox in the GUI.
The purpose is to activate a beeper in case you have a buzzer
installed and you lost your multi in high grass for instance.
New stick combo
for magneto calibration (throttle=up yaw=right pitch=down)
Better magnetometer calibration
The calibration of the magnetometer is now more precise,
because it takes into account the relative strength of the magnitude
projection on each axis.
Based on a code suggested by EOSBandi:
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1068
It should improve the GPS return to target point accuracy.
Gyro smoothing
There are 2 options to smooth the gyros: (mainly useful for fixed wings configs)
- per axis based on a LPF: #define GYRO_SMOOTHING {20, 20, 3}
// separate averaging ranges for roll, pitch, yaw
- for all axis, based on a moving average (from Magnetron)
#define MMGYRO
#define MMGYROVECTORLENGHT 10
Servo gimbal smoothing is also an option based on the same principle:
#define MMSERVOGIMBAL
#define MMSERVOGIMBALVECTORLENGHT 32
Inflight ACC-calibration:
It a way to calibrate the level via on flight tests.
Must be defined in config.h
Coding specific improvements:
Less RAM memory usage via the use of PROGMEM statement
No more Arduino Serial function => the new serial communication is more efficient
V1.8
- some factorizations between PPM sum receiver code & standard receiver code
- EXPERIMENTAL: integration of direct SBUS receiver thanks to the contribution of Captain IxI & Zaggo
- LEVEL drift problem:
the root of this problem was identified (at least partly).
Several options to try to solve it:
- adding a #define TRUSTED_ACCZ for those who have huge ACC Z variations when some throttle is applied
(it’s a test you should do before tructing ACCZ)
//#define TRUSTED_ACCZ -> ACCZ is not taken into account in calculation for small angles
#define TRUSTED_ACCZ -> ACCZ is taken into account in calculation for small angles
- BMA180 init changes to another mode: should help to filter noisy setups
- adding a #define STAB_OLD_17 for those who still encounter problem with the stable code,
as the old 1.7 LEVEL code (less elaborated) doesn’t seem to cause drift.
- some flying wing code upgrade (thanks to the suggestion of Hamburger)
- ACC added: LSM303DLx_ACC
MAIN SOFT: introduction of a deadband around the stick center
via a #define DEADBAND. (commented by default)
it might help to get some accuracy from RC TX with not accurate potentiometers
however, as it introduces a central deadband, the TX trims are not efficient as before.
MAIN SOFT: new altitude hold
there is now a working implementation :)
thanks to ziss_dm, the estimation of the altitude is more precise.
the Z ACC is integrated in the alt hold estimation and helps a lot to estimate short term variation
how-to:
the multi must be nearly altitude stable before the activation of altitude hold.
a dead band is then created around the throttle value.
at every moment, it’s possible to still control the trhottle power when the throttle goes out of the deadband
this is not the best implemetation as the multi needs to be quite static before the activation, but it’s a good start.
There are 2 PIDS which are separated ans which can be used separatly.
ALT PID: better results are obtained with a P only term (P=4.7 I=0 D=0 is the default value)
VEL PID: it stands for velocity PID, more info here: (P=I=D=0 is the default value)
it should help to smooth every altitude varation
http://www.multiwii.com/forum/viewtopic.php?f=7&t=363
GUI: altitude representation
there is an autoscale feature in the GUI to see better the altitude variation.
GUI: introduction of MAG 3 axis raw values
MAIN SOFT: the failsafe function of the PPM sum receiver was a little mofified and can handle better
unusual signal patterns with short pulses.
V1.7
ALL: BARO is more precise, but still not perfect (1m to 2m amplitude).
Note it’s a code issue, not a baro component issue.
ALL: RC channels AUX2, CAM1 CAM2 added. only relevant for PPM SUM stream or MEGA boards.
On the 328p with a standard receiver, only the first 5 channels are recognized.
CAM1 and CAM2 controls are not yet implemented.
ALL: AUX1 and AUX2 switches are fully customizable via a 3 state position.
We can activate/deactivate individually level mode (ACC), baro or compass (mag).
It’s a generic approach which lets other possibilities to control things in the future.
With this principle, it’s possible to activate permanently the options you want even if you have only 4 channels
(replace the FORCE LEVEL option)
ALL: CAM triger option:
a servo can be connected on digital pin A2 (pro mini) to activate the trigger of a camera
the option can be activated or deactivated via the button configuration panel AUX1/AUX2
#define CAM_SERVO_HIGH 2000 // the position of HIGH state servo
#define CAM_SERVO_LOW 1020 // the position of LOW state servo
#define CAM_TIME_HIGH 1000 // the duration of HIGH state servo expressed in ms
#define CAM_TIME_LOW 1000 // the duration of LOW state servo expressed in ms
the PIN on arduino mega is also A2, but this is not the final PIN mapping
ALL CAM stab (servo tilt) button option:
the servo tilt option can be activated or deactivated via the button configuration panel AUX1/AUX2
ALL: BI COPTER is now a avatar style implementation.
on a pro mini: 9 motor left, 10 motor right, 11 servo left, 3 servo right
on mega: 3 motor left, 5 motor right, 6 servo left, 2 servo right
ALL: addition of Y4 (not tested)
on a pro mini: motors 9,10,11,3
on mega: motors 3,5,6,2
REAR1 , FRONT R , REAR2 , FRONT L
ALL: addition of HEX6X (not tested)
on a pro mini: motors 9,10,11,3,6,5
on mega: motors 3,5,6,2,7,8
REAR_R , FRONT_R , REAR_L , FRONT_L , RIGHT , LEFT
ALL: new level mode
The level mode is completely redesigned with a coherent independent trim
There a now a PI control loop for level mode based on angle estimation.
The old auto level strength value was a sort of P only control loop.
With the new code, the I term allows to refine the remaining angular error for a better angle positioning accuracy.
With an RC rate = 1, the angle at full stick is around 45deg => a flip should never happen in this mode.
MAIN SOFT: software trim for stable mode
It is now possible to adjust the trim of the level mode to match the same TX trim used for the acro mode.
1) disarm the motors
2) full throttle (must be >1900)
3) full PITCH forward/backward and full ROLL left/right (2 axis possibilities) will trim the level mode according to
the neutral angle you want to change. The status LED will blink to confirm each ticks.
MAIN SOFT: new calibration procedure
The ACC calibration differs now from the gyro calibration.
gyro calibration: it’s still done at each power on. It’s also possible manually as before: min throttle+full pitch
backward+full yaw left.
acc calibration: motor disarmed, full throttle up, full pitch backward+full yaw left.
MAIN SOFT: it was in 1.6 but not mentioned. it’s possible to arm/disarm motors
either via min throttle + full yaw stick or full roll stick.
MAIN SOFT: anti yaw jump modification for multi with 4 motors or more
MAIN SOFT: servo range for tricopter
#define TRI_YAW_CONSTRAINT_MIN 1020
#define TRI_YAW_CONSTRAINT_MAX 2000
MAIN SOFT: compass lock now works
the option can be activated or deactivated via the button configuration panel AUX1/AUX2
the lock is activated 1s after the stick release
the lock is maintained only if the YAW stick in centred +/- 50
In some case, especially with the 5883, the mag must be calibrated otherwise, the direction is not good.
The calibration procedure is not yet implemented.
GUI: 3D copter attitude visualization
GUI: ACC calibration. there is now a calibrate button to calibrate the ACC directly from the GUI
(it resets the soft trim)
GUI: thanks to Eberhard, better display of serial ports on Mac OS X and Linux
GUI: the memory leak bug GUI is corrected
GUI and LCD: D is now positive (to avoid confusion in explanations)
V1.6
PPM_SUM 19 (now separated from RC_THROTTLE assignment)
RC_THROTTLE 62 (=A8)
RC_ROLL 63 (=A9)
RC_PITCH 64 (=A10)
RC_YAW 65 (=A11)
RC_MODE 66 (=A12)
RC_AUX(not used) 67 (=A13)
RC_7(not used) 68 (=A14)
RC_8(not used) 69 (=A15)
I2C SDA 20
I2C SCL 21
FRONTMOTORPIN 2 (on 328p was 3) = servo for tricopter
REARMOTORPIN 3 (on 328p was 9)
RIGHTMOTORPIN 5 (on 328p was 10)
LEFTMOTORPIN 6 (on 328p was 11)
Y6RIGHT(HEXFRONT) 7 (on 328p was 6)
Y6LEFT(HEXREAR) 8 (on 328p was 5)
V_BAT_MONITOR A3
TILT&GIMBAL&WING A0/A1
POWERPIN 12
V1.4:
Serial PPM (PPM SUM):
more explanation on //#define SERIAL_SUM_PPM
only one line to comment/uncomment in order to activate it
a bug was corrected about the number of channel
new calibration approach
at each initialization:
the gyro calibration is done
the acc calibration is done only for a pure gimbal setup
for other setups, the acc is retrieved from the EEPROM
on demand (via full left yaw stick + full pitch low stick):
the gyro calibration is done
the acc calibration is done and store in the EERPOM
=> the acc calibration must be done at least once on demand.
autolevel strength: the last range was [0;10]. The new range is [0;25]
with a reduction weight of 2.5 => more precision for tunning.
http://www.youtube.com/watch?v=qpoPanmVa9Y
*
http://www.youtube.com/watch?v=hPj6WZex8j0
*
http://www.youtube.com/watch?v=nPICiiaDTnc
***multiwii models***
- USE_THROTTLESERVO (for airplanes), COLLECTIVE_RANGE changed (second value not offset anymore)
***IMU and baro***
- gyro calibration could be held until the MWC stops moving
introduced by MIS, and made optional after via a specific define:?define GYROCALIBRATIONFAILSAFE
- mag gain calibration is improved thanks to EOSBandi
based on Fabio FreeIMU code. We won’t forget you Fabio...
- perfect euler angle computation in case of 9DOF (better heading)
no more gimbal lock in GUI representation with a 9DOF sensor
- force sensors orientation to override board specific defaults
optional in config.h
- default ACC LPF factor reduced from 16 (2^4), and is share with ACC LPF for alt hold
- gyro/acc complementary filter value increased from 400 to 600
- gyro/mag complementary filter now set to 250 instead of 200
- gyro scale factor changed from 2380 to 2279
- accelerometer now used below 1.15G and above 0.85G instead of previous 1.4G/0.6G settings
- option: SENSORS_TILT_45DEG_LEFT/RIGHT to change X/P configuration without changing board orientation
- baro calibration and calculation is improved
baro indicates now altitude 0 when it is powered. This is the reference altitude.
- calculation of barometric altitude changed to include temperature, faster update rate
***internal improvements***
- some default PID were changed for optimization speed in PID copmputation.
The default PID should behave exactly as the previous ones.
To restore your old PID settings, just a proportion is needed.
- EEPROM settings secured by checksum (thanks to MIS)
- optional permanent logging to eeprom
setting: LOG_PERMANENT
- change LED blink frequency for acc-uncalibrated or tilt>25 from 50ms to 10ms
- allow override of motor/servo mixing from config.h - no need to edit Output.ino
experimental
- faster cycle time than with v2.1
- many many hidden optimizations in the code
V2.0 (全面用新架構 .ino 拿掉 .pde)
WMP and NUNCHUCK are no longer auto recognized.
You must explicitly declare them (or just WMP) in config.h
Pullups are now undefined by default
LCD is not activated by default
Failsafe is not activated by default
VBAT monitoring is not activted by default
Multiwii Serial Protocol
It’s a new protocol to communicate with the FC
Compatible GUI:
open source code, compatible with the new serial protocol:
WinGUI from EOSBandi, which is fully equivalent with the original one,
with a better look
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1229
mwGui from kos
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1791
Android ones via serial bluetooth:
- adding a bluetooth module to multiwii
more info here: http://www.multiwii.com/forum/viewtopic.php?f=6&t=133
compatible apps:
https://play.google.com/store/apps/details?id=net.xrotor.andmultiwiiconf
https://play.google.com/store/apps/details?id=net.loide.games.bicopter
https://play.google.com/store/apps/details?id=com.naze32.configurator
Compatible OSD:
open source code, compatible with the new serial protocol
Rushduino:
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=922
mobiDrone:
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1498
LCD config
OLED display
thanks to contributions of howardhb and Hamburger
more info here: http://www.multiwii.com/forum/viewtopic.php?f=7&t=1350
VT100 terminal type addition
thanks to contribution of Hamburger
more info here: http://www.multiwii.com/forum/viewtopic.php?f=7&t=1096
A multiline option is added to allow the configuration on more than 2 lines
useful for displays like OLED or VT100
We have now a lot of possibilities regarding LCD:
SERIAL3W : original 2x16 line from Sparkfun
TEXTSTAR : Cat’s Whisker LCD_TEXTSTAR Module CW-LCD-02
VT100 : vt100 compatible terminal
ETPP : Eagle Tree Power Panel LCD
LCD03 : an i2c LCD
OLED_I2C_128x64
New proc: ATmega32U4
Servo:
Higher refresh rate:
Some servo (mostly digital ones) can work with a higher frequency than 50Hz.
The benefit to use a higher refresh rate is a sharper response.
Hardware PWM output:
On MEGA boards, it’s now possible to drive the gimbal servos with
a 11-bit PWM servo resolution. Thanks to ronco.
The hardware PWM output ensures a jitter free response.
LED flasher
A way to set a flash LED sequence from Tommie
more info here: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1505
Throttle expo
There is now another curve in the GUI to configure the Throttle expo.
It’s a way to smooth the throttle stick response around the hover point.
In order to help the setting, there is a small cursor in the graph to show
where is the current throttle input.
ACC LEVEL improvement
The LEVE mode is improved since 2.0 thanks to new choice of
other complementary filter coefficients and a floating point low pass filter
Headfree checkbox:
It’s possible to reset the headfree direction while flying via a checkbox.
thanks to Tommie
Internal code:
- the Serial part uses now less RAM (thanks to Tommie first mod)
RX/TX buffers are smaller than before.
- EEPROM parameters are stored in a struct, and are written in the
EEPROM in a single step.
- MAG declination was added by EOSBandi, to have more accurate orientation.
In some countries, it’s really mandatory to set this variable right,
otherwise it’s impossible to use GPS.
- Flag var was introduced for global boolean type variables.
- Hamburger introduced some "copter exemple" in order to check
if compilation is ok. (should be a way to remove some trivial bugs)
- code style (indentation, variable naming convention etc.) started
- GUI requires new ControlP5 library to compile
- interval variable activate[] is now 16 bit long
- new config.h structure
GUI:
- thanks to Danal, there is now the PIN number and the propeller direction
drawed in the graph representation
- thanks to kos, we can now load and save parameters into a file
- there is now a reset button to set all parameters to default
- there is now a GUI visual feedback on all states (checkbox items)
ESC calibration
experimental
It’s a special #define which allows to calibrate all ESCs with exaclty
the same signal.
more info here: http://www.multiwii.com/forum/viewtopic.php?f=13&t=1517
Telemetry
new telemetry manual stepping mode
Arming option
configurable TX stick combos for arm/disarm
this way, it’s possible to arm/disarm the multi via:
- one AUX switch like before
- YAW stick and/or ROLL stick
AIRPLANE mode
experimental
HELICOPTER mode
experimental
Dual & Single copter
experimental
VTAIL mode
motor rotation has changed:
Front Left & Rear Right: CCW, Front Right & Rear Left: CW , YAW_DIRECTION=1
V1.9 (進入穩定 1.0 IDE 環境)
A new processor
Coded by ronco based on ATMega 32U4, which can be seen
as an intermediate proc between 328 and 2560
STM32 porting
A nice initiative from dongs to port multiwii to a 32bit processor.
This code allows also to reuse some cheap FC boards and replace the
firmware by a multiwii one.
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1193
http://code.google.com/p/afrodevices/
Stable mode
The term D of the PID LEVEL settings is now used to limit the effect
of the level correction thanks to the suggestion of Shikra
(see http://www.multiwii.com/forum/viewtopic.php?f=7&t=905 ).
By default (D=100), the behaviour of the stable mode is unchanged.
With a lower D, effects are:
- a smoothing level change
- should prevent some wobbles of death
HeadFree mode
Something similar to MK Carefree mode was added.
Firstly introduced by mahowik as a imple mode?
http://www.multiwii.com/forum/viewtopic.php?f=7&t=925
A specific check box was added in the GUI to activate this mode via a switch.
You need to have a magnetometer and accelerometer on the board
Principle: The head/front will be remembered when you turn on the engines.
So it means that you can turn on/off the mode during the flight.
Pass-through mode
It a checkbox in the GUI.
The purpose is to bypass the IMU for some configs like flying wings.
Beeper mode
It a checkbox in the GUI.
The purpose is to activate a beeper in case you have a buzzer
installed and you lost your multi in high grass for instance.
New stick combo
for magneto calibration (throttle=up yaw=right pitch=down)
Better magnetometer calibration
The calibration of the magnetometer is now more precise,
because it takes into account the relative strength of the magnitude
projection on each axis.
Based on a code suggested by EOSBandi:
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1068
It should improve the GPS return to target point accuracy.
Gyro smoothing
There are 2 options to smooth the gyros: (mainly useful for fixed wings configs)
- per axis based on a LPF: #define GYRO_SMOOTHING {20, 20, 3}
// separate averaging ranges for roll, pitch, yaw
- for all axis, based on a moving average (from Magnetron)
#define MMGYRO
#define MMGYROVECTORLENGHT 10
Servo gimbal smoothing is also an option based on the same principle:
#define MMSERVOGIMBAL
#define MMSERVOGIMBALVECTORLENGHT 32
Inflight ACC-calibration:
It a way to calibrate the level via on flight tests.
Must be defined in config.h
Coding specific improvements:
Less RAM memory usage via the use of PROGMEM statement
No more Arduino Serial function => the new serial communication is more efficient
V1.8
- some factorizations between PPM sum receiver code & standard receiver code
- EXPERIMENTAL: integration of direct SBUS receiver thanks to the contribution of Captain IxI & Zaggo
- LEVEL drift problem:
the root of this problem was identified (at least partly).
Several options to try to solve it:
- adding a #define TRUSTED_ACCZ for those who have huge ACC Z variations when some throttle is applied
(it’s a test you should do before tructing ACCZ)
//#define TRUSTED_ACCZ -> ACCZ is not taken into account in calculation for small angles
#define TRUSTED_ACCZ -> ACCZ is taken into account in calculation for small angles
- BMA180 init changes to another mode: should help to filter noisy setups
- adding a #define STAB_OLD_17 for those who still encounter problem with the stable code,
as the old 1.7 LEVEL code (less elaborated) doesn’t seem to cause drift.
- some flying wing code upgrade (thanks to the suggestion of Hamburger)
- ACC added: LSM303DLx_ACC
MAIN SOFT: introduction of a deadband around the stick center
via a #define DEADBAND. (commented by default)
it might help to get some accuracy from RC TX with not accurate potentiometers
however, as it introduces a central deadband, the TX trims are not efficient as before.
MAIN SOFT: new altitude hold
there is now a working implementation :)
thanks to ziss_dm, the estimation of the altitude is more precise.
the Z ACC is integrated in the alt hold estimation and helps a lot to estimate short term variation
how-to:
the multi must be nearly altitude stable before the activation of altitude hold.
a dead band is then created around the throttle value.
at every moment, it’s possible to still control the trhottle power when the throttle goes out of the deadband
this is not the best implemetation as the multi needs to be quite static before the activation, but it’s a good start.
There are 2 PIDS which are separated ans which can be used separatly.
ALT PID: better results are obtained with a P only term (P=4.7 I=0 D=0 is the default value)
VEL PID: it stands for velocity PID, more info here: (P=I=D=0 is the default value)
it should help to smooth every altitude varation
http://www.multiwii.com/forum/viewtopic.php?f=7&t=363
GUI: altitude representation
there is an autoscale feature in the GUI to see better the altitude variation.
GUI: introduction of MAG 3 axis raw values
MAIN SOFT: the failsafe function of the PPM sum receiver was a little mofified and can handle better
unusual signal patterns with short pulses.
V1.7
ALL: BARO is more precise, but still not perfect (1m to 2m amplitude).
Note it’s a code issue, not a baro component issue.
ALL: RC channels AUX2, CAM1 CAM2 added. only relevant for PPM SUM stream or MEGA boards.
On the 328p with a standard receiver, only the first 5 channels are recognized.
CAM1 and CAM2 controls are not yet implemented.
ALL: AUX1 and AUX2 switches are fully customizable via a 3 state position.
We can activate/deactivate individually level mode (ACC), baro or compass (mag).
It’s a generic approach which lets other possibilities to control things in the future.
With this principle, it’s possible to activate permanently the options you want even if you have only 4 channels
(replace the FORCE LEVEL option)
ALL: CAM triger option:
a servo can be connected on digital pin A2 (pro mini) to activate the trigger of a camera
the option can be activated or deactivated via the button configuration panel AUX1/AUX2
#define CAM_SERVO_HIGH 2000 // the position of HIGH state servo
#define CAM_SERVO_LOW 1020 // the position of LOW state servo
#define CAM_TIME_HIGH 1000 // the duration of HIGH state servo expressed in ms
#define CAM_TIME_LOW 1000 // the duration of LOW state servo expressed in ms
the PIN on arduino mega is also A2, but this is not the final PIN mapping
ALL CAM stab (servo tilt) button option:
the servo tilt option can be activated or deactivated via the button configuration panel AUX1/AUX2
ALL: BI COPTER is now a avatar style implementation.
on a pro mini: 9 motor left, 10 motor right, 11 servo left, 3 servo right
on mega: 3 motor left, 5 motor right, 6 servo left, 2 servo right
ALL: addition of Y4 (not tested)
on a pro mini: motors 9,10,11,3
on mega: motors 3,5,6,2
REAR1 , FRONT R , REAR2 , FRONT L
ALL: addition of HEX6X (not tested)
on a pro mini: motors 9,10,11,3,6,5
on mega: motors 3,5,6,2,7,8
REAR_R , FRONT_R , REAR_L , FRONT_L , RIGHT , LEFT
ALL: new level mode
The level mode is completely redesigned with a coherent independent trim
There a now a PI control loop for level mode based on angle estimation.
The old auto level strength value was a sort of P only control loop.
With the new code, the I term allows to refine the remaining angular error for a better angle positioning accuracy.
With an RC rate = 1, the angle at full stick is around 45deg => a flip should never happen in this mode.
MAIN SOFT: software trim for stable mode
It is now possible to adjust the trim of the level mode to match the same TX trim used for the acro mode.
1) disarm the motors
2) full throttle (must be >1900)
3) full PITCH forward/backward and full ROLL left/right (2 axis possibilities) will trim the level mode according to
the neutral angle you want to change. The status LED will blink to confirm each ticks.
MAIN SOFT: new calibration procedure
The ACC calibration differs now from the gyro calibration.
gyro calibration: it’s still done at each power on. It’s also possible manually as before: min throttle+full pitch
backward+full yaw left.
acc calibration: motor disarmed, full throttle up, full pitch backward+full yaw left.
MAIN SOFT: it was in 1.6 but not mentioned. it’s possible to arm/disarm motors
either via min throttle + full yaw stick or full roll stick.
MAIN SOFT: anti yaw jump modification for multi with 4 motors or more
MAIN SOFT: servo range for tricopter
#define TRI_YAW_CONSTRAINT_MIN 1020
#define TRI_YAW_CONSTRAINT_MAX 2000
MAIN SOFT: compass lock now works
the option can be activated or deactivated via the button configuration panel AUX1/AUX2
the lock is activated 1s after the stick release
the lock is maintained only if the YAW stick in centred +/- 50
In some case, especially with the 5883, the mag must be calibrated otherwise, the direction is not good.
The calibration procedure is not yet implemented.
GUI: 3D copter attitude visualization
GUI: ACC calibration. there is now a calibrate button to calibrate the ACC directly from the GUI
(it resets the soft trim)
GUI: thanks to Eberhard, better display of serial ports on Mac OS X and Linux
GUI: the memory leak bug GUI is corrected
GUI and LCD: D is now positive (to avoid confusion in explanations)
V1.6
PPM_SUM 19 (now separated from RC_THROTTLE assignment)
RC_THROTTLE 62 (=A8)
RC_ROLL 63 (=A9)
RC_PITCH 64 (=A10)
RC_YAW 65 (=A11)
RC_MODE 66 (=A12)
RC_AUX(not used) 67 (=A13)
RC_7(not used) 68 (=A14)
RC_8(not used) 69 (=A15)
I2C SDA 20
I2C SCL 21
FRONTMOTORPIN 2 (on 328p was 3) = servo for tricopter
REARMOTORPIN 3 (on 328p was 9)
RIGHTMOTORPIN 5 (on 328p was 10)
LEFTMOTORPIN 6 (on 328p was 11)
Y6RIGHT(HEXFRONT) 7 (on 328p was 6)
Y6LEFT(HEXREAR) 8 (on 328p was 5)
V_BAT_MONITOR A3
TILT&GIMBAL&WING A0/A1
POWERPIN 12
V1.4:
Serial PPM (PPM SUM):
more explanation on //#define SERIAL_SUM_PPM
only one line to comment/uncomment in order to activate it
a bug was corrected about the number of channel
new calibration approach
at each initialization:
the gyro calibration is done
the acc calibration is done only for a pure gimbal setup
for other setups, the acc is retrieved from the EEPROM
on demand (via full left yaw stick + full pitch low stick):
the gyro calibration is done
the acc calibration is done and store in the EERPOM
=> the acc calibration must be done at least once on demand.
autolevel strength: the last range was [0;10]. The new range is [0;25]
with a reduction weight of 2.5 => more precision for tunning.
2014/12/10
| 機架 | 飛控板 | MCU | 韌體 | 電變 | 馬達 | 遙控裝置 | 組員 | 電池 | |
| 四軸 X | 現成鋁製機架 | Multiwii lite | Atmega 328 | Open Source | ? | ? | DEVO 7 | Frank, 建評 | ? |
| 四軸 X | X525 V3 | Arduino + 外掛Sensor | Atmega 328 | Open Source | 好盈 Sky Walker Quattro 20A | 新西達 A2212 1000KV | 手機+藍牙 | 竑傑 | 30C 4200 mah 3S |
| Bicopter | 碳纖管、鋁件、塑膠件自己印 | Arduino + 外掛Sensor | Atmega 328 | Open Source | SimonK 30A | 2212 1400KV | 手機+藍牙 | 國俊 | ? |
| 四軸 (小) | 現成小型機架 | 現成新唐系列 | 新唐 | ? | ? | ? | ? | Eric | ? |
3. 其他記錄事項
2014/12/17
用 MultiWii 造小四軸
製作小型的飛行器優點是利於在室內飛行和測試。
飛控板: Arduino Pro Mini + MPU 6050 (自己組裝。會需要一個FTDI)
馬達:716 空心杯( 3.7V~4.2V , 3.7V裝上46mm螺旋槳後,22000RPM, 0.85A)
遙控器:Andriod 手機( APP自己寫)
遙控接收器:用另外一個 Arduino Pro Mini + SC-06 BT module
機架:自行設計,3D列印
--
一個716空心杯馬達+46mm的小槳,4V(約0.7A)時只能提供18~20克的推力。所以想要作小四軸,自己用breakout boards組裝,因為重量的因素是很難達成的。
所以市售的小四軸套件,都非常精減。
有看到有賣家賣現成的 Arduino+ MPU6050
http://goods.ruten.com.tw/item/show?21406221499167
如果還是想要DIY
方法1:用減速齒輪降低轉速,然後換成5吋的槳,推力大約可以提升到35~40克。去玩具店觀察5吋槳的小四軸,就是用這種方式。
方法2:選用比較小的無刷馬達(會在2000KV以上),用5吋的槳。這樣的組合推力遠高於方法一。
2015/1/14
2015/1/21