MultiWii

Nesenin

то то и оно. для сонара HC-SR04 переходник на i2c с применением ATTiny2313 давно придуман и данные с него корректно идут (проверял на промежуточных прошивках до 2.2), а в расчете ALT HOLD его нет и это печаль. в то время как вариант кода под multiwii с сонаром давно лежит у alexmos code.google.com/p/multiwii-alexmos/…/list под новые версии он не стал делать, по понятным причинам (см. его тема с подвесами). не понятно почему в официальные версии не добавили.

у alexmos в его прошивках даже optical flow реализован. см. видео годичной давности (26.03.2012) вообще не понятно почему официальные сборки игнорируют все эти нужные вещи.

Олег24
Nesenin:

то то и оно. для сонара HC-SR04 переходник на i2c с применением ATTiny2313 давно придуман и данные с него корректно идут (проверял на промежуточных прошивках до 2.2), а в расчете ALT HOLD его нет и это печаль. в то время как вариант кода под multiwii с сонаром давно лежит у alexmos code.google.com/p/multiwii-a...downloads/list под новые версии он не стал делать, по понятным причинам (см. его тема с подвесами). не понятно почему в официальные версии не добавили.

у alexmos в его прошивках даже optical flow реализован. см. видео годичной давности (26.03.2012) вообще не понятно почему официальные сборки игнорируют все эти нужные вещи.

+1000

DVE
Dmb89:

На официальном сайте выложили релиз версию 2.2
code.google.com/p/multiwii/downloads/detail?name=M…=

Список изменений довольно большой

main changes since the last release 2.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. (thanks to MIS)
    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 by PatrikE
    a kind of non proportional horizon mode
    more info here: viewtopic.php?f=16&t=1944

  • SERVO_TILT_MIX
    introduced by Bledi and Gary

corrected after to support optionally up to 2 AUX channels superposition to control the gimbal

  • CAM STAB: (thanks to Gary and suggested or Arne)
    Ability to define Cam Stab control channels used
    Ability to turn off
    Fix for AUX3 + 4 affecting tilt/roll with camstab enabled

***add-ons***

  • pilotlamp integration (thanks to mr.rc-cam, jevermeister, doughboy )
    via #define PILOTLAMP
    code.google.com/p/multiwii/wiki/ … _Pilotlamp

  • LEDRING pattern was refined thanks to shikra
    instructions here: code.google.com/p/multiwii/sourc … README.txt

  • variometer introduced by Hamburger
    enable to get audio feedback upon rising/falling copter/plane
    via #define VARIOMETER

***receiver & UART***

  • option to use throttle PIN as the PPM PIN on mega boards thanks to MIS
    this way you can use the UART 1 for other purpose
    via #define PPM_ON_THROTTLE

  • every UART port on MEGA boards can be used at the same time with different baud configuration.
    ie, you can connect up to 4 GUI or OSD or anything using MSP simultaneously

  • the second UART port on promicro boards can be used at the same time with different baud configuration.

  • spektrum (thanks to Danal)

  • spektrum satellite up to 12 channels, even if only 8 are usable in multiwii

  • spektrum satellite BIND button, to associate a satellite without the main receiver

***PIN mapping***

  • possibility to override some PIN definition in config.h (thanks to Hamburger)

***GPS***

  • UBLOX GPS: the baud configuration is autodetected and the UBLOX binary protocol is automaticly set (thanks to MIS & EOSBandi)

  • 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: viewtopic.php?f=8&t=2034
    some video about this functionality:

  • AP_MODE introduced by PatrikE
    used in GPS POS HOLD mode, outside the specified stick range the POS HOLD position is renew

***multiwii models***

  • HELICOPTER and PLANE models was refined thanks to PatrickE and Hamburger
    multiple helicopter type HELI_120_CCPM , HELI_90_DEG
    servo configuration for plane, FLAP, FLAPPERON

  • HEXH6 multicopter type added (thanks to shikra)

  • Bi-Copter pitch direction setting

  • USE_THROTTLESERVO (for airplanes), COLLECTIVE_RANGE changed (second value not offset anymore)

***GUI & OSD & LCD***

  • a RECONNECT button was added by PatrickE
    a file is now generated to indicate the last COM&Serial speed. The serial speed can be edited in this file to change the UART speed of GUI.

  • New MultiWiiConf GUI v2.2 with graphical improvements (thanks to Magnetron and doughboy)
    cool things like virtual horizon

  • optional 3 independent configurations, stick selectable settings in EEPROM (thanks to MIS)
    can be activated via #define MULTIPLE_CONFIGURATION_PROFILES

  • a RESET button was added in the GUI
    if you encounter any EEPROM problem or if you want to restore the default values

