MultiWii

kukemezey

Доброго времени суток!
На выходных собрал свой квадрик на мультивии платформе.
Плату круглую в стиле вартхокса сам травил, ардуина и моушин плюс с ebay.
Рама сделана из алюминиевой трубы 10х10. Длина лучей 250мм.
Двигатели Е-МАХ 2822.
В моушене стоит гирик 3205.
Заработало все сразу!
После настраивания аппаратуры и самого контроллера поднял коптер в воздух.
Летит стабильно, слышно что меняються обороты двигалей, какбы подергивания - надо еще поднастраивать.
Цикл в ГУИ 3020-3050.
Полетное время минут 15 на акусах 2200мАч 20с.
Как набрал храбрости решился на петлю - ввопше отпад, как оно летает.
Не ронял ниразу пока. Время налета примерно 2 часа.
Иногда контроллер некорректно стартует, моторы дергаются после arming, если перезагрузить, то все ок.
Пробовал подключить нунчак с акселем ADXL335 - пока безрезультатно, не видит его ардуинка.
Может попробовать его напрямую подключить, к аналоговым входам?
Вот видео первых полетов

funtik26

господа а ардуина потянет помимо стбилизации еще и вебкамеру подключенную? как оптический датчик против дрейфа?

SovGVD
funtik26:

вебкамеру подключенную

не хватит памяти даже на 1 кадр + с камерой просто так не пообщаешся… можно сенсор из мышки выковырять - будет матрица оптическая от 6х6 до 11х11 (в зависимости от сенсора)

Volver
Musgravehill:

Посоветуйте, как поступить - брать этот или есть другие варианты?

Пока смысла нет, т.к. в мультивий еще не до конца сделали рабочий код, тот что есть не всегда работает (у меня не работает), т.к. еще не решен вопрос с калибровкой компаса (у меня HMC5843).
Пока калибруют только в микрокоптере, и есть примеры у ардупиратов, но на мультивий - пока нет.
Также, на РЦгрупс у многих проблемы с этим новым магнетометром (в чем заключается проблема, и решена ли она до конца - не знаю, не вникал).
Поэтому, рекомендую подождать, пока все устаканиться и появится правильный код. Очень надеюсь, что у Олега Syberian все получица.

Alex27111972
Syberian:

Нашел на ебей платку 4-в-1 (магнетометр, аксель, гира и баро) за 100уе
ЗДЕСЬ

Купил 2 штюк. Это то, что доктор прописал!

На рцгрупс продавец этих платок появился… если есть вопросы мона задавать… по русски шпрехает… его ник CSG_EU.

Syberian

Алил, я проверил свой аппарат, и у меня расклад такой:

  1. В горизонтали ACC_Z в плюсе
  2. Наклон вперед: ACC_Z падает, ACC_PITCH и GYRO_PITCH растут
  3. Наклон вправо: ACC_Z падает, ACC_ROLL и GYRO_ROLL растут
  4. поворот по часовой: GYRO_YAW растет
    Остальные без изменений.
    Проверяй.
SovGVD

закон подлости работает как ни когда - заказал новые регули на HK с пультом и внезапно откалибровался регуль который я собрался уже выкидывать (сегодня утром он же не хотел калиброваться даже с пультом)… вот что получилось:

на малейшие наклоны диким образом сопротивляется, если стараться немного придерживать (чтоб не улетел) - колбасит рывками, НО 1 мотор точно дико не сбалансирован, пропеллеры вообще не проверял =) пускать в полет пока что страшно, куча мелких недоделок, да и не уверен что с тачскрином будет удобно управлять этим пепелацем

DrinK
kukemezey:

Плату круглую в стиле вартхокса сам травил

а есть платка под Arduino Nano V3.0 AVR ATmega328, WMP + нунчак чтоб расположить ?

toleg
kukemezey:

Пробовал подключить нунчак с акселем ADXL335 - пока безрезультатно

Мне тоже вчера пришла посыль с диалэкстрима ВМП-3205 зелёная НЧ-335 синяя всё запустилось и работает

DrinK:

а есть платка под Arduino Nano V3.0 AVR ATmega328, WMP + нунчак чтоб расположить ?

В дневник ко мне загляните

Volver
Syberian:

Проверяй.

  1. В горизонтали ACC_Z в плюсе
  2. Наклон вперед: ACC_Z падает, ACC_PITCH и GYRO_PITCH растут
  3. Наклон вправо: ACC_Z падает, ACC_ROLL и GYRO_ROLL растут
  4. поворот по часовой: GYRO_YAW растет

т.е. все также как и у тебя.

Felar_Furlong
kukemezey:

В моушене стоит гирик 3205.
Заработало все сразу!

вот и летающий 3205. судя по всему, вы вертолетчик? на сколько делите данные с вмп? питание вмп 5в? винты, я так понял, 10х6 с хоббисити?

Piranha

пока народ с кодами и электроникой борецца я вот дровишек подпилил немного 😃

skyrider
Felar_Furlong:

вот и летающий 3205. судя по всему, вы вертолетчик? на сколько делите данные с вмп? питание вмп 5в? винты, я так понял, 10х6 с хоббисити?

