MultiWii

dROb
UserM:

У нас рекламируют вот такую шнягу: “Nano Protech ELECTRONIC” , но сам не пробовал.

www.youtube.com/watch?feature=player_embedded&v=aq…

Мне искренне непонятно как такая система, как обычный, коллекторный электродвигатель может работать в обычной воде, даже покрытая чудо-составом 😃
Предполагаю, что в рекламе применяется какая-то другая жидкость. В крайнем случае - дистиллированная вода.

omegapraim

Да дистилировка по любому, если она все так защищает то кз по любому бы в розетке случилось бы или просто не было бы контакта с дрелью и дрель бы не крутилась… в общем ерунда все это.

mataor

про PLASTIC я уже писал несколько раз в разных темах - про регули и про хубсан… отличная защита от воды при купании в лужах

Probelzaelo
omegapraim:

Да дистилировка по любому, если она все так защищает то кз по любому бы в розетке случилось бы или просто не было бы контакта с дрелью и дрель бы не крутилась… в общем ерунда все это.

Обычная вода, просто ни кто не показал что будет бЕз этой обработки. Я так понимаю разницы ни какой. воза не настолько хороший проводник чтобы произошло КЗ. или перестали работать электроприборы типа дрели… Ни каких чудес, я вам скажу. Кстати, ни кто не задумывался откуда в воде появилось облако белесой мути? так это всем известные газы водород+кислород, выделяющиеся при расщеплении воды под действием электричества. Опыт нужно сказать ни разу не безопасен. потому и в диэлектрических перчатках проводится, кто не заметил. А коллектроные моторы в воде работают вполне не плохо, в том числе с большим превышением напряжения, благодатя хорошему теплоотводу. Главное их просушивать после использования, иначе ржавеют и досвиданья…

Для желающих, на Ютрубе очень много роликов с погружением коллекторников…

RA4ASN

Извиняюсь, что не совсем по теме вопрос, но был ли у кого-нибудь успешный опыт применения multiwii как fbl системы на вертолете? В разделе вертолетной электроники сходу найти не удалось.

omegapraim

и не найдете, код есть, но никто не тестил, я уже давно хочу но все никак руки не доходят.

puh21

повторю вопрос. как инвертировать YAW в прошивке… при внешнем воздействии контроллер выдаёт сигналл который по вектору совпадает с воздействием и докручивает коптер в ту же сторону. в прошивке нащёл инверт только по PITCH…

moscow
puh21:

повторю вопрос. как инвертировать YAW в прошивке… при внешнем воздействии контроллер выдаёт сигналл который по вектору совпадает с воздействием и докручивает коптер в ту же сторону. в прошивке нащёл инверт только по PITCH…

Кирилл, на Ваш вопрос ответить не могу, но хотел заметить, что если моторы подключены верно, направление их вращения совпадает с нарисованным на картинке в мультиковском GUI, то с высокой вероятностью Вам не понадобится инвертировать YAW.

omegapraim

puh21 вы бы хотя бы схему написали чтоль (три, квадро, гексо), даже если писали уточните, искать ваш вопрос никто не будет, если не ответили дублировать не надо. Вам не серву надо инвертировать, а ось датчика гироскопа по YAW это все делается в прошивке config.h. Все написано уже 1000 раз.

/* individual sensor orientation */
//#define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = Y; accADC[PITCH] = -X; accADC[YAW] = Z;}
//#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] = X; gyroADC[YAW] = Z;}
//#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = Z;}

SovGVD
puh21:

как инвертировать YAW в прошивке…

вообще этого делать не надо, скорее всего винты не так установлены или еще какая пакость, но в config.h есть вот такая штука
//#define YAW_DIRECTION -1 // if you want to reverse the yaw correction direction
использовал её давно для гексы, в какой то из прошивок коптер крутило по кругу при взлете

krant

Как показали лётные испытания, летать мы пока не можем 😁

Сабж, на полном газу квадр качает из стороны в сторону, но взлетать он упорно не желает, при том винты вращаются с разными скоростями, таскать по полу в право в лево вперёд назад - могу без каких-либо проблем, но взлетать не желает. В руках вертел, сопротивление отклонениям есть, но лететь мы не хотим. Куда копать ?
PID стандратные , если дело в них, то какие реомендованные ?

// #define ESC_CALIB_CANNOT_FLY // uncomment to activate
С этой строчкой тоже игрался.

p.s. та же база на ХК контроллере летатала на ура…

DVE

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

На стандартных пидах multiwii летит без проблем, дело точно не в них.

krant
DVE:

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

На стандартных пидах multiwii летит без проблем, дело точно не в них.

откалибровал датчики в конфигураторе а не в ГУИ, стало вроде бы получше, сейчас инвертирую YAW, а то его закручивает и попробую снова
меня вот больше разный шим больше волнует который посылается на ESC
p.s. Мне инверсия не помогла, закручивать стало нааамного сильнее 😃 , мне надо просто пиды подкрутить, чем займусь сейчас, но после калибровки мы полетели, волчком правда 😃

