"007 micro" регистратор данных

 
1 2 3 4 5 6
BG Реконструктор #18.06.2004 12:14
+
-
edit
 
Yuran, 17.06.2004 16:35:52 :
4) Цифровая филтрация (находжение среднего за N-выборок)
 


Вообще-то, лучше делать и елиминацию явных шумов.
 

Yuran

опытный

Resurrector, 18.06.2004 11:14:49 :
Вообще-то, лучше делать и елиминацию явных шумов.
 


Что это за зверь, и насколько лучше?
B)
Для этого дела вполне сгодиться и простое решение!
Хотя повторюсь, у меня схема вообще в стационаре не шумит, но на всякий пожарный поставил филтрацию по 16 выборкам.
 

Lioxa

втянувшийся
Датчик кондёрами обвесил.

Померял давление на столе. Видно что каждые 32 измерения шкала падает на с реальных 678 на 673 и ещё присудствует какойто шум на 676-5.

Мне кажется что ето шум от ADC как вам кажется ??
Прикреплённые файлы:
 
 

Yuran

опытный

А ты делай фильтрацию цифровую на 64 выборки, думаю должно нормально работать, хотя шум очень странный, может АЦП глючит .... не знаю...
хорошобы осцилографом посмотреть выход сенсора и выход ОУ
 
BG Реконструктор #18.06.2004 14:02
+
-
edit
 
Yuran, 18.06.2004 10:43:22 :
Resurrector, 18.06.2004 11:14:49 :
Вообще-то, лучше делать и елиминацию явных шумов.
 


Что это за зверь, и насколько лучше?
B)
Для этого дела вполне сгодиться и простое решение!
Хотя повторюсь, у меня схема вообще в стационаре не шумит, но на всякий пожарный поставил филтрацию по 16 выборкам.
 


Явный шум - это когда есть слишком большие отклонения от средних стойностей. Если в C разбираетесь, могу написать примерный Noise Canceler.
 

Yuran

опытный

Реконструктор, 18.06.2004 13:02:22 :
Если в C разбираетесь, могу написать примерный Noise Canceler.
 


разбираемся конечно, пиши!
посмотрим. B)
 
BG Реконструктор #18.06.2004 16:03
+
-
edit
 
В основе, кончено, стоит класичесский oversampling & averaging.

code text
  1. #define BYTE unsigned char
  2. #define ULONG unsigned long
  3. #define DELTA 25
  4.  
  5. BYTE Average(BYTE* pSamples, BYTE SamplesCount)
  6. {
  7.         ULONG nSum = 0;
  8.  
  9.         for(BYTE i=0; i<SamplesCount; i++)
  10.         {
  11.                 nSum += pSamples[i];
  12.         }
  13.  
  14.         return (BYTE)(nSum / SamplesCount);
  15. }
  16.  
  17. BYTE NoiseCancel(BYTE* pSamples, BYTE SamplesCount)
  18. {
  19.         // сперва находим среднюю стойность
  20.         BYTE bAvr = Average(pSamples, SamplesCount);
  21.  
  22.         for(BYTE i=0; i<SamplesCount; i++)
  23.         {
  24.                 if (abs(pSamples[i] - bAvr) >= DELTA);
  25.                 {
  26.                         // если семпл слишком отличается от средней стойности,
  27.                         // то подлежит исключению
  28.                         pSamples[i] = 0;
  29.                 }
  30.         }
  31.  
  32.         // возврат средней стойности, но уже без явных шумов
  33.         return Average(pSamples, SamplesCount);
  34. }
 

Yuran

опытный

Только вот ОЗУ бывает недостаточно иногда, чтобы буферизировать нормально, %))

Да и клоков такая шняго сожрёт не мало...
Но как и везде свои плюсы свои минусы
 
BG Реконструктор #18.06.2004 16:50
+
-
edit
 
Не бывает худа без добра. Да и буффер из 32 байт - вполне достаточен.
Если поднатужится, можно придумать какую-нибудь евристику для избежания первоначального вычисления средней стойности, но тогда кривая ф-ии не будет так хорошо "изглажена". ;)
 

Yuran

опытный

Вчера наконецто нашлось время додебажить прошивку.
Уменьшил время дискретизации до 2 мс, тоесть 500 отсчётов в секунду, сделал проверку на работоспособность модулей и визуальное отражение (количество миганий светодиодом) сотояния устройства. Получил первый график, с сенсора которого мучал "дуя в трубочку" :P .
После нескольких тестов решил сегодня, доделать следующее в первой странице флеша сохранять данные от том когда начался полёт, чтобы сразу адресно читать флеш, не ища по всем 2 Мб, теперь время записи телеметрии сократилось до 36 минут. Думаю это будет релизная версия с которой будет происходить тестовый полёт. B)

Ещё сегодня хотел потрясти хорошенько рукой чтобы посмотреть реакцию на перегрузки %)))
 

Yuran

опытный

