Comparator последовательных данных

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Брат
Рядовой
Сообщения: 74
Зарегистрирован: 03.01.2016{, 13:11}
Репутация: 1
Откуда: г.Курганинск, Краснодарский край
Имя: Александр

Comparator последовательных данных

#1

Сообщение Брат » 16.01.2016{, 14:44}

Здравствуйте товарищи! Мне достаточно много лет, увлекся постройкой ракет, причем пневмогидравлических!Есть необходимость в высотомере, причем простом, который может собрать каждый.
Спецы-программисты игриво брались за задачу, но быстро сдулись! Я не
программист, но имею отношение к радиотехнике. Используя уроки, за 3 дня на
 FLP собрал программу для высотомера, причем  работает! Уперся в одну проблему, необходимо
определить апогей, то есть нужна схема типа Comparator, только необходимо сравнивать сигнал не с двух входов, а последовательные данные датчика BMP180, дабы определить точку перегиба. Возможно,ли подобное реализовать в FLP! Спасибо!
Последний раз редактировалось Брат 16.01.2016{, 18:15}, всего редактировалось 1 раз.

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

Comparator последовательных данных

#2

Сообщение Олег » 16.01.2016{, 15:10}

Я думаю сделать можно так - значение записывать в ЕЕПРОМ например раз в секунду и текущее значение сравнивать со значением из ЕЕПРОМ (оно будет предыдущим). Количество циклов записи чтения в ЕЕПРОМ гарантируется до 100000, но я думаю, что ракеты у вас не круглосуточно летают, так что это несущественно.

DWD
Лейтенант
Сообщения: 353
Зарегистрирован: 18.10.2015{, 13:51}
Репутация: 5
Откуда: Кривой Рог

Comparator последовательных данных

#3

Сообщение DWD » 16.01.2016{, 15:19}

А зачем ЕЕПРОМ напрягать? Хватит обычной памяти ОЗУ. К тому же и быстрее будет.
Изображение

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

Comparator последовательных данных

#4

Сообщение Олег » 16.01.2016{, 15:43}

И то правда, что-то торможу.

Брат
Рядовой
Сообщения: 74
Зарегистрирован: 03.01.2016{, 13:11}
Репутация: 1
Откуда: г.Курганинск, Краснодарский край
Имя: Александр

Comparator последовательных данных

#5

Сообщение Брат » 16.01.2016{, 19:20}

Спасибо за подсказки, меня радует, что Вы правильно поняли обозначенную мной задачу! Меня поразили возможности FLP, но вот некоторые пояснения ввели в суппорт! Оказывается pin9, это не 9 вывод Аурдуино, а адрес D9,  или «сравнение двух аналоговых сигналов», при этом по факту цифровых. Очень скудно описано функциональное назначение элементов, или совсем не понятно. Да для обращения к EEPROM есть инструмент, а как обратиться к ОЗУ? Не нашел я и регистров сдвига, возможно ответ в «Строках» или «Массивах».
Возможно, все уляжется, за 3 дня не въедешь,  но если можно, подскажите ближе к телу! :)
Последний раз редактировалось Брат 16.01.2016{, 19:24}, всего редактировалось 1 раз.

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

Comparator последовательных данных

#6

Сообщение Олег » 16.01.2016{, 22:11}

Насчет ОЗУ. В переменной можно поставить вход разрешения записи, а чтение из переменной происходит все время. Может вам подойдет такой вариант, не супер точный, но простой.
На первый вход компаратора подается сигнал c датчика, на второй сигнал с датчика, но уже через переменную.
В переменной есть вход разрешения записи и сигнал на него идет с симметричного мультивибратора.
Получается что в тот период когда уровень высокий, то показания одинаковые, если низкий, то на это время в переменной хранится старое значение. Так-как в компараторе стоит сравнение на меньше, то когда ракета начнет спускаться компаратор сработает.
Период в мультивибраторе сейчас стоит 500 мс, чтобы проверить работу поднимая датчик руками, а для точности можно уменьшать на сколько необходимо.
Слов написал много, на самом деле все просто, проект в приложении.
Вложения
Raketa.flp
(49.88 КБ) 45 скачиваний
Последний раз редактировалось Олег 16.01.2016{, 22:36}, всего редактировалось 1 раз.

Брат
Рядовой
Сообщения: 74
Зарегистрирован: 03.01.2016{, 13:11}
Репутация: 1
Откуда: г.Курганинск, Краснодарский край
Имя: Александр

