Crius Hobby MultiWii

Vitalii_Remizov

Ребят помогите новичку разобраться, дайте ссылочку где почитать про прошивку платы, какой файл за что отвечает. Читая форум накачал себе уже кучу прошивок, но ни одну не получается залить (выдает ошибку компиляции: core.a(HardwareSerial.cpp.o): In function `__vector_19’: )

у меня: Плата MultiWii SE с FTDI есть еще программатор USBasp.
За ранее спасибо.

leprud
Vitalii_Remizov:

выдает ошибку компиляции

Баян, нужна ардуина 0023, а не 1.0

Vitalii_Remizov

Все получилось. Спасибо!!! Не думал что прошивки чувствительны к версии ардуины!!!
И еще вопросик, если я правильно понял то мы (как обычные пользователи) лазим только в файле config.h, меняем в нем все что считаем нужным и заливаем в плату ???

leprud

Верно все, основные настройки именно там. Глубже пока лезть не нужно, только если есть полное понимание, как именно работает прошивка

Mihbay

Ребят может все таки подскажет кто? магнитометр при завалах чуть ли не перекручивает на 360гр в программе. откалибровать не получается, кручу по 5 заходов, Как быть? когда квадрик в горизонте то работает отлично, на многих прошивках тоже самое, только на одной нормально смотрит на север, хоть в перевернутом состоянии!

Dimm168pin
Mihbay:

Ребят может все таки подскажет кто? магнитометр при завалах чуть ли не перекручивает на 360гр в программе. откалибровать не получается, кручу по 5 заходов, Как быть? когда квадрик в горизонте то работает отлично, на многих прошивках тоже самое, только на одной нормально смотрит на север, хоть в перевернутом состоянии!

это направление осей может быть перепутано

alexmos
Mihbay:

Ребят может все таки подскажет кто? магнитометр при завалах чуть ли не перекручивает на 360гр в программе. откалибровать не получается, кручу по 5 заходов, Как быть? когда квадрик в горизонте то работает отлично, на многих прошивках тоже самое, только на одной нормально смотрит на север, хоть в перевернутом состоянии!

Неправильно сконфигурированы датчики по осям. В начале ветки был дан верный define с которым больше ничего крутить не надо: rcopen.com/forum/f123/topic258132/21

т.е. у меня в прошивке сразу правильно заработал вот этот:
#define FREEIMUv035_BMP // FreeIMU v0.3.5_BMP

Mihbay

Да всем спасибо! особенно leprud! разобрался, действительно по осям не было сконфигурировано, кроме всего прочего в def.h напрочь отсутствовали этот блок строк
#if defined(CRIUS_SE)
#define ITG3200
#define BMA180
#define HMC5883
#define BMP085
#define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = X; accADC[PITCH] = Y; accADC[YAW] = Z;}
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = X; gyroADC[PITCH] = Y; gyroADC[YAW] = Z;}
#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = -Y; magADC[PITCH] = X; magADC[YAW] = Z;}
#define INTERNAL_I2C_PULLUPS
#endif

Я их вставил, и добавил строку в Config.h
#define CRIUS_SE // Crius MultiWii SE board AIO

Сейчас компас отлично показывает, настроил аппу и прошивку для баро и альт. скоро испытания! тока от балансирую всё, а то один лучь как струна)), хотя сам квадрик в полете не трясет.

alexmos

Я тоже сегодня полетел, на стоковых пидах с отбалансированными винтами коптер висит как влитой! 😃 Хорошая платка, намного удобнее ковыряний с ардуиной и датчиками.

leprud

Поставил крайнюю прошивку (dev_20120225), в ней уже есть headfree mode (когда плата смотрит на компас и “вперед”/“назад”/“вправо”/“влево” делает не по изначальному расположению платы, а по магнетометру. Сиречь можно пустить коптер волчком и продолжать адекватно летать, не думая о реальном положении коптера). Но пришлось выносить плату выше моторов и подальше от силовых проводов (у меня мелкий коптер, расстояния были мизерными - от кончиков пропеллеров до стоек крепежа платы меньше сантиметра), иначе магнетометр начинал врать и дрейфовать.
Также значительно улучшена работа с нашим BMA180, теперь у меня отлично заработал level mode.
Добавлен уже #define CRIUS_SE, и выбирать надо именно его, т.к. положение осей немного поменялось и ручное добавление блока #if defined(CRIUS_SE) не даст желаемого результата. Ну да уже не важно, дефайн есть готовый.

Vitalii_Remizov

Леонид, если не сложно подскажите плз, что закоментили, а что разкоментили в этой (dev_20120225) прошивке.

И еще вопрос:

  • калибровка акселей это: установить все на горизонтальную поверхность и нажать кнопку калибровки. ???
  • калибровка компаса это: нажимаем кнопку и крутим все по всем осям пока диод моргать не перестанет. ???
leprud

Достаточно раскомментить только #define CRIUS_SE, в принципе.
Остальное - дело вкуса и привычек
(например, я поставил motor_stop, itg3200 lpf=42hz, deadband=10)

Vitalii_Remizov

Спасибо, а на счет калибровок я правильные выводы сделал (читая форум)?

Mihbay

Леонид а чем прошиваете у меня ардруина 023 почему то даже открывать не хочет???

Vitalii_Remizov

Михаил, эт у меня сегодня такая проблема была почитайте чуть выше

нужна ардуина 1.0, а не 0023

leprud
Vitalii_Remizov:

а на счет калибровок

Там все просто…
Гироскопы калибруются сами при включении (поэтому важно включая питание не дергать аппарат)
Акселерометр калибруется единожды, выставив коптер ровно
Магнетометр чтоб откалибровать - нажать кнопочку в гуи, да пока светодиод мигает - покрутить по всем осям на 360 градусов.

Mihbay:

у меня ардруина 023 почему то даже открывать не хочет

файл .ino переименуйте в .pde , и его уже открывайте
Либо уже можно качать 1.0 ардуину для него, не принципиально

Mihbay

При компиляции когда раскомментируешь #define RCAUXPIN12 вылетает ошибка!
MultiWii_dev_20120225.cpp: In function ‘void i2c_init()’:
Sensors:121: error: ‘I2C_PULLUPS_ENABLE’ was not declared in this scope
что это?
при #define RCAUXPIN8 нормально,

Ну и кроме этой ошибки
Я тащююсь от HEEDFREE просто суперская функция для FPV без стабилизации камеры по роллу

leprud
Mihbay:

когда раскомментируешь #define RCAUXPIN12

Да, чет там ошибка
В def.h
замените

#if !defined(RCAUXPIN12)
#define POWERPIN_PINMODE pinMode (12, OUTPUT);
#define POWERPIN_ON PORTB |= 1<<4;
#define POWERPIN_OFF PORTB &= ~(1<<4); //switch OFF WMP, digital PIN 12
#define I2C_PULLUPS_ENABLE PORTC |= 1<<4; PORTC |= 1<<5; // PIN A4&A5 (SDA&SCL)
#else
#define POWERPIN_PINMODE ;
#define POWERPIN_ON ;
#define POWERPIN_OFF ;
#define RCAUXPIN
#endif
#define I2C_PULLUPS_DISABLE PORTC &= ~(1<<4); PORTC &= ~(1<<5);

на

#if !defined(RCAUXPIN12)
#define POWERPIN_PINMODE pinMode (12, OUTPUT);
#define POWERPIN_ON PORTB |= 1<<4;
#define POWERPIN_OFF PORTB &= ~(1<<4); //switch OFF WMP, digital PIN 12
//#define I2C_PULLUPS_ENABLE PORTC |= 1<<4; PORTC |= 1<<5; // PIN A4&A5 (SDA&SCL)
#else
#define POWERPIN_PINMODE ;
#define POWERPIN_ON ;
#define POWERPIN_OFF ;
#define RCAUXPIN
#endif
#define I2C_PULLUPS_DISABLE PORTC &= ~(1<<4); PORTC &= ~(1<<5);

#define I2C_PULLUPS_ENABLE PORTC |= 1<<4; PORTC |= 1<<5; // PIN A4&A5 (SDA&SCL)

Аккуратно, не проверял код

Mihbay

Спасибо заработал порт, я проверил !

Кстати тут появились AUX 3 - 4 а на какие порты назначались ктонить проверял?

а вот нашел в прошивке
AUX3 = PIN A14
AUX4 = PIN A15

Тут вообще проблема, в прошивке то они прописаны но на плате их нет!!!

leprud

Переходите на sum ppm - всего один провод от приемнику к контроллеру, да никакой головной боли от выбора разъема 😃
Ну и вес сократится немного, понятное дело