Комплексное БРЭО

 
1 8 9 10 11 12 29
RU Alexeev Max #26.11.2010 15:03  @Serge77#26.11.2010 14:54
+
-
edit
 

Alexeev Max

втянувшийся

A.M.>> А если на старте не запустился двигатель или произошла задержка (кнопку долго искал), БРЭО уже работает получаем сработку ССР на земле.
Serge77> Почему?

Потому что не прочитал твой пост про

Serge77>В смысле сработает при стоянии на старте из-за шума? Может быть. Нужна проверка на наличие подъёма ракеты на высоту, скажем, 20-30-50 м, т.е. на такую высоту, которая не может получиться из-за шума в неподвижной ракете.

только я предлагаю не проверку подъема на высоту... а вообще проверять подозрительные на апогей события в рамках некоего порога высоты относительно достигнутого максимума.

Т.е. максимум считаем в любом случае, а вот апогей выдаем только при отклонении от максимума свыше порога по высоте при совпадении прочих условий.

Плюс подумать насчет фильтрации от пиковых значений .... 300 301 300 456 298 299 ....
 

Serge77

модератор

GOGI> Сергей, тут мне кажется отлично подойдет предложенный тобой на стенд из лазерной указки алгоритм поиска.

Похоже, это увеличит задержку между прохождением апогея и его обнаружением.
Допустим, мы хотим обнаружить апогей не позднее 1с после прохождения. Тогда окно усреднения нужно в 2с, мы ждём, когда максимум будет примерно в середине окна. Но для вычислений нам нужны ещё и точки за 1с до и после окна, т.е. реально апогей мы поймаем только через 2с после прохождения. А это уже 20 м/с, да плюс ещё возможная задержка срабатывания, итого может получиться слишком большая скорость.

Да и не нужно это скорее всего, ведь возле апогея на ракету не действуют практически никакие возмущения, поэтому шума в данных нет, апогей должен легко ловиться.
UA Serge77 #26.11.2010 15:12  @Alexeev Max#26.11.2010 15:03
+
-
edit
 

Serge77

модератор

A.M.> Т.е. максимум считаем в любом случае, а вот апогей выдаем только при отклонении от максимума свыше порога по высоте при совпадении прочих условий.

За первую секунду спуска ракета опустится всего на 5 м, не каждый высотомер сможет это уверенно поймать. Мой сможет ;^))

A.M.> Плюс подумать насчет фильтрации от пиковых значений .... 300 301 300 456 298 299 ....

Можно и пофильтровать, но если ты уже усредняешь 64 измерения, то таких всплесков не будет. А в апогее их вообще не должно быть.
RU biostar_37 #26.11.2010 15:14  @Alexeev Max#26.11.2010 14:48
+
-
edit
 

biostar_37

втянувшийся

