MultiWii
ArtikUA, держит высоту именно BARO, а не GPS HOLD. Газ в любом положении. Почитайте выше, только что обсуждали это.
Собратья, подскажите кто знает. Существует ли в продаже готовый мелколет(в комнате полетать) на multiwii?
В идеале хочу крохотулю типа banggood.com/Upgrade-Hubsan-X4-H107-2_4G-4CH-Remot… что бы туда маховий залить можно было и забиндить с пультом Turnigy9x(родным модулем)
hobbyking.com/…/__42844__HobbyKing_Pocket_Quad_V1_…
Только мне не понятно как мультивии управляет коллекторниками
для маховия вроде мало 328 меги? поентому все мелко платы что есть сейчас не подходят и самая мелкая получаеться AIO
для маховия вроде мало 328 меги
Впихнуть то можно с обрезанным функционалом.
Без ЖПСа вроде влазит, а он там и не нужен.
так он ДСМ2 😦 а мне бы турнику подключить… там приемник никак не сменить?
да и цена не радует… там в корпусе красивеньком да еще и с пультом + фришиппинг и всего $49
С обратной стороны платы подписаны контакты для подключения обычного приемника. По скидке 46$. Но конечно не дотягивает по комплектации до RTF. Да и на плате только гироаксель.
Только мне не понятно как мультивии управляет коллекторниками
В прошивке, есть строчка для активизации управления (движками) с помощью ШИМ, а на выходы контроллера ставятся транзисторные ключи…
Подсоединял всё в коптере
почистил eeprom
откалибровал регули прошивкой
залил учебную прошивку махови
в итоге АРМ движков могу сделать, а дизарм нет…
в чем косяк может быть?
в итоге АРМ движков могу сделать, а дизарм нет…
в чем косяк может быть?
расходы на аппе кривые. надо править
Только мне не понятно как мультивии управляет коллекторниками
Должны быть правки кода. Там по выходу вместо синхроимпульса надо просто шим выводить. На плате транзистор распаян в ключевом режиме для коллекторников.
В прошивке, есть строчка для активизации управления (движками) с помощью ШИМ, а на выходы контроллера ставятся транзисторные ключи…
извините, а чем оно тогда крутит ESC? всегда думал что ШИМом …
жаль нет осциллографа глянуть
извините, а чем оно тогда крутит ESC? всегда думал что ШИМом …
жаль нет осциллографа глянуть
Наверное PPM-ом.
а чем оно тогда крутит ESC?
Зачем же ESC крутить. ))) Вроде Aleksey Gorelikov все написал, что ещё не понятно?
Подскажите, кто подключал сонар.
Вы делали конвертер 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бит
подскажите в какой порт его подулючать?
Вам без паяльника не обойтись, его цепляют на i2c, а на Вашей плате разъемчик отсутствует.
У меня тоже очередные вопросы имеются - перестраиваю плату на летающее крыло, 500гц на ESC для него явный перебор, это:
#define USE_THROTTLESERVO // For use of standard 50Hz servo on throttle.
не помогает.
Что нужно поменять, чтобы было 50 гц?
И второй затык с армом - не нужен он на самолете, тем более планирующем. Совсем не хотелось бы, чтобы после очередного отключения двигатель не включился.
И третий - чего только не комментировал и не менял - минимальная длина импульса на мотор 1150
#define MINTHROTTLE 1000
не помогает.
eeprom почистите и будет вам счастье, а то оно на новые дефайны не смотрит, а смотрит, что у него в еепром прописано, а там старые значения…
eeprom почистите и будет вам счастье, а то оно на новые дефайны не смотрит, а смотрит, что у него в еепром прописано, а там старые значения…
К сожалению, полное счастье не наступило. Минимальная длина пульса установилась, а вот что делать с частотой и армом - по-прежнему вопрос. Тупое решение - сделать арм при любом положении AUX1 не работает.
Что-то со счастьем сегодня напряженка.
Даже пытаюсь переназначить выводы - и то не работает
#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 перестает все отображать 😦
Убил полностью исходники, начал править по новой
#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 больше не отображается.