Специальные цены   новые товары
+ Ответить в теме
Страница 56 из 165 ПерваяПервая ... 46 54 55 56 57 58 66 ... ПоследняяПоследняя
Показано с 2,201 по 2,240 из 6569

Создание собственной системы стабилизации

Тема раздела Квадрокоптеры. Общие вопросы в категории Квадрокоптеры и мультироторы; Александр mahowik меня тут озадачил, новым вийным ПИД-ом , полез я сравнивать и короче наткнулся вот на что: Код: // ...

  1. #2201

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Александр mahowik меня тут озадачил, новым вийным ПИД-ом , полез я сравнивать и короче наткнулся вот на что:
    Код:
    // **** PITCH & ROLL & YAW PID ****
            prop = max(abs(rcCommand[PITCH]), abs(rcCommand[ROLL])); // range [0;500]
            for (axis = 0; axis < 3; axis++) {
                if ((f.ANGLE_MODE || f.HORIZON_MODE) && axis < 2) { // MODE relying on ACC
                    // 50 degrees max inclination
                    errorAngle = constrain(2 * rcCommand[axis] + GPS_angle[axis], -500, +500) - angle[axis] + cfg.angleTrim[axis];
                    PTermACC = (int32_t)errorAngle * cfg.P8[PIDLEVEL] / 100; // 32 bits is needed for calculation: errorAngle*P8[PIDLEVEL] could exceed 32768   16 bits is ok for result
                    PTermACC = constrain(PTermACC, -cfg.D8[PIDLEVEL] * 5, +cfg.D8[PIDLEVEL] * 5);
    
                    errorAngleI[axis] = constrain(errorAngleI[axis] + errorAngle, -10000, +10000); // WindUp
                    ITermACC = ((int32_t)errorAngleI[axis] * cfg.I8[PIDLEVEL]) >> 12;
                }
                if (!f.ANGLE_MODE || f.HORIZON_MODE || axis == 2) { // MODE relying on GYRO or YAW axis
                    error = (int32_t)rcCommand[axis] * 10 * 8 / cfg.P8[axis];
                    error -= gyroData[axis];
    
                    PTermGYRO = rcCommand[axis];
    
                    errorGyroI[axis] = constrain(errorGyroI[axis] + error, -16000, +16000); // WindUp
                    if (abs(gyroData[axis]) > 640) 
                        errorGyroI[axis] = 0;
                    ITermGYRO = (errorGyroI[axis] / 125 * cfg.I8[axis]) >> 6;
                }
                if (f.HORIZON_MODE && axis < 2) {
                    PTerm = ((int32_t)PTermACC * (500 - prop) + (int32_t)PTermGYRO * prop) / 500;
                    ITerm = ((int32_t)ITermACC * (500 - prop) + (int32_t)ITermGYRO * prop) / 500;
                } else {
                    if (f.ANGLE_MODE && axis < 2) {
                        PTerm = PTermACC;
                        ITerm = ITermACC;
                    } else {
                        PTerm = PTermGYRO;
                        ITerm = ITermGYRO;
                    }
                }
    
                PTerm -= (int32_t)gyroData[axis] * dynP8[axis] / 10 / 8; // 32 bits is needed for calculation
                delta = gyroData[axis] - lastGyro[axis]; // 16 bits is ok here, the dif between 2 consecutive gyro reads is limited to 800
                lastGyro[axis] = gyroData[axis];
                deltaSum = delta1[axis] + delta2[axis] + delta;
                delta2[axis] = delta1[axis];
                delta1[axis] = delta;
                DTerm = ((int32_t)deltaSum * dynD8[axis]) >> 5; // 32 bits is needed for calculation
                axisPID[axis] =  PTerm + ITerm - DTerm;
            }
    и хде тут время цикла? - короче я как всегда запутался

    Таймкоп по ходу готовит 5-ю ревизию платы - обзавёлся SPI и кварц уже на 12мГц (интересно что за проц) и не понятно из каких побуждений использует РС13, РС14 для прерываний датчиков? на 4-й ревизии у него было PB12, PB13 и ничего путного из этого не вышло....

    догнал оно же само в петле

    впихнул новый ПИД на выходных проверю...
    Последний раз редактировалось SergDoc; 05.07.2013 в 01:47.

  2.  
  3. #2202

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Там в сообщении старый
    новый сдёрнул отсюда http://code.google.com/p/afrodevices...src/mw.c?r=363

  4. #2203

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от SergDoc Посмотреть сообщение
    и хде тут время цикла? - короче я как всегда запутался
    В старом нет, а в новом явно присутствует
    delta = (delta * ((uint16_t)0xFFFF / (cycleTime >> 4))) >> 6;

  5. #2204

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Старый в петле самой...
    а в этом могу задать время цикла магическое 2048...
    подождём вечера/ночи, может mahowik чего умного подскажет
    смущает, в отличии от стандартного wii дифференциальная составляющая с плюсом, наверно надо P занизить изначально, короче пропы есть надо экспериментировать

    вот этот кусок:
    Код:
    static void pidRewrite(void)
    {
        int32_t errorAngle = 0;
        int axis;
        int32_t delta, deltaSum;
        static int32_t delta1[3], delta2[3];
        int32_t PTerm, ITerm, DTerm;
        static int32_t lastError[3] = { 0, 0, 0 };
        int32_t AngleRateTmp, RateError;
    
        // ----------PID controller----------
        for (axis = 0; axis < 3; axis++) {
            // -----Get the desired angle rate depending on flight mode
            if ((f.ANGLE_MODE || f.HORIZON_MODE) && axis < 2 ) { // MODE relying on ACC
                // calculate error and limit the angle to 50 degrees max inclination
                errorAngle = constrain((rcCommand[axis] << 1) + GPS_angle[axis], -500, +500) - angle[axis] + cfg.angleTrim[axis]; // 16 bits is ok here
            }
            if (axis == 2) { // YAW is always gyro-controlled (MAG correction is applied to rcCommand)
                AngleRateTmp = (((int32_t)(cfg.yawRate + 27) * rcCommand[2]) >> 5);
             } else {
                if (!f.ANGLE_MODE) { //control is GYRO based (ACRO and HORIZON - direct sticks control is applied to rate PID
                    AngleRateTmp = ((int32_t) (cfg.rollPitchRate + 27) * rcCommand[axis]) >> 4;
                    if (f.HORIZON_MODE) {
                        // mix up angle error to desired AngleRateTmp to add a little auto-level feel
                        AngleRateTmp += (errorAngle * cfg.I8[PIDLEVEL]) >> 8;
                    }
                } else { // it's the ANGLE mode - control is angle based, so control loop is needed
                    AngleRateTmp = (errorAngle * cfg.P8[PIDLEVEL]) >> 4;
                }
            }
    
            // --------low-level gyro-based PID. ----------
            // Used in stand-alone mode for ACRO, controlled by higher level regulators in other modes
            // -----calculate scaled error.AngleRates
            // multiplication of rcCommand corresponds to changing the sticks scaling here
            RateError = AngleRateTmp - gyroData[axis];
    
            // -----calculate P component
            PTerm = (RateError * cfg.P8[axis]) >> 7;
            // -----calculate I component
            // there should be no division before accumulating the error to integrator, because the precision would be reduced.
            // Precision is critical, as I prevents from long-time drift. Thus, 32 bits integrator is used.
            // Time correction (to avoid different I scaling for different builds based on average cycle time)
            // is normalized to cycle time = 2048.
            errorGyroI[axis] = errorGyroI[axis] + ((RateError * cycleTime) >> 11) * cfg.I8[axis];
    
            // limit maximum integrator value to prevent WindUp - accumulating extreme values when system is saturated.
            // I coefficient (I8) moved before integration to make limiting independent from PID settings
            errorGyroI[axis] = constrain(errorGyroI[axis], (int32_t)-GYRO_I_MAX << 13, (int32_t)+GYRO_I_MAX << 13);
            ITerm = errorGyroI[axis] >> 13;
    
            //-----calculate D-term
            delta = RateError - lastError[axis];  // 16 bits is ok here, the dif between 2 consecutive gyro reads is limited to 800
            lastError[axis] = RateError;
    
            // Correct difference by cycle time. Cycle time is jittery (can be different 2 times), so calculated difference
            // would be scaled by different dt each time. Division by dT fixes that.
            delta = (delta * ((uint16_t)0xFFFF / (cycleTime >> 4))) >> 6;
            // add moving average here to reduce noise
            deltaSum = delta1[axis] + delta2[axis] + delta;
            delta2[axis] = delta1[axis];
            delta1[axis] = delta;
            DTerm = (deltaSum * cfg.D8[axis]) >> 8;
    
            // -----calculate total PID output    
            axisPID[axis] = PTerm + ITerm + DTerm;
        }
    Последний раз редактировалось SergDoc; 05.07.2013 в 14:35.

  6.  
  7. #2205

    Регистрация
    22.08.2011
    Адрес
    Калининград
    Возраст
    35
    Сообщений
    947
    Записей в дневнике
    2
    А мне тут пришел наконец HMC5983. Буду эксперементировать с вынесением датчика на шелдвоном проводе

  8. #2206

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,472
    Цитата Сообщение от Razek Посмотреть сообщение
    Буду эксперементировать с вынесением датчика
    Что хотите выяснить? Что не нравилось когда компас на плате?

  9. #2207

    Регистрация
    22.08.2011
    Адрес
    Калининград
    Возраст
    35
    Сообщений
    947
    Записей в дневнике
    2
    Да в принцепе устраивает более мене, плывет немного при перегазовках. Просто хочу узнать на своем опыте какая разница.
    Вообщем чисто академический интерес.

  10.  
  11. #2208

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Так как mahowik отдыхает в бане, приходится общаться через личку, он мне объяснил про новый ПИД, ну и дабы не устраивать глухой телефон, разглашу тайную переписку:
    Цитата Сообщение от SergDoc
    вроде догнал, он не отвязан от времени цикла, а масштабируется по времени цикла - я правильно понял?
    Цитата Сообщение от mahowik
    если ты про новую имплементацию, то да

    в классическом пид регуле два параметра из трех зависимы от dt

    I * dt - умножение т.к. интегрирование/сложение
    D / dt - деление т.к. дифферинцирование

    вот по простому о непонятном написано http://pidcontrol.narod.ru/
    Цитата Сообщение от SergDoc
    Я в принципе понял в чём камень преткновения, и почему сделано так, а не иначе.
    Я представлял себе так: есть возмущение - которое нужно погасить D составляющей - завышающей пропорцию, потом пропорцией (от этого возмущения) вернуть в исходное положение - естественно сгладив/подтянув I составляющей, но такой метод не подходит, ибо надо практически предсказать какое возмущение будет в момент "запуска" D составляющей. По этой причине используется более простое представление, где пропорцией возвращаем в нужное положение, D составляющая служит как "тормоз" от переруливания самой P ну а интегральная составляющая дотягивает до нужного положения "медленно но верно" без переруливания. По сей причине и формула выглядит так P+I-D, вот и смутило что в новом ПИДе:
    Код:
    // -----calculate total PID output     
            axisPID[axis] = PTerm + ITerm + DTerm;
    как если бы было как в примере который я привёл выше...
    Цитата Сообщение от mahowik
    посмотрел код... короче и там и там знак минус

    просто в одном случае расчет D части ведется по угловой скорости гиры,
    Код:
    delta          = imu.gyroData[axis] - lastGyro[axis];
    а в другом из ошибки по гире, а она в инверте
    Код:
    RateError = AngleRateTmp  - imu.gyroData[axis];
    ....
    delta          = RateError - lastError[axis];
    т.е. и там и там D работает на торможение

  12. #2209

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Нарисовал инвертор для фриски, может когда-нибудь разбогатею на неё, в архиве файлы для орла:

    Ой чёт ошибся, на разъёме фриски RX, размеры 12Х7мм
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: INV.JPG‎
Просмотров: 21
Размер:	26.3 Кб
ID:	815613  
    Последний раз редактировалось SergDoc; 06.07.2013 в 14:10.

  13. #2210

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    ПИД работает и по моим ощущениям лучше старого, нашел источник вибраций - чуть аппарат не потерял - правый задний движек разболтался - думаю как быстрее починить и долетать батарейку....
    нет не долетаю сегодня - он одну обмотку покоцал да блин.... слов нет...

    нашел в загашнике старый статор - надеюсь завтра починю, а нет - значит соберу обратно трёху...
    а да подключил напряжометр (АЦП+DMA) работает....
    Последний раз редактировалось SergDoc; 07.07.2013 в 01:38.

  14. #2211

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Кто знает секрет: в каких единицах нужно подавать данные в FreeImu c акселя и магнетометра ??
    С гирой все ясно - град./сек. переводим в радианы делим на "сампл." и т.д....
    А вот с акселем и магом мне непонятно.., по логике вещей вообще без разницы какой размерности (ведь считается отношение) но в готовом коде от ARDU присутствует "магический" коэфициент для акселя:
    gains[0] = 0.00376390;
    gains[1] = 0.00376009;
    gains[2] = 0.00349265;
    Сейчас активно кручу коэфициенты TwoKi и TwoKp, наблюдаю реакцию системы, пытаюсь понять воздействие/зависимости, а тут что то в тупик зашел..

  15. #2212

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Движек починил, мудрю с микшером к своей кривой раме, учитывая что цт посередине между моторами, получается картинка непривлекательная, надо ввести коэффициенты поправочные, кто владеет математикой, проверте пожалуйста:

    Перезалил в гит прошивку и исходники с новым ПИД-ом (включен по умолчанию)....
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: DSCN0517.jpg‎
Просмотров: 30
Размер:	46.9 Кб
ID:	816018  
    Последний раз редактировалось SergDoc; 07.07.2013 в 16:05.

  16. #2213

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    получается картинка непривлекательная
    Может я не прав.., а сместить центр тяжести в любое нужное место (например батареей) не проще?

  17. #2214

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Так как mahowik отдыхает в бане, приходится общаться через личку, он мне объяснил про новый ПИД, ну и дабы не устраивать глухой телефон, разглашу тайную переписку:
    Вот замедленно что там с PD происходит

    Синий столбец это Р зеленый D. Столбцы направлены в ту сторону в которую от них результирующая сила. При действии возмущающей силы D P тянут в одну и туже стороны. При снятии силы в противоположные. Т.е. сначала D сопротивляется возмущению, а потом препятствует перегулированию(это самая важная его задача) от Р.
    т.е. Во всех системах D направлен одинаково иначе от него вред один.

  18. #2215

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Может я не прав.., а сместить центр тяжести в любое нужное место (например батареей) не проще?
    ну пока так и летаю - батарея сзади
    на счёт ПИД, то что вчера казалось плавным и красивым, сегодня в ветер сыграло со мной злую шутку - жуткий расколбас (с увеличением, как будто перегулирование) как следствие - переворот и минус два пропа, остался один комплект сейчас смотрю в чём бяка....

  19. #2216

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от SergDoc Посмотреть сообщение
    сегодня в ветер сыграло со мной злую шутку - жуткий расколбас (с увеличением, как будто перегулирование) как следствие - переворот и минус два пропа, остался один комплект сейчас смотрю в чём бяка....
    Кмк слишком сурово настроено. Это основной недостаток ПИД регулятора, если закрутить его для хорошей стабильности, в ветер или при пезких маневарпх - будет расколбас. Надо П уменьшать или Д увеличивать. Но если его потряхивает с увеличением Д может стать еще худе. Т.е. PD можно настроить только под конкретный импульс от возмущающей силы.

    Цитата Сообщение от SergDoc Посмотреть сообщение
    надо ввести коэффициенты поправочные, кто владеет математикой, проверте пожалуйста:
    Самое простое и надежное(хоть и не самое быстрое). Это установить AutoCAD, 2000й в самый раз ) начертить в нем и померить расстояния - ошибок точно не будет. Да и при прикидывании рамы он очень полезен

  20. #2217

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    переворот и минус два пропа
    Я решил, пока досконально не пойму работу алгоритма, не пробовать полеты....(движки по 33$ жалко)

  21. #2218

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Короче перекомпенсация валит и никакие танцы не помогли, может у меня бубен не тот? переключил на стандартный ПИД - проверить, может что с коптером не так, ну так и отлетал две батарейки - плавно и аккуратно(надо будет чуть Д добавить, а то небольшие подёргивания на спуске), или же я где-то напортачил с переносом, или же он (ПИД) в ветер не летабельный....
    вернусь к нему позже, когда пропы приедут, а то последний комплект сейчас установлен...
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Я решил, пока досконально не пойму работу алгоритма, не пробовать полеты....(движки по 33$ жалко)
    ну так для экспериментов, чё нить подешевле на разбить надо

    Цитата Сообщение от VitaliyRU Посмотреть сообщение
    Самое простое и надежное(хоть и не самое быстрое). Это установить AutoCAD, 2000й в самый раз ) начертить в нем и померить расстояния - ошибок точно не будет. Да и при прикидывании рамы он очень полезен
    я дружу с автогадом все предыдущие рамы в нём начерчены, только эта покупная (желание было внутрь рамы батарейку запихнуть), следующая будет складная, пока в размышлениях и в эскизах на бумаге...
    Последний раз редактировалось SergDoc; 07.07.2013 в 23:24.

  22. #2219

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Короче перекомпенсация валит и никакие танцы не помогли, может у меня бубен не тот? переключил на стандартный ПИД - проверить, может что с коптером не так, ну так и отлетал две батарейки - плавно и аккуратно(надо будет чуть Д добавить, а то небольшие подёргивания на спуске), или же я где-то напортачил с переносом, или же он (ПИД) в ветер не летабельный.... вернусь к нему позже, когда пропы приедут, а то последний комплект сейчас установлен...
    По моему опыту, если расколбашивает в ветер, надо P убрать на четверть. Вот такое УГ этот PID )


    Цитата Сообщение от SergDoc Посмотреть сообщение
    (надо будет чуть Д добавить, а то небольшие подёргивания на спуске)
    Подергивания это не обязательно перегулирование. Может D шуметь. Увеличь усреднение до 5 - станет намного лучше

    deltaSum = delta1[axis] + delta2[axis] + delta3[axis] +delta4[axis] + delta;
    delta4[axis] = delta2[axis];
    delta3[axis] = delta2[axis];
    delta2[axis] = delta1[axis];
    delta1[axis] = delta;

    Все это D очень не срочно(усреднение же дает лаг), если интересно понять работу PID, могу EXEшником поделиться, что на видео. В уме представить колебательный процесс - анрыл Для этого я это "стенд" и написал.

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

    ЗЫ D вообще зло для коптеров. т.к. мы его получаем дифференцируя гирик. Т.е. шум от вибрации возводим во 2ю степень. Плясать надо от того на сколько разогнались моторы. Площадь под кривой тяги(разнотяга) мотора - это сила импульса. Дальше пока подсказать не буду Надеюсь скоро на железо перенесу.

  23. #2220

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Поэкспериментирую, у меня есть непреодолимое желание петлю запускать по готовности гир а не с этими извращениями:
    Код:
    currentTime = micros();
        if (mcfg.looptime == 0 || (int32_t)(currentTime - loopTime) >= 0) {
            loopTime = currentTime + mcfg.looptime;
    
            computeIMU();
            // Measure loop rate just afer reading the sensors
            currentTime = micros();
            cycleTime = (int32_t)(currentTime - previousTime);
            previousTime = currentTime;
    а да расколбас только в angle, в acro и horizont летабельно...

    Цитата Сообщение от VitaliyRU Посмотреть сообщение
    И кстати если качает на спуске
    не качает, слегка поддёргивает, p меньше 4-х не хочу опускать, а d я поставил 30 (обычно 35 но лень было с батарейками в карманах домой возвращаться) приедут меньшие пропы должно быть лучше (12-е слишком большие для этой рамы)

  24. #2221

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от SergDoc Посмотреть сообщение
    а да расколбас только в angle, в acro и horizont летабельно...
    А мультивий-мутант или что? Скорее всего где-то ошибка в коде. Когда все правильно P вLEVEL режиме это I в ACRO. Просто не абстрактный как I а с привязкой к горизонту. Но такой же линейный коэффициент, если соблюдать все размерности - даже численно равны будут при прочих равных.
    Я что бы ловить такие пакости такую хрень соорудил
    Нажмите на изображение для увеличения
Название: DSC_0145.jpg
Просмотров: 46
Размер:	39.1 Кб
ID:	816315

    Но пока к USB подключен и к акку, валиться по питанию видимо(атмега перегружается)

  25. #2222

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от VitaliyRU Посмотреть сообщение
    А мультивий-мутант или что?
    ну да мутант ещё тот, если цикл на волю отпустить 780 получится, со всеми плюшками включенными

    Цитата Сообщение от VitaliyRU Посмотреть сообщение
    Но пока к USB подключен и к акку, валиться по питанию видимо(атмега перегружается)
    это как?

  26. #2223

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от SergDoc Посмотреть сообщение
    не качает, слегка поддёргивает,
    Ой пропустил, усредни D до 5 ну или 7ми - скорее всего поможет. 99% шум D

    Цитата Сообщение от SergDoc Посмотреть сообщение
    это как?
    Ну ходовой акк от него питание, и через FTDI подключен к питанию. Я в электронике дуб Чего там происходит не очень понимаю. Но как только отключаю от бука(т.е. убираю питание от US ресетиться перестает. Не спалить бы блин

  27. #2224

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    диода на usb нет, напряжение на нём чуть меньше 5-ти вольт, получается ток от стаба течёт не туда куда надо (FTDI начинает кушать от стаба, и её от этого рвёт, а т.к. там ещё и на ресет проца разводка она и перегружает проц) - ну эт моё предположение, у меня такой беды в принципе быть не может ибо и питания развязаны спаренными диодами и стабы свои на плате, да и вообще у меня всё на 3.3В работает.... снять питание которое идёт уже с ftdi на плату, можно конечно и от акка, но лучше ненадо....

  28. #2225

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от SergDoc Посмотреть сообщение
    олучается ток от стаба течёт не туда куда надо - ну эт моё предположение,
    У меня такое же(подсознательно), тоесть разрезать +5 от FTDI?, я так хотел попробовать.

  29. #2226

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    а просто ножку отогнуть не получится? или провод из разъёма дёрнуть (не знаю как сделано) для проверки, или оно всё вместе?
    ftdi пусть питается от usb а на плату от usb уже не шло...

  30. #2227

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от SergDoc Посмотреть сообщение
    напряжение на нём чуть меньше 5-ти вольт, получается ток от стаба течёт не туда куда надо
    У меня там еще и DC-DC преобразователь, с дикой пилой на выходе(судя по помехам на FPV). Акк то 1S а ардуина 5V

  31. #2228

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    пила может быть в двух случаях, либо фильтры (конденсаторы особенно) дохлые, либо стаб перегружен! ...

  32. #2229

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от SergDoc Посмотреть сообщение
    а просто ножку отогнуть не получится? или провод из разъёма дёрнуть (не знаю как сделано) для проверки, или оно всё вместе?
    ftdi пусть питается от usb а на плату от usb уже не шло...
    Да он мелколет же у меня, зато не страшно палцы сувать, если всбеситься


    Но спасибо за подсказку, значит я правильно думал. просто поставлю маленький разъем на 5V от FTDI

  33. #2230

    Регистрация
    07.04.2012
    Адрес
    Брянск
    Возраст
    29
    Сообщений
    1,675
    Записей в дневнике
    6
    Хм... такой вопрос - колбасит на маховие рц3 а на рц1-2 (вий 2.1) все норм? Пиды менял или одинаковые пробовал? Просто уже не раз говорилось что там размерности разные - деление заменили сдвигом -> разные пиды нужно. У меня порт рц3 кстати на дефолтных пидах висит идеально (аппарат 1800, тестил без смены пидов с 3s акб 380г и с 4s весом около 600 + и на той и на другой добавлял еще ноги 200г. и подвес 400г.)

  34. #2231

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от mataor Посмотреть сообщение
    Хм... такой вопрос - колбасит на маховие рц3 а на рц1-2 (вий 2.1) все норм? Пиды менял или одинаковые пробовал? Просто уже не раз говорилось что там размерности разные - деление заменили сдвигом -> разные пиды нужно. У меня порт рц3 кстати на дефолтных пидах висит идеально (аппарат 1800, тестил без смены пидов с 3s акб 380г и с 4s весом около 600 + и на той и на другой добавлял еще ноги 200г. и подвес 400г.)
    Опять же по моему опыту все это особо не влияет. Невинно убиенный астависта как то очень верно заметил(свечку то держал, в отличии от нас), что MEMS дачики могут резонировать. Т.Е. от настроек должны меняться ньюансы поведения, глобально они не влияют.
    Другими словами коряво настроенный PD это тупизм или расколбас, остальное вибрация на %%80 или проблемы в железе

  35. #2232

    Регистрация
    07.04.2012
    Адрес
    Брянск
    Возраст
    29
    Сообщений
    1,675
    Записей в дневнике
    6
    Насчет вибраций полностью согласен! Пока не отбалансировал пропеллеры по лопасти и середине - даже и не пробовал летать (моторки саннискаевские 2216 сами оч неплохо отбалансированы...)

    П.С. програмкой не поделитесь тоже? Тоже интересно... кстати писали на делфи или С++?

  36. #2233

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от mataor Посмотреть сообщение
    Насчет вибраций полностью согласен! Пока не отбалансировал пропеллеры по лопасти и середине - даже и не пробовал летать (моторки саннискаевские 2216 сами оч неплохо отбалансированы...)
    Тем не менее попробуй закрепить мозг через губку для мыться посуды. Тааакиииие "чудеса" бывают
    Жосткость рамы и т.д.
    у меня вообще на среднемелкий такая ибо нефиг

  37. #2234

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от mataor Посмотреть сообщение
    Хм... такой вопрос - колбасит на маховие рц3 а на рц1-2 (вий 2.1) все норм?
    маховием я ещё не занимался, а запускал альтернативный ПИД #elif PID_CONTROLLER == 2 в самом низу... блиин, а помоему он как раз и работает только в акро и горизонт, а я его в angle запускал?

    интересно китайцы что без выходных пашут? уже плату(верхнюю) сделали - готовят к отправке....
    смотрю изменения у них, теперь ещё один гербер файл пришлось делать отдельный (габариты платы) в орле это слой dimension....
    Top Layer: pcbname.GTL - верхний слой с площадками
    Bottom Layer: pcbname.GBL - нижний слой с площадками
    Solder Mask Top: pcbname.GTS - слой маски припоя верхний
    Solder Mask Bottom: pcbname.GBS - слой маски припоя нижний
    Silk Top: pcbname.GTO
    Silk Bottom: pcbname.GBO - ну эти два шелкография (надписи и т.д.)
    Drill Drawing: pcbname.TXT - это все отверстия, в орле drill и vias, у товаришей не подписано почему-то в каком формате - EXELLON должен быть(как я собственно и делал)
    Board Outline:pcbname.GML/GKO - вот собственно и новый файл - внешние границы платы
    все гербер файлы в формате GERBER_RS274X кроме файла Drill он в формате EXELLON
    Последний раз редактировалось SergDoc; 08.07.2013 в 10:48.

  38. #2235

    Регистрация
    09.03.2011
    Адрес
    Мурманск
    Возраст
    61
    Сообщений
    176
    SergDoc скажите какое качество и какие сроки изготовления плат у Китайцев, и если можно - дайте пожалуйста адрес для заказа.( можно в личку )

  39. #2236

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Я сегодня уже обнаглел - подлетал к своему окну, жене с детьми показывал, чего добился....

  40. #2237

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Ну что, первые тесты как-то прошли - так плату снимать с коптера не хочется
    что в итоге:
    1. датчики отрабатывают, все таймеры кроме восьмого работают (первый глюк)
    2. уарт + дма = переполнение буфера дма, подставлен костыль (второй глюк)
    3. удержание высоты аксель плюс баро - плавает в пределах полуметра, mahowik ткнул носом куда смотреть.
    4. PID новый не пошел, оставил старый - почитаю, может вообще изменю...
    5. usb - надо сделать обязательно.
    6. прибраться в уартах
    7. сделать запуск петли по прерыванию готовности с гир - может повлечь за собой кучу переделок т.к. цикл изменится (возможно придётся менять ИМУ)
    8. сонар зацепить и добавить в imu
    9. перепроверить все порты, дабы не нарваться на какой косяк, т.к. летающую версию готовил в спешек можно сказать
    10. изменить светодиодную индикацию (зачем четыре светодиода если работают только два)
    ну вот вроде всё из текущего, может чё и забыл... О, навести порядок в cli, а то не всё есть, что может понадобиться....
    так что до mahowii как до Стамбула

  41. #2238

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    второй уарт тоже подцепить на ДМА, переделать драйвер SPI ( SPI+DMA ) ...

  42. #2239

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    нарисовал микшер под свою раму, надо будет проверить:
    Код:
    static const motorMixer_t mixerQuadXSerg[] = {
        { 0.87f, -1.0f,  1.0f, -1.0f },          // REAR_R
        { 1.0f, -0.47f, -1.32f,  0.75f },        // FRONT_R
        { 0.87f,  1.0f,  1.0f,  1.0f },          // REAR_L
        { 1.0f,  0.47f, -1.32f, -0.75f },        // FRONT_L
    };

  43. #2240

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    чёт опять туплю, это ссылки на адреса памяти?
    Код:
    #define U_ID_0 (*(uint32_t*)0x1FFFF7E8)
    #define U_ID_1 (*(uint32_t*)0x1FFFF7EC)
    #define U_ID_2 (*(uint32_t*)0x1FFFF7F0)
    надо свои прописать, дабы ID писала, а не ffffff
    вот где оно кроется если кому интересно:
    Код:
    // Chip Unique ID on F4xx
    #define U_ID_0 (*(uint32_t*)0x1FFF7A10)
    #define U_ID_1 (*(uint32_t*)0x1FFF7A14)
    #define U_ID_2 (*(uint32_t*)0x1FFF7A18)
    Последний раз редактировалось SergDoc; 10.07.2013 в 00:04.

+ Ответить в теме

Похожие темы

  1. Система стабилизации гиро+акселерометр
    от Фантомас в разделе Полеты по камере, телеметрия
    Ответов: 32
    Последнее сообщение: 25.01.2011, 14:47
  2. Продам Продам Клона Trex 450SEV2 + Аппаратура + Запчасти+ система стабилизации RTF
    от omegapraim в разделе Барахолка. Вертолеты
    Ответов: 1
    Последнее сообщение: 12.01.2011, 18:16
  3. Продам Трёхосевую систему стабилизации Turnigy V-Bar 600
    от avi@tor в разделе Барахолка. Аппаратура
    Ответов: 1
    Последнее сообщение: 08.11.2010, 13:02
  4. Продам Gaui система стабилизации GU365, дёшево.
    от avi@tor в разделе Барахолка. Вертолеты
    Ответов: 3
    Последнее сообщение: 03.08.2010, 11:13
  5. Системы стабилизации
    от max815 в разделе Фото и видеосъемка, системы стабилизации
    Ответов: 16
    Последнее сообщение: 11.03.2010, 03:14

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения