Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PSpice моделирование в OrCAD
Форум разработчиков электроники ELECTRONIX.ru > Печатные платы (PCB) > Разрабатываем ПП в САПР - PCB development > Cadence
Voyager
Добрый день!

Для того, чтобы понять мой вопрос постараюсь вкратце описать задачу. Необходимо промоделировать емкостной акселерометр. У меня есть выражение, устанавливающее связь между емкостью чувствительного элемента и ускорением. Как задать ускорение статически понятно: черезе PARAMETERS. Но мне бы хотелось смоделировать работу вибростенда для снятия АЧХ акселерометра. Т.е. мне надо, чтобы параметр "а" (ускорение) менялся по синусоидальному закону с некоторой частотой. Мне бы хотя бы смоделировать такое воздействие на постоянной частоте - готов вручную увеличивая частоту этого синуса строить по точкам АЧХ. Подскажите, пожалуйста, как это сделать.
Opolo84
Не очень понятно, что вы хотите получить в результате. В настройках АЧХ анализа поставить одну частоту моделирования, и сделать один 1/4 периода изменения ескости в Parameter. Получите график АЧХ.
Voyager
Цитата(Opolo84 @ Feb 4 2013, 10:29) *
Не очень понятно, что вы хотите получить в результате. В настройках АЧХ анализа поставить одну частоту моделирования, и сделать один 1/4 периода изменения ескости в Parameter. Получите график АЧХ.


мне надо, чтобы параметр задаваемый директивой PARAMETERS менялся по синусоидальному закону, пока я могу задать этот параметр лишь статически, например, а=1. Если я буду плавно увеличивать частоту этого параметра и буду на каждой частоте измерять отклик, то я получу АЧХ.

