CRIUS ALL IN ONE PRO Flight Controller

mahowik

Дефайн MPU6050_I2C_AUX_MASTER нужно отключать в CRIUS_AIO_PRO_V1 секции файла def.h… После перезаливки скетча, передерните питание rcopen.com/forum/f123/topic283798/2145, но сдается мне это не поможет…

upd: Залез в даташит посмотреть… На сколько понимаю, если дефайн отключен, то компас вешается на основную i2c шину через mpu6050, отсюда и конфликты при подключении внешнего компаса, т.к. оба уже сидят на общей i2c шине… т.е. внешний компас прямым подключением к i2c, а AIO компас через mpu6050… потому скорее всего только “отрезать” компас от mpu6050…

могу и ошибаться конечно…

White_0807
sulaex:

делал именно это, компас на АИОП по прежнему работает

Мне отключение в def.h не помогло. Помог скальпель - отрезал дорожку AUX DA под компасом. Плата с хоббей.

mahowik
sulaex:

на собственной шкуре опробовано, чуть трехой не размолотил мебель в доме,

по идее в ГУИ ошибки по и2с (I2C error: ) должны были зашкаливать, если конфликты на шине…

sulaex
mahowik:

по идее в ГУИ ошибки по и2с (I2C error: ) должны были зашкаливать, если конфликты на шине…

не было вроде никаких ошибок и нету желания опять проверять, хотите проверит, просто заремите деф и подлетните, когда начнет коптер крушить все вокруг, не забудьте посмотреть в гуи, возможно тогда и найдутся ошибки 😃
я ведь выше описал ситуацию, что и как подключается, если перемычки не трогать, внешний разъем не работает, компас работал соответственно один, тот, что установлен на плате контроллера

Sir_Alex
mahowik:

upd: Залез в даташит посмотреть… На сколько понимаю, если дефайн отключен, то компас вешается на основную i2c шину через mpu6050, отсюда и конфликты при подключении внешнего компаса, т.к. оба уже сидят на общей i2c шине… т.е. внешний компас прямым подключением к i2c, а AIO компас через mpu6050… потому скорее всего только “отрезать” компас от mpu6050…

Не знаю что там в def.h, но я точно знаю что достаточно отключить Bypass mode у MP6050, что бы отключить компас. Это я все уже прошел в Пирате и специально даже дейфайн сделал для отключения компаса. А разработчик AIOP по моей просьбе, сделал перемычки для компаса. Перемычки подключают компас к MPU6050 или напрямую к процессору. А вот если не запаять вообще, то компас будет отключен и можно подключить внешний.

omegapraim

Я ленивый не то что вы))))) Я сделал два экрана из двустороннего текстолита, один экран под платой второй над, и заземлил оба экрана на минус, Хедфри после калибровки заработал как надо. Если текстолит не заземлять то эффекта от экранов не будет. Компас не спаивал.

sulaex
Sir_Alex:

Не знаю что там в def.h, но я точно знаю что достаточно отключить Bypass mode у MP6050, что бы отключить компас. Это я все уже прошел в Пирате и специально даже дейфайн сделал для отключения компаса. А разработчик AIOP по моей просьбе, сделал перемычки для компаса. Перемычки подключают компас к MPU6050 или напрямую к процессору. А вот если не запаять вообще, то компас будет отключен и можно подключить внешний.

Труднее всего в жизни признавать свои ошибки.

Для подключения внешнего компаса в частности к AIOP v2.0 приобретенного на RCTimer требуется:

  1. перерезать обе перемычки на плате контроллера (SJ2 и SJ3)
  2. в скетче def.h найти условие “#if defined(CRIUS_AIO_PRO_V1)” и в его теле строку “#define MPU6050_I2C_AUX_MASTER // MAG connected to the AUX I2C bus of MPU6050” заремить

вот так:

#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);
#endif

если есть возможность, прошу затереть пост 2287, да бы не вводить народ в заблуждение

надеюсь данная инструкция теперь верная?

Вот до чего доводят тонны постов на форуме и бессонные ночи.
Пойду протестирую на улицу.

omegapraim

2 sulaex было бы очень замечательно если б вы все сделали с картинками, тогда бы можно было бы добавить ваш пост в FAQ. А так не многие поймут где чего резать.

sulaex
omegapraim:

2 sulaex было бы очень замечательно если б вы все сделали с картинками, тогда бы можно было бы добавить ваш пост в FAQ. А так не многие поймут где чего резать.

