Реклама
Страница 20 из 43 ПерваяПервая ... 10181920212230 ... ПоследняяПоследняя
Показано с 191 по 200 из 426

Тема: БРЭО - бортовое радиоэлектронное оборудование

  1. #191
    Постоянный пользователь

    Регистрация
    06.04.2015
    Сообщений
    1,075
    Вес репутации
    17
    мне тоже не понятно, какие выгоды даст прогнозирование аппогея

    - - - Добавлено - - -

    для избежания случайного срабатывания есть способ проще - учитывать изменения в значениях серии высоты

  2. #192
    давайте возьмём график второго полёта Мрии и проверим, чей алгоритм сработает лучше - а именно, не сломается на тех скачках давления и даст наиболее точное значение апогея
    с меня проверка параболы

    на всякий случай скажу, что все эти параболы никак не меняют моего мнения, какой датчик апогея лучше, о чём я писал здесь:
    http://forum.modelka.com.ua/threads/...l=1#post724642

  3. #193
    Постоянный пользователь Аватар для altan

    Регистрация
    05.10.2016
    Сообщений
    110
    Вес репутации
    10
    я программку написал на си, только типа для ардуины, она в рил-тайме считает время апогея
    Код:
    struct TmpData {
      int i;
      int x;
      int y;
      int x2;
      int x3;
      int x4;
      int xy;
      int x2y;
    } tmpVars;
    
    void setup() {
      memset(&tmpVars, 0, sizeof(TmpData));
    }
    
    void loop() {
      int x;
      int y;
      // - SETUP x AND y!
      //  x - current time in milliseconds
      //  y - current altitude
      int apogeeTime = processData(x, y, tmpVars);
    }
    
    int processData(int x, int y, TmpData& tmp) {
      int x2 = x*x;
      tmp.i++;
      tmp.x += x;
      tmp.y += y;
      tmp.x2 += x2;
      tmp.x3 += x2 * x;
      tmp.x4 += x2 * x2;
      tmp.xy += x * y;
      tmp.x2y += x2 * y;
      if(tmp.i < 3)
        return -1;
      int d = calcMatrix(tmp.x2, tmp.x, tmp.i,
                         tmp.x3, tmp.x2, tmp.x,
                         tmp.x4, tmp.x3, tmp.x2);
      if(d == 0)
        return -1;
      int da = calcMatrix(tmp.y, tmp.x, tmp.i,
                         tmp.xy, tmp.x2, tmp.x,
                         tmp.x2y, tmp.x3, tmp.x2);
      int db = calcMatrix(tmp.x2, tmp.y, tmp.i,
                         tmp.x3, tmp.xy, tmp.x,
                         tmp.x4, tmp.x2y, tmp.x2);
      float a = (float)da/(float)d;
      if(a == 0)
        return -1;
      float b = (float)db/(float)d;
      float ret = -(b/(2*a));
      return ret;
    }
    
    int calcMatrix(int a1, int b1, int c1, int a2, int b2, int c2, int a3, int b3, int c3) {
      return a1*b2*c3+b1*c2*a3+a2*b3*c1-a3*b2*c1-a2*b1*c3-a1*b3*c2;  
    }
    с небольшими манипуляциями можно заюзать где и как угодно.
    только обязательно сначала обнулить tmpVars, а потом там будет обновляться инфа с каждой итерацией

  4. #194
    Цитата Сообщение от altan Посмотреть сообщение
    я программку написал на си, только типа для ардуины, она в рил-тайме считает время апогея
    о, вот это скорость, сразу видно настоящего программиста!)
    а там нельзя считать х3 не как х*х*х, а как х2*х ?
    и так же х4
    ведь х2 уже посчитан, а в микроконтроллере ресурса мало, надо оптимизировать

    для проверки алгоритма я буду использовать Excel

  5. #195
    Постоянный пользователь Аватар для altan

    Регистрация
    05.10.2016
    Сообщений
    110
    Вес репутации
    10
    да, можно, для контроллера нужна оптимизация максимальная.
    и еще. я его потестил только что, так там небольшие погрешности возникают из-за того, что я везде инты заюзал. если время - это будут тысячи милисекунд, а высота сотни метров, то погрешность небольшая.
    и еще, вычисление коэф-тов нужно написать так:
    float a = (float)da/(float)d;
    ........
    float b = (float)db/(float)d;

    а то деление целочисленное выполнится на интах...

    - - - Добавлено - - -

    Цитата Сообщение от Serge77 Посмотреть сообщение
    ведь х2 уже посчитан
    там не просто квадрат икса считается, а сразу сумма квадратов.
    можно поменять код на такой:
    Код:
      int x2 = x*x;
      tmp.i++;
      tmp.x += x;
      tmp.y += y;
      tmp.x2 += x2;
      tmp.x3 += x2 * x;
      tmp.x4 += x2 * x2;
      tmp.xy += x * y;
      tmp.x2y += x2 * y;

  6. #196
    время не нужно ни в секундах, ни в миллисекундах, достаточно просто номера точки, т.е. i
    когда получаем апогей в единицах i, тогда можем перевести во время, если надо

    Цитата Сообщение от altan Посмотреть сообщение
    там не просто квадрат икса считается, а сразу сумма квадратов.
    можно поменять код на такой:
    я понимаю, именно это и имел в виду)

  7. #197
    Постоянный пользователь

    Регистрация
    06.04.2015
    Сообщений
    1,075
    Вес репутации
    17
    Нажмите на изображение для увеличения. 

