MultiWii

kergo

www.youtube.com/watch?v=M7JyKVu4das

Разобрался наконец то с вием. Латает просто супер! Баро держит +\- 5 метров. Спускал где-то с 30 метров с 10% газа “падает” как ни странно без расколбаса. Полет на 3S 2200 - 6 мин., 3S 3700 - 12 мин.
Самое главное читайте как настроить аппу “Getting Started - Transmitter Calibration”
Обязательно обнуляйте гиру поставив аппарат на старт.
Вот мой сетап

  1. Моторы 2215-970KV (в комплекте цанги г…но. очень кривые 3 из 4. покупайте 3.17 отдельно.)
  2. Пропы APC 10x4.7
  3. ESC 25A (поставил потому что были, но хватит и 12A)
  4. AllInOne (версия 5V) собранно на Paris board v3 (для баро плата закрыта губкой)
  5. Приемник FrSky (подключенно через SumPPM)
  6. Рама - стеклотекстолит 2 мм , мотормаунты - текстолит 2 мм.
    Балки от 450 верта.
    держатели балки на раме , на мотормаунтах
    пластиковые стойки от HK квадро рамы.
    Идею рамы и выкосов моторов дернул здесь.
    Вот мой скетч 1.8.2.
    Вот чертеж рамы, но я считаю не совсем удачной. Есть на где скинуть вес. Буду переделывать.
    В качестве виброгасителя использовал растяжку из резинок и подкладки из уплотнителя для окон.
    Еще не нравятся алюминиевые балки. Поменяю на карбон.



devv
kergo:
  1. AllInOne (версия 5V) собранно на Paris board v3 (для баро плата закрыта губкой)

AllInOne (версия 5V) такая же - cgi.ebay.com/ws/eBayISAPI.dll?ViewItem=&item=26078… ?
Реально на такой запустить MultiWii без лишнего гемороя ?

kergo
devv:

AllInOne (версия 5V) такая же

У меня установлена ЭТА плата
То что вы показали уже с Atmega328 т.е. не придется докупать ардуинку + компактней получается. Хороший вариант если вы остановитесь на квадре или трешке.
Но есть большой минус. Допустим через какое-то время нормально отладят GPS на Wii, сонар прикрутят или еще там чего…то придется переходить на Arduino MEGA потому, что портов уже не хватит. Да и даташита нет на эту плату чтобы посмотреть какие входа\выхода. Вот в соседней ветке над Пиратом “колдуют”. Скоро думаю присоединиться.
Вообщем я ЗА расширяемость системы.

sulaex
kergo:

Допустим через какое-то время нормально отладят GPS на Wii, сонар прикрутят или еще там чего…то придется переходить на Arduino MEGA потому, что портов уже не хватит.

через некоторое время придумают чего то еще и вы будете покупать другие датчики
эта плата готовое решение для определенных задач

devv

Может кто укажет направление где почитать/посмотреть подробную схему подключения платки AllInOne к Arduino и настройки MultiWii ?

nemo61
devv:

Может кто укажет направление где почитать/посмотреть подробную схему подключения платки AllInOne к Arduino

У меня ардуина была только мега. Для примера смотрите 1 пост этой темы. Я делал по этой схеме rcopen.com/files/4d5388a599707300770c05fa только вместо платы wii использовал allinone.

mahowik
kergo:

Разобрался наконец то с вием. Латает просто супер!

