Специальные цены   новые товары
+ Ответить в теме
Страница 57 из 165 ПерваяПервая ... 47 55 56 57 58 59 67 ... ПоследняяПоследняя
Показано с 2,241 по 2,280 из 6569

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

Тема раздела Квадрокоптеры. Общие вопросы в категории Квадрокоптеры и мультироторы; вот такие мы теперь...

  1. #2241

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    вот такие мы теперь
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: Cli1.jpg‎
Просмотров: 65
Размер:	39.9 Кб
ID:	817211   Нажмите на изображение для увеличения
Название: Cli2.jpg‎
Просмотров: 65
Размер:	58.5 Кб
ID:	817212  

  2.  
  3. #2242

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    сделать запуск петли по прерыванию готовности с гир
    Огласите (если не секрет) какие общие мысли в этом плане по реализации....
    Я тоже сейчас этим занят, пока нет стройной идеи как в реальном времени синхронизировать прерывания от гиры и акселя+маг, "тычу" осциллографом на ноги INT, меняю режимы... (думаю что задачка не из легких, но интересная)
    Во всяком случае понятно почему особо ни кто это не делает-, нужно точно высчитывать время запроса/чтения и т.д.

  4. #2243

    Регистрация
    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;
    #ifdef MPU6000_DMP
            mpu6000DmpLoop();
    #endif
    
    
    #ifdef MAG
            if (sensors(SENSOR_MAG)) {
                if (abs(rcCommand[YAW]) < 70 && f.MAG_MODE) {
                    int16_t dif = heading - magHold;
                    if (dif <= -180)
                        dif += 360;
                    if (dif >= +180)
                        dif -= 360;
                    if (f.SMALL_ANGLES_25)
                        rcCommand[YAW] -= dif * cfg.P8[PIDMAG] / 30;    // 18 deg
                } else
                    magHold = heading;
            }
    #endif
    
    
    #ifdef BARO
            if (sensors(SENSOR_BARO)) {
                if (f.BARO_MODE) {
                    static uint8_t isAltHoldChanged = 0;
                    static int16_t AltHoldCorr = 0;
                    if (cfg.alt_hold_fast_change) {
                        // rapid alt changes
                        if (abs(rcCommand[THROTTLE] - initialThrottleHold) > cfg.alt_hold_throttle_neutral) {
                            errorAltitudeI = 0;
                            isAltHoldChanged = 1;
                            rcCommand[THROTTLE] += (rcCommand[THROTTLE] > initialThrottleHold) ? -cfg.alt_hold_throttle_neutral : cfg.alt_hold_throttle_neutral;
                        } else {
                            if (isAltHoldChanged) {
                                AltHold = EstAlt;
                                isAltHoldChanged = 0;
                            }
                            rcCommand[THROTTLE] = initialThrottleHold + BaroPID;
                        }
                    } else {
                        // slow alt changes for apfags
                        if (abs(rcCommand[THROTTLE] - initialThrottleHold) > cfg.alt_hold_throttle_neutral) {
                            // Slowly increase/decrease AltHold proportional to stick movement ( +100 throttle gives ~ +50 cm in 1 second with cycle time about 3-4ms)
                            AltHoldCorr += rcCommand[THROTTLE] - initialThrottleHold;
                            if (abs(AltHoldCorr) > 500) {
                                AltHold += AltHoldCorr / 500;
                                AltHoldCorr %= 500;
                            }
                            errorAltitudeI = 0;
                            isAltHoldChanged = 1;
                        } else if (isAltHoldChanged) {
                            AltHold = EstAlt;
                            isAltHoldChanged = 0;
                        }
                        rcCommand[THROTTLE] = initialThrottleHold + BaroPID;
                    }
                }
            }
    #endif
    
    
            if (sensors(SENSOR_GPS)) {
                if ((f.GPS_HOME_MODE || f.GPS_HOLD_MODE) && f.GPS_FIX_HOME) {
                    float sin_yaw_y = sinf(heading * 0.0174532925f);
                    float cos_yaw_x = cosf(heading * 0.0174532925f);
                    if (cfg.nav_slew_rate) {
                        nav_rated[LON] += constrain(wrap_18000(nav[LON] - nav_rated[LON]), -cfg.nav_slew_rate, cfg.nav_slew_rate); // TODO check this on uint8
                        nav_rated[LAT] += constrain(wrap_18000(nav[LAT] - nav_rated[LAT]), -cfg.nav_slew_rate, cfg.nav_slew_rate);
                        GPS_angle[ROLL] = (nav_rated[LON] * cos_yaw_x - nav_rated[LAT] * sin_yaw_y) / 10;
                        GPS_angle[PITCH] = (nav_rated[LON] * sin_yaw_y + nav_rated[LAT] * cos_yaw_x) / 10;
                    } else {
                        GPS_angle[ROLL] = (nav[LON] * cos_yaw_x - nav[LAT] * sin_yaw_y) / 10;
                        GPS_angle[PITCH] = (nav[LON] * sin_yaw_y + nav[LAT] * cos_yaw_x) / 10;
                    }
                }
            }
    
    
           // PID - note this is function pointer set by setPIDController()
             pid_controller();
    
    
            mixTable();
            writeServos();
            writeMotors();
        }
    }
    в computeIMU(); за одно считываются данные с датчиков - это в imu.c
    так вот вместо:
    Код:
    currentTime = micros();
        if (mcfg.looptime == 0 || (int32_t)(currentTime - loopTime) >= 0) {
            loopTime = currentTime + mcfg.looptime;
    сделать запуск по прерыванию от гир, (это я так думаю) ну до этого ещё далеко ибо вожусь в 8-м таймером, не хочет запускаться...
    в ардупилоте запуск цикла построен на прерывании от гир, если не ошибаюсь... да и у rual тоже....
    но тут сразу поплывут фильтры, и PID надо добивать уже до времени цикла...

  5. #2244

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Пока имею следующее: прерывания 250 (Гц) =0,004 (Сек) беру с DRDY LSM, при 72 Мгц на борту, в обработчике за половину периода (~0,002 сек.) успеваю три раза прочитать и усреднить гироскоп, прочитать 1 раз акс/маг, выполнить алгоритм ИМУ и даже можно ПИД впихнуть... Вроде все "красиво" и время на другие процессы остается но:
    Не нравится - что нет проверки готовности гир при чтении (и похоже что косяки из за этого в данных вылазят)..
    DMA к гире подцепил, но та же проблема: идут сбои.. как проверить готовность?

  6.  
  7. #2245

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

  8. #2246

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    вот петля:
    Здесь везде привязка к currentTime = micros();, а мне хочется от нее избавиться

    Цитата Сообщение от SergDoc Посмотреть сообщение
    готовность только по прерыванию
    Вот здесь то и самое интересное.... Например у LSM сигнал DRDY не зависит от установленного DATArate и всегда 250 Гц (?), а L3GD20 просто выставляет "1" на ноге когда можно прочитать данные и ждет пока их не прочитаешь (?)
    Тут есть над чем поразмыслить...

  9. #2247

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,471
    Цитата Сообщение от SergDoc Посмотреть сообщение
    чёт опять туплю, это ссылки на адреса памяти?
    Да, там расположен уникальный номер проца. Для Ф4 надоть уточнить адрес.
    Кста, это при работе УСБ активно используется при создании соединения. Разные дискавери у меня на разные виртуальные компорты садятся.

    Цитата Сообщение от oleg70 Посмотреть сообщение
    Например у LSM сигнал DRDY не зависит от установленного DATArate и всегда 250 Гц (?),
    Нет, соответствует выставленной частоте отсчётов.

    Цитата Сообщение от oleg70 Посмотреть сообщение
    а L3GD20 просто выставляет "1" на ноге когда можно прочитать данные и ждет пока их не прочитаешь (?)
    Да, после чтения снимает до очередной готовности (так все СТшные датчики работают и ХМЦ5883 тожа).

  10.  
  11. #2248

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Цитата Сообщение от rual Посмотреть сообщение
    Да, там расположен уникальный номер проца. Для Ф4 надоть уточнить адрес.
    я уже выковырял http://forum.rcdesign.ru/f123/thread...ml#post4326531
    на картинках что выше Unique devise ID в правом нижнем углу
    Последний раз редактировалось SergDoc; 10.07.2013 в 14:41.

  12. #2249

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    Может кто найдёт ошибку https://github.com/SergDoc/Nev_Multi.../src/drv_pwm.c
    восьмой таймер не запускается, первый такой-же, на нём у меня моторы - работает, а восьмой хоть застрелись...
    тактирование таймеров и портов включено отдельно
    Код:
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM4 | RCC_APB1Periph_TIM5 | RCC_APB1Periph_I2C2 | RCC_APB1Periph_SPI2 | RCC_APB1Periph_USART2 | RCC_APB1Periph_USART3 , ENABLE);
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_TIM1 | RCC_APB2Periph_TIM8 | RCC_APB2Periph_ADC1 | RCC_APB2Periph_USART1 | RCC_APB2Periph_SPI1, ENABLE);
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_DMA2, ENABLE);
        RCC_ClearFlag();

  13. #2250

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    затык у меня наверно здесь:
    Код:
     setup = hardwareMaps[i];
    
        for (i = 0; i < MAX_PORTS; i++) {
            uint8_t port = setup[i] & 0x0F;
            uint8_t mask = setup[i] & 0xF0;
    
            if (setup[i] == 0xFF) // terminator
                break;
    как этого избежать?

    если так?
    Код:
     setup = hardwareMaps[i];
    
        for (i = 0; i < MAX_PORTS; i++) {
            uint16_t port = setup[i] & 0x00FF;
            uint16_t mask = setup[i] & 0xFF00;
    
            if (setup[i] == 0xFFFF) // terminator
                break;
    запустил все таймеры
    Последний раз редактировалось SergDoc; 10.07.2013 в 23:20.

  14. #2251

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

  15. #2252

    Регистрация
    31.07.2012
    Адрес
    Харьков
    Возраст
    33
    Сообщений
    194
    Записей в дневнике
    2
    Цитата Сообщение от SergDoc Посмотреть сообщение
    приёмник подвис из-за питания
    подскажите что за приемник? такой?

  16. #2253

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

  17. #2254

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от rual Посмотреть сообщение
    так все СТшные датчики работают
    Не мог не поделиться.....: Решил сделать компенсацию дрейфа "0" гиры от встроенного датчика температуры.
    Так вот имеем: при нагреве (t+) "0" гиры смещается в минус и показания датчика температуры тоже (???) уменьшаются...
    При комнатной температуре ~24 гр.с. датчик показывает "12" (??) и при нагреве феном уходит в минуса..
    Вопрос: это какой то великий замысел или издевательство...(как компенсировать гиру?)

  18. #2255

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

  19. #2256

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Вот "матбаза": Temperature sensor output change vs.temperature -1 °C/digit
    Temperature data (1LSB/deg - 8-bit resolution). The value is expressed as two's complement.
    Пишу в коде: int8_t temper=(int8_t)data[...];
    Где ошибка?

  20. #2257

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    смотри как в mpu3050 сделано
    Код:
    static void mpu3050ReadTemp(int16_t *tempData)
    {
        uint8_t buf[2];
        i2cRead(MPU3050_ADDRESS, MPU3050_TEMP_OUT, 2, buf);
    
    
        *tempData = 35 + ((int32_t)(buf[0] << 8 | buf[1]) + 13200) / 280;
    }
    Последний раз редактировалось SergDoc; 11.07.2013 в 16:47.

  21. #2258

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    char
    не помогло.. (то же самое)

  22. #2259

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    как датчик обзывается?

  23. #2260

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    L3GD20 (от дискавери F3)

  24. #2261

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

  25. #2262

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    вот что есть по l3g20:
    Код:
    STemp := Read_1B(OUT_TEMP)
      ESTemp := 25 - STemp
      ESTemp := ESTemp + 25 - 4           'Deg C the -4 is my correction yours may be different
      ESTemp := ESTemp * 9 / 5 +32     'Deg F

  26. #2263

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Не мог не поделиться.....: Решил сделать компенсацию дрейфа "0" гиры от встроенного датчика температуры.
    Меня не покидает ощущение, что гирик лучше всего калибровать по акселю... Причем наверно с тем же периодом адаптации, что и правим интерированный гирик акселем. - что бы врали в ногу, а не в разнобой.

  27. #2264

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

  28. #2265

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от oleg70 Посмотреть сообщение
    по аккселю он калибруется на "выходе" ИМУ и устраняет ошибку угла отклонения, а вот смещение нулевой точки желательно устранять до подачи в ИМУ (даже более важно чем устранение шума)...
    Я свежее вия 1.9 ничего не курил(но раз речь идет про угол, значит мы все же о разном), может что-то и сделано.
    Я именно про ВХод а не ВЫход. Берем два соседних угла от акселя(arctg(z/x) вся фигня), делим на время - получаем угловую скорость от дачика акселерометр - АДОВО щумящую, но это пофиг. Через AB фильтр накапливаем поправку на гирик, гирик всегда читаем с этой поправкой. т.е. Если арктангенс двух соседних ускорений 500 итераций пляшет +3*/-3* поправка=0, если пляшет +3*/-2* значит по акселю мы получаем 1*/сек - пишем это в поправку гирика. врятли понятно, но просто решаем обратную задачу. Правим акселем гирик.

    Другими словами, ща все сделано в размерности угол(это выход). Я предлагаю в размерность вход(это скорость). Тогда аксель перестанет догонять гирик(от чего адово унитазит) а жить они будут синхронно.
    Или мерим угловую скорость акселем и дружим их на уровне скорости.
    сори за сумбурность.
    Последний раз редактировалось VitaliyRU; 11.07.2013 в 22:11.

  29. #2266

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    ESTemp := ESTemp + 25 - 4
    Немного допилил и получился хорошо рабочий алгоритм (держит "0"):
    float kt;
    kt=(float)g_temper*0.04f;
    GX=(GYR[3]<<8|GYR[2])+10-ceil(kt);
    GY=(GYR[5]<<8|GYR[4])+10-ceil(kt);
    GZ=(GYR[7]<<8|GYR[6])+10-ceil(kt);

    Цитата Сообщение от VitaliyRU Посмотреть сообщение
    Правим акселем гирик
    Все правильно, неважно каким методом (я например freeimu мучаю), аксель подгоняет под свою статику показания гиры, но как правило коэф. воздействия на выходной угол с ИМУ у гиры больше (в динамике) и наличие смещения нуля означает постоянную "паразитную" угловую скорость, которую аксель будет "упираться" убрать,
    согласитесь, что лучше от нее избавиться заранее..... (хотябы минимизировать)
    Последний раз редактировалось oleg70; 11.07.2013 в 22:41.

  30. #2267

    Регистрация
    26.10.2010
    Адрес
    Истра
    Возраст
    38
    Сообщений
    901
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Все правильно, неважно каким методом (я например freeimu мучаю), аксель подгоняет под свою статику показания гиры, но как правило коэф. воздействия на выходной угол с ИМУ у гиры больше (в динамике) и наличие смещения нуля означает постоянную "паразитную" угловую скорость, которую аксель будет "упираться" убрать,
    согласитесь, что лучше от нее избавиться заранее..... (хотябы минимизировать)
    конечно соглашусь, вообще это тема для отдельных исследований

    Цитата Сообщение от oleg70 Посмотреть сообщение
    Все правильно, неважно каким методом (я например freeimu мучаю), аксель подгоняет под свою статику показания гиры, но как правило коэф. воздействия на выходной угол с ИМУ у гиры больше (в динамике) и наличие смещения нуля означает постоянную "паразитную" угловую скорость, которую аксель будет "упираться" убрать,
    О чем я выше и писал - отстал от жизни Как то это уже реализованно.

  31. #2268

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,462
    Записей в дневнике
    8
    интересно только, на сколько линейна зависимость, ну и так к слову, аксель от температуры (повышающейся) тоже "плывёт" на MPU как-то не заметил, а вот на LSM довольно сильно...
    Последний раз редактировалось SergDoc; 11.07.2013 в 23:23.

  32. #2269

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

  33. #2270

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Провел кучу разных экспериментов и хочу поделиться мнением:
    1.выполнять цикл по прерываниям гиры не целесообразно, и вообще всякие навороты с DMA, усреднением показаний (делал аж по 32м точкам), ощутимого результата не дают..(только усложнение алгоритма). Минимум что нужно сделать для гиры, это компенсацию "0" по температуре.
    2.Смещение показаний акселя LSM от температуры почти не наблюдается (при шкале 4G), значит коррекция нафиг не нужна..
    3.А вот магнитометр желательно калибровать на линейность +/- по осям (сделал программную калибровку при старте, правда придется каждый раз крутить аппарат вокруг всех осей - немного неудобно).

    Это чисто мое мнение, критика приветствуется...

  34. #2271

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

  35. #2272

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

  36. #2273

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

  37. #2274

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    приведёт к непонять чему с ПИД
    Да, при экспериментах, видимо нужно что то сделать константой, например запускать цикл от прерываний таймера (тогда ПИД у нас не пострадает + фиксированная Dt для гиро), а уж фильтры на сенсорах крутить как угодно, хотя все больше и больше убеждаюсь что "крутить" на этих бюджетных сенсорах особо нечего..
    Если уж задаться целью сделать что то отличное от ширпотреба, надо смотреть в сторону другого железа.. (например "аналог").

  38. #2275

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

  39. #2276

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    это в первую очередь внешнее АЦП
    А меня радовали гиры от murata, по моему они хорошо служат и по сей день, только вот большие и много их надо , и 24 бита не нужно для гиры, а уж аксель MMA7455 (по 80 р) у меня работал с шкалой +/- 64 единицы!, ..
    Тут на четко расставить акценты: "чего мы хотим" простоты, качества, дешевизны...
    Мне вот хочется добиться максимальной простоты изготовления самой платы, минимума деталей, с адекватными характеристиками, поэтому щас подумываю о LSM333...

  40. #2277

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

    Цитата Сообщение от oleg70 Посмотреть сообщение
    А меня радовали гиры от murata,
    с родным АЦП проца - какая точность получается? 2.6 градуса - не фонтан...

    немного решил отступить от темы:
    http://vrbrain.wordpress.com/
    http://code.google.com/p/vrbrain/
    немного допилить до моей платки (среда у меня установлена со всеми плюшками) и можно потестить

  41. #2278

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Все нравится, кроме выносного GPS..

  42. #2279

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,471
    Цитата Сообщение от oleg70 Посмотреть сообщение
    а вот смещение нулевой точки желательно устранять до подачи в ИМУ (даже более важно чем устранение шума)...
    верно, но желательно дополнительно корректировать в полёте по отвесу(акселю)
    примерно так ->
    Цитата Сообщение от VitaliyRU Посмотреть сообщение
    Через AB фильтр накапливаем поправку на гирик, гирик всегда читаем с этой поправкой. т.е. Если арктангенс двух соседних ускорений 500 итераций пляшет +3*/-3* поправка=0, если пляшет +3*/-2* значит по акселю мы получаем 1*/сек - пишем это в поправку гирика. врятли понятно, но просто решаем обратную задачу. Правим акселем гирик.

    Цитата Сообщение от oleg70 Посмотреть сообщение
    наличие смещения нуля означает постоянную "паразитную" угловую скорость, которую аксель будет "упираться" убрать,
    согласитесь, что лучше от нее избавиться заранее.....
    о чем написано выше, компенсируется инетгральной корректирующей цепочкой с большой постоянной времени (т.е. накапливает и вычитает постоянную ошибку интеграции ДУСа).
    Увод по температуре на порядок меньше ошибки интегрирования.

  43. #2280

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

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

Похожие темы

  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

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

Ваши права

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