Тем кому надо инверсию сделать по одной из осей.

запускаем компилятор, октрываем скетч с мультивиеем.

Лезем в def.h

затем в дефайнах ищем вашу плату:

  #define GYRO_ORIENTATION(X, Y, Z){gyroADC[ROLL] =  Y; gyroADC[PITCH] = -X; gyroADC[YAW] = -Z;}
  #define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL]  =  X; magADC[PITCH]  =  Y; magADC[YAW]  = -Z;}
  #undef INTERNAL_I2C_PULLUPS
#endif

#if defined(CRIUS_AIO_PRO_V1) 
  #define MPU6050
  #define HMC5883
  #define MS561101BA
  #define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  = -X; accADC[PITCH]  = -Y; accADC[YAW]  =  -Z;}
  #define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] =  Y; gyroADC[PITCH] = -X; gyroADC[YAW] = Z;}
  #define MAG_ORIENTATION(X, Y, Z)  {magADC[ROLL]  =  X; magADC[PITCH]  =  Y; magADC[YAW]  = Z;}

  #define MPU6050_I2C_AUX_MASTER // MAG connected to the AUX I2C bus of MPU6050
  #undef INTERNAL_I2C_PULLUPS
  #define I2C_SPEED 400000L         //400kHz fast mode
  //servo pins on AIO board is at pins 44,45,46, then release pins 33,34,35 for other usage
  //eg. pin 33 on AIO can be used for LEDFLASHER output
  #define SERVO_1_PINMODE            pinMode(44,OUTPUT);        // TILT_PITCH
  #define SERVO_1_PIN_HIGH           PORTL |= 1<<5;
  #define SERVO_1_PIN_LOW            PORTL &= ~(1<<5);
  #define SERVO_2_PINMODE            pinMode(45,OUTPUT);        // TILT_ROLL
  #define SERVO_2_PIN_HIGH           PORTL |= 1<<4;
  #define SERVO_2_PIN_LOW            PORTL &= ~(1<<4);
  #define SERVO_3_PINMODE            pinMode(46,OUTPUT);        // CAM TRIG
  #define SERVO_3_PIN_HIGH           PORTL |= 1<<3;
  #define SERVO_3_PIN_LOW            PORTL &= ~(1<<3);
  #define SERVO_4_PINMODE            pinMode(11,OUTPUT);        // SERVO4 , use hardware PWM
  #define SERVO_5_PINMODE            pinMode(12,OUTPUT);        // SERVO5 , use hardware PWM
#endif

#if defined(LADYBIRD)
  #define MPU6050
  #define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  = -X; accADC[PITCH]  = -Y; accADC[YAW]  =  Z;}
  #define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] =  Y; gyroADC[PITCH] = -X; gyroADC[YAW] = -Z;}

в моём случае это #if defined(CRIUS_AIO_PRO_V1)
находим блок кода внутри это дефа:

  #define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  = -X; accADC[PITCH]  = -Y; accADC[YAW]  =  -Z;}
  #define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] =  Y; gyroADC[PITCH] = -X; gyroADC[YAW] = Z;}
  #define MAG_ORIENTATION(X, Y, Z)  {magADC[ROLL]  =  X; magADC[PITCH]  =  Y; magADC[YAW]  = Z;}

и собственно по отклонениям делаем инврсию ставив перед X (или Y, Z) минус, или убирая его.
Для того чтобы сделать инверсию компенсационной силы по оси YAW (рысканье), сделать надо следующим образом:

  #define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  = -X; accADC[PITCH]  = -Y; accADC[YAW]  =  Z;}
  #define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] =  Y; gyroADC[PITCH] = -X; gyroADC[YAW] = -Z;}
  #define MAG_ORIENTATION(X, Y, Z)  {magADC[ROLL]  =  X; magADC[PITCH]  =  Y; magADC[YAW]  = -Z;}

Инверсию знака делать надо по всем датчикам, по скольку компенсация происходит по данным со всёх трёх датчиков.

После компилировани и загрузки кода, необходимо откалибровать датчики в MultiWIIConf. в ГУИ не советую, лично у меня джигурда после ГУИ одна.

krant

Я тут где-то прочитал что мультвии не любит чтобы его тримировали, это правда? Или всё-таки дисбаланс можно скомпенсировать пультом ?

leprud
krant:

дисбаланс можно скомпенсировать пультом

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

krant

с чего же тогда квадр в бок перетягивает

leprud

Оттриммируйте акселерометр, все в порядке будет.

krant
leprud:

Оттриммируйте акселерометр, все в порядке будет.

как раз вот эти движениями стиками у меня и не работают, пришлось арминг выводить на доп триггер пульта 😦