***LCD***

  • on mega boards, it’s possible to define the LCD port for LCD supporting true UART.

  • more parameters are tunable via LCD conf, all the one in config.h with a small (*) besides, thanks to Hamburger
    those parameters will be moved in the GUI later in another step, once we find the good way to do it.
    example: failsave.throttle , vbat tunable params , powermeter tunable params

  • many telemetry and LCD config enhancements (thanks to hamburger)
    telemetry page 3: use long boxnames
    telemetry page 2: show numerical values for sensor data next to bar graphs
    no user interaction necessary to run telemetry info upon start up
    set individual board name string (currently used for display; no GUI representation yet)

  • LCDconfig menu: with THROTTLE=High, increment is 10 times of normal

  • servos are moved to neutral position during calibration and lcd.configuration

***OSD***

  • RSSI PIN added for OSD use (thanks to Kataventos)
    the RSSI output can be retrieved via a MSP message for OSD

  • OSD BOX added for OSD activation (thanks to Itai)

  • huge work made on an open source code OSD fully compatible with MultiWii (thanks to the team lead by Kataventos)
    viewtopic.php?f=8&t=2918
    code.google.com/p/rush-osd-development/

***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

  • ALT HOLD is greatly improved thanks to the code of Mahowik, a little bit optimized since
    improved baro hold (PID) algorithm that includes the accelerometer z-axis
    its a real major improvement for multiwii

  • baro calibration and calculation is improved thanks to Sebbi
    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

  • new FC boards: SIRIUSGPS, SIRIUS_AIR, SIRIUS_AIR_GPS, MICROWII, GY_521, MultiWiiMega, DESQUARED6DOFV2GO, DESQUARED6DOFV4, LADYBIRD, MEGAWAP_V2_STD, MEGAWAP_V2_ADV, HK_MultiWii_SE_V2, HK_MultiWii_328P, RCNet_FC, FLYDU_ULTRA

***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.

  • 5 hardware PWM servos avaliable with Mega boards on pins 44,45,46,11,12 (thanks to MIS)

  • 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

  • rework of task scheduler code thanks to ideas from Sebbi
    we have now a better computation time repartition

  • optional fixate cycle time (by burning cpu time away)

  • 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

Пчёл=

Как правильно настроить плату multiwii 328p от HK ?
Уж весь мозг себе изъел плин, в голове уже все перепуталось, изначально хотел перепрошить под гексу, теперь имею не запускающиюся плату , как уложил сам не понял, вчера пробовал после редактирования с помощью программы ардуино , залил файл ,все прошло успешно но , плата так и не заводится,(может не верно что то делаю) где то видел инфу но найти тяжко уж больно много перелопатил пока разобрался что к чему, сейчас имею при подключению к программе мультивий синий светодиод мигает несколько раз вместо двух мигающий -подтверждающих обмен по шине мигает только один.
подскажите где мой косяк и как вылезти из этого.

Raptor_SK
Пчёл=:

подскажите где мой косяк и как вылезти из этого.

Для начала: как подключен приемник?
Стоит ли перемычка sat/usb и как?
Скачай последний релиз Вия, раскомментируй свою плату, тип коптера…

//#define HEX6
#define HEX6X
//#define HEX6H // New Model

//#define HK_MultiWii_SE_V2 // Hobbyking board with MPU6050 + HMC5883L + BMP085
#define HK_MultiWii_328P // Also labeled “Hobbybro” on the back. ITG3205 + BMA180 + BMP085 + NMC5583L + DSM2 Connector (Spektrum Satellite)
//#define RCNet_FC

Для обычного приемника:

/* PIN A0 and A1 instead of PIN D5 & D6 for 6 motors config and promini config
This mod allow the use of a standard receiver on a pro mini
(no need to use a PPM sum receiver) */
#define A0_A1_PIN_HEX

/********************************* Aux 2 Pin ***********************************/
/* possibility to use PIN8 or PIN12 as the AUX2 RC input (only one, not both)
it deactivates in this case the POWER PIN (pin 12) or the BUZZER PIN (pin 8) */
#define RCAUXPIN8
//#define RCAUXPIN12