Comparator последовательных данных

#7

Сообщение Брат » 25.05.2016{, 17:59}

---------------------------------------------
Олег писал(а):В переменной есть вход разрешения записи и сигнал на него идет с симметричного мультивибратора.
Построил свой высотомер, проблему решил подав на разрешающий вход переменной сигнал с ТТ
триггера, реализовал сложные алгоритмы выброса парашютов, но есть проблемы,
причем они касаются всех.  Давно заметил, что подав на вход переменной  Integen, на выходе получаем несколько иное значение, то есть примерно то, но далеко не всегда это же число. По этой причине отказался проект делить на платы, ведь соединения между плат при помощи неадекватных переменных! Проект большой, спасли именованные соединения. Кстати, подобный эффект заметил еще один участник форума, но его сообщение не нашел. Может, я чего-то недопонимаю, но проблема более чем серьезная. Безусловно, при необходимости представлю доказательство, а может об этом знают все?
Последний раз редактировалось Брат 25.05.2016{, 18:08}, всего редактировалось 1 раз.

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

Comparator последовательных данных

#8

Сообщение Олег » 25.05.2016{, 18:18}

Брат писал(а):Давно заметил, что подав на вход переменной  Integen, на выходе получаем несколько иное значение, то есть примерно то, но далеко не всегда это же число
Не совсем понял, как это? У меня есть проекты по 20 плат, одна и та-же переменная может использоваться не однократно в любом месте, но ничего такого не замечал. Может пока вы сравниаваете значение переменной оно успевает поменяться?
Последний раз редактировалось Олег 25.05.2016{, 18:18}, всего редактировалось 1 раз.

Брат
Рядовой
Сообщения: 74
Зарегистрирован: 03.01.2016{, 13:11}
Репутация: 1
Откуда: г.Курганинск, Краснодарский край
Имя: Александр

Comparator последовательных данных

#9

Сообщение Брат » 25.05.2016{, 18:25}

Олег писал(а):Не совсем понял, как это?
Может быть,торопиться не будем, немного погодя предоставлю конкретную информацию, внучка
пришла!
Последний раз редактировалось Брат 25.05.2016{, 18:26}, всего редактировалось 1 раз.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Comparator последовательных данных

#10

Сообщение Rovki » 25.05.2016{, 18:34}

Я делал для таких целей макросы на ПР - они ищут экстремум сигнала на входе и запоминают его.Находил два экстремума -мин. и макс.
Для вещественных и целочисленных данных ...
Вложения
1957684.jpg
2720132.jpg
6213937.jpg
Последний раз редактировалось Rovki 25.05.2016{, 18:52}, всего редактировалось 1 раз.
Электронщик до мозга костей и не только

Брат
Рядовой
Сообщения: 74
Зарегистрирован: 03.01.2016{, 13:11}
Репутация: 1
Откуда: г.Курганинск, Краснодарский край
Имя: Александр

Comparator последовательных данных

#11

Сообщение Брат » 25.05.2016{, 18:42}

Брат писал(а):немного погодя предоставлю конкретную информацию
Вот такая схемка. Данные ВМР180 прогоняем через переменную, опрос датчика в каждом цикле,
записываем на SD как Comment. Также записываем на SD прямые показания датчика. Должны быть данные одинаковыми?
Вложения
5122868.jpg
Последний раз редактировалось Брат 25.05.2016{, 18:43}, всего редактировалось 1 раз.

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

Comparator последовательных данных

#12

Сообщение Олег » 25.05.2016{, 19:48}

При большой скорости изменения показаний датчика только разработчик скажет какой алгоритм будет при обработке данной схемы. Вполне может быть, что сначала берется значение из переменной 1, записанное в прошлом цикле и пишется на SD карту, а только потом присваивается новое значение. А вот показания датчика уже берутся из этого цикла.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Comparator последовательных данных

#13

Сообщение Rovki » 25.05.2016{, 19:58}

В моей схеме определяется изменении числа ,при каждом изменении анализируется предыдущее значение и новое ,если был подьем функции то на подьеме значение не обновляется ,как только функция идет на убывание происходит изменение значения на выходе -находим максимум ,аналогично находим минимум ...
Электронщик до мозга костей и не только

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 789
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Comparator последовательных данных

#14

Сообщение support » 25.05.2016{, 21:07}