Не могли бы вы по-подробнее описать как сделать то, что вы сказали
Opolo84
Я вообще таким ни когда не занимался. Первое, что приходит на ум, сделать анализ переходных процессов. А изменение емкости поробывать настроить через Schedule. но тогда придется сделать какую нибудь таблицу значений синуса от вермени в какой нибудь среде.(http://www.power-e.ru/2005_02_90.php)
Voyager
Цитата(Opolo84 @ Feb 4 2013, 13:04) *
Я вообще таким ни когда не занимался. Первое, что приходит на ум, сделать анализ переходных процессов. А изменение емкости поробывать настроить через Schedule. но тогда придется сделать какую нибудь таблицу значений синуса от вермени в какой нибудь среде.(http://www.power-e.ru/2005_02_90.php)


Почитал, очень похоже, что это как раз то, что мне нужно. Помогите, пожалуйста, разобраться с процедурой применения SCHEDULE. У конденсатора вместо Value записать {SCHEDULE (0,10p,100m,15p,200m,20p)} - прогонял, но почему-то четко видно что частота сигнала не меняется со временем. Видимо, программа упорно рассчитывает частоту при каком-то одном значении емкости. Как пользоваться SCHEDULE?
Opolo84
Сейчас посмотрел внимательней, похоже schedule можно использовать только с параметрами анализа переходных процессов и точности. Вам надо искать что-то другое. Может легче составить уравнения и в матлабе график получить.
dxp
Посмотрите эту тему.
Voyager
Цитата(dxp @ Feb 5 2013, 05:02) *
Посмотрите эту тему.


Спасибо! Это мне тоже будет нужно, но попозже. Вся проблема в том, что мне надо промоделировать именно АЧХ акселерометра: вибростенд как-бы трясет чувствительный элемент и емкость тоже дрожит с некоторой частотой... Неужели это никак нельзя сделать? И еще, подскажите, я слышал, что в OrCAD можно промоделировать ПЛИС с прошивкой. Это можно?
Voyager
Я немного изменю вопрос, может это поможет: можно ли задать изменение параметра ступечато? Например, у меня есть выражение, связывающее емкость и ускорение. Если бы можно было задать изменение ускорение ступенькой, то можно было бы посмотреть, каким будет отклик всей системы - за какое время система отработает мгновенно изменившееся ускорение - и, значит, можно оценить полосу
Opolo84
Цитата(Voyager @ Feb 5 2013, 10:05) *
Я немного изменю вопрос, может это поможет: можно ли задать изменение параметра ступечато? Например, у меня есть выражение, связывающее емкость и ускорение. Если бы можно было задать изменение ускорение ступенькой, то можно было бы посмотреть, каким будет отклик всей системы - за какое время система отработает мгновенно изменившееся ускорение - и, значит, можно оценить полосу

Ну так вроде же параметр можно менять Линейно, в чем тогда проблема? Сделайте параметрический анализ и получите набор характеристик.
myriad
Взгляните прицепленный файл.
Там не совсем то, что нужно Вам, но похожее - модели выходного напряжения датчиков температуры LM20/60
Voyager
Цитата(Opolo84 @ Feb 5 2013, 12:11) *
Ну так вроде же параметр можно менять Линейно, в чем тогда проблема? Сделайте параметрический анализ и получите набор характеристик.


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

Цитата
Взгляните прицепленный файл.
Там не совсем то, что нужно Вам, но похожее - модели выходного напряжения датчиков температуры LM20/60


не открывается файл
SSerge
Попробуйте вот такую модель:
CODE
* PSpice Model Editor - Version 16.5.0

*$
.SUBCKT vCaps 1 2 3 4
* источник эдс, имитирующий конденсатор U=Q/C
E1 1 11 Value={V(12,0)*1uF/(10pF + 1pF*V(3,4))} ;
* это просто "датчик тока"
V1 11 2 0
* делает копию тока, протекающего через V1
Fq 0 12 V1 1.0
* интегрируем входной ток на конденсаторе
Cq 12 0 1uF
* резистор чтобы SPICE не выдавал "Node X_Cx.12 is floating"
Rq 12 0 1e12
.ENDS vCaps
*$

результаты моделирования:
Нажмите для просмотра прикрепленного файла
произведение V(12,0)*1uF это заряд на конденсаторе, а (10pF + 1pF*V(3,4)) это формула, описывающая зависимость ёмкости от напряжения на выводах 3 и 4 (от ускорения).
alexa1973
По моему для переменного конденсатора лучше всего использовать компонент YX из библиотеки ANL_MISC. На 1 и 2 ножку заводим тот же синус, между 3 ножкой и землей ставим конденсатор. Между 4 и 5 ножкой должен получиться конденсатор равный тому, что на 3 ножке умноженный на то, что заходит на то, что между первой и второй.
Voyager
Спасибо SSerge и alexa1973! В принципе вы предлагаете похожие вещи и обе работают.

Есть небольшой вопрос, правильно ли я понял, alexa1973, что емкость, подключенная к REF просто умножается на абстрактное число, которое формирует генератор синуса, и, поэтому, если задать амплитуду 1В и смещение 0, то получится, что у нас будет по синусу менятся ускорение от -1g (-1В) до +1g (+1В)?

2SSerge:

не совсем понял, какова будет результирующая модель емкости: (10pF + 1pF*V(3,4)), а величина интегрирующей емкости не влияет на емкость модели?
alexa1973
Там должно быть умножение Variable admittance: Yout = Yref * V
Vlad01
Цитата(alexa1973 @ Feb 6 2013, 14:01) *
Там должно быть умножение Variable admittance: Yout = Yref * V


Здравствуйте!

Прочитал эту ветку и решил задать свой вопрос, поскольку он как-то перекликается с вопросами моделирования в PSpice.
Столкнулся c такой проблемой: некорректно работают аналоговые функциональные блоки e(g)value в многовариантном анализе (точнее, в Monte-Carlo).
Правильно, гарантированно работает e(g)value только один первый раз при номинальном значении изменяемого параметра,
во всех остальных случаях - как ему заблагорассудится. Поэтому не могу реализовать ключ, отключаемый при снижении тока ниже заданного в evalue значения.
Строка с логикой предельно простая:

E_control 10 0
+ value {if((abs(I(V3))>{Ihold}),1,0)}

Даже когда условие abs(I(V3))>{Ihold} не выполняется, т.е. ток меньше заданного (Ihold), нуль на выходе блока evalue выставляется далеко не всегда. - Мистика.
В Probe я наблюдаю ток по точкам, он вблизи нуля и меньше порога Ihold, а команда "0" не выдается. Возможно это баг версии 9.2?

В прикрепленном файле-осциллограмме блок работает правильно только один (первый) раз (порог - 20 мА). В остальных двух случаях evalue не работает.

У кого-нибудь были подобные глюки? Поделитесь, пожалуйста, опытом.

Заранее спасибо.
Vlad01
Цитата(Vlad01 @ Mar 19 2013, 06:47) *
Здравствуйте!

Прочитал эту ветку и решил задать свой вопрос, поскольку он как-то перекликается с вопросами моделирования в PSpice.
Столкнулся c такой проблемой: некорректно работают аналоговые функциональные блоки e(g)value в многовариантном анализе (точнее, в Monte-Carlo).
Правильно, гарантированно работает e(g)value только один первый раз при номинальном значении изменяемого параметра,
во всех остальных случаях - как ему заблагорассудится. Поэтому не могу реализовать ключ, отключаемый при снижении тока ниже заданного в evalue значения.
Строка с логикой предельно простая:

E_control 10 0
+ value {if((abs(I(V3))>{Ihold}),1,0)}

Даже когда условие abs(I(V3))>{Ihold} не выполняется, т.е. ток меньше заданного (Ihold), нуль на выходе блока evalue выставляется далеко не всегда. - Мистика.
В Probe я наблюдаю ток по точкам, он вблизи нуля и меньше порога Ihold, а команда "0" не выдается. Возможно это баг версии 9.2?

В прикрепленном файле-осциллограмме блок работает правильно только один (первый) раз (порог - 20 мА). В остальных двух случаях evalue не работает.

У кого-нибудь были подобные глюки? Поделитесь, пожалуйста, опытом.

Заранее спасибо.


Ошибка найдена!
Оказывается PSpice в многовариантных расчетах (кроме первого) не всегда умеет точно вычислять модуль значения (abs(x)). Например:
X Abs(X)
13A 13 A
. .
. .
76mA 76mA
41mA 70 mA !
0 85 mA !
-14mA 94mA !
-49mA 108mA !
-67mA 116mA !

В области малых значений аргумента (в данном случае тока) модуль вычисляется с огромной погрешностью (см. таблицу)!
Поэтому реализовать ключ, отключаемый при единицах-десятках миллиампер, проблематично.
Интересно, как это реализовано в тиристорах и как обойти проблему.


Таким образом, в многовариантных расчетах (Parametric, WC, Monte-Carlo) можно ожидать неверной работы моделей.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.