Летает действительно суппер! 😃 Даже по хорошему вам позавидовал. 😃 Потому как в мулти-пулти я давно, а в стаб. моде он у меня так и не полетел толком.
Все пытался побороть вибрации математикой (фитры, пид-регули и т.д.), но видимо не получится… Потому совет остальным, душите свою жабу! Покупайте нормальные пропы, сенсоры (хотя меня покупка бма020 не спасла 😃 + делайте добротную раму.

Одно замечание всеже по поводу виброгашения. Тут палка о двух концах. Гира не любит подвесов на резинках и ей достаточно слой-два 2-х стороннего скотча, а вот для акселя это как раз полезно. И как выбрать золотую середину? Возможно поэтому вы выбрали в конфиге фильтр 42гц для гиры?

  • еще парочка вопросиков 😃
    Также почему “Д” параметр такой низкий выбрали? Вы кстати акро мод пробовали? Таже плавно летает?

з.ы. закиньте кстать если не трудно такойже пост в тему “мултивии - положителный опыт”. Или хотябы ссылку на него…

kergo
mahowik:

Возможно поэтому вы выбрали в конфиге фильтр 42гц для гиры?

Да 42гц.
По поводу вибрации я тут летал на кривых цангах…других не было.
И еще я заметил, что круглые балки преобразуют и частично гасят вибрацию. Когда беру квадрик с “газом висения”, то на раме чувствуется хорошая вибрация.
Сейчас заказал цанги + карбон балки.
Лучи длинные, поэтому D можно вообще 0 поставить. На раме квадро 650 мм и моторах DT750 + пропы 12х6…D ставил 0. Ставишь 1 и начинает дергать.
На видео где подбросил вверх потом полетел вперед вот там переключился на акромод. отлетел вперед, влево и вернулся. Потом включил level
За день было 6 полетов. В акромоде летает также стабильно, но опять же из за длинны лучей очень страшно кренить квадрик даже на 45 градусов. Очень тяжело его вытянуть. Но можно дернуть level или дать газку и квадрик “скользит” с меееедленным выравниванием.
Но т.к. делал под FPV, то все меня устраивает.
У Вас мог не полететь потому, что я тоже раньше руководствовался дефолтовыми ПИД-ами. Там где стоят бешеные значения левела.
Вот сейчас с моими можно летать, а не просто висеть на месте.
Пост повторю в “Положительном опыте”

П.С. А погонять у меня вот такой квадрик…был.

www.youtube.com/watch?v=Q8cCIwtuqJ8

фотки и сетап выложу позже на новой раме.
старую 2 недели назад расфигачил в пыль зайдя на большую петлю и забыв дернуть D\R

Solokirrik

Здравствуйте)
Был куплен чёрный WM+.
lostpic.net/…/052a55a098ec87f858fbd9a91d75d6ac.jpg (1755 Kb)
lostpic.net/…/b04d6144f91504ba9490c79d157b2287.jpg (3325 Kb)
lostpic.net/…/51beb5d075b6d499e30c3a9e9d72339d.jpg (3584 Kb)

Ардуина прошивается, всё хорошо, но в MultiWiiConf 1_7 значения не изменяются…
В чём может быть проблема ? М.б. wm+ кривой ? Или с распиновкой что…
Разглядел в потёртой маркировке invensense isz 650 и idg 650 => проблем быть не должно…

Паяю так.
lostpic.net/…/5ada195e90be4ec90ae7ca7b537f6264.jpg (1036 Kb)

Solokirrik
skyrider:

Можно попробовать желтые провода местами поменять.


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

/* The type of multicopter */
//#define GIMBAL
//#define BI
//#define TRI
//#define QUADP
#define QUADX
//#define Y4
//#define Y6
//#define HEX6
//#define HEX6X
//#define FLYING_WING //experimental

#define YAW_DIRECTION 1 // if you want to reverse the yaw correction direction
//#define YAW_DIRECTION -1

#define I2C_SPEED 100000L     //100kHz normal mode, this value must be used for a genuine WMP
//#define I2C_SPEED 400000L   //400kHz fast mode, it works only with some WMP clones

#define PROMINI  //Arduino type
//#define MEGA

//enable internal I2C pull ups
#define INTERNAL_I2C_PULLUPS

//****** advanced users settings   *************

/* Failsave settings - added by MIS
   Failsafe check pulse on THROTTLE channel. If the pulse is OFF (on only THROTTLE or on all channels) the failsafe procedure is initiated.
   After FAILSAVE_DELAY time of pulse absence, the level mode is on (if ACC or nunchuk is avaliable), PITCH, ROLL and YAW is centered
   and THROTTLE is set to FAILSAVE_THR0TTLE value. You must set this value to descending about 1m/s or so for best results.
   This value is depended from your configuration, AUW and some other params.
   Next, afrer FAILSAVE_OFF_DELAY the copter is disarmed, and motors is stopped.
   If RC pulse coming back before reached FAILSAVE_OFF_DELAY time, after the small quard time the RC control is returned to normal.
   If you use serial sum PPM, the sum converter must completly turn off the PPM SUM pusles for this FailSafe functionality.*/
#define FAILSAFE                                  // Alex: comment this line if you want to deactivate the failsafe function
#define FAILSAVE_DELAY     10                     // Guard time for failsafe activation after signal lost. 1 step = 0.1sec - 1sec in example
#define FAILSAVE_OFF_DELAY 200                    // Time for Landing before motors stop in 0.1sec. 1 step = 0.1sec - 20sec in example
#define FAILSAVE_THR0TTLE  (MINTHROTTLE + 200)    // Throttle level used for landing - may be relative to MINTHROTTLE - as in this case