Если собираетесь переносить картинки, пере сохраните их, иначе с этого ресурса они со временем удалятся. Картинка кликабельна с большим разрешением.

Sir_Alex
sulaex:
  1. в скетче def.h найти условие “#if defined(CRIUS_AIO_PRO_V1)” и в его теле строку “#define MPU6050_I2C_AUX_MASTER // MAG connected to the AUX I2C bus of MPU6050” заремить

Это лишнее, достаточно обрезать перемычки 😃

mahowik
Sir_Alex:

А разработчик AIOP по моей просьбе, сделал перемычки для компаса.

ну я то про свой огород писал, т.е. про первую версию платы 😃 а это значит что в первой АИОП резать всеж придется…

Sir_Alex:

Это лишнее, достаточно обрезать перемычки

В вие, для работы компаса по основной i2c шине этот дефайн надо комментить обязательно…

Sir_Alex
mahowik:

Алексей, не путай народ В вие, для работы компаса по основной i2c шине этот дефайн надо комментить обязательно…

Да, был не прав. Посмотрел исходники, оказывается Вий зачем то работает с компасом через регистры самого MPU6050, а не напрямую с компасом… Непонятно тока зачем это делать…

sulaex

Отлетал пару акков. НР работает предсказуемо, завтра до настраиваю его еще чутка, что бы на полном газу при бросании стиков не так сильно по дуге восстанавливал позицию, не работает АН, конфликт с бародатчиком на дополнительной плате, надо бы сдуть его нафик. Телеметрия понравилась на аппе, приятное дополнение, огромное спасибо за это 😃

mahowik
Sir_Alex:

оказывается Вий зачем то работает с компасом через регистры самого MPU6050, а не напрямую с компасом… Непонятно тока зачем это делать…

Через этот дейфайн, как раз переключается работа с компасом через mpu6050, либо с основной шины, т.е. поддержка двух вариантов подключения… а сделано это скорее всего для поддержки различных платок/бордов… к примеру есть куча плат с mpu6050 на борту, но без компаса… соот-но подключение внешнего компаса вешается на общую шину…

DVE

Помнится, в вики на Ардукоптер раньше было предупреждение - осторожно работать с шиной i2c, т.к. в случае ее сбоя грохнется весь коптер как кирпич.

Я к тому что болтающиеся в воздухе/на ветру провода как на фото, имхо не есть гуд, если и делать, то как на Назе - с защитой и в корпусе, а это уже сложнее конструктивно.

OK-40

Доброго дня всем! Имею AIO v.1 wii вкупе с такими регуляторами. Не могу определиться - какую строчку правильно будет раскоментировать в config.h:
#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

drug123
OK-40:

Доброго дня всем! Имею AIO v.1 wii вкупе с такими регуляторами. Не могу определиться - какую строчку правильно будет раскоментировать в config.h:
#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

А в связи с чем, простите, сомнения? В связи с регуляторами? Так они не i2c у вас. А все датчики на плате прекрасно работают на 400 кГц

OK-40
drug123:

А в связи с чем, простите, сомнения? В связи с регуляторами? Так они не i2c у вас. А все датчики на плате прекрасно работают на 400 кГц

Все сомнения - из-за моих недостаточных знаний по этому вопросу. Так как правильно поступить с учетом моей комплектации?

drug123
OK-40:

Все сомнения - из-за моих недостаточных знаний по этому вопросу. Так как правильно поступить с учетом моей комплектации?

Если регули не I2C (такие используются для немца и не ваш случай), то тогда надо смотреть исключительно на датчики. На AIOP стоят самые современные датчики, все они работают на 400 кГц.

OK-40

Спасибо, Ярослав! Теперь все понятно.

mahowik
drug123:

Если регули не I2C (такие используются для немца и не ваш случай), то тогда надо смотреть исключительно на датчики. На AIOP стоят самые современные датчики, все они работают на 400 кГц.

Рассуждения правильные, только к этим дефайнам никакого отношения не имеют 😃
Это пристарелые дефайны для управления скоростью i2c шины для уже исторических в вие wmp (wii motion plus) - гира, nunchak - аксель. Не поверите, чуть менее двух лет назад летали на датчиках из китайских игрушек, заказывая клоны этих самых игрушек играя в лотерею. Кому интересно, в ветке вия все есть 😉
P.s. а для каждого из нормальных маркированных датчиков скорость i2c шины прописана индивидуально…