График гармоник по децибелам

Страницы: 1 2 3 4 5 След.
RSS
График гармоник по децибелам
 

Добрый день!

Прошу подсказать новичку, как в рассчитать и вывести график гармоник сигнала на выходе из схемы каскада усилителя, на входе которого синусовый сигнал 10КГц.

Не получается вывести его в нужном виде, а именно - нужен график преобразования Фурье выходного сигнала, в котором по оси абсцисс - частота в логарифмическом масштабе, а по оси ординат - уровень гармоник в дБ по отношению к сигналу 1-й гармоники. Также нужно посчитать коэффициенты гармоник в дБ и общий THD.

Пытался использовать анализ периодических режимов, график гармоник вывожу, но только в вольтах, при использовании функции Db(f(x)) рисуется странный график, где основная гармоника чуть-ли не самая маленькая, а 2-я - самая большая.

Есть опыт работы в OrCAD, там та-же функция Db() работает ожидаемо.

Кроме того, задал на схеме блок SPICE с директивой .FOUR, но не нашёл куда выводятся результаты - ожидал что будет что-то типа как в OrCADе (текстовый вывод значений), но пока не нашёл.

Прошу помочь разобраться.

 

Добрый день!

1.
" Не получается вывести его в нужном виде, а именно - нужен график преобразования Фурье выходного сигнала, в котором по оси абсцисс - частота в логарифмическом масштабе, а по оси ординат - уровень гармоник в дБ по отношению к сигналу 1-й гармоники. Также нужно посчитать коэффициенты гармоник в дБ и общий THD. "

Да, в текущей версии программы в таком виде вывести график не получится. Получится вывести только абсолютный уровень гармоник ( без отношения к первой) в линейном или логарифмическом масштабе по оси Y. Этот функционал у нас с OrCad-ом одинаковый.
Порядок действий:
1. строите нужный график во временной развертке.
2. Вызываете окно Преобразования Фурье с помощью кнопки БПФ на панели или меню "График->БПФ".
3. Выбираете нужный график для преобразования, указываете либо временной интервал, на котором его надо взять, фундаментальную частоту и количество периодов с конца временного интервала графика.
4. Выбираете что выводить на график Преобразования Фурье: амплитудный спектр, фазовый, мнимый или вещественный.
5. Указываете куда выводить (окно, поле) и нажимаете кнопку "ОК". и программа выведет на экран график коэффициентов Фурье

Для переключения типа шкалы ординат используйте кнопку на панели или меню "График->Режим->Логарифмировать ось Y".

Количество частот отображаемых по оси ординат по умолчанию равно 10 и устанавливается в разделе "Настройки" окна "БПФ" . По-умолчанию это значение равно 10.

2.

"Пытался использовать анализ периодических режимов, график гармоник вывожу, но только в вольтах, при использовании функции Db(f(x)) рисуется странный график, где основная гармоника чуть-ли не самая маленькая, а 2-я - самая большая. "

Здесь нужны пояснения с Вашей стороны.
От чего брались децибелы? К какой функции f(x) применялась функция Db(f(x))?
Сама по себе функция Db(f(x)) у нас давно используется и работает она правильно.

Графики коэффициентов преобразования Фурье на тестовых примерах при различных шкалах (линейной и логарифмической Y) у нас и OrCad совпадают

3.

"Кроме того, задал на схеме блок SPICE с директивой .FOUR, но не нашёл куда выводятся результаты - ожидал что будет что-то типа как в OrCADе (текстовый вывод значений), но пока не нашёл. "

Команда .four работает только совместно с командой .tran или .pss - т. е. только для временных расчетов схемы. Результаты работы команды - отображение на экране графиков коэффициентов ряда Фурье. Для отображения необходимо, также, задать команду .plot или .print или .probe.
Вот пример команды для SPICE-блока:
.pss
.plot v(out)
.four 1Meg v(out)

Здесь сначала запустится расчет периодических режимов, потом нарисуется график напряжения v(out), потом для него посчитается преобразование Фурье на временном интервале, равном [Tend - 1е-6, Tend], где Tend - время, до которого построен график v(out)

Аналогичный пример для случая расчета переходных процессов:

.tran 1u
.plot v(out)
.four 1Meg v(out)
Здесь сначала запустится расчет переходных процессов на интервале[0;1e-6c], потом нариcуется график напряжения v(out), для которого посчитается преобразование Фурье на временном интервале, равном [0, 1e-6c].

Подробнее о том как пользоваться SPICE-командами можно прочитать в Справке или Руководстве пользователя SimOne, а также и в другой, посвященной SPICE- моделированию, литературе.

4.
Что касается функций THD и взятия амплитуды нужной гармоники, то они у нас уже реализованы и появятся в следующем обновлении программы.

 

