MultiWii

Raptor_SK
serenya:

Только мне не понятно как мультивии управляет коллекторниками

В прошивке, есть строчка для активизации управления (движками) с помощью ШИМ, а на выходы контроллера ставятся транзисторные ключи…

Braun

Подсоединял всё в коптере
почистил eeprom
откалибровал регули прошивкой
залил учебную прошивку махови
в итоге АРМ движков могу сделать, а дизарм нет…
в чем косяк может быть?

Taatarenkoff
Braun:

в итоге АРМ движков могу сделать, а дизарм нет…
в чем косяк может быть?

расходы на аппе кривые. надо править

Aleksey_Gorelikov
serenya:

Только мне не понятно как мультивии управляет коллекторниками

Должны быть правки кода. Там по выходу вместо синхроимпульса надо просто шим выводить. На плате транзистор распаян в ключевом режиме для коллекторников.

vatanuki
Raptor_SK:

В прошивке, есть строчка для активизации управления (движками) с помощью ШИМ, а на выходы контроллера ставятся транзисторные ключи…

извините, а чем оно тогда крутит ESC? всегда думал что ШИМом …
жаль нет осциллографа глянуть

serenya
vatanuki:

извините, а чем оно тогда крутит ESC? всегда думал что ШИМом …
жаль нет осциллографа глянуть

Наверное PPM-ом.

UserM
vatanuki:

а чем оно тогда крутит ESC?

Зачем же ESC крутить. ))) Вроде Aleksey Gorelikov все написал, что ещё не понятно?

Hight

Подскажите, кто подключал сонар.
Вы делали конвертер Echo to I2C или подключали напрямую к плате? Я так полагаю, чтобы подключится напрямую нужно как минимум одно внешнее прерывание чтобы поймать фронт?

кстати, пока субъективно, но коптер полетел лучше когда я настроил аксель следующим образом:

  i2c_writeReg(ADXL345_ADDRESS,0x31,0x0A);   // register: DATA_FORMAT -- value: Set bits 3(full range) and  (+/- 8g-range)
  i2c_writeReg(ADXL345_ADDRESS,0x2C,0x0C);  //  register: BW_RATE     -- value: rate=400hz, bw=200hz

Пока я в этом не очень разобрался, поэтому вопрос. Почему по дефолту аксель настроен на 50гц? и почему выбирается диапазон ±16g разве это не ведет к уменьшению точности? (откуда там такие перегрузки)
ещё вопрос, как посчитали
acc_1G = 265;
потому что даташите написано что при ±16g на full range разрешение 13бит

zerokul

Подскажите имею такой девайсы
платка Crius Multiwii Lite v0.2
и Oled дисплейчик
подскажите в какой порт его подулючать?
что касательно прошивки вроде все расскоментировано.

varvar
zerokul:

подскажите в какой порт его подулючать?

Вам без паяльника не обойтись, его цепляют на i2c, а на Вашей плате разъемчик отсутствует.

У меня тоже очередные вопросы имеются - перестраиваю плату на летающее крыло, 500гц на ESC для него явный перебор, это:

#define USE_THROTTLESERVO // For use of standard 50Hz servo on throttle.

не помогает.
Что нужно поменять, чтобы было 50 гц?

И второй затык с армом - не нужен он на самолете, тем более планирующем. Совсем не хотелось бы, чтобы после очередного отключения двигатель не включился.
И третий - чего только не комментировал и не менял - минимальная длина импульса на мотор 1150
#define MINTHROTTLE 1000

не помогает.

SergDoc

eeprom почистите и будет вам счастье, а то оно на новые дефайны не смотрит, а смотрит, что у него в еепром прописано, а там старые значения…

varvar
SergDoc:

eeprom почистите и будет вам счастье, а то оно на новые дефайны не смотрит, а смотрит, что у него в еепром прописано, а там старые значения…

К сожалению, полное счастье не наступило. Минимальная длина пульса установилась, а вот что делать с частотой и армом - по-прежнему вопрос. Тупое решение - сделать арм при любом положении AUX1 не работает.

varvar

Что-то со счастьем сегодня напряженка.
Даже пытаюсь переназначить выводы - и то не работает

#define PRI_SERVO_FROM 5 // use servo from 1 to 2
#define PRI_SERVO_TO 6