А зачем генератор. Вот по этой схеме наверное проще будет.


В переменной Максимум будет максимальное значение. Ну а потом уже используете эту переменную как надо.
Для сброса используется такая схема

Вложения
1799338.png
0954036.png
Автор программы FLProg.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Comparator последовательных данных

#15

Сообщение Rovki » 25.05.2016{, 21:38}

support писал(а):Вот по этой схеме наверное проще будет.
Для одного экстремума пойдет
Электронщик до мозга костей и не только

Брат
Рядовой
Сообщения: 74
Зарегистрирован: 03.01.2016{, 13:11}
Репутация: 1
Откуда: г.Курганинск, Краснодарский край
Имя: Александр

Comparator последовательных данных

#16

Сообщение Брат » 25.05.2016{, 22:12}

Rovki писал(а):Для одного экстремума пойдет
Да одинэкстремум и нужен, но с оговоркой, что отметка должна быть немного дальше
апогея, ведь датчик сильно шумит, да и возможны небольшие паразитные скачки давления,
что может приводить к ложным срабатываниям!Но главный вопрос,что происходит с соединением по переменной? Сейчас загнал схему и получил для
наглядности  результат в виде графика Excel.  Как видим на выходе (красным) и входе (синим)данные отличаются, причем существенно! Хорошо, допустим причина в датчике.
Вложения
6141096.jpg

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Comparator последовательных данных

#17

Сообщение Rovki » 25.05.2016{, 22:19}

Брат писал(а):ведь датчик сильно шумит,
Нужно сначала отфильтровать сигнал от помех ,например фильтром по методу скользящего окна ..
Электронщик до мозга костей и не только

Брат
Рядовой
Сообщения: 74
Зарегистрирован: 03.01.2016{, 13:11}
Репутация: 1
Откуда: г.Курганинск, Краснодарский край
Имя: Александр

Comparator последовательных данных

#18

Сообщение Брат » 25.05.2016{, 22:47}

А я пришел вот к этой схеме, почему в ней все работает идеально! Изменяя размер массива могу
смещать данные на любое количество циклов, то есть не только находить апогей,
но и задавать любое значение чувствительности!  Да, но данные с того же датчика, а результат
один в один! Получается, что дело не в датчике и соединение через переменную не
равнозначно перемычке! На мой взгляд есть повод задуматься!

Добавлено (25.05.2016, 22:47)
---------------------------------------------
Rovki писал(а):Нужно сначала отфильтровать сигнал от помех ,например фильтром по методу скользящего окна ..
Безусловно! Я использую датчик в режиме ULTRA_LOW_POWER, то есть без внутреннего усреднения, затем
фильтрую при помощи аналогового фильтра, который есть  на нашем форуме (пользовательский блок)!  Интересно, если использовать режим внутреннего усреднения датчика, то падает количество циклов опроса, а если использовать внешний фильтр, то при одном результате сглаживания количество циклов не уменьшается!
Вложения
6358846.jpg
Последний раз редактировалось Брат 25.05.2016{, 22:50}, всего редактировалось 1 раз.

Брат
Рядовой
Сообщения: 74
Зарегистрирован: 03.01.2016{, 13:11}
Репутация: 1
Откуда: г.Курганинск, Краснодарский край
Имя: Александр

Comparator последовательных данных

#19

Сообщение Брат » 26.05.2016{, 11:59}

Сегодня еще раз проверил нюансы в работе переменной, но числа загонял с генератора, дабы исключить непонятки! Если через переменную прогонять одинаковые числа или Byte, то все нормально. А если случайные числа, то полная неадекватность!  То есть, использовать переменную в качестве межплатных соединений нужно очень осторожно! На мой взгляд, необходимо и соединения между платами выполнять по принципу именных !
Вложения
0596193.csv
(30.09 КБ) 45 скачиваний
8537126.csv
(24.97 КБ) 48 скачиваний
9686878.jpg
Последний раз редактировалось Брат 26.05.2016{, 12:01}, всего редактировалось 1 раз.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Comparator последовательных данных

#20

Сообщение rw6cm » 26.05.2016{, 12:50}

Брат писал(а):опрос датчика в каждом цикле,
Так и делайте замеры в одном цикле для всех.

СпойлерПоказать
Вложения
6630938.png
Win10-64, FLProg (portable)

Ответить

Вернуться в «Спросить у знатоков»