Вчера ночью сделал "Релиз кандидат" прошивки. Тоесть данная прошивка признана пригодно для полёта и именно на ней будет отрабатываться вся эта система. Инеционность у сенсора фактически отсутсвует, тоесть за 0.5 с изменяет наряжение на 780 метров за 0.5 с это примерно, 1500 м/c тоесть около 4 Махов %)))
Маскимально допустимая измеряемая при норм давлении высота 1014 м.
Конечно я ещё очень плохо представляю как скажется давление потока при полёте ракеты на работу сенсора, буду делать как писал Сергей несколько небольших отверстий под головной частью ракеты чтобы воздух легко подходил к сенсору.
Вот тогда и посмотрим чем теория от практики отличается ;) и пригодность всего девайса для открытия парашюта фотографирования итп.
Так в тепличных условиях всё работает прекрасно но ракета это уже серьёзное для него испытание. Всё с сегодняшнего дня начинаю работы по монтированию БРЭО в "МИР" и завершению его конструкции.
B)
 
RU termostat #23.06.2004 13:21
+
-
edit
 

termostat

аксакал

Yuran, 21.06.2004 15:56:59 :
Вчера наконецто нашлось время додебажить прошивку.
Уменьшил время дискретизации до 2 мс
 


А какие данные-параметры у тебя логятся?

Желательно всеже сохранять не обработанные данные, а уже на земле обрабатывать данные различными алгоритмами.

Yuran

опытный

termostat, 23.06.2004 12:21:58 :
Yuran, 21.06.2004 15:56:59 :
Вчера наконецто нашлось время додебажить прошивку.
Уменьшил время дискретизации до 2 мс
 


А какие данные-параметры у тебя логятся?

Желательно всеже сохранять не обработанные данные, а уже на земле обрабатывать данные различными алгоритмами.
 


У меня каждые 2 мс записывается отсчёт с АЦП два байта (сырые), после полёта (заполнение флеша полностью или нажатие кнопки) происходит сохранение в первой странице следующих байт
Гард байты (ничего не значящие 8 нулей и FF),
затем адрес страницы флеша в момент времени когда "задетекчен" взлёт (разница между начальной и текущей высотой 10м),
Затем начальная высота, затем максимальная высота.

Алгоритм работы такой, зачитка первых 64 байт, из которых я узнаю адрес "начала полёта", далее зачитка бинарных данных непосредственно о полёте зная примерное время и начальный адрес полёта.
Потом конвертация сграбленых двухбайтных отсчётов в строковый файл и загонка в excel %)))
пока это работает так.
Сейчас сижу и думаю сколько и какого диаметра наделать отверстий в обтекателе для подвода воздуха к сенсору <_<
 

Lioxa

втянувшийся
Можно нескромную прозьбу ? Если писал на ASM тогда может поделишся кодом. Непойми меня неправильно свой девайс у меня уже заботает, просто хотелось бы испавить (оптимизировать) свой код для лучшей работы.
 
RU termostat #23.06.2004 15:09
+
-
edit
 

termostat

аксакал

Yuran, 23.06.2004 13:16:57 :
У меня каждые 2 мс записывается отсчёт с АЦП два байта (сырые)


Сейчас сижу и думаю сколько и какого диаметра наделать отверстий в обтекателе для подвода воздуха к сенсору
 


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


Отверстия нужно распологать сбоку ракеты на расстоянии по моему более 5ти диаметров от мыса обтекателя.

посмотри устройство трубки Пито - pitot на HowStuffworks.com

Yuran

опытный

termostat, 23.06.2004 14:09:09 :
я думаю хорошо бы и напряжение питания логить переодически.
 


Этого не нужно, так как напряжение птиания неизменно :rolleyes:
Проверено ;)
Главное это свежая крона (в полёт полетит Duracell) B)
 

Lioxa

втянувшийся
А я научил свою софтину стрелять парашут при уменьшении давления ! Целых два раза ;) Катался в лифте РАБОТАЕТ !!!
 

Yuran

опытный

Lioxa, 23.06.2004 15:02:13 :
А я научил свою софтину стрелять парашут при уменьшении давления ! Целых два раза ;) Катался в лифте РАБОТАЕТ !!!
 


Классно! Синхронно идём!
Алгоритм какой?
Я вот жду не дождусь запуска своего хозяства, чтобы посмотреть как будет вести себя устройство на больших скоростях :D

 

Lioxa

втянувшийся
Ну идея такая, немного кривая :D в рифму получилось .

Я попробовал, словами этого необьяснить :blink: если дам кусок кода тоже будет непонятно что куда идёт . Так что могу кинуть весь проект VMLAB ну и немного обьяснить....... потом.
 

Yuran

опытный

Lioxa, 23.06.2004 15:30:37 :
Ну идея такая, немного кривая :D в рифму получилось .

Я попробовал, словами этого необьяснить :blink: если дам кусок кода тоже будет непонятно что куда идёт . Так что могу кинуть весь проект VMLAB ну и немного обьяснить....... потом.
 


Алгоритм то на пальцах рассказать можно %)
;)
 
RU termostat #24.06.2004 11:50
+
-
edit
 

Lioxa

втянувшийся
епинайте только ногами , код ещё нечищенный !
В файле описания эта строчка управляет записью в память или считыванием из неё.
R4 VDD PD5 5
Прикреплённые файлы:
 
 

Lioxa

втянувшийся
Yuran можешь выложить код для определения взлёта ракеты ?
 

Yuran

опытный

Lioxa, 24.06.2004 17:56:28 :
Yuran можешь выложить код для определения взлёта ракеты ?
 


Конечно могу. Сам код или алгоритм интересен?


 

Lioxa

втянувшийся
Конечно алгоритм. Но и код непомешает :D
 
1 2 3 4 5 6

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