MultiWii
Запустил датчики сам. В полете еще не пробовал. Может кому пригодится.
// ************************************************************************************************************
// I2C ACC+GYRO LSM330DLC
// ************************************************************************************************************
#if defined(LSM330DLC)
//ACCELEROMETR
void ACC_init () {
delay(10);
i2c_writeReg(0x19,0x20,0x37);
i2c_writeReg(0x19,0x23,0x10);
acc_1G = 256;
}
void ACC_getADC () {
TWBR = ((F_CPU / 400000L) - 16) / 2;
i2c_getSixRawADC(0x19,0x28|0x80);
ACC_ORIENTATION( ((rawADC[1]<<8) | rawADC[0])/16 ,
((rawADC[3]<<8) | rawADC[2])/16 ,
((rawADC[5]<<8) | rawADC[4])/16 );
ACC_Common();
}
// GYROSCOPE
void Gyro_init () {
delay(10);
i2c_writeReg(0x6B, 0x20, 0xBF);
}
void Gyro_getADC () {
TWBR = ((F_CPU / 400000L) - 16) / 2;
i2c_getSixRawADC(0x6B,0x28|0x80);
GYRO_ORIENTATION( ((rawADC[1]<<8) | rawADC[0])/20 ,
((rawADC[3]<<8) | rawADC[2])/20 ,
((rawADC[5]<<8) | rawADC[4])/20 );
GYRO_Common();
}
#endif
Всетаки подохла одна из серв (тупо прокручивается где то шестеренка, до этого похрустывала, хотя на вид всё хорошо), поставил цифровую серву с трикоптера и получил вот такой странный косяк
www.youtube.com/watch?v=OimcU4twZiI
при подключении аналоговой - никаких дерганий нет… куда копать?
Смысл упражнения сэкономить 2 грамма веса на мелколете.
Смысла экономить 2 и 10 грамм вообще нет, просто для примера моя вот эта конструкция на 6хDT750 Gemfan 11х47 со стекловолокном жоские не хобикинговские!
4S-акк тянет на подъем в пределе 4.65 кг полезной массы с учетом того что он сам примерно 1.5весит т.е. на 1 мотор тяга около 900-1050грамм
замерял вешая на каждые два луча полторашку воды по кругу, на максимуме было уже страшно лететь с 3-мя полторахами на КК )))
странное поведение гексы (на трешке и квадрике такого не было)
ставлю #define YAW_DIRECTION 1 - при попытке взлететь начинает крутиться по часовой стрелке и взлететь просто не реально
ставлю #define YAW_DIRECTION -1 - всё отлично летает и никуда не крутится, но вращается в обратную сторону
как поправить? =)
зы: вернул аналоговую серву на подвес, нормально работает, но слабенькая
ставлю #define YAW_DIRECTION -1 - всё отлично летает и никуда не крутится, но вращается в обратную сторону
если долго не думать, то просто реверс на аппе вруби ))
просто реверс на аппе вруби ))
ну это какой то костыльный вариант =) у меня пока 2 варианта - поменять миксы моторов (толк, если yaw_directions еще где то используется), инвертировать Z ось на гире
upd: инвертировал ось Z у гиры - теперь нормально всё… и умудрился сломать последнюю серву на подвесе =)) теперь и она хрутистит, но хоть видно где и почему
Смысла экономить 2 и 10 грамм вообще нет
2 грамма это например полминуты полета. Там общий вес 80 грамм, из них акк 20 грамм.
Но это даже не главное. Он перегружен и весить больше половины суммарной тяги(140 грамм), что не очень хорошо. В планах всего выкроить 6 грамм, что 8% веса и очень не плохо.
А вообще на всем что летает, вес всегда экономили, чай не бульдозер.
Помогите настроить каналы приемника hobbyking 2.4Ghz 6ch v2 подключенного по ppm sum. Розкоментировал строку
#define SERIAL_SUM_PPM PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4 //HK 6ch
Менял каналы местами но логики в изменениях ноль. Апа Turnigy 9ch
она у тебя вообще реагирует? да кстати… получается передатчик турниджи а приемник от т6? стыкуются?
у меня просто аналогичная аппа от FlySky (FS-CT6B-), так вот там по обычным каналам прямой сигнал, а по ппмсум инверсный - соответственно по ппмсум прерывание в обработчике не по фронту а по спаду нужно (rising на falling)
Реагирует но как то медленно. На выходе ППМСУМ между пакетами высокий уровень, выходит инверсный?
Где меняется rising на falling?
в def.h найди в разделе
/************************** atmega328P (Promini) ************************************/
строчку
#define PPM_PIN_INTERRUPT attachInterrupt(0, rxInt, RISING); //PIN 0
и там попробуй заменить RISING на FALLING
а ктонибудь знает как включить 6-й импульс в сумматоре на спад а не на поднятие, а то таже по сути аппа HK 6калалка 2.4ггц, но после суммирования видятся только первые 5 каналов так как нет импульса после 6-го
пс. помоему вот такая модификация в файле RX.pde:
void rxInt() {
uint16_t now,diff;
static uint16_t last = 0;
static uint8_t chan = 0;
now = micros();
diff = now - last;
last = now;
if(diff>3000) chan = 0;
else {
if(900<diff && diff<2200 && chan<8 ) { //Only if the signal is between these values it is valid, otherwise the failsafe counter should move up
rcValue[chan] = diff;
#if defined(FAILSAFE)
if(failsafeCnt > 20) failsafeCnt -= 20; else failsafeCnt = 0; // clear FailSafe counter - added by MIS //incompatible to quadroppm
#endif
}
chan++;
if(chan==5) attachInterrupt(0, rxInt, FALLING); //set to falling edge to receive last channel (YAW)
if(chan==6) attachInterrupt(0, rxInt, RISING); //set back to rising edge and wait for another loop
}
}
2 All:
Не могу понять странного поведения квадрика.
Плата Drotek, раньше летало все нормально, сейчас при попытке дать газ вместо полета небольшие подскоки и судорожные рывки движков.
Думал на неконтакт, пропаял еще раз пины, не помогло, подключил Bluetooth, вывел значения газа на график - видно что на газ идет такая ломаная линия вместо сплошной, значения моторов скачут в диапазоне 1200-1700.
Вибрации исключены, судя по тем же графикам, ACC/GYRO вполне без рывков, i2c-ошибок нет, ПИДы не трогал.
Даже если при питании от USB мягко покачать квадрик в руке, значения моторов скачут от минимума до максимума.
Что еще может быть? Такое ощущение что я забыл какой-то define включить, но хз какой.
PS: Я лопух, я же на другом квадрике эту плату тестил. Поставил MINTHROTTLE 1300 для plush-ей все заработало.
Пост удалять не буду, может другим полезно будет.
Поставил MINTHROTTLE 1300 для plush-ей все заработало
А какое значение MINTHROTTLE ставить для плюшей 25А?
У меня тоже прыгают уровни газа дико но вроде летает не не очень стабильно…
То что прыгают, как я понял это нормально, инерция моторов все сгладит, главное чтобы газ не был ниже уровня при котором регуляторы выключаются, иначе фигня получается.
В последних версиях Multiwii есть возможность подключать GPS напрямую к УАРТ но при этом отключается возможность конфигурирования с ПК. А нельзя сделать так что бы можно было и GPS подключать и конфигурировать? Или не парится и сделать UART-to-I2c на ATmega168?
А нельзя сделать так что бы можно было и GPS подключать и конфигурировать?
теоретически можно намутить программный последовательный порт, но гемора очень много, в разы проще поставить еще одну ардуинку для uart-to-i2c
Так можно сделать автоопределение что сейчас подключено (после старта МК по первому пакету определить что это запрос от ГУИ или пакет от ЖПС). Но с Ардуино я пока не дружу.
А нельзя сделать так что бы можно было и GPS подключать и конфигурировать?
Давно уже можно, ибо сделали автоопределение.
Вон, подробно и в картинках: rcopen.com/blogs/114128/14637
в разы проще поставить еще одну ардуинку для uart-to-i2c
или удобное готовое за 7 баксов купить…
В последних версиях Multiwii есть возможность подключать GPS напрямую к УАРТ но при этом отключается возможность конфигурирования с ПК. А нельзя сделать так что бы можно было и GPS подключать и конфигурировать? Или не парится и сделать UART-to-I2c на ATmega168?
Ну если у вас нет второго порта уарт, то можно и сохранить подключение к GUI но при этом нужно будет все равно отключать гпс например тумблером или просто вытащить разъемчик, читать тут Подключаем GPS к MiltiWII С АВТОМАТИЧЕСКИМ ОПРЕДЕЛЕНИЕМ
Лёня ты быстр))))
Ок. Всем спасибо. Заберу сегодня 2 модуля ЖПС и буду разбираться.