/* The following lines apply only for a pitch/roll tilt stabilization system
   It is not compatible with Y6 or HEX6 or HEX6X
   Uncomment the first line to activate it */
//#define SERVO_TILT
#define TILT_PITCH_MIN    1020    //servo travel min, don't set it below 1020
#define TILT_PITCH_MAX    2000    //servo travel max, max value=2000
#define TILT_PITCH_MIDDLE 1500    //servo neutral value
#define TILT_PITCH_PROP   10      //servo proportional (tied to angle) ; can be negative to invert movement
#define TILT_ROLL_MIN     1020
#define TILT_ROLL_MAX     2000
#define TILT_ROLL_MIDDLE  1500
#define TILT_ROLL_PROP    10

/* I2C gyroscope */
//#define ITG3200
//#define L3G4200D

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

/* I2C barometer */
//#define BMP085

/* I2C magnetometer */
//#define HMC5843
//#define HMC5883

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

/* The following lines apply only for specific receiver with only one PPM sum signal, on digital PIN 2
   IF YOUR RECEIVER IS NOT CONCERNED, DON'T UNCOMMENT ANYTHING. Note this is mandatory for a Y6 setup
   Select the right line depending on your radio brand. Feel free to modify the order in your PPM order is different */
//#define SERIAL_SUM_PPM         PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,CAMPITCH,CAMROLL //For Graupner/Spektrum
//#define SERIAL_SUM_PPM         ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,CAMPITCH,CAMROLL //For Robe/Hitec/Futaba
//#define SERIAL_SUM_PPM         PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,CAMPITCH,CAMROLL //For some Hitec/Sanwa/Others

/* interleaving delay in micro seconds between 2 readings WMP/NK in a WMP+NK config
   if the ACC calibration time is very long (20 or 30s), try to increase this delay up to 4000
   it is relevent only for a conf with NK */
#define INTERLEAVING_DELAY 3000

/* for V BAT monitoring
   after the resistor divisor we should get [0V;5V]->[0;1023] on analog V_BATPIN
   with R1=33k and R2=51k
   vbat = [0;1023]*16/VBATSCALE */
#define VBAT              // comment this line to suppress the vbat code
#define VBATSCALE     131 // change this value if readed Battery voltage is different than real voltage
#define VBATLEVEL1_3S 107 // 10,7V
#define VBATLEVEL2_3S 103 // 10,3V
#define VBATLEVEL3_3S 99  // 9.9V

/* when there is an error on I2C bus, we neutralize the values during a short time. expressed in microseconds
   it is relevent only for a conf with at least a WMP */
#define NEUTRALIZE_DELAY 100000

/* this is the value for the ESCs when thay are not armed
   in some cases, this value must be lowered down to 900 for some specific ESCs */
#define MINCOMMAND 1000

/* this is the maximum value for the ESCs at full power
   this value can be increased up to 2000 */
#define MAXTHROTTLE 1850

/* This is the speed of the serial interface. 115200 kbit/s is the best option for a USB connection.*/
#define SERIAL_COM_SPEED 115200

/* In order to save space, it's possibile to desactivate the LCD configuration functions
   comment this line only if you don't plan to used a LCD */
#define LCD_CONF

/* to use Cat's whisker TEXTSTAR LCD, uncomment following line.
   Pleae note this display needs a full 4 wire connection to (+5V, Gnd, RXD, TXD )
   Configure display as follows: 115K baud, and TTL levels for RXD and TXD, terminal mode
   NO rx / tx line reconfiguration, use natural pins */
//#define LCD_TEXTSTAR

/* motors will not spin when the throttle command is in low position
   this is an alternative method to stop immediately the motors */
//#define MOTOR_STOP

/* some radios have not a neutral point centered on 1500. can be changed here */
#define MIDRC 1500

/* experimental
   camera trigger function : activated via AUX1 UP, servo output=A2 */
//#define CAMTRIG
#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

/* you can change the tricopter servo travel here */
#define TRI_YAW_CONSTRAINT_MIN 1020
#define TRI_YAW_CONSTRAINT_MAX 2000
#define TRI_YAW_MIDDLE 1500

//****** end of advanced users settings *************
soliada

