MultiWii
Доброго времени суток!
На выходных собрал свой квадрик на мультивии платформе.
Плату круглую в стиле вартхокса сам травил, ардуина и моушин плюс с ebay.
Рама сделана из алюминиевой трубы 10х10. Длина лучей 250мм.
Двигатели Е-МАХ 2822.
В моушене стоит гирик 3205.
Заработало все сразу!
После настраивания аппаратуры и самого контроллера поднял коптер в воздух.
Летит стабильно, слышно что меняються обороты двигалей, какбы подергивания - надо еще поднастраивать.
Цикл в ГУИ 3020-3050.
Полетное время минут 15 на акусах 2200мАч 20с.
Как набрал храбрости решился на петлю - ввопше отпад, как оно летает.
Не ронял ниразу пока. Время налета примерно 2 часа.
Иногда контроллер некорректно стартует, моторы дергаются после arming, если перезагрузить, то все ок.
Пробовал подключить нунчак с акселем ADXL335 - пока безрезультатно, не видит его ардуинка.
Может попробовать его напрямую подключить, к аналоговым входам?
Вот видео первых полетов
СтОит ли покупать компас HMC5883 ? cgi.ebay.com/…/180649450523
Посоветуйте, как поступить - брать этот или есть другие варианты?
господа а ардуина потянет помимо стбилизации еще и вебкамеру подключенную? как оптический датчик против дрейфа?
вебкамеру подключенную
не хватит памяти даже на 1 кадр + с камерой просто так не пообщаешся… можно сенсор из мышки выковырять - будет матрица оптическая от 6х6 до 11х11 (в зависимости от сенсора)
Посоветуйте, как поступить - брать этот или есть другие варианты?
Пока смысла нет, т.к. в мультивий еще не до конца сделали рабочий код, тот что есть не всегда работает (у меня не работает), т.к. еще не решен вопрос с калибровкой компаса (у меня HMC5843).
Пока калибруют только в микрокоптере, и есть примеры у ардупиратов, но на мультивий - пока нет.
Также, на РЦгрупс у многих проблемы с этим новым магнетометром (в чем заключается проблема, и решена ли она до конца - не знаю, не вникал).
Поэтому, рекомендую подождать, пока все устаканиться и появится правильный код. Очень надеюсь, что у Олега Syberian все получица.
Подскажите чем открыть и скомпилить исходник для GUI?
Я компилил из вот такого эклипса
Алил, я проверил свой аппарат, и у меня расклад такой:
- В горизонтали ACC_Z в плюсе
- Наклон вперед: ACC_Z падает, ACC_PITCH и GYRO_PITCH растут
- Наклон вправо: ACC_Z падает, ACC_ROLL и GYRO_ROLL растут
- поворот по часовой: GYRO_YAW растет
Остальные без изменений.
Проверяй.
закон подлости работает как ни когда - заказал новые регули на HK с пультом и внезапно откалибровался регуль который я собрался уже выкидывать (сегодня утром он же не хотел калиброваться даже с пультом)… вот что получилось:
на малейшие наклоны диким образом сопротивляется, если стараться немного придерживать (чтоб не улетел) - колбасит рывками, НО 1 мотор точно дико не сбалансирован, пропеллеры вообще не проверял =) пускать в полет пока что страшно, куча мелких недоделок, да и не уверен что с тачскрином будет удобно управлять этим пепелацем
Плату круглую в стиле вартхокса сам травил
а есть платка под Arduino Nano V3.0 AVR ATmega328, WMP + нунчак чтоб расположить ?
Пробовал подключить нунчак с акселем ADXL335 - пока безрезультатно
Мне тоже вчера пришла посыль с диалэкстрима ВМП-3205 зелёная НЧ-335 синяя всё запустилось и работает
а есть платка под Arduino Nano V3.0 AVR ATmega328, WMP + нунчак чтоб расположить ?
В дневник ко мне загляните
Проверяй.
- В горизонтали ACC_Z в плюсе
- Наклон вперед: ACC_Z падает, ACC_PITCH и GYRO_PITCH растут
- Наклон вправо: ACC_Z падает, ACC_ROLL и GYRO_ROLL растут
- поворот по часовой: GYRO_YAW растет
т.е. все также как и у тебя.
В моушене стоит гирик 3205.
Заработало все сразу!
вот и летающий 3205. судя по всему, вы вертолетчик? на сколько делите данные с вмп? питание вмп 5в? винты, я так понял, 10х6 с хоббисити?
пока народ с кодами и электроникой борецца я вот дровишек подпилил немного 😃
вот и летающий 3205. судя по всему, вы вертолетчик? на сколько делите данные с вмп? питание вмп 5в? винты, я так понял, 10х6 с хоббисити?
Сегодня тоже поднял 3205 на зеленой плате, без чаки, висит стабильно, чуйку по осям в коде не делил, питание WMP 3.3V, прошивка MultiWii1_preter7, pullups OFF.
все также как и у тебя.
Значит, осталось тюнить gyroFactor. Закомментируй магнетометр, если он есть, расположи плату с датчиками горизонтально и включи, чтобы MAG показывал 0. Затем поверни по часовой стрелке ровно на 90 градусов (я для этого ровняю плату по краю стола) и засеки, сколько показывает MAG (примем это как MAG2).
Теперь в строке
#if defined(ITG3200)
gyroFactor = deltaTime/670 e6; //empirical
замени 670 на число 670*(MAG2/90) и все.
Если маг вращается на несколько оборотов, сперва увеличь 670, чтобы вращался не более, чем на 1 оборот. полученное число подставь в формулу.
вот и летающий 3205. судя по всему, вы вертолетчик? на сколько делите данные с вмп? питание вмп 5в? винты, я так понял, 10х6 с хоббисити?
Воопще-то я самолетчик, опыт с вертолетами 450 класа есть, но пока небольшой.
ВМП плата зеленая, нунчук с 335 акселем тоже, версия 1А
Данные с ВМП не делил, чуствительность ОК, когда стоит на столе графики в ГУИ по нулям!
Питание с 12пина Ардуинки.
Винты 9х5 хоббисити прямого и обратного вращения, вот эти www.hobbyking.com/hobbyking/…/uh_viewItem.asp?idPr…
Олег!
Скиньте свой скетч, с которым запустился нунчук с XL335 и 3205 гириком.
XL335 и 3205
а это що такое? 😃 Я знаю только вмп и чак
а это що такое? 😃 Я знаю только вмп и чак
Может неправильно выразился:
вмп с гироскопом itg3205 работает отлично.
чак с зеленой платой и акселем ADXL335 не видится ардуинкой.
На мультивии форуме многие писали, что вмп с 3205 работает не со всемя чаками.
wbb.multiwii.com/viewtopic.php?f=6&t=27&start=10
Попросил Олега скинуть свой скетч, так как у него вроди те же элементы и все нормально работает.
Сегодня взялся за испытания второго контроллера.
В качестве подопытных кроликов выступили следующие кандидаты:
- Arduino Nano v3
- Wii синяя плата на itg3205 (маркировка MP-V3.0)
- NK синяя плата на ADXL335 (маркировка W-2A ниже написано 10042-20101105 еще ниже Wii Nunchuk-G Edition V1.1)
- Прошивка 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
Так что я для себя миф о неработоспособности “синюшных” плат развеял.
Фото вечером, на работе нечем щелкать 😃
А у меня при загрузке в ардуино нано скетча от Олега пишет:
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 *************
Где я накосячил?
А как кусок скетча сделать в окошке с полосой прокрутки?