CRIUS ALL IN ONE PRO Flight Controller

soliada
Dreddix:

Вопрос по плате. Умер компас.

Возможно дело не в компасе,т.к он подключен через МПУ6050,то есть вероятность что контакт потерялся именно там.Там бяка в том,что чип МПУ имеет большой полигон который тоже припаивается к плате и если на него попадает слишком много припоя,то есть вероятность,что некоторые из выводов могут не припаяться до контактной площадки на плате,или припаяться не очень хорошо.Исправить можно только если снять сам чип,удалить излишки припоя и запаять заново.С компасом по идее надо сделать тоже самое.Если не будете нагревать его до температуры плавления текстолита))),а град до 250,то ничего с ним случиться не должно.

gorbln
EduardNN:

Ошибаешься. По барометру отслеживается изменение высоты.

А я чего написал??? Что данные барометра косвенно (то есть после домножения на коэффициенты и фильтрации) отображаются в конфигураторе в виде высоты. Читаете по диагонали?

Сергей_Вертолетов:

Паяю ПОСК-50, температура плавления около 150. Очень удобно.

Нет такого эффекта, как с Розе, что после застывания - чип можно пальцами оторвать? Типа, не липнет нифига?

Dreddix
gorbln:

Что данные барометра косвенно (то есть после домножения на коэффициенты и фильтрации) отображаются в конфигураторе в виде высоты.

Именно так баро и отображается. Действительно, поднимая и опуская плату в телеметрии видно изменение высоты в + или в -.

Прогнал я платку через I2C_spy.pde , вот результат-

Start new scan
Detected device addr: 0x1E HMC5883/43 (compass)
Detected device addr: 0x68 ITG3200 (gyro), MPU6050 (gyro+accel)
Detected device addr: 0x77 MS5611 (baro)
=================================
Cycle is over

Как видно, компас отзывается. Что дальше. Куда копать. Теперь у меня вообще никаких идей нет. Щас залью ардуплейн назад…

Leon11t

Скиньте человеку кто небуть hex файл своей робочей прошивки. Может где то у него чтото заглючило в компиляторе ардуиновском.

Dreddix

Сразу после заливки арду, строчки компаса были живы. Я загрузил в плату настройки, отключил от УСБ, подключил синезуб- всё, и через синезуб и через усб- строчки компаса по нулям. Залил снова и2цшпийона, компас жив, после заливки арду, строчка компаса по нулям. Настройки залитые в плоату не стираются. Их надо как-то сбросить, возможно там проблема.

ПЫСЫ
отключаю, подключаю он 1 раз даже заработал и откалибровался. Отключил-подключил… не работает. Что за бред. ковыряю дальше.

Сергей_Вертолетов
gorbln:

Нет такого эффекта, как с Розе, что после застывания - чип можно пальцами оторвать? Типа, не липнет нифига?

Держит отлично. И еще свойство классное - капля этого припоя делает легкоплавким и соединение, припаянное чем-нибудь “дубовым”

Dreddix:

отключаю, подключаю он 1 раз даже заработал и откалибровался. Отключил-подключил… не работает. Что за бред. ковыряю дальше.

ничего с ушами не напоминает, где компас и баро отваливались, если передернуть питание, не подождав более минуты?

gorbln

Шой-то у меня ощущение…
А вы тип платы в ардуине правильно выставляете? А то если не правильно - оно заливается, но потом подвисает при попытке прицепиться конфигуратором - всё работает, но данные не идут.

Сергей_Вертолетов:

Держит отлично

Спасибо за инфу, закуплюсь завтра =)

Dreddix

ВСЁ!!! РАЗОБРАЛСЯ!!!

Это похоже особенности прошивки… БАГИ…

На плате есть кнопка ресет. Пока её не нажмёшь компас не работает. Иногда при одиночном нажатии плата не запускается, остаётся гореть “А”(красный) лед, но повторное нажатие РЕСЕТ оживляет плату. При подключении через УСБ, плата всегда перезагружается, поэтому иногда компас работает, и никогда не работает от синезуба без ресета. После ресета компас работает ВСЕГДА!!! А я ещё думал… нахрена тут ресет… а вон оно как… очень даже надо!
Спасибо всем откликнувшимся! Я тут собирался компас менять, а оно вон как…