A.M.> А если на старте не запустился двигатель или произошла задержка (кнопку долго искал), БРЭО уже работает получаем сработку ССР на земле.
Наверно, лучше на мой взгляд функцию запуска двигателя возложить на БРЭО в ракете (по таймеру например, с сиреной и т.д., контроль запуска двигателя тоже возложить на БРЭО (причем с резервированием по 2-м каналам, плавкая перемычка и геркон с магнитом на подъем ракеты), и вот после перегорания например перемычки запускать все алгоритмы, но при условии, что после перемычки сработал геркон подъема ракеты, в противном случае - сброс в исходное, сирена и отключение питания.
 3.6.123.6.12
+
-
edit
 

Xan

координатор

A.M.> Плюс подумать насчет фильтрации от пиковых значений .... 300 301 300 456 298 299 ....

Я ж уже говорил: не даёшь значению выскочить за пределы соседних.
В данном случае 456 > 300 & 456 > 298 => 456 -> 300
 7.07.0
RU biostar_37 #26.11.2010 15:19  @Serge77#26.11.2010 15:12
+
-
edit
 

biostar_37

втянувшийся

Serge77> Можно и пофильтровать, но если ты уже усредняешь 64 измерения, то таких всплесков не будет. А в апогее их вообще не должно быть.

Согласен, необходимо усреднение.Serge77 на верном пути.Но насколько я помню в сети есть где-то готовые алгоритмы, найду - дам ссылку.
 3.6.123.6.12
RU Alexeev Max #26.11.2010 15:28  @biostar_37#26.11.2010 15:14
+
-
edit
 

Alexeev Max

втянувшийся

A.M.>> А если на старте не запустился двигатель или произошла задержка (кнопку долго искал), БРЭО уже работает получаем сработку ССР на земле.
biostar_37> Наверно, лучше на мой взгляд функцию запуска двигателя возложить на БРЭО в ракете (по таймеру например, с сиреной и т.д., контроль запуска двигателя тоже возложить на БРЭО (причем с резервированием по 2-м каналам, плавкая перемычка и геркон с магнитом на подъем ракеты), и вот после перегорания например перемычки запускать все алгоритмы, но при условии, что после перемычки сработал геркон подъема ракеты, в противном случае - сброс в исходное, сирена и отключение питания.

Читаем тему с 0..... все это предусмотрено (Запуск от БРЭО, контроль запала, отрыв от стола), но по моей идее все это (железо) можно не реализовать на плате.... при минимуме железа датчик высоты + запал ССР контроль апогея только вычислениями всего потока АЦП от высотомера.

Усреднение уже реализовано..... судя по данным от Serge пиков там тоже хватает
 

Serge77

модератор

Xan> Я ж уже говорил: не даёшь значению выскочить за пределы соседних.
Xan> В данном случае 456 > 300 & 456 > 298 => 456 -> 300

Т.е. тройка 300-456-298 превращается в 300-300-298. Допустим, следующее измерение 310. Для его анализа какие данные нужно использовать - уже фильтрованные или сырые? Т.е. какую тройку рассматривать - 300-298-310 или 456-298-310 ?
RU biostar_37 #26.11.2010 15:32  @biostar_37#26.11.2010 15:19
+
-
edit
 

biostar_37

втянувшийся

biostar_37> найду - дам ссылку.

Откуда взято не помню, может поможет альтиметр - схема, код и прочее)
Прикреплённые файлы:
 
 3.6.123.6.12
RU Alexeev Max #26.11.2010 16:19  @biostar_37#26.11.2010 15:32
+
-
edit
 

Alexeev Max

втянувшийся

biostar_37> Откуда взято не помню, может поможет альтиметр - схема, код и прочее)

Судя по схеме это просто записывающий высотомер.... апогея тут не надо.
 
BG -VMK- #26.11.2010 16:37  @Alexeev Max#26.11.2010 16:19
+
-
edit
 

-VMK-

опытный

