Алгоритм простого осцилографа
04.08.2017, 16:25
|
|
|
Прописка
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Алгоритм простого осцилографа
Здравствуйте народ. Тема такая. Нужно отобразить на дисплее две синусоиды, точнее их фазировку по отношению друг к другу. Их частота и амплитуда постоянные 400Гц и около одного вольта, меняется только фаза, причем ее численное значение в виде градусов вычислять не нужно.
То есть мне видится простой двух-канальный осцилограф, с постоянными настройками. Тема для меня новая, в связи с этим пара вопросов к профессионалам форума. Плата будет использоватся STM32F769Disco, просто потому что есть в наличии. Правильно ли я вообще понимаю сам алгоритм? Жду когда DMA заполнит два массива скажем из 1000 измерений каждый, далее в цикле нахожу в одном из них индекс элемента, значение которого превышает какой то уровень и начиная с этого идекса оставшиеся элементы с обох массивов вывожу на дисплей. Или всеже необходимо собирать триггер (компаратор) на входе? Прикручивать библиотеку emWin или можно обойтить BSP функциями? "Идиотские" вопросы задаются из соображения попытки сэкономить время и сделать как можно проще. Неплохо было бы нарыть в интернете какой нибудь простой проект и взять его за основу, но под Keil ничего путного не нашла. Буду рада выслушать Ваше мнение . Спасибо
|
|
|
|
04.08.2017, 18:02
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,284
Сказал спасибо: 441
Сказали Спасибо 1,040 раз(а) в 701 сообщении(ях)
|
Re: Алгоритм простого осцилографа
Если у Вас индикатор 320*240 точек то 1000 отсчетов даже много.
Для синхронизации можно использовать Ваш алгоритм, но ИМХО отображение нужно начинать за 10-20 отсчетов _ДО_ события синхронизации. Желательно при выводе учесть, что т.к. АЦП один, переключение каналов даст дополнительную погрешность в измерении фазы. Если точность фазы сигналов критична, нужно брать максимальную частоту дискретизации которую может дать АЦП. В идеале - использовать внешний двухканальный АЦП.
Тут простой проект на STM32F042: http://tomeko.net/miniscope_v2e/index.php?lang=en
__________________
misterdi<@>i.ua
Последний раз редактировалось MisterDi; 04.08.2017 в 18:07.
|
|
|
|
Сказали "Спасибо" MisterDi
|
|
|
04.08.2017, 18:23
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: Алгоритм простого осцилографа
Там индикатор, извините, 800*480 точек 
АЦП-шка там не одна физически, да и они очень даже скоростные.
emWin прикручивать - только если какие красивости рисовать, кнопочки-окошечки няшненькие.
Я так понял, что точное значение фазы высчитывать не нужно, надо только показать смещение одного сигнала относительно другого, графически?
Последний раз редактировалось NewWriter; 04.08.2017 в 18:25.
|
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
04.08.2017, 20:28
|
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,272
Сказал спасибо: 11,856
Сказали Спасибо 4,157 раз(а) в 3,175 сообщении(ях)
|
Re: Алгоритм простого осцилографа
Jane9226, а взять некоторый DSO таки не быстрее будет?
А так там (проекты открытые) можно и на алгоритмы обработки посмотреть в исходниках. Они от среды разработки не сильно зависят (C - он и в Африке (Keil) таки C).
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
04.08.2017, 21:17
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,800
Сказал спасибо: 133
Сказали Спасибо 1,152 раз(а) в 549 сообщении(ях)
|
Re: Алгоритм простого осцилографа
В твоем случае проще работать с буфером.
1) Оцифровка серии
2) Поиск триггер - условия
3) Если условия нет - идем на 1
4) Выводим кусок графика на экран
Обрати внимание, при проверке обрати внимание на то, что-бы не сработал триггер в самом конце серии.
Твой способ простой, но есть достаточно высокие шансы пропустить редкое событие. А синус отобразить - самое то.
|
|
|
|
04.08.2017, 21:48
|
|
|
Прописка
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Алгоритм простого осцилографа
Человеческое Вам спасибо, буду разбираться после выходных
Сообщение от NewWriter
|
|
Я так понял, что точное значение фазы высчитывать не нужно, надо только показать смещение одного сигнала относительно другого, графически?
|
Совершенно верно, это по сути будущий индикатор положения LVDT
|
Цитата:
|
|
Jane9226, а взять некоторый DSO таки не быстрее будет?
|
конечно быстрее, и рыбу в магазине быстрее купить, вместо того чтоб на рыбалку ехать  Интересен сам процесс и понимания самой сути.
|
Цитата:
|
|
emWin прикручивать - только если какие красивости рисовать, кнопочки-окошечки няшненькие.
|
То есть если я правильно поняла то:
1) можно обойтись функцией BSP_LCD_DrawPixel в цикле отрисовывая сигнал, без всяких лишних библиотек.
2) нужно использовать два разных ADC. (их там три)
3) Программный триггер имеет право на жизнь.
|
|
|
|
04.08.2017, 23:03
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: Алгоритм простого осцилографа
Надо еще учесть вот что. Реальный сигнал будет всяко иметь неидеальную синусоиду с некоторым количеством шума. Так вот, определяя программный триггер, надо его малость как-то усреднить или отфильтровать, чтобы не было дрожания по горизонтали отрисовываемой синусоиды
|
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
05.08.2017, 21:22
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Алгоритм простого осцилографа
Сообщение от Jane9226
|
|
Здравствуйте народ. Тема такая. Нужно отобразить на дисплее две синусоиды, точнее их фазировку по отношению друг к другу. Их частота и амплитуда постоянные 400Гц и около одного вольта, меняется только фаза, причем ее численное значение в виде градусов вычислять не нужно.
|
При такой постановке задачи я бы взял картинку синусоиды, и дважды выводил бы ее: вверху всегда в одном положении, внизу - со смещением, соответствующим фазовому сдвигу, который вычислял бы, сравнивая текущие значения с двух каналов АЦП или как-то еще по-простому.
Зачем делать полноценное осциллоскопирование, когда сигнал заранее известен и неизменен?
|
|
|
|
Сказали "Спасибо" AR_Favorit
|
|
|
06.08.2017, 06:45
|
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,272
Сказал спасибо: 11,856
Сказали Спасибо 4,157 раз(а) в 3,175 сообщении(ях)
|
Re: Алгоритм простого осцилографа
Jane9226, там таки что-то про LVDT вроде изначально было?
Если так - то лучше делать измеритель на 3 входа, поскольку реальная форма сигнала на средней катушке сильно поможет работать с сигналом на двух других.
А уже вывод результата на экран - сначала как получится/проще/привычнее/известно, а потом уже можно найти/написать/адаптировать подходящую библиотеку.
А отрисовку лучше делать таки сразу всех, а не по одной. Так выше шанс красивую картинку получить.
Триггеры использовать только для отметок на картинке.
С буфером данных - таки иметь его в 2-3 раза длинне, чем выборка с ADC.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
Последний раз редактировалось mike-y-k; 06.08.2017 в 06:48.
|
|
|
|
08.08.2017, 10:31
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 05.05.2008
Сообщений: 708
Сказал спасибо: 302
Сказали Спасибо 408 раз(а) в 263 сообщении(ях)
|
Re: Алгоритм простого осцилографа
Сообщение от Jane9226
|
|
Нужно отобразить на дисплее две синусоиды, точнее их фазировку по отношению друг к другу. Их частота и амплитуда постоянные 400Гц и около одного вольта, меняется только фаза, причем ее численное значение в виде градусов вычислять не нужно.
|
Все что Вам нужно для этого - фигуры Лиссажу...
А дальше Ваша фантазия как программиста....
Обработка без "осциллографирования"
На втором рисунке показано работа сразу на двух частотах....
На третьем рисунке - "чистые" Лиссажу.... Сдвиг от центра оси есть результат работы третьей катушки....
Можно пробовать и трехмерное отображение...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:30.
|
|