Специальные цены   новые товары
+ Ответить в теме
Страница 91 из 165 ПерваяПервая ... 81 89 90 91 92 93 101 ... ПоследняяПоследняя
Показано с 3,601 по 3,640 из 6569

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

Тема раздела Квадрокоптеры. Общие вопросы в категории Квадрокоптеры и мультироторы; Сообщение от SergDoc ни ф 3 ни ф4 в таких корпусах нет, а так бы было шикарно -48 лап ... ...

  1. #3601

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

  2.  
  3. #3602

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

  4. #3603

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,471
    Ага, туда же. Удачи!

  5. #3604

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    Дед Мороз везёт подарки
    приехало 12 штук, разглядеть не успел, у моих двух металлизированы почему-то крепёжные отверстия и дырки под пластиковые штырьки usb-разъёма?
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: DSCN0795.jpg‎
Просмотров: 189
Размер:	96.3 Кб
ID:	881735  

  6.  
  7. #3605

    Регистрация
    10.12.2013
    Адрес
    Люберцы
    Возраст
    33
    Сообщений
    168
    Цитата Сообщение от SergDoc Посмотреть сообщение
    Дед Мороз везёт подарки
    приехало 12 штук, разглядеть не успел, у моих двух металлизированы почему-то крепёжные отверстия и дырки под пластиковые штырьки usb-разъёма?
    Если отправляли на производство гербера с одним файлом сверловки, то по умолчанию все отверстия должны быть металлизированы, а для не металлизированных отверстий делается другой файл сверловки.

  8. #3606

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

  9. #3607

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Собрал и запустил, наконец то, все железо (теперь mpu6000/MS5611/LSM303) данные с датчиков есть....
    Хотелось бы поинтересоваться у искушенной публики: - что делают с сырыми данными акселя и гиры в разных открытых проектах перед подачей в алгоритм IMU ??
    Сам посмотрел у AQ32 , вроде понятно, что сначала интегрируют их, потом усредняют и обсчет в IMU ведется с частотой 500 гц вроде...
    Какие еще варианты бывают ?? или все в основном одно и тоже ? (чужой код читаю с трудом...)

  10.  
  11. #3608

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

  12. #3609

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

  13. #3610

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

    Цитата Сообщение от rual Посмотреть сообщение
    постоянную интегрирования.
    Вот как раз это мне и интересно..
    Сейчас суммарный обсчет положения сделал (благо MPU) 1000 Гц, разницы с предыдущим проектом 200 Гц субъективно не наблюдается, - мораль: а надо ли гнаться за частотой ? Может наоборот герц эдак 100 сделать ? (вот и вам и DLPF получится). Всеж хочется добиться в своем (хенд мэйд) проекте каких то результатов по качеству.
    Кстати у MPU аксель, у меня, дает шум +/- 100 ед. при шкале 4G это нормально ?
    Последний раз редактировалось oleg70; 26.12.2013 в 22:57.

  14. #3611

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,290
    Записей в дневнике
    19
    Цитата Сообщение от SergDoc Посмотреть сообщение
    видяху то ставит, а вот cuda ни в какую
    Накати сперва все обновления и все решится скорее всего...

  15. #3612

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    39
    Сообщений
    1,941
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Сейчас суммарный обсчет положения сделал (благо MPU) 1000 Гц, разницы с предыдущим проектом 200 Гц субъективно не наблюдается, - мораль: а надо ли гнаться за частотой ? Может наоборот герц эдак 100 сделать ? (вот и вам и DLPF получится). Всеж хочется добиться в своем (хенд мэйд) проекте каких то результатов по качеству. Кстати у MPU аксель, у меня, дает шум +/- 100 ед. при шкале 4G это нормально ?
    MPU внутри работает на 1(8)КГц, а данные суммирует в зависимости от выходной частоты. Поэтому нету особой разницы где суммировать, на стороне CPU или MPU - результат один и тот же

  16. #3613

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

  17. #3614
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от Sir Alex Посмотреть сообщение
    MPU внутри работает на 1(8)КГц, а данные суммирует в зависимости от выходной частоты. Поэтому нету особой разницы где суммировать, на стороне CPU или MPU - результат один и тот же
    Привет! А что означает суммирование в мпу?

  18. #3615

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

    Цитата Сообщение от Drinker Посмотреть сообщение
    А что означает суммирование в мпу?
    Вот это хз... но смысл такой, что ДУС там всегда работает на 1000Гц, а скорость выдачи данных, одновременно ДУС+аксель, получается делением на настраиваемый коэффициент K, дык вот за время dt = (к+1)/1000 отсчёты ДУС усредняются.

  19. #3616

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Очередной затык, теперь с 5611, "пихаю" 24-х битное число (из трех uint8_t) в uint32_t так:

    D1=(uint32_t)((b1<<24)|(b2<<16)|(b3<<8)); - // по моему не правильно, но работает...
    или
    D1=(uint32_t)((b1<<16)|(b2<<8)|b3); -// по моему правильно но результат - не тот....

    Где я туплю ??

  20. #3617
    Забанен
    Регистрация
    30.11.2011
    Адрес
    Киев
    Возраст
    36
    Сообщений
    373
    Правильно так:
    D1=(uint32_t)((b1<<16)|(b2<<8)|b3);

  21. #3618

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от Alexey_1811 Посмотреть сообщение
    Правильно так:
    D2=(uint32_t)((b1<<16)|(b2<<8)|b3);
    Я тоже так думаю, но после нехитрых вычислений далее (расчет температуры 5611 по даташиту):
    dT=(int32_t)(D2 -C5*256);
    MS_temper=2000 + dT*C6/8388608;
    , нужный результат почему то получается именно при "неправильном" способе присвоения....

  22. #3619

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    если про это
    Код:
    static uint32_t ms5611_read_adc(void)
    {
        uint8_t rxbuf[3];
        i2cRead(MS5611_ADDR, CMD_ADC_READ, 3, rxbuf); // read ADC
        return (rxbuf[0] << 16) | (rxbuf[1] << 8) | rxbuf[2];
    }
    Код:
    `  int64_t dT = ms5611_ut - ((int32_t)ms5611_c[5] << 8);
        int64_t off = ((uint32_t)ms5611_c[2] << 16) + ((dT * ms5611_c[4]) >> 7);
        int64_t sens = ((uint32_t)ms5611_c[1] << 15) + ((dT * ms5611_c[3]) >> 8);
        temp = 2000 + ((dT * ms5611_c[6]) >> 23);
    драйвера есть все в открытом доступе, тут даже смысла не вижу изобретать?

  23. #3620

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

  24. #3621

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

  25. #3622

    Регистрация
    10.12.2013
    Адрес
    Люберцы
    Возраст
    33
    Сообщений
    168
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Мда.... Все ж компиллер как то теряет знаковый тип при сдвиге (делении) больших чисел, отсюда и косяк у меня,....
    Не было печали...
    Keil вроде с оффсайта качал, правда он с ограничениями.. (не в этом ли дело?)..
    кейл с ограничениями тут не причем, компилятор "считает" с права налево и выполняет действия согласно приоритетам операций. Может он что то не то сначала вычисляет.
    эти формулы не правильно считаются?
    dT=(int32_t)(D2 -C5*256);
    MS_temper=2000 + dT*C6/8388608;
    покажите кусок кода и какие типы переменных используются.

  26. #3623

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от djdron Посмотреть сообщение
    покажите кусок кода
    Вот переменные:
    int32_t dT,MS_temper;
    uint32_t D2;
    uint16_t C5,C6;

    Вот расчет:
    dT=D2 - (uint32_t)C5<<8; //( dT здесь получается 1700, проверял)
    MS_temper=((int64_t)dT*28312)>>23;

    MS_temper выходит -131, хотя должно быть 5....

    Если пишу прям так: MS_temper=(1700*28312)>>23;
    или присваиваю ранее dT=1700; - то как раз 5 и выходит..
    Такое ощущение что c типом int64_t что то не так...

  27. #3624

    Регистрация
    10.12.2013
    Адрес
    Люберцы
    Возраст
    33
    Сообщений
    168
    при умножении вылазит за 32 бита, попробуйте заменить на double, если заработает посмотрите как определен тип int64.
    Возможно int64 определен как long, а компилятор его считает 32 битным, вспомнил (long long) 64 бита целочисленное.
    Последний раз редактировалось djdron; 28.12.2013 в 18:43.

  28. #3625

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от djdron Посмотреть сообщение
    Возможно int64 определен как long
    Да, спасибо Вам за наводку, похоже где то здесь косяк... (первый признак, проверенные примеры из инета не работают..) буду копать.

  29. #3626

    Регистрация
    10.12.2013
    Адрес
    Люберцы
    Возраст
    33
    Сообщений
    168
    Если "быстро" поправить то можно написать:
    MS_temper=((long long)dT*28312)>>23;

  30. #3627
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Камрады, а зачем вы геммороитесь с такими операцыями типа <<8 и >>23? кто мешает нормально делить и перемножать числа как и указано в даташите? Сами себе проблемы ищете.

    Или наносекунды экономите?

    это касается и возведения в степень

    заранее двойку в степень возведите и усе

  31. #3628

    Регистрация
    10.12.2013
    Адрес
    Люберцы
    Возраст
    33
    Сообщений
    168
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Вот расчет:
    dT=D2 - (uint32_t)C5<<8; //( dT здесь получается 1700, проверял)
    вот здесь еще косяк, не хватает скобочек:
    dT=D2 - ((uint32_t)C5<<8);

    Цитата Сообщение от Drinker Посмотреть сообщение
    Камрады, а зачем вы геммороитесь с такими операцыями типа <<8 и >>23? кто мешает нормально делить и перемножать числа как и указано в даташите? Сами себе проблемы ищете.

    Или наносекунды экономите?

    это касается и возведения в степень

    заранее двойку в степень возведите и усе
    можно и без << >>, просто это пример из интернета, вот его и разбирали почему не работает
    Последний раз редактировалось djdron; 28.12.2013 в 20:41.

  32. #3629

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от Drinker Посмотреть сообщение
    с такими операцыями типа <<8 и >>23
    В моем случае деление на число=2^23 дает тот же результат....
    Цитата Сообщение от djdron Посмотреть сообщение
    Если "быстро" поправить то можно написать:
    MS_temper=((long long)dT*28312)>>23;
    К сожалению, Андрей, не прошло и так...
    Тут я понял однозначно: компиллер отказывается (?) понимать беззнаковые переменные при операциях деления или сдвига вправо, ... он их считает знаковыми, независимо от непосредственного указания типа..
    Хотя на сам тип реагирует - "warning", если ему подсунуть uint16_t на проверку на "<0"...

  33. #3630

    Регистрация
    10.12.2013
    Адрес
    Люберцы
    Возраст
    33
    Сообщений
    168
    не знаю что может быть с кейлом, вроде не должно быть такого, сам пишу в иаре, попробовал в иаре все работает:
    unsigned short int C5 = 33464;
    unsigned short int C6 = 28312;
    unsigned int D2 = 16777215;
    signed int dT = D2 - ((unsigned int)C5<<8);
    signed int TEMP = 2000 + (((long long)dT*C6)>>23);
    под ARM пишете?

  34. #3631
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от oleg70 Посмотреть сообщение
    MS_temper=((int64_t)dT*28312)>>23; MS_temper выходит -131, хотя должно быть 5....
    MS_temper ранее был объявлен как int32_t .....почему он вдруг должен стать int64_t ?
    И наверное MS_temper = 2000+dT*C6/2^23; Не?

  35. #3632

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от djdron Посмотреть сообщение
    не знаю что может быть с кейлом
    Тут, скорее всего, ключ какой то нужен для компиллера, или еще какая "магия"...
    Был удивлен, но : пишу
    uint32_t K=57438; при компиляции он мне:
    <main.c(78): warning: #68-D: integer conversion resulted in a change of sign>
    т.е. он мне "великодушно" решил преобразовать беззнаковую в константу в знаковую (увидел старший бит)....
    Не скажу что я программист, STM32 недавно только освоил, но ранее как то не сталкивался с этим (заморочки)..

    Цитата Сообщение от Drinker Посмотреть сообщение
    почему он вдруг должен стать int64_t
    произведение двух переменных в скобках больше 32-х разрядов, а они мне все нужны ...

  36. #3633

    Регистрация
    10.12.2013
    Адрес
    Люберцы
    Возраст
    33
    Сообщений
    168
    напишите вот так, посчитает ли кейл:
    unsigned short int C5 = 33464;
    unsigned short int C6 = 28312;
    unsigned int D2 = 16777216;
    signed int dT = D2 - ((unsigned int)C5<<8);
    signed int TEMP = 2000 + (((long long)dT*C6)>>23);

  37. #3634

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    дабы простыню не выкладывать, вот рабочий драйвер https://github.com/SergDoc/Nev_Multi...c/drv_ms5611.c

  38. #3635

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    дабы простыню не выкладывать
    Не работает......
    Вопрос снят, всем спасибо (фиг с ним с этим Keil-ом, у меня лимит в 32-Кб все равно уже заканчивается, буду какой нибуть CooCox мучить....)

  39. #3636
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    43
    Сообщений
    952
    Цитата Сообщение от oleg70 Посмотреть сообщение
    буду какой нибуть CooCox

    Велком ту волшебный мир кокоса!

  40. #3637

    Регистрация
    01.11.2010
    Адрес
    Belarus Slonim
    Возраст
    36
    Сообщений
    4,460
    Записей в дневнике
    8
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Не работает......
    работает - на 103м и 407 точно и под кеил и под gcc...

  41. #3638

    Регистрация
    26.11.2012
    Адрес
    Tambov
    Возраст
    46
    Сообщений
    777
    Цитата Сообщение от SergDoc Посмотреть сообщение
    работает - на 103м и 407 точно
    Спорить не буду, но если интересно, можете посмотреть какие данные выдает датчик температуры MS5611 (в реале при нагреве и охлаждении), не знаю что за глюк, но у меня при <17,4 градуса сразу 22,.. (явно в расчете переполнение на 256 ед.),
    а так то да, все работает... циферки бегут... и высоту даже можно посчитать...

  42. #3639

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    40
    Сообщений
    1,471
    Цитата Сообщение от oleg70 Посмотреть сообщение
    Вопрос снят, всем спасибо (фиг с ним с этим Keil-ом, у меня лимит в 32-Кб все равно уже заканчивается, буду какой нибуть CooCox мучить....)
    Эт не правильно! Кейл отличный компиллер, а вот gcc никаких стандартов не соблюдает, можно в чистом Ц файле объявить переменную внутри кода и тд и тп
    По поводу вашей переменной со знаком, компиллер вас предупреждает, что беззнаковая переменная участвует в действиях со знаковыми числами и будет преобразована, у ГЦЦ тут было бы всё шоколадно, но при вычислениях могли половить нереальный глюк. Чтоб предупреждения не выдавалось надо в коде выполнить явное преобразование типа (int32_t)peremennaya.

    Цитата Сообщение от oleg70 Посмотреть сообщение
    но у меня при <17,4 градуса сразу 22,.. (явно в расчете переполнение на 256 ед.),
    это как раз тот глюк о котором выше написано, результат сдвига uint8_t на 8 и более разрядов теряет всю значимую часть, за типами надо следить.

  43. #3640

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    38
    Сообщений
    2,290
    Записей в дневнике
    19
    Цитата Сообщение от oleg70 Посмотреть сообщение
    буду какой нибуть CooCox мучить....
    Цитата Сообщение от rual Посмотреть сообщение
    Кейл отличный компиллер
    Саша, может оно и так. У них компиллер вообще свой?
    Но в плане удобности IDE как бы сказать, не в ногу со временем...
    Поставил вот сегодня CoIDE-1.7.5 + свежий 4.8 arm-none-eabi тулчейн. Создал новый проект под STM32F407VG, выбрал периферийные модули, закинул сорсы нужные. Готово! Единственное с чем про$%ся это с настройкой клоков, т.к. на дискавери 8мгц, а прописано в системных файлах 25мгц вроде... Кейл тут силен конечно, не знаю каким макаром, но вне зависимости от настроек проекта, чип всегда стартовал на положенных 168мгц...

    А вот далее вкусности CoIDE, чего явно Кейлу не хватает на первый взляд:
    - скорость навигации. Кейл мягко говоря тупит на переходах + сами переходы только через контекстное меню, морока... а CoIDE через Ctrl+click прыгает куда надо без пауз...
    - code completion - сила! Вмиг на старте сканит проект и дает подсказки по всем свойствам классов, переменным и дефайнам по ctrl+space...
    - сканит и подсвечивает блоки неактивных дефайн секций
    - организация и менеджмент окон

    Был бы он под линукс, ценыБ ему не было
    Последний раз редактировалось mahowik; 30.12.2013 в 11:18.

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

Похожие темы

  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

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

Ваши права

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