Еще возможно надо будет настроить фалсейв…
Да, во вкладке Output поменять миксы моторов на:

#ifdef HEX6X
motor[0] = PIDMIX(-4/5,+9/10,+1); //REAR_R
motor[1] = PIDMIX(-4/5,-9/10,+1); //FRONT_R
motor[2] = PIDMIX(+4/5,+9/10,-1); //REAR_L
motor[3] = PIDMIX(+4/5,-9/10,-1); //FRONT_L
motor[4] = PIDMIX(-4/5 ,+0 ,-1); //RIGHT
motor[5] = PIDMIX(+4/5 ,+0 ,+1); //LEFT
#endif

(спасибо Александру mahowik)
Вроде все…

Пчёл=

Многое прояснили ,Спасибо большое, ещё не понял как раскомментировать саму плату, приемник обычный перемычка стоит на usb , до того как накосячил плата активировалась без проблем с пульта( арминг- дизарминг)теперь молчит.
тип коптера нашел ранее ка выбрать, у меня сейчас прога multiwii conf не видит плату ,в ардуино выставлял duemilanove w/atmega328 , да последний релиз скачал его и пытаюсь воткнуть , после редактирования нажимаю verify/compile в скече , запись проходит без ошибок, плату все равно не видно

mahowik
DVE:
  • ALT HOLD is greatly improved thanks to the code of Mahowik, a little bit optimized since
    improved baro hold (PID) algorithm that includes the accelerometer z-axis
    its a real major improvement for multiwii

Это мой старый зачаточный АХ, который был в первых бетах (ранее распространявшихся) + простой регулятор высоты со свободным газом. Т.е. никакой заданной регулировки скорости (через отдельный пид регуль), автокалибровки газа висения (+ компенсации на просадку батареи соот-но) и независимости от конфига тама нет. Взлетать-садиться в альтхолде ясное дело не умеет…
А последние вкусности пока в RC1 и RC2.

Raptor_SK
Пчёл=:

ещё не понял как раскомментировать саму плату,

Твоя плата: 😃

//#define HK_MultiWii_SE_V2 // Hobbyking board with MPU6050 + HMC5883L + BMP085
#define HK_MultiWii_328P // Also labeled “Hobbybro” on the back. ITG3205 + BMA180 + BMP085 + NMC5583L + DSM2 Connector (Spektrum Satellite)
//#define RCNet_FC // RCNet FC with MPU6050 and MS561101BA www.rcnet.com

Пчёл=:

,в ардуино выставлял duemilanove w/atmega328 ,

Ставь Arduino Nano ATmega328… И используй последнюю версию ГУИ…
P.S. На прошлой неделе я отдал челу хексу на такой плате… прекрасно летает.
P.P.S. Проверь шнур/разъем USB - у меня на одной такой плате были из за этого проблемы, пропаивал разъем на плате…

dROb
dROb:

В общем буду разбираться - хочу запитать мозг от отдельного BEC, потом махнуть мозг на другой, ну и т.п…
Но если у кого было так же, - напишите в чём была причина и удалось ли побороть.

Победил гулянку сервы запитыванием платы от отдельного BEC. Видимо в момент щелчков, происходила просадка по питанию, и плата подглючивала.
Щелчки не победил - видимо надо прошиваться SimonK

Между тем - напомните, плз, какой параметр PID для Pitch и Roll надо крутить, если наблюдается сложность удержания высоты? (без Altitute Hold). I по-моему, но вот в какую сторону крутить - не припомню…

mahowik
dROb:

какой параметр PID для Pitch и Roll надо крутить, если наблюдается сложность удержания высоты? (без Altitute Hold).

пиды тут ни при чем… надо настроить экспоненту газа под свой коптер… сделать это можно либо в аппе, либо в ГУИ вия, НО не там и там!
удобнее так, в аппе отрубаем, а в ГУИ выставляем EXPO=0.25-0.35. Более 0.35 не советую выставлять, т.к. газ совсем дубовый становиться.

  • середину выставляем (в ГУИ это MID). Середина - примерная точка висения. Примерная, т.к. с просадкой батареи она убегает на 50…100 единиц…
Alexsis1109

Всем доброго времени суток! Кто-нибудь самостоятельно писал код для обработки ШИМа РРМ сигнала на контроллере Atmega? Я пытаюсь написать на Atmega128

mataor
Alexsis1109:

Кто-нибудь самостоятельно писал код для обработки ШИМа РРМ сигнала на контроллере Atmega? Я пытаюсь написать на Atmega128

