MultiWii
В свободном падении по осям будет 0.
Спасибо.
Это что же получается, что МультиВии высоту тоже отслеживает?
Спасибо.
Это что же получается, что МультиВии высоту тоже отслеживает?
При помощи баро датчика или жпс,или же совмесно для большей точности
МультиВии высоту тоже отслеживает?
Только проекции сил по осям. Именно так предлагается дополнить бародатчик для удержания высоты: ПИД по давлению воздуха, ПИД по оси Z: проекция F=m*(g-a). Коптер сваливается или взмывает вверх - идет возмущение по давлению воздуха, и по ускорению (g-a) по оси Z.
курс
Курс определяется только гироскопом (ДУС) и магнитометром.
Для компенсации наклона магнитометра нужен акселерометр.
Еще вопрос назрел. Скачал MultiWii_1_9.
Но вот не пойму, это какая то урезанная версия? или это заплатка?
Внутри нет выбора вида коптера и пр.
Искал по теме ничего по этому поводу не нашел.
Объясните, может я не то скачал или куда это вставить, чтобы получилась полная прошивка.
Работал с файлом MultiWii_1_9.pde
включили в прошивку мой мод 😃 правда называтся будет HEAD FREE
www.multiwii.com/forum/viewtopic.php?f=8&t=872&sta…
code.google.com/p/multiwii/source/diff?spec=svn406…
Работал с файлом
Неверно не в той папке открываете
если в MultiWiiConf_1_9 то там только MultiWiiConf_1_9.pde размером всего 47 кб
А надо в папке MultiWii_1_9 открывать любой pde, там есть всё.
Спасибо, все понял, там оказывается еще куча вкладок и надо открыть вкладку config.h
Может кому нибудь будет интересно
Код для пары еще одних датчиков.Один акселерометр,другой компас-акселерометр в одном корпусе.
// ************************************************************************
// LSM303DLHC I2C Accelerometer
// ************************************************************************
#if defined(LSM303DLHC)
// I2C adress: 0x32 (8bit)
void ACC_init(){
delay(10);
i2c_writeReg(LSM303DLHC_ADDRESS ,0x20 ,0x27 );
delay(5);
i2c_writeReg(LSM303DLHC_ADDRESS ,0x23 ,0xA8 );
acc_1G = 256;
}
void ACC_getADC(){
TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz
i2c_getSixRawADC(LSM303DLHC_ADDRESS,0x28+0x80); // Start multiple read at reg 0x28
ACC_ORIENTATION( (rawADC[3]<<8 | rawADC[2])/16,
-(rawADC[1]<<8 | rawADC[0])/16,
-(rawADC[5]<<8 | rawADC[4])/16);
ACC_Common();
}
#endif
// ************************************************************************
// LIS3DH I2C Accelerometer
// 1) CS PIN must be linked to VCC to select the I2C mode
// 2) SD0 PIN must be linked to VCC to select the right I2C adress
// ************************************************************************
#if defined(LIS3DH)
// I2C adress: 0x32 (8bit)
void ACC_init(){
delay(10);
i2c_writeReg(LIS3DH_ADDRESS ,0x20 ,0x57 );
delay(5);
i2c_writeReg(LIS3DH_ADDRESS ,0x23 ,0x88 );
acc_1G = 256;
}
void ACC_getADC(){
TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz
i2c_getSixRawADC(LIS3DH_ADDRESS,0x28+0x80); // Start multiple read at reg 0x28
ACC_ORIENTATION( (rawADC[3]<<8 | rawADC[2])/64,
-(rawADC[1]<<8 | rawADC[0])/64,
-(rawADC[5]<<8 | rawADC[4])/64);
ACC_Common();
}
#endif
// ************************************************************************************************************
// I2C Compass LSM303DLHC
// ************************************************************************************************************
// I2C adress: 0x3C (8bit)
// ************************************************************************************************************
#if defined(LSM303DLHC)
void Mag_init() {
delay(100);
i2c_writeReg(0X3C ,0x02 ,0x00 ); //Start the first conversion
delay(100);
}
void Device_Mag_getADC() {
i2c_getSixRawADC(0X3C,0X03);
MAG_ORIENTATION( ((rawADC[4]<<8) | rawADC[5]) ,
-((rawADC[0]<<8) | rawADC[1]) ,
-((rawADC[2]<<8) | rawADC[3]) );
}
#endif
Может кому нибудь будет интересно Код для пары еще одних датчиков.Один акселерометр,другой компас-акселерометр в одном корпусе.
в 1.9 уже добавили LSM303…
для остальних забросьте на офф форум, а то погибнут труды 😃
// ************************************************************************************************************
// I2C Accelerometer LSM303DLx
// contribution from wektorx ()
// ************************************************************************************************************
#if defined(LSM303DLx_ACC)
void ACC_init () {
delay(10);
i2c_writeReg(0x30,0x20,0x27);
i2c_writeReg(0x30,0x23,0x30);
i2c_writeReg(0x30,0x21,0x00);
acc_1G = 256;
}
void ACC_getADC () {
TWBR = ((16000000L / 400000L) - 16) / 2;
i2c_getSixRawADC(0x30,0xA8);
ACC_ORIENTATION( - ((rawADC[3]<<8) | rawADC[2])/16 ,
((rawADC[1]<<8) | rawADC[0])/16 ,
((rawADC[5]<<8) | rawADC[4])/16 );
ACC_Common();
}
#endif
в 1.9 уже добавили LSM303…
Это я знаю.Там код для немного другого датчика в корпусе LGA28,у меня с ним так и не заладилось,производитель или что-то намудрил с питанием или сделал ошибку в даташите.
LSM303DLHC корпус LGA14,точно такой же как у ADXL345.
Хотя по назначению и адресам регистров они практически одинаковые, есть конечно некоторые не значительные отличия.
Компасная часть аналогична компасу HMC5883,можно даже тупо раскомментировать HMC5883 и будет работать.
Огромный плюс,нет запарки с направлением осей.
Да,с Мультивийным кодом имеющиеся у меня датчики почему то не заработали.
Подскажите плиз…Как поведет себя коптер если плату с датчиками (алинван) сместить на 3-4 сантиметра от центра по крену.?Насколько сильео повлияет это на его поведение и стабильность?
плату с датчиками (алинван) сместить на 3-4 сантиметра от центра
у меня никогда по центру масс ЦМ плата с датчиками не была. Каждый раз оказывалась сбоку внутри корпуса ЛА. Проблем не замечал.
Посмотрите хотя бы на фирменных сайтах (NAZA DJI, например) ЛА на обложках, где лежат красивые коробочки с мозгами - часто сбоку. И ничего, летает.
Вот блин а я чет зацепился за этот центр …
а я чет зацепился за этот центр
5 сантиметров ничего не решают. Все-равно, акселерометр находится “рядом” с тяжелым аккумулятором в центральной части.
+_5 см - как раз, примерно такой размер имеет центральная часть, куда крепят датчики.
Пытаюсь подключить акселерометр
Схема
При этом светодиод на плате не горит и сигналов на выходе нет.
Если делаю так
То выходные сигналы появляются, но они неизменны.
У кого нибудь такое работает?
У меня заработал полноценно при подключении CS и SDO на VCC.
Пытаюсь подключить акселерометр
Пины CS и SDO в варианте МультиВи должны быть подсоединины на VCC, CS-выбор между I2C и SPI, SDO-вариант адреса датчика.
Вопрос,а питание подаете 3.3 или 5в?
Пины CS и SDO в варианте МультиВи должны быть подсоединины на VCC, CS-выбор между I2C и SPI, SDO-вариант адреса датчика.
Вопрос,а питание подаете 3.3 или 5в?
Спасибо. Завтра попробую. Питание подается 3,3в на пин 3,3.
Пины CS и SDO в варианте МультиВи должны быть подсоединины на VCC, CS-выбор между I2C и SPI, SDO-вариант адреса датчика.
Вопрос,а питание подаете 3.3 или 5в?
Сейчас у меня сделано так. Не работает…
Сейчас у меня сделано так. Не работает…
Что-то не понятно.Вроде вопрос был про как подключить акселерометр? На последней фото деталь от Вимоушен.
Как его подключить можно прочитать по ссылке на первой странице.
По рисунку,к ардуинке тоже надо подключить землю.