Название:	alg_bmp180.jpg 
Просмотров:	80 
Размер:	76.5 Кб 
ID:	269680

    Прогнал данные второго полета Мрии через усреднение 10 последовательных значений разности приращений высоты и сделал вывод, даже такой простой алгоритм точно бы определил момент прохождения аппогея.

    1 - ошибка
    2 - истина
    3 - расчет усреднением разницы

    - - - Добавлено - - -

    Чем больше последовательность усреднения - тем больше фильтрация ошибок, но больше задержка в моменте определения аппогея (10 - отлично, 5 хуже но приемлимо, 3 - есть ошибки).

  8. #198
    Цитата Сообщение от gmurvs Посмотреть сообщение
    Чем больше последовательность усреднения - тем больше фильтрация ошибок, но больше задержка в моменте определения аппогея (10 - отлично, 5 хуже но приемлимо, 3 - есть ошибки).
    да, так и есть
    я думал, у тебя так и сделано было изначально
    без усреднения никак

  9. #199
    Постоянный пользователь

    Регистрация
    06.04.2015
    Сообщений
    1,075
    Вес репутации
    17
    Цена новой версии составит две разбитых ракеты

  10. #200
    почему две?
    в 75-й тоже был маленький скачок?
    есть её график?

    - - - Добавлено - - -

    пробую параболу
    взял данные второго полёта Мрии, в приложении
    реальный апогей, определённый глазом - 7.8с с начала подъёма
    построил параболу по точкам первой секунды полёта, парабола естественно получилась вершиной вниз, мы разгоняемся
    Нажмите на изображение для увеличения. 

Название:	image001.png 
Просмотров:	82 
Размер:	63.4 Кб 
ID:	269691

    M2.xls

    - - - Добавлено - - -

    парабола 0-2 с
    тоже пока вершиной вниз
    Нажмите на изображение для увеличения. 

Название:	image001.png 
Просмотров:	75 
Размер:	66.6 Кб 
ID:	269693

    - - - Добавлено - - -

    0-3 с
    вершина вверх, прогноз апогея на 9.1с, поздно
    Нажмите на изображение для увеличения. 

Название:	image001.png 
Просмотров:	90 
Размер:	67.5 Кб 
ID:	269697

    - - - Добавлено - - -

    0-4 с
    вершина очень далеко
    Нажмите на изображение для увеличения. 

Название:	image001.png 
Просмотров:	91 
Размер:	67.3 Кб 
ID:	269698

TEST

Страница 20 из 43 ПерваяПервая ... 10181920212230 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Бортовое питание
    от СУ-31 в разделе ЭЛЕКТРОНИКА
    Ответов: 1
    Последнее сообщение: 22.08.2010, 21:57
  2. бортовое на 600м классе
    от Jam в разделе ВЕРТОЛЕТЫ
    Ответов: 30
    Последнее сообщение: 11.03.2010, 10:21
  3. От: Сервы и бортовое питание
    от semy-semy в разделе Корзина
    Ответов: 3
    Последнее сообщение: 13.01.2010, 20:37
  4. Бортовое Питание Зимой
    от DD в разделе ЭЛЕКТРОНИКА
    Ответов: 0
    Последнее сообщение: 14.02.2008, 12:47

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Информация:
Приветствуем Вас на самом крупном в Украине модельном портале. Советуем Вам зарегистрироваться, после чего вы сможете читать и писать сообщения.
Полезные ссылки
www.modelka.com.ua
www.icar.com.ua
www.magiya.com.ua
Free Photobank torange.biz
Присоединяйтесь