Добрый день!

Продолжу тему, если не против...

1. К моему сожалению и в OrCADе очень не хватает данного функционала, он ещё и очень странно ведёт такие расчёты. К примеру: я долго не мог понять, откуда берутся странные искажения на выходе усилителя, ну ни как они не стыковались с теорией и некоторыми другими программами моделирования (например MicroCap). Пока однажды не добавил в задание измерение THD на ВХОДЕ усилителя (источником сигнала был стандартный источник VSIN последовательно с резистором), и к моему изумлению я увидел что на входе УЖЕ присутствуют немалые гармоники основного сигнала. И они составляли до 80-90% от уровней гармоник на выходе. Было убито много времени в попытках настроить параметры точности источника сигнала (их просто нет), игрой с шагами интегрирования (здесь вообще полная неразбериха, я так и не нашёл объяснений тому факту, что при уменьшении шага интегрирования (максимального), когда вроде бы должна увеличиваться точность, уровни гармоник возрастают в неестественных масштабах). Извините, немного увлёкся, но именно это заставило искать замену, вроде-бы мощному и именитому, OrCADу. И в SimOne я увидел такие перспективы и адекватную математику.

2. По поводу функции Db(f(x)) - задавал от уровня выходного сигнала: Db(V(OUT)), в том-же OrCADе я тоже с ней провозился, и только методом эксперимента выявил неявно определённую величину - там получилось что за опорный уровень (напряжения) берётся 1в. Буду очень признателен, если уточните полную информацию, лучше в виде конкретной формулы, как работает эта функция в SimOne, её опорный уровень. И было бы просто здорово иметь возможность определять в функции расчёта дБ свою точку отсчёта.

3. С блоком SPICE понятно, так это и сделано в OrCADе, единственно, там наличие .TRAN перед .FOUR прописано в документации и вопросов не вызывает, а в документации SimOne я такого не увидел.

4. Очень хочется увидеть новую версию SimOne с расчётом THD.

P.S.

Кстати, если не секрет, а какой именно алгоритм БПФ используется в SimOne?

 

2.
У нас функция расчета децибел также работает по единичному опорному уровню:
Db(f(x)) = 20*lg(|f(x)|/A), где А=1.
В следующей версии добавим возможность задавать А.

3. Да, указать на обязательное совместное использование .four с .tran или .pss в документации я забыл. Поправлю.

4. Такая версия уже на подходе.

Насчет алгоритма БПФ - непонятно. Используем самый что ни есть обычный.

 

Добрый день!

Сегодня вышла новая версия нашей программы, в ней функция Db(f(x)) теперь принимает опорный уровень: Db(f(x),A) где A =1 по умолчанию.
Также в новой версии добавлены функции для работы
с преобразованием Фурье, в том числе и вычисление нормированного спектра сигнала.
Подробности здесь: http://eda.eremex.ru/news/616750.html

Скачать можно здесь: http://eda.eremex.ru/downloads/

 

Ух-ты!

Даже описание новых функций FFT очень вдохновляет!

Спасибо, потестирую!

 

Потратил целый вечер на проверку новых возможностей SimOne. Вот что получилось:

Новые функции расчёта БПФ и расчёта децибелов по заданному опорному уровню реально удобны.

НО, к сожалению, не обошлось без "ложки дёгтя", и весьма немалой.

Исходные данные: схема каскада Тейлора, на входе - генератор синуса 10кГц, на выходе активная нагрузка, задание на моделирование через блок SPICE прямо на схеме (вид моделирования - .pss, после него команды plot, fftn, thd).

1) Как-то неадекватно срабатывает отображение результата, конкретно - функций fftn, db(fftn(...),...), а именно: шкала абсцисс остаётся по времени и на ней прямая линия графика. Долго мучал программу, пока методом "научного тыка" не нажал на списке графиков кнопку изменения шкалы с линейной на логарифмическую - график поменялся вместе со шкалой абсцисс, и это странно, ведь эта кнопка изменяет шкалу ординат. Но, что самое интересное, после повторного нажатия на эту кнопку наконец-то появился ожидаемый вид графика FFT! Почему не настраивается график при его первоначальном отображении после окончании расчёта - вопрос программистам. Кнопки включения/выключения отображения графика в окне списка графиков такого эффекта, как кнопка изменения шкалы, не дают.