блин… в одной теме тебе кучу вариантов предложили, а ты еще сюда полез. лезеш в исходники вия, конкретно в RX.ino - там все есть. Единственно тебе придется выдрать из ардуино и переделать для 128-й меги таймер системного времени и процедурку micros. Вперед.

Alexsis1109
mataor:

Единственно тебе придется выдрать из ардуино и переделать для 128-й меги таймер системного времени и процедурку micros. Вперед.

легко сказать выдерни и переделай когда все понимаешь. я прошу просто для начала с таймером помочь разобрать, неужели так трудно помочь?

mataor

во первых - вопрос не для этой ветки.
во вторых - почему 128-я мега?
по обработке приемника неудобна - мало входов прерываний - всего 8, если использовать приемник с PPMSUM то норм (по одному проводу где), иначе все ноги входов прерываний нужно задействовать.
по таймеру: так и не сказали какой кварц?
настройка таймера по даташиту легко делается:
TCCR0 - установкой битов CS00-CS02 предделитель таймера
TCNT0 - сюда загружаем счетчик сколько считаем, в прерывании записываем значение вновь
TIMSK - устанавливаем бит TOIE0
для примера при кварце 16МГц предделитель 0 (CS00 = 1) TCNT0 = (255-16) будет прерывание 1 раз в 1 мкс, но имхо так делать не стоит - почти половину времени (зависит от внутренности прерывание) процессор будет уделять только таймеру.

Еще раз говорю - смотрите исходники библиотек ардуино.
Мне тоже пришлось много ковыряться, зато сейчас имею успешно работающий порт мультивия на atXmega, а там отличий намного поболее было

Alexsis1109
mataor:

для примера при кварце 16МГц предделитель 0 (CS00 = 1) TCNT0 = (255-16) будет прерывание 1 раз в 1 мкс, но имхо так делать не стоит - почти половину времени (зависит от внутренности прерывание) процессор будет уделять только таймеру.

вот и у меня, когда я пытаюсь сделать его быстрее 5мкс, он зависает, видимо не успевает просто сам себя обработать. кварц 14.7456 МГц.

mataor:

Еще раз говорю - смотрите исходники библиотек ардуино.

какие именно библиотеки использовать, не подскажите?

mataor:

во вторых - почему 128-я мега?

в основном, потому, что у нее 8 аппаратных шимов и 2 уарта

mataor

а у меня 22 шима и 7 уартов окромя остальной кучи периферии)))
arduino-1.0.1\hardware\arduino\cores\arduino\ оттуда в данный момент вам нужна wiring.c - копайтесь в ней…
примите за правило - в прерывании МИЗЕР кода.

Alexsis1109
mataor:

а у меня 22 шима и 7 уартов окромя остальной кучи периферии)))

ого, круто, а atXmega у вас какая, 64-ая?

mataor:

примите за правило - в прерывании МИЗЕР кода.

да, это правило я хорошо знаю)

mataor
Alexsis1109:

ого, круто, а atXmega у вас какая?

MultiWii на atxmega (не arduino) лучше уж спрашивай там… в ближайшее время собираюсь кучку информации по текущему состоянию выложить, ато подзаглохла темка - полусырое выкладывать как то не могу.

Alexsis1109
mataor:

MultiWii на atxmega (не arduino) лучше уж спрашивай там…

договорились

dROb
mahowik:

пиды тут ни при чем… надо настроить экспоненту газа под свой коптер… сделать это можно либо в аппе, либо в ГУИ вия, НО не там и там!
удобнее так, в аппе отрубаем, а в ГУИ выставляем EXPO=0.25-0.35. Более 0.35 не советую выставлять, т.к. газ совсем дубовый становиться.

  • середину выставляем (в ГУИ это MID). Середина - примерная точка висения. Примерная, т.к. с просадкой батареи она убегает на 50…100 единиц…

Вот видео, которым я сызмальства пользовался для настройки ПИДов 😃 (автор - капитанКУК)

Там примерно на 1:20 - как раз сценарий когда “Hard to control height” (причина - высокий P)

А Кривую тоже обязательно настроим. У этого коптера висение вообще на 25% газа…

Shurikk
dROb:

Вот видео, которым я сызмальства пользовался для настройки ПИДов (автор - капитанКУК)

блин, выкрутил звук погромче в наушниках, чтобы движки слышать, вы бы предупреждали, что там в конце видео))