Специальные цены   новые товары
+ Ответить в теме
Страница 52 из 165 ПерваяПервая ... 42 50 51 52 53 54 62 ... ПоследняяПоследняя
Показано с 2,041 по 2,080 из 6569

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

Тема раздела Квадрокоптеры. Общие вопросы в категории Квадрокоптеры и мультироторы; Народ. Кто то разбирался в протоколе mavlink. Хочу переделать ОСД под данный протокол для Ардукоптер. Смотрел готовые библиотеки и нифига ...

  1. #2041
    Забанен
    Регистрация
    30.11.2011
    Адрес
    Киев
    Возраст
    36
    Сообщений
    373
    Народ. Кто то разбирался в протоколе mavlink. Хочу переделать ОСД под данный протокол для Ардукоптер. Смотрел готовые библиотеки и нифига не догоняю. Как то там все через опу.

  2.  
  3. #2042
    DVE
    DVE вне форума

    Регистрация
    16.06.2008
    Адрес
    EU
    Возраст
    37
    Сообщений
    4,386
    Так если все данные уже читаются, их можно и не трогать, в MinimOSD непосредственно вывод смотрите в OSD_Panels.ino, функция writePanels(), можете поменять под себя как угодно.

  4. #2043
    Забанен
    Регистрация
    30.11.2011
    Адрес
    Киев
    Возраст
    36
    Сообщений
    373
    У меня OSD своя. Раньше стояла на мультиви, а теперь хочу переделать на ардукоптер.

  5. #2044

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,471
    Цитата Сообщение от Gapey Посмотреть сообщение
    несоветую ставить передающий модуль на одной плате с GPS приемником , даже если антенны будет вынесены далеко от платы ...
    Есть противопоказания? Хочется всё в одном и компактно, а если нельзя то и смысла нет

    Цитата Сообщение от Gapey Посмотреть сообщение
    написать нормально работающую в наших условиях радиосистему это отдельная довольно сложная задача
    Для начала придлагал стянуть готовый РЧ-модуль с модема 3ДР, со встроенным ПО, своё пока не досуг.

  6.  
  7. #2045

    Регистрация
    15.06.2011
    Адрес
    Ростов-на-Дону
    Возраст
    45
    Сообщений
    866
    Цитата Сообщение от rual Посмотреть сообщение
    Есть противопоказания? Хочется всё в одном и компактно, а если нельзя то и смысла нет
    ну все на одной плате тоже нехорошо ...
    противопоказания : любой передающий модуль это источник электромагнитных помех который нужно ставить какможно дальше от приемника и антенны навигации ...
    видеале GPS и компас выносить на отдельную плату и поднимать какможно выше...
    Цитата Сообщение от rual Посмотреть сообщение
    Для начала придлагал стянуть готовый РЧ-модуль с модема 3ДР, со встроенным ПО, своё пока не досуг.
    ну так у 3ДР не RFM22 а HM-TRP модули ... там трансивер и проц в одном флаконе , но в прошивке только rs232 , а интересно так чтобы шла нетолько телеметрия но и управление по тому-же каналу ...
    как вариант можно слона переразвести под свои нужды ...

  8. #2046

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

  9. #2047

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

    Таймкоп разбушевался http://code.google.com/p/afrodevices...e/detail?r=335 18+
    Последний раз редактировалось SergDoc; 06.06.2013 в 00:27.

  10.  
  11. #2048

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    У меня вопрос по PID (что то не как не могу победить), возьмем один канал, например "крен":
    Делаю так в цикле: "П"="уст."-"текущ." (она же "error")
    "И"="И"+error
    "Д"="Д(n-1)"-"текущ."
    PID="П"+"И"+"Д"
    ну и конечно каждый компонент умножаю на коэфициент "K"<1.0 (float).
    Какого порядка этот "K" должен быть?, частота выполнения цикла 250 Гц., ставил даже "К"=0.1, все равно идет перерегулирование (не затухающие колебания)....
    Может что то не так делаю?

  12. #2049

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

  13. #2050

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Какого порядка этот "K" должен быть?
    этот К должен быть разным для каждого из P, I, D.

  14. #2051

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от HikeR Посмотреть сообщение
    разным для каждого
    Да, конечно пробую разные, но результат тот же, похоже не правильно что то делаю, судя по разным источникам интернета
    встречал разночтения типа: "Д"="Д(n-1)"-"текущ." и "Д"="текущ."-Д(n-1)", как правильно не знаю...

    Может кто подкинет рабочий кусочек кода для анализа?

  15. #2052

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    Код:
    // **** PITCH & ROLL & YAW PID ****  
            float dT = cycleTime * 1e-6;                                                           // pt1 element http://www.multiwii.com/forum/viewtopic.php?f=23&t=2624
    
    
            prop = max(abs((float)rcCommand[PITCH]), abs((float)rcCommand[ROLL]));  // range [0;500] Crashpilot: prop is float now
            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.0f * (float)rcCommand[axis] + (float)GPS_angle[axis], -500.0f, +500.0f) - (float)angle[axis] + (float)cfg.angleTrim[axis];
                    errorAngle = errorAngle*(float)cycleTime/BasePIDtime;      // Crashpilot: Include Cylcletime take 3ms as basis. More deltaT more error
                                                            PTermACC = errorAngle * (float)cfg.P8[PIDLEVEL] / 100.0f;
                    PTermACC = constrain(PTermACC, -(float)cfg.D8[PIDLEVEL] * 5.0f, +(float)cfg.D8[PIDLEVEL] * 5.0f);
                    errorAngleI[axis] = constrain(errorAngleI[axis] + errorAngle, -10000.0f, +10000.0f); // WindUp
                    ITermACC = ((float)errorAngleI[axis] * (float)cfg.I8[PIDLEVEL])/4096.0f;
                }
                if (!f.ANGLE_MODE || axis == 2) {                              // MODE relying on GYRO or YAW axis
                    error = (float)rcCommand[axis]*80.0f/(float)cfg.P8[axis];
                                                            error = error*(float)cycleTime/BasePIDtime;                // Crashpilot: Include Cylcletime take 3ms as basis. More deltaT more error
                                                              error -= (float)gyroData[axis];
                    PTermGYRO = (float)rcCommand[axis];
                    errorGyroI[axis] = constrain(errorGyroI[axis] + error, -16000.0f, +16000.0f);
                    if (abs(gyroData[axis]) > 640.0f) 
                        errorGyroI[axis] = 0;
                    ITermGYRO = (errorGyroI[axis]/125.0f * (float)cfg.I8[axis])/64.0f;
                }
                if (f.HORIZON_MODE && axis < 2) {
                    PTerm = (PTermACC * (500.0f - prop) + PTermGYRO * prop) / 500.0f;
                    ITerm = (ITermACC * (500.0f - prop) + ITermGYRO * prop) / 500.0f;
                } else {
                    if (f.ANGLE_MODE && axis < 2) {
                        PTerm = PTermACC;
                        ITerm = ITermACC;
                    } else {
                        PTerm = PTermGYRO;
                        ITerm = ITermGYRO;
                    }
                }
                PTerm -= (float)gyroData[axis] * (float)dynP8[axis] / 10.0f / 8.0f;
    
    
                delta = (float)gyroData[axis] - (float)lastGyro[axis];
                lastGyro[axis] = gyroData[axis];
                                                    
                deltaSum = delta1[axis] + delta2[axis] + delta;
                      delta2[axis] = delta1[axis];
                delta1[axis] = delta;
    
    
                deltaSum = lastDTerm[axis] + (dT / (RC + dT)) * (deltaSum - lastDTerm[axis]); // pt1 element http://www.multiwii.com/forum/viewtopic.php?f=23&t=2624
                lastDTerm[axis] = deltaSum;                                         // pt1 element http://www.multiwii.com/forum/viewtopic.php?f=23&t=2624
                                                    
                DTerm = ((float)deltaSum * (float)dynD8[axis])/32.0f;
                axisPID[axis] =  PTerm + ITerm - DTerm;
            }

  16. #2053

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    код реально нечитаем и нелогичен

  17. #2054

    Регистрация
    07.04.2012
    Адрес
    Брянск
    Возраст
    29
    Сообщений
    1,674
    Записей в дневнике
    6
    пчему же? просто с ним придется много повозится... код из вия
    кстати... в нем нету понятия времени, чисто по умолчанию принято что вызывается примерно через одинаковые промежутки...

    Цитата Сообщение от SergDoc Посмотреть сообщение
    axisPID[axis] = PTerm + ITerm - DTerm;
    а вот тут собственно что и спрашивали....

    для пояснения... расчет разбит на 2 части:
    1. Для режима удержания горизонта, используем в I данные акселя
    2. Для акро режима и YAW оси используется чисто гироскоп

  18. #2055

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

  19. #2056

    Регистрация
    07.04.2012
    Адрес
    Брянск
    Возраст
    29
    Сообщений
    1,674
    Записей в дневнике
    6
    этот код чисто виевский и практически без доработок... вот оригинал
    Код:
    //**** PITCH & ROLL & YAW PID ****    
    		for(axis=0;axis<3;axis++) {
    			if (f.ACC_MODE && axis<2 ) { //LEVEL MODE
    				// 50 degrees max inclination
    				errorAngle = constrain(2*rcCommand[axis] + GPS_angle[axis],-500,+500) - angle[axis] + conf.angleTrim[axis]; //16 bits is ok here
    			#ifdef LEVEL_PDF
    				PTerm      = -(int32_t)angle[axis]*conf.P8[PIDLEVEL]/100 ;
    			#else  
    				PTerm      = (int32_t)errorAngle*conf.P8[PIDLEVEL]/100 ;                         
    			#endif
    				PTerm = constrain(PTerm,-conf.D8[PIDLEVEL]*5,+conf.D8[PIDLEVEL]*5);
    
    				errorAngleI[axis]  = constrain(errorAngleI[axis]+errorAngle,-10000,+10000);    
    				ITerm              = ((int32_t)errorAngleI[axis]*conf.I8[PIDLEVEL])>>12;           
    			} else { //ACRO MODE or YAW axis
    				if (abs(rcCommand[axis])<350) error =          rcCommand[axis]*10*8/conf.P8[axis] ;
                                             else error = (int32_t)rcCommand[axis]*10*8/conf.P8[axis] ; 
    				error -= gyroData[axis];
    				PTerm = rcCommand[axis];
          				errorGyroI[axis]  = constrain(errorGyroI[axis]+error,-16000,+16000);          // WindUp   16 bits is ok here
    				if (abs(gyroData[axis])>640) errorGyroI[axis] = 0;
    				ITerm = (errorGyroI[axis]/125*conf.I8[axis])>>6;                                 
    			}
    			if (abs(gyroData[axis])<160) PTerm -=          gyroData[axis]*dynP8[axis]/10/8; 
    							      else PTerm -= (int32_t)gyroData[axis]*dynP8[axis]/10/8; // 32 bits is needed for calculation   
    			delta          = gyroData[axis] - lastGyro[axis];                            
    			lastGyro[axis] = gyroData[axis];
    			deltaSum       = delta1[axis]+delta2[axis]+delta;
    			delta2[axis]   = delta1[axis];
    			delta1[axis]   = delta;
     
    			if (abs(deltaSum)<640) DTerm = (deltaSum*dynD8[axis])>>5;                   
    							  else DTerm = ((int32_t)deltaSum*dynD8[axis])>>5;         
                          
    			axisPID[axis] =  PTerm + ITerm - DTerm;
    		}
    там никакого портирования не нужно.... чисто вставил и чуток подправил.... тут чисто математика

  20. #2057

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

  21. #2058

    Регистрация
    11.05.2008
    Адрес
    Великий Новгород
    Возраст
    38
    Сообщений
    3,939
    Записей в дневнике
    22
    Цитата Сообщение от mataor Посмотреть сообщение
    в нем нету понятия времени
    так интервал (dT) умноженный на коэффициент дает такой же коэффициент.

  22. #2059

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

  23. #2060

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    Может немного преждевременно, ибо только на понедельник (у меня выходной) договорился попользоватся оборудованием (паяльная станция и т.п. ) для переделки - восстановления платы, но всё таки выложил в гит тестовую версию порта baseflight на мою плату, большинство проблем решено, но пока не попробую подлетнуть - сказать, что она рабочая не могу, так что автор не несёт никакой ответственности за проделки выложеной прошивки если кто решит попробовать, то только на свой страх и риск , да и по ходу Таймкоп по моему пытается адаптировать под какой-то другой проц прошивку ибо теперь micros и millis отвязаны от конкретной частоты проца и расчитываются из частоты проца какой бы она не была:
    Код:
    static void cycleCounterInit(void)
    {
        RCC_ClocksTypeDef clocks;
        RCC_GetClocksFreq(&clocks);
        usTicks = clocks.SYSCLK_Frequency / 1000000;
    }
    // SysTick
    void SysTick_Handler(void)
    {
        sysTickUptime++;
    }
    
    // Return system uptime in microseconds (rollover in 70minutes)
    uint32_t micros(void)
    {
        register uint32_t ms, cycle_cnt;
        do {
            ms = sysTickUptime;
            cycle_cnt = SysTick->VAL;
        } while (ms != sysTickUptime);
        return (ms * 1000) + (usTicks * 1000 - cycle_cnt) / usTicks;
    }
    
    // Return system uptime in milliseconds (rollover in 49 days)
    uint32_t millis(void)
    {
        return sysTickUptime;
    }

  24. #2061

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    да в моей прошивке магнитометр не развёрнут - надо через cli (терминал) развернуть на 180% (по осям X и Y поменять знаки)...

  25. #2062

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Цитата Сообщение от SergDoc Посмотреть сообщение
    сейчас копаю якобы порт ardu на PX4
    Это не порт. PX4 нативная 32битная платформа для Арду. Они сделали абстрактный слой и в теории могут запускать свой код на любой платформе (Адаптировав хардварный слой HAL).

  26. #2063

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    но всё равно танцы с командной строкой, конечно можно собрать всё и под эклипсом (у мультипилота есть), но блин отладчик там у меня не работает (на этом и запёрся с мультипилотом)....
    у Арду есть станция под Линукс? дабы не прыгать из оси в ось, думаю под Линуксом удастся собрать нормальную IDE и портануть под мою плату....
    Последний раз редактировалось SergDoc; 13.06.2013 в 19:00.

  27. #2064

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

  28. #2065

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,471
    Цитата Сообщение от SergDoc Посмотреть сообщение
    и вроде же отличий никаких нет кроме размера флеши, странно.....
    Сергей, смотри стартовый адрес конфига, возможно пытается писать в несуществующую высшую флеш. Нужно понизить адрес конфига, ну и посмотреть размеры страниц, если надо поправить код.

  29. #2066

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,290
    Записей в дневнике
    19
    Александр (rual), ты свою раскачку победил? подшаманил аксель и конечный пид-регуль как я тогда писал?

  30. #2067

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    Цитата Сообщение от rual Посмотреть сообщение
    Сергей, смотри стартовый адрес конфига, возможно пытается писать в несуществующую высшую флеш. Нужно понизить адрес конфига, ну и посмотреть размеры страниц, если надо поправить код.
    у g в отличии от E только лишние сектора на 512к такие же как и седьмой, по 128к каждый
    Код:
    #define ADDR_FLASH_SECTOR_0     ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbytes */
    #define ADDR_FLASH_SECTOR_1     ((uint32_t)0x08004000) /* Base @ of Sector 1, 16 Kbytes */
    #define ADDR_FLASH_SECTOR_2     ((uint32_t)0x08008000) /* Base @ of Sector 2, 16 Kbytes */
    #define ADDR_FLASH_SECTOR_3     ((uint32_t)0x0800C000) /* Base @ of Sector 3, 16 Kbytes */
    #define ADDR_FLASH_SECTOR_4     ((uint32_t)0x08010000) /* Base @ of Sector 4, 64 Kbytes */
    #define ADDR_FLASH_SECTOR_5     ((uint32_t)0x08020000) /* Base @ of Sector 5, 128 Kbytes */
    #define ADDR_FLASH_SECTOR_6     ((uint32_t)0x08040000) /* Base @ of Sector 6, 128 Kbytes */
    #define ADDR_FLASH_SECTOR_7     ((uint32_t)0x08060000) /* Base @ of Sector 7, 128 Kbytes */
    пытался сразу в седьмой писать как и раньше, не вышло, перепрыгнул в 11 - та же беда, не пойму....
    подпаяюсь st-link-ом посмотрю...
    ты платы не собирал? если собрал хоть одну залей прошивку из гит https://github.com/SergDoc/Nev_Multi...torcontrol.hex (на кнопочке raw правой клавишей - сохранить как) если будет моргать после инициализации двумя светодиодами попеременно с интервалами в пол секунды значит проблема в коде, если же что-нибудь другое, то значит у меня....

  31. #2068

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,471
    Цитата Сообщение от SergDoc Посмотреть сообщение
    ты платы не собирал?
    нет, я пока в отпуске. Не до того

    Цитата Сообщение от mahowik Посмотреть сообщение
    Александр (rual), ты свою раскачку победил? подшаманил аксель и конечный пид-регуль как я тогда писал?
    не, не победил, пока с ГПС пытаюсь подружиться, совсем без инерциалки, набиваю шишки. Буду пробовать мпушку в качестве акселя, потом на SergDoc'вскую плату перебираться.

  32. #2069

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

  33. #2070

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

  34. #2071

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    короче проблемы с внешним тактированием - плавает частота на кварце, кварц менял, настройки правильные, напряжения на лапах генератора правильные, попробую запустить на внутреннем, мне везёт может проц с какой ревизией или ещё что, не поддерживает 8 МГц - да наврят-ли ...
    но шимы выдают положенные 400Гц , значит тактирование правильное, надо наверное пересобрать полностью проект, блин когда же косяки кончатся....
    Последний раз редактировалось SergDoc; 18.06.2013 в 13:01.

  35. #2072

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

  36. #2073

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

  37. #2074

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

  38. #2075

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

  39. #2076

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    вывел в дебаги сырае данные с мага - показания от -5 до 0 - бред какой-то....
    Код:
    i2cRead(MAG_ADDRESS, MAG_DATA_REGISTER, 6, buf);
        mag[0] = buf[0] << 8 | buf[1];
        mag[1] = buf[2] << 8 | buf[3];
        mag[2] = buf[4] << 8 | buf[5];
    
    	
    	debug[0] = mag[0];
    	debug[1] = mag[1];
    	debug[2] = mag[2];

  40. #2077

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

    вот одна из возможных проблем:
    Итак, если у вас значения по осям, выдаваемые компасом стремятся к нулю, проблема в конденсаторе 0,22 мкФ между SETP и SETC. Если он не имеет контакта с компасом, цифровая часть работает и отвечает на запросы системы, но датчики не работают.

    Чтобы монтаж происходил нормально, нужно развести компас как показано в новом даташите, а именно удалить полигоны земли из под компаса и не проводить под ним дорожек. Это как раз решит вероятную проблему обратных токов по земляному полигону, которые могут искажать измеренное магнитное поле и создавать помехи.
    копаю пока дальше.... ибо импульсы на этом конденсаторе есть....
    Последний раз редактировалось SergDoc; 19.06.2013 в 16:41.

  41. #2078

    Регистрация
    16.12.2005
    Адрес
    Москва
    Возраст
    34
    Сообщений
    4,452
    Записей в дневнике
    13
    Занятное письмо сейчас пришло
    fully integrated 10 axis Motion Tracking RF Module from Sensoplex which includes the latest Invensense 9 axis MPU9250 (accel+gyro+compass) + a pressure sensor, CPU + 128M Flash and low Energy Bluetooth. It also includes a mini USB for Li-ion Battery charging and a connector for embedded applications.
    It will be offered in several standard flavors including 10/9/7 and 6 axis initially. Evaluation Kits which include an adapter card for initial development are going to be available end Q213. Single quantity pricing is $99.00 (100K < $20.00)
    The SP-10BN is a compact, low power, calibrated sensor module and hub that can be easily and cost effectively integrated into a wide range of consumer, medical and industrial products



    Features

    • 3-axis MEMS Accelerometer

    • 3-axis MEMS Gyroscope

    • 3-axis MEMS Magnetometer

    • Barometric Pressure Sensor

    • Digital Motion Processor™ (DMP™) for “Sensor Fusion” Management

    • InvenSense Motion Processing Library

    • Bluetooth Low Energy Radio

    • 16 bit Microcontroller for Sub-system and Sensor Hub Programming

    • 128 KB of Flash Memory

    • Interface Connector for Controlling External Sensors, I/O and Debug

    • Temperature Sensor

  42. #2079

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,471
    Цитата Сообщение от leprud Посмотреть сообщение
    Занятное письмо сейчас пришло
    Не очень понял, ПО самому писать? Тогда какой проц?

  43. #2080

    Регистрация
    16.12.2005
    Адрес
    Москва
    Возраст
    34
    Сообщений
    4,452
    Записей в дневнике
    13
    Проприетарное там наверняка все.. Выложил, в основном, из-за порядка цен на готовую железку

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

Похожие темы

  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

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

Ваши права

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