gorbln:

А вы тип платы в ардуине правильно выставляете?

Вы про это?
#define PIRATES_SENSOR_BOARD PIRATES_CRIUS_AIO_PRO_V1
Проша для самика сразу собрана для AIOP контроллера, ничего менять не надо.
Сама плата у меня версии 2, но там нет никаких отличий, кроме цвета пластика и усиленный усб

gorbln:

А то если не правильно - оно заливается, но потом подвисает при попытке прицепиться конфигуратором - всё работает, но данные не идут.

Вот именно это у меня и происходит! Но после ресета отпускает! Причина?

gorbln
Dreddix:

Причина?

ну я ж говорю - тип платы надо выставить в ардуине. В смысле - в настройках САМОЙ ардуины, среды программирования. У вас походу плата Pro Mini установлена. А надо Mega256. Сам с такой фигнёй сталкивался, и где-то здесь прочитал, что так бывает.

Dreddix:

Вы про это?
#define PIRATES_SENSOR_BOARD PIRATES_CRIUS_AIO_PRO_V1

Нет. Это дефайн, определяющий тип платы для программы, в данном случае - пирата.

Распишу поподробнее. В среде ардуино делаете “сервис” -> “плата” -> Mega 2560
После чего пересобираете и перезаливаете прошивку. Должно попустить =)

Dreddix

Или ещё как вариант, на этой прошивке при подаче питания и первичной загрузки платы, не инициализируется компас, или проц не может его просчитать, но когда питание подано и сделать сброс, проц просчитывает компас как надо.
Кстати, иногда, 1й ресет не помогает, тогда точно помогает 2й ресет. Короче без компа на поле ехать нельзя. Без уверенности что компас в порядке- это самоубийственно

gorbln:

В смысле - в настройках САМОЙ ардуины, среды программирования. У вас походу плата Pro Mini установлена. А надо Mega256. Сам с такой фигнёй сталкивался, и где-то здесь прочитал, что так бывает.

выбрано Arduino mega 2560 or mega ADK

Если бы была выбрана не та плата, то какая связь с нажатием РЕСЕТ? я так понимаю никогда не будет подхватываться?
Тут в прошивке скорее дело. Её тут никто не пробовал. а мне позарез нужен автопилот для самика. Дистанции стали уже не 1 км, ссыкотна очень… Вот и решил попробовать. Всё вроде ок, кроме глюка с компасом.

Я мучаю дальше плату. Одиночный ресет не всегда помогает, иногда нужно даже 4-5 раз нажать ресет, чтобы заработал компас. И у меня появилась мысль. А что, если питание виновато? Рег в самике СБЕК, на столе я его питаю СБЕКом. Может шумные источники очень? Линейника нет, жалко, попробовать. От батареи его можно 3S питать? Extend Power стоит 5-12в, а 12.6 выдержит? Если питать от акка, джампер желтенький снимать надо?

Sir_Alex