1) Алгоритъм:
-VMK-> Алгоритъм за определяне на апогей: необходимо и достатъчно условие за задействане на пиропатрон - 10 последователни! данни(10sps)
(взето от тук: Комплексное БРЭО [-VMK-#24.11.10 13:50])
Serge77> А мой алгоритм такой: нужно, чтобы десять последовательных измерений были меньше, чем максимальное. Максимальное определяется динамически, сравнивая каждое измерение с текущим максимальным.
(взето от тук: Комплексное БРЭО [Serge77#26.11.10 10:34])

Извинете!

2) Алгоритъм:
A.M.> Камрад -VMK- выдал алгоритм
A.M.> Приминительно к минимому АЦП

НЕправилно, неточно "по мой алгоритъм".

Serge77> N=10
Serge77> While N>0
Serge77> Get ADC
Serge77> If ADC
Serge77> Else N=N-1

Правилен алгоритъм! N=10 при четене-запис на данни @10sps; При запис 20 или 50 данни в секунда
съответно N=20 или N=50 за 1 секунда след(после) апогей.

Serge77>>> Мой алгоритм сработает, а твой нет.
:D

Прилагам моя алгоритъм (със съкращения); показана е структурата на програмата с някои пояснения. Асемблер за Motorola MCU.

С този алгоритъм работи мое БРЕО летяло 6 пъти - 6 успешно (първи полет на 22-Септември-2009)взето от тук: Зала на славата (Hall of fame) Схемата и подробности има тук: датчик за апогей по атмосферно налягане и височина

2 A.M. Относно цялостния полетен алгоритъм:
В моя алгоритъм, на стартовата позиция, до отчитане на старт, данните се записват във FIFО буфер, с цел, съхранение на данни до отчитане на старт. По този начин графиката с дани започва от време Т минус FIFO буфер; "Т" - момента на отчитане на старт от алгоритъма на БРЕО.
Прикреплённые файлы:
 
"Luck is a great time-saver, cost-effective, and very reliable when it works." - Jimmy Yawn  3.6.123.6.12
Это сообщение редактировалось 26.11.2010 в 17:00

RocKI

опытный

Serge77> Алгоритм я описывал, могу ещё подробнее.
Serge77> начало программы
Serge77> ADC_min = 9999
Serge77> поиск апогея
Serge77> N=10
Serge77> While N>0
Serge77> Get ADC
Serge77> If ADC<ADC_min Then ADC_min=ADC , N=10
Serge77> Else N=N-1
Serge77> Wend
Serge77> Выход из While означает апогей.

В этом алгоритме настораживает то, что отлавливается любой минимум, даже выброс. Я бы не работал вообще с конкретными данными АЦП, а брал бы некоторое осредненное значение. Например берем среднее за последние же 10 циклов, затем опять среднее за 10 циклов, но со сдвигом на 1 цикл. И уже с ними анализировал минимум усредненных значений. Правда, думается, в любом случае нужен механизм отсеивания очень откровенных выбросов.
RU Alexeev Max #26.11.2010 17:21  @RocKI#26.11.2010 17:11
+
-
edit
 

Alexeev Max

втянувшийся

RocKI> В этом алгоритме настораживает то, что отлавливается любой минимум, даже выброс. Я бы не работал вообще с конкретными данными АЦП, а брал бы некоторое осредненное значение. Например берем среднее за последние же 10 циклов, затем опять среднее за 10 циклов, но со сдвигом на 1 цикл. И уже с ними анализировал минимум усредненных значений. Правда, думается, в любом случае нужен механизм отсеивания очень откровенных выбросов.

Все это уже обсуждается, усреднение уже есть... если посмотреть на графики Serge и с усреднением пиков и провалов хватает, единственное, что хорошо - расколбас начинается после точки апогея.

Однозначно надо надежно изолировать высотомер от пиропатрона ССР.
 

Serge77

модератор

RocKI> В этом алгоритме настораживает то, что отлавливается любой минимум, даже выброс.

Это не весь алгоритм, это его серединка.
Кроме этого, нужен контроль других параметров, например:

1. контроль взлёта (до взлёта нет апогея). Условие - высота выросла на 50 м.
2. контроль прохождения Маха. Простейший вариант - по таймеру. Но лучше - динамически вычислять скорость ракеты по изменению высоты и не ловить апогей при скорости выше например 100м/с.
3. Можно ещё не ловить апогей, пока скорость ракеты растёт, т.е. пока работает двигатель и могут быть шумы от вибрации. Не забыть вовремя выключить это условие, чтобы при спуске, когда скорость тоже будет расти, всё-таки выбросить парашют ;^))

Добавляйте, что ещё нужно отлавливать?

RocKI

опытный

Serge77> 1. контроль взлёта (до взлёта нет апогея). Условие - высота выросла на 50 м.
Serge77> 3. Можно ещё не ловить апогей, пока скорость ракеты растёт, т.е. пока
Эти условия пересекаются. Надо просчитать высоту набора с двигателем и по ней (с некоторым запасом) отсекать. Т.е. желательно, чтобы эту "высоту отсечки" можно было вводить перед запуском. Или аппаратно ее ловить.
RU Alexeev Max #26.11.2010 17:34  @Serge77#26.11.2010 17:24
+
-
edit
 

Alexeev Max

втянувшийся

Serge77> Кроме этого, нужен контроль других параметров, например:
Serge77> 1. контроль взлёта (до взлёта нет апогея). Условие - высота выросла на 50 м.

это реализуемо, нулевая высота у меня передается на БРЭО (в виде значения АЦП), соответственно можно передать контрольную высоту

Serge77> 2. контроль прохождения Маха. Простейший вариант - по таймеру. Но лучше - динамически вычислять скорость ракеты по изменению высоты и не ловить апогей при скорости выше например 100м/с.

Предусмотреть и подумать можно, но это уже добавка к основному алгоритму... как я уже говорил до маха надо добраться

Serge77> 3. Можно ещё не ловить апогей, пока скорость ракеты растёт, т.е. пока работает двигатель и могут быть шумы от вибрации. Не забыть вовремя выключить это условие, чтобы при спуске, когда скорость тоже будет расти, всё-таки выбросить парашют ;^))

На основе акселерометра, его может и не быть в схеме.
 
RU Alexeev Max #26.11.2010 17:36  @RocKI#26.11.2010 17:31
+
-
edit
 

Alexeev Max

втянувшийся

RocKI> Эти условия пересекаются. Надо просчитать высоту набора с двигателем и по ней (с некоторым запасом) отсекать. Т.е. желательно, чтобы эту "высоту отсечки" можно было вводить перед запуском. Или аппаратно ее ловить.