С мотором тоже - вроде как надо подменить мотор сервой здесь

    #if defined(FLYING_WING)
      motor[0] = rcCommand[THROTTLE];
      if (f.PASSTHRU_MODE) {// do not use sensors for correction, simple 2 channel mixing
        servo[0]  = PITCH_DIRECTION_L * (rcData[PITCH]-MIDRC) + ROLL_DIRECTION_L * (rcData[ROLL]-MIDRC);
        servo[1]  = PITCH_DIRECTION_R * (rcData[PITCH]-MIDRC) + ROLL_DIRECTION_R * (rcData[ROLL]-MIDRC);
      } else { // use sensors to correct (gyro only or gyro+acc according to aux1/aux2 configuration
        servo[0]  = PITCH_DIRECTION_L * axisPID[PITCH]        + ROLL_DIRECTION_L * axisPID[ROLL];
        servo[1]  = PITCH_DIRECTION_R * axisPID[PITCH]        + ROLL_DIRECTION_R * axisPID[ROLL];
      }
      servo[0]  = constrain(servo[0] + conf.wing_left_mid , WING_LEFT_MIN,  WING_LEFT_MAX );
      servo[1]  = constrain(servo[1] + conf.wing_right_mid, WING_RIGHT_MIN, WING_RIGHT_MAX);
    #endif

пытаюсь отключить массив моторов и подменить дополнительной сервой

 // #define NUMBER_MOTOR     1
  #define NUMBER_MOTOR     0

и все равно не выходит каменный цветок, даже GUI перестает все отображать 😦

varvar

Убил полностью исходники, начал править по новой

#elif defined(FLYING_WING)
  #define NUMBER_MOTOR     0
  #define PRI_SERVO_FROM   1 // use servo from 1 to 2
  #define PRI_SERVO_TO     3

и так

    #if defined(FLYING_WING)
      //motor[0] = rcCommand[THROTTLE];
      if (!f.ARMED){
        servo[2] =  MINCOMMAND; // Kill throttle when disarmed
      } else {
        servo[2] =  rcData[THROTTLE];
      }

      if (f.PASSTHRU_MODE) {// do not use sensors for correction, simple 2 channel mixing
        servo[0]  = PITCH_DIRECTION_L * (rcData[PITCH]-MIDRC) + ROLL_DIRECTION_L * (rcData[ROLL]-MIDRC);
        servo[1]  = PITCH_DIRECTION_R * (rcData[PITCH]-MIDRC) + ROLL_DIRECTION_R * (rcData[ROLL]-MIDRC);
      } else { // use sensors to correct (gyro only or gyro+acc according to aux1/aux2 configuration
        servo[0]  = PITCH_DIRECTION_L * axisPID[PITCH]        + ROLL_DIRECTION_L * axisPID[ROLL];
        servo[1]  = PITCH_DIRECTION_R * axisPID[PITCH]        + ROLL_DIRECTION_R * axisPID[ROLL];
      }
      servo[0]  = constrain(servo[0] + conf.wing_left_mid , WING_LEFT_MIN,  WING_LEFT_MAX );
      servo[1]  = constrain(servo[1] + conf.wing_right_mid, WING_RIGHT_MIN, WING_RIGHT_MAX);
    #endif

теперь почему-то заработало.
Но при дизарме мотор включается на максимум. Хоть на приемник напрямую мотор вешай, но хотелось бы обойтись приемником с SPPM только.
Ну и в GUI mot больше не отображается.

Braun

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

crand
Braun:

можно одновременно подключить бортовой аккумулятор и usb кабель

Да, можно. Только не обороты, а уровень сигнала на каждом двигателе.

Ринго
Raptor_SK:

В прошивке, есть строчка для активизации управления (движками) с помощью ШИМ, а на выходы контроллера ставятся транзисторные ключи…

Где про это прочитать ? также по какой схеме ключи запаивать ?
Мосфеты нужны N канальные или P канальные ?

Ринго

Это фотка из инета как выглядит готовое .
У меня обычная мультивий плата криус. Там нет ключей !

zerokul

очередной вопрос:разёмы допоял экранчик ожил,и на этом все закончилось,на экране горит только версия прошивки и тип коптера
Вопрос: как зайти в меню настройки,может чтото снова надо чтото расскоментировать?