Виталий, залейте MPNG и проверьте на ней. 99.999% тот кто портировал код пирата под самолет, не учел того момента, что MPU6050 обязан быть проинициализирован до компаса. У меня в прошивке этот вопрос решен (по сравнению с Ардукоптером (там компас не подключен через MPU6000) а в самолетной похоже что нет.

Dreddix
Sir_Alex:

Виталий, залейте MPNG и проверьте на ней. 99.999% тот кто портировал код пирата под самолет, не учел того момента, что MPU6050 обязан быть проинициализирован до компаса. У меня в прошивке этот вопрос решен (по сравнению с Ардукоптером (там компас не подключен через MPU6000) а в самолетной похоже что нет.

Сделаю!

Leon11t

12 ,6 вольт много, там стоит слабинький стабилизатор. А вот задействовать розьем балансера можна, взять из него 7,2 вольт.

Dreddix
Sir_Alex:

Виталий, залейте MPNG и проверьте на ней. 99.999% тот кто портировал код пирата под самолет, не учел того момента, что MPU6050 обязан быть проинициализирован до компаса. У меня в прошивке этот вопрос решен (по сравнению с Ардукоптером (там компас не подключен через MPU6000) а в самолетной похоже что нет.

Похоже что именно так дела и обстоят! На вашей прошивке компас работает железно, я задолбался питание передёргивать, ни одного отказа ни через синезуб, ни через УСБ!!! Прошивку залил быстро, опыта уже море…
Отсюда следует что я прав тут -

Dreddix:

Или ещё как вариант, на этой прошивке при подаче питания и первичной загрузки платы, не инициализируется компас, или проц не может его просчитать, но когда питание подано и сделать сброс, проц просчитывает компас как надо.

Только я не смог правильные слова подобрать! Теперь всё логично!

Отсюда следствие… Сир Алекс, Алесей… ради всего хорошего в жизни… Скажите, что и куда дописать в код ардупилота, пожалуйста! Если это, конечно, не означает 2х дневного гемора…

mahowik
Leon11t:

12 ,6 вольт много, там стоит слабинький стабилизатор. А вот задействовать розьем балансера можна, взять из него 7,2 вольт.

я смотрю вы просто кладеЗь полеЗных советов 😃
расход батареи должен быть равномерным по банкам…

Dreddix
Leon11t:

взять из него 7,2 вольт.

вообще не вариант. Потому что -

mahowik:

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

Полностью согласен с Александром. Даже если плата и не потребляет практически ничего. Не вариант. мне проще на работе линейник сваять, 2 мин делов. Но только проблема уже найдена. Не в питании дело.

Sir_Alex
Dreddix:

Отсюда следствие… Сир Алекс, Алесей… ради всего хорошего в жизни… Скажите, что и куда дописать в код ардупилота, пожалуйста! Если это, конечно, не означает 2х дневного гемора…

Сложно сказать, код довольно сильно отличается, попробуйте в файле system.pde перенести код:

    if(g.compass_enabled)
        init_compass();

после строчки:

imu.init(IMU::COLD_START, mavlink_delay, flash_leds, &timer_scheduler);
Dreddix

Там такая строчка-

#if HIL_MODE != HIL_MODE_ATTITUDE
imu.init(IMU::WARM_START, mavlink_delay, flash_leds, &timer_scheduler);
ahrs.set_centripetal(1);
#endif

Сделать так?

#if HIL_MODE != HIL_MODE_ATTITUDE
imu.init(IMU::WARM_START, mavlink_delay, flash_leds, &timer_scheduler);
if(g.compass_enabled)
init_compass();
ahrs.set_centripetal(1);
#endif
?

Dreddix

Там ещё есть такое место, строчка такая же, этот кусок немного ниже первого куска -

 #if HIL_MODE != HIL_MODE_ATTITUDE
    gcs_send_text_P(SEVERITY_MEDIUM, PSTR("Warming up ADC..."));
 	mavlink_delay(500);

	// Makes the servos wiggle twice - about to begin IMU calibration - HOLD LEVEL AND STILL!!
	// -----------------------
	demo_servos(2);
    gcs_send_text_P(SEVERITY_MEDIUM, PSTR("Beginning IMU calibration; do not move plane"));
	mavlink_delay(1000);

	imu.init(IMU::COLD_START, mavlink_delay, flash_leds, &timer_scheduler);
    if (force_accel_level || g.manual_level == 0) {
        // when MANUAL_LEVEL is set to 1 we don't do accelerometer
        // levelling on each boot, and instead rely on the user to do
        // it once via the ground station
        imu.init_accel(mavlink_delay, flash_leds);
    }
	ahrs.set_centripetal(1);
    ahrs.reset();

	// read Baro pressure at ground
	//-----------------------------
	init_barometer();

Похоже что сюда надо писать, а не в том, первом месте? И сразу под барометром, вроде как
if(g.compass_enabled)
        init_compass();

    if (g.airspeed_enabled == true) {
        // initialize airspeed sensor
        // --------------------------
        zero_airspeed();
        gcs_send_text_P(SEVERITY_LOW,PSTR("<startup_ground> zero airspeed calibrated"));
    } else {
        gcs_send_text_P(SEVERITY_LOW,PSTR("<startup_ground> NO airspeed"));
    }
#endif // HIL_MODE_ATTITUDE