Вопрос к Гуру в области характеристик датчиков. Для гироскопа L3G4200D есть таблица
Table 22. DR and BW configuration setting
DR <1:0> BW <1:0> ODR [Hz] Cut-Off
00 00 100 12.5
00 01 100 25
00 10 100 25
00 11 100 25
01 00 200 12.5
01 01 200 25
01 10 200 50
01 11 200 70
10 00 400 20
10 01 400 25
10 10 400 50
10 11 400 110
11 00 800 30
11 01 800 35
11 10 800 50
11 11 800 110

На что влияют,точнее что значат эти величины ODR [Hz] Cut-Off ?
Full Scale selection.
(00: 250 dps; 01: 500 dps; 10: 2000 dps; 11: 2000 dps) Какую чувствительность необходимо выставить?

mahowik

Всем привет!

Рад поделиться новостью. Облетал сегодня MultiWii_dev_20111017. Наконецто стаб. мод. стал менее чувствительным к вибрациям и вполне (очень!!!) летабельным. Ура!!! 😃

www.multiwii.com/forum/viewtopic.php?f=8&t=793&sta…

soliada
soliada:

Вопрос к Гуру в области характеристик датчиков. Для гироскопа L3G4200D есть таблица
Table 22. DR and BW configuration setting

Сам спросил-сам отвечу. ODR [Hz] Частота опроса датчика.Величина Cut-Off пока загадка.Пробовал разные для одинаковой частоты,разници не заметил.
250 dps оказался самый чувствительный вариант.

mahowik
soliada:

Величина Cut-Off пока загадка

это частота среза НЧ фильтра… чем ниже тем лучше - меньше чувствителность к вибрациям…
к примеру для бма180 - 10гц, для бма020 - 25гц (т.к. это нижнее значение для этого датчика) + потом в ИМУ еще цифровым фильтром подрезается, т.е. реално на аксель в сумме частота среза 2-5гц (в последних дев прошивках).

Razek
kergo:

держатели балки на раме , на мотормаунтах

А подскажите под какой диаметр эти держатели балки?

devv:

Может кто укажет направление где почитать/посмотреть подробную схему подключения платки AllInOne к Arduino и настройки MultiWii ?

Да они все одинаково подключаются на разных платформах
Ардино - AllinOne
GND -> CLK Gyro
A4 -> SDA
A5 -> SCL
5V -> 5V
GND -> GND

только это для платы Allinone c LLC (5v) если без LLC (3.3v) то его надо отдельно цеплять

devv
Razek:

Да они все одинаково подключаются на разных платформах

спасибо
меня больше интересовало обозначение контактов на платке
нашел вот схемку
успокоился на время. Перечитываю тему с 1 стр. дошел пока до 76
Многое прояснилось. Есть вопросы по GUI и вкл/выкл стабилизации но думаю разберусь как скидаю железо.

Razek:

GND -> CLK Gyro

А это зачем ?
На фото виденные в инете первый разъем не трогает народ

devv
alexmos:

Насчет платки ALLINONE - припаял вывод гиры к земле сразу как рекомендовали на её страничке.

кто рекомендует и на какой страничке ?

soliada
mahowik:

это частота среза НЧ фильтра… чем ниже тем лучше - меньше чувствителность к вибрациям…

Спасибо,теперь понятно. Пробовал разные значения ODR и Сut-Off. Чисто субъективно особой разницы не чувствуется,вероятно надо настраивать и значения ПИД,но ИМХО лучше всего ODR100 Cut-Off 12.5 и ODR400 Cut-Off20(дефолтное значение).
Вот код,если кто-то использует такой гироскоп и хочет попробовать.В принципе в даташите есть таблица,пункт 7.2, какие биты для какой частоты выставлять в CTRL_REG1(20h)


#if defined(L3G4200D)
void Gyro_init() {
  delay(100);
  i2c_writeReg(0XD2+0 ,0x20 ,0x8F ); // CTRL_REG1 10001111(0x8F) 400Hz ODR, 20hz filter,00001111(0x0F) 200Hz ODR 12.5hz filter
  delay(5);
  i2c_writeReg(0XD2+0 ,0x23 ,0x80 ); // CTRL_REG4 10000000  Fuii Scale 250dps
}

void Gyro_getADC () {
  TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz
  i2c_getSixRawADC(0XD2,0x28+0x80); // Start multiple read

  GYRO_ORIENTATION(  ((rawADC[1]<<8) | rawADC[0])/20  ,
                     ((rawADC[3]<<8) | rawADC[2])/20  ,
                    -((rawADC[5]<<8) | rawADC[4])/20  );
  GYRO_Common();
}
#endif

ПС Как правильно,красиво,вставлять код в пост?