Сегодня тоже поднял 3205 на зеленой плате, без чаки, висит стабильно, чуйку по осям в коде не делил, питание WMP 3.3V, прошивка MultiWii1_preter7, pullups OFF.

Syberian
Volver:

все также как и у тебя.

Значит, осталось тюнить gyroFactor. Закомментируй магнетометр, если он есть, расположи плату с датчиками горизонтально и включи, чтобы MAG показывал 0. Затем поверни по часовой стрелке ровно на 90 градусов (я для этого ровняю плату по краю стола) и засеки, сколько показывает MAG (примем это как MAG2).

Теперь в строке
#if defined(ITG3200)
gyroFactor = deltaTime/670 e6; //empirical

замени 670 на число 670*(MAG2/90) и все.
Если маг вращается на несколько оборотов, сперва увеличь 670, чтобы вращался не более, чем на 1 оборот. полученное число подставь в формулу.

kukemezey
Felar_Furlong:

вот и летающий 3205. судя по всему, вы вертолетчик? на сколько делите данные с вмп? питание вмп 5в? винты, я так понял, 10х6 с хоббисити?

Воопще-то я самолетчик, опыт с вертолетами 450 класа есть, но пока небольшой.
ВМП плата зеленая, нунчук с 335 акселем тоже, версия 1А
Данные с ВМП не делил, чуствительность ОК, когда стоит на столе графики в ГУИ по нулям!
Питание с 12пина Ардуинки.
Винты 9х5 хоббисити прямого и обратного вращения, вот эти www.hobbyking.com/hobbyking/…/uh_viewItem.asp?idPr…

Олег!
Скиньте свой скетч, с которым запустился нунчук с XL335 и 3205 гириком.

Syberian
kukemezey:

XL335 и 3205

а это що такое? 😃 Я знаю только вмп и чак

kukemezey
Syberian:

а это що такое? 😃 Я знаю только вмп и чак

Может неправильно выразился:
вмп с гироскопом itg3205 работает отлично.
чак с зеленой платой и акселем ADXL335 не видится ардуинкой.
На мультивии форуме многие писали, что вмп с 3205 работает не со всемя чаками.
wbb.multiwii.com/viewtopic.php?f=6&t=27&start=10
Попросил Олега скинуть свой скетч, так как у него вроди те же элементы и все нормально работает.

killmouse

Сегодня взялся за испытания второго контроллера.
В качестве подопытных кроликов выступили следующие кандидаты:

  1. Arduino Nano v3
  2. Wii синяя плата на itg3205 (маркировка MP-V3.0)
  3. NK синяя плата на ADXL335 (маркировка W-2A ниже написано 10042-20101105 еще ниже Wii Nunchuk-G Edition V1.1)
  4. Прошивка 1_preter7
    Wii запустился сразу, аксель закапризничал, разбирлся с распайкой, при очередном подключении он сдался и запустился, только график зашкаливал.
    Пошаманил в коде, добавил деление на аксель.
    accADC[ROLL] = ( ((rawADC_WMP[3]<<2) + ((rawADC_WMP[5]>>4)&0x2))/7 );
    accADC[PITCH] = - ( ((rawADC_WMP[2]<<2) + ((rawADC_WMP[5]>>3)&0x2))/7 );
    accADC[YAW] = - ( (((rawADC_WMP[4]&0xFE)<<2) + ((rawADC_WMP[5]>>5)&0x6))/7 );
    на 7 это утрировано, так как запускал без коптера, и ориентировался только по графику гироскопов, чтоб был приближенный.
    INTERLEAVING_DELAY выставил 2000, на 3000 то же самое, разницы особой не заметил.
    питание wii+nk от 3v3
    Так что я для себя миф о неработоспособности “синюшных” плат развеял.
    Фото вечером, на работе нечем щелкать 😃

tusik

А у меня при загрузке в ардуино нано скетча от Олега пишет:

MW1pt7_MARG.cpp: In function ‘void __vector_14()’:
MW1pt7_MARG:1338: error: ‘PORTF’ was not declared in this scope
MW1pt7_MARG:1347: error: ‘PORTF’ was not declared in this scope
MW1pt7_MARG:1360: error: ‘PORTF’ was not declared in this scope
MW1pt7_MARG.cpp: In function ‘void configureReceiver()’:
MW1pt7_MARG:1460: error: ‘DDRK’ was not declared in this scope
MW1pt7_MARG:1461: error: ‘PORTK’ was not declared in this scope
MW1pt7_MARG.cpp: In function ‘void __vector_5()’:
MW1pt7_MARG:1482: error: ‘PINK’ was not declared in this scope
MW1pt7_MARG.cpp: In function ‘void LCDprint(uint8_t)’:
MW1pt7_MARG:1653: error: ‘PORTE’ was not declared in this scope

Подключен вий без нунчака. Скетч также не компилится.
Кусочек скетча:

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

/* 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 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 case, 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

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

Где я накосячил?

А как кусок скетча сделать в окошке с полосой прокрутки?