2) Очень неудобно пользоваться графиком: во-первых - очень большой "хвост" из высших гармоник, постоянно приходится масштабировать его при перерасчёте - всё-таки желательно иметь возможность задавать нужный диапазон частот FFT (по крайней мере верхнюю границу). Во-вторых, неадекватная работа масштабирования графика на логарифмической шкале (на линейной проблем нет) - особенно оси ординат - буквально один шаг колёсиком мышки при нажатой SHIFT - и масштаб оси ординат "уезжает" в никуда, либо в очень малые шаги с одними и теми же цифрами на оси ординат с несуразными значениями экспоненты, либо в очень большие шаги и цифры оси ординат наезжают друг на друга вместе с сильно "полосатым" графиком из горизонтальных линий. Считаю, что алгоритм масштабирования логарифмической шкалы следует пересмотреть.

3) Ну и самое удивительное и неожиданное, лично для меня, были значения THD. Имея опыт "танцев с бубном" на OrCADе, я решил проверить и SimOne: замерил THD (и THD_R) на выходе каскада и на входе (генераторе синуса) - неожиданно они оказались очень близкими, а именно - на выходе значение 3.724m, а на входе - 3.723m (!!!). Разница минимальная. Даже изменяя значения точности FFT в широких пределах (от стандартных 1024 до 32768) конечные значения не сильно поменялись относительно друг-друга. Данные результаты могу интерпретировать так, что источник сигнала не совсем "чистый", конкретно у меня 2-я гармоника сигнала прямо на контакте генератора напряжения получилась -79дБ при шаге расчёта по умолчанию (и -97дБ при шаге 32768). В таких условиях пока даже не представляю, как рассчитать THD схемы - при ручной оценке получились значения первой десятки гармоник вплоть до -130...-140дБ, для этого нужен чистый сигнал с уровнем неосновных гармоник не выше -180...-190дБ. Понятно, что это всё теория, но все-же. В данном случае получается, что математические модели компонентов гораздо точнее источника сигнала, и поэтому хочу предложить проверить алгоритм генерации сигнала источника напряжения.

Соглашусь, наверно в большинстве программ моделирования такого тоже нет, с тем-же OrCADом я долго провозился по этому вопросу. Можно, конечно, также как в нём, написать в документации рекомендации для более точного расчёта FFT обращаться к специализированным программам, но в данном случае, так как сам занимаюсь программированием, думаю не сложно будет сделать хотя бы более точную модель источника напряжения, может и новый, специализированный.

И, кстати, раз уж снова коснулся вопроса преобразования Фурье, я уже спрашивал, какой именно алгоритм БПФ используется в SimOne, - предлагаю подумать о реализации полноценного алгоритма ДПФ, для расширения функциональности.

В целом-же, SimOne продолжает лично меня радовать, на данный момент из всего я пробовал, это лучший симулятор. Спасибо!

 

И ещё, вспомнил, на графике FFT строго каждые 200кГц, независимо от параметров шага, идут странные выбросы в виде буквы "М", достаточно большие, с уровнем выше практически всех неосновных гармоник.

Для моего примера с первой гармоникой 10кГц все учитыаемые гармоники умещаются в первые 100кГц и эти выбросы не мешают, но всё-же хотелось бы знать, с чем связаны эти выбросы и как их убрать или сдвинуть.

 

Добрый день!

1. Относительно проблем с масштабированием графиков в логарифмической шкале:
согласен, есть неудобство при работе с колесиком мыши. Поправим.
Я обычно масштабирую графики рамкой, так как это принято в других программах( LTSPICE,MicroCap): при нажатой ЛКП – сдвинуть курсор из II квадранта в IV квадрант (слева сверху – вправо вниз).
Масштабировать графики колесиком мыши считаю неудобным в принципе.

2. Масштабирование графиков функций fft(), fftn() также поправим в ближайшее время.

3. Относительно погрешности вычисления коэффициентов нелинейного и гармонического искажения: здесь необходимо иметь саму схему, чтоб посмотреть и пощупать это все живьем, так сказать. Вы можете ее прислать, например через обратную программную связь?

4. За лучший симулятор - спасибо, Будем соответствовать))

 

Еще одно соображение по поводу неточности вычисления THD:
для проверки точности вычисления спектра сигнала можно использовать функцию fourier.
fourier(f(x),[Nr=N,N=1024,Freq]) – вычисляет сумму Nr членов ряда Фурье выражения f(x), полученного с помощью функции fft(f(x)) .

Таким образом, можно построить графики самого сигнала и его аппроксимацией рядом Фурье и посмотреть насколько сильно они отличаются. Их разница и будет говорить о точности выполненного преобразования Фурье. Пример такого использования функций можно посмотреть в файле fft_based_func.ssch из папки FFT с примерами Simone.

Страницы: 1 2 3 4 5 След.
Читают тему

Будьте в курсе новостей и спецпредложений

Авторизация
Чтобы продолжить покупку, пожалуйста, авторизируйтесь на сайте.
Забыли пароль?