Если требуется перед запуском задать какие либо высоты то нет проблем, в прошивке это уже реализовано (на данном этапе задается нулевая высота).

А если отказ двигателя или нерасчетная работа, апогей будет.... а система его отсечет.
 

Serge77

модератор

Serge77>> 1. контроль взлёта (до взлёта нет апогея). Условие - высота выросла на 50 м.
Serge77>> 3. Можно ещё не ловить апогей, пока скорость ракеты растёт, т.е. пока
RocKI> Эти условия пересекаются.

Не пересекаются. Пока ракета стоит, скорость не растёт.

RocKI> Надо просчитать высоту набора с двигателем и по ней (с некоторым запасом) отсекать.

Плохо. А вдруг двигатель дал только треть импульса? А вдруг ты забыл изменить высоту отсечки после последнего полёта, переставив высотомер на другую ракету?
UA Serge77 #26.11.2010 17:39  @Alexeev Max#26.11.2010 17:34
+
-
edit
 

Serge77

модератор

Serge77>> 3. Можно ещё не ловить апогей, пока скорость ракеты растёт, т.е. пока работает двигатель и могут быть шумы от вибрации. Не забыть вовремя выключить это условие, чтобы при спуске, когда скорость тоже будет расти, всё-таки выбросить парашют ;^))
A.M.> На основе акселерометра, его может и не быть в схеме.

Ускорение можно и по высотомеру считать. Скорость же мы считать уже договорились. Попробуй по моим данным.

Xan

координатор

Serge77> Т.е. тройка 300-456-298 превращается в 300-300-298. Допустим, следующее измерение 310. Для его анализа какие данные нужно использовать - уже фильтрованные или сырые? Т.е. какую тройку рассматривать - 300-298-310 или 456-298-310 ?

Хмм!!! :)

Я использовал сырые. Это именно защита от редких ошибок, когда рядом попавшиеся ошибки не будут "помогать" друг другу.

В общем случае надо по множеству сырых данных рисовать некий коридор для кривой, а потом выпавшие за пределы выкидывать.
 7.07.0
RU Alexeev Max #26.11.2010 17:40  @Serge77#26.11.2010 17:37
+
-
edit
 

Alexeev Max

втянувшийся

Serge77> Плохо. А вдруг двигатель дал только треть импульса? А вдруг ты забыл изменить высоту отсечки после последнего полёта, переставив высотомер на другую ракету?

Забыть можно... но это все будет отображаться визуально в программе управления. Это реализовано.
 
+
-
edit
 

Alexeev Max

втянувшийся

Xan> В общем случае надо по множеству сырых данных рисовать некий коридор для кривой, а потом выпавшие за пределы выкидывать.

В том то и дело, что данные валятся непрерывно. Возможности пробежать "на лету" по всему массиву и что то посчитать, преобразовать нет (память на i2c шине + 8мегагерц). Максимум, что возможно - это держать в ОЗУ последние несколько значений.

Хорошенько отфильтровать и сгладить можно на Земле.... задача надежно найти апогей, возможно с небольшой фильтрацией на основе нескольких соседних значений.
 
Это сообщение редактировалось 26.11.2010 в 17:52
+
-
edit
 

Xan

координатор

A.M.> В том то и дело, что данные валятся непрерывно.

Это понятно.
Я разработками микроконтроллерными на жизнь зарабатываю.

A.M.> Возможности пробежать "на лету" по всему массиву и что то посчитать, преобразовать нет

Я делал.

A.M.> Максимум, что возможно - это держать в ОЗУ последние несколько значений.

Сколько там озу?
 7.07.0
RU SashaPro #27.11.2010 00:02  @Alexeev Max#26.11.2010 17:45
+
-
edit
 

SashaPro

аксакал

A.M.> В том то и дело, что данные валятся непрерывно. Возможности пробежать "на лету" по всему массиву и что то посчитать, преобразовать нет (память на i2c шине + 8мегагерц). Максимум, что возможно - это держать в ОЗУ последние несколько значений.

Очень заинтересовало это. Всё пытался понять, но не смог, как так 8МГц и не хватает мощности для суммирования целочисленных значений? А памяти ОЗУ, всего 10Байт на несколько 8 битных значений? Я очень сильно и довольно серьёзно увлекался программированием и оптимизацией программных кодов и потому не могу этого понять, что так загружает проц в твоей программе помимо этого, вроде бы основного, алгоритма поиска апогея?
1 8 9 10 11 12 29

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru