|
|
 |
Ответов
|
Dec 27 2008, 13:19
|
Участник

Группа: Свой
Сообщений: 34
Регистрация: 17-06-04
Из: Ярославль
Пользователь №: 45

|
Цитата(Jurenja @ Dec 27 2008, 14:54)  Встроенной модели такого конденсатора в PSpice нет, но можно сделать, как вы уже написали макромодель (subckt). С помощью обычной емкости и зависимых источников. Сообщите зависимость c(v), которую необходимо реализовать. if (x<3) { p1=0.000000000029209 p2=-0.000000000032376 p3=-0.000000000302083 p4=0.00000000155; p5=1; } else if (x<9) { p1=-0.000000000001668 p2=0.000000000016579 p3=-0.000000000081081 p4=0.00000000105; p5=3; } else if (x<13) { p1=0.00000000000823 p2=-0.000000000044843 p3=-0.000000000062311 p4=0.0000000008; p5=9; } else if (x<20) { p1=-0.000000000000087 p2=0.000000000002389 p3=-0.000000000026007 p4=0.00000000036; p5=13; } else if (x<50) { p1=0 p2=0.000000000000078 p3=-0.000000000005424 p4=0.000000000265; p5=20; } x = x-p5; y=p4+x*(p3+x*(p2+x*p1)); Ну это я так, для примера выложил. Емкости все разные, с разными формулами. Интересует вид (описание) модели, а уж в источник тока или напряжения (или еще какой :-)), т.е. куда надо - туда и впишу. Да, эта формула не описывает поведение емкости ниже 0 (отрицательные) и выше 50, т.е. это просто пример. Цитата(Lonesome Wolf @ Dec 27 2008, 14:55)  Пользовался моделью диода, там есть возможность задать вольт-фарадную характеристику. При необходимости, используйте два встречно включенных элемента. По приведенной выше формуле вряд ли получиться воспользоваться таким способом... А еще и покруче будут варианты вычислений...
|
|
|
|
|
Dec 27 2008, 19:19
|

Местный
  
Группа: Свой
Сообщений: 457
Регистрация: 7-06-07
Из: Минск
Пользователь №: 28 262

|
Цитата(sultantiran @ Dec 27 2008, 15:19)  if (x<3) { p1=0.000000000029209 p2=-0.000000000032376 p3=-0.000000000302083 p4=0.00000000155; p5=1; } else if (x<9) { p1=-0.000000000001668 p2=0.000000000016579 p3=-0.000000000081081 p4=0.00000000105; p5=3; } else if (x<13) { p1=0.00000000000823 p2=-0.000000000044843 p3=-0.000000000062311 p4=0.0000000008; p5=9; } else if (x<20) { p1=-0.000000000000087 p2=0.000000000002389 p3=-0.000000000026007 p4=0.00000000036; p5=13; } else if (x<50) { p1=0 p2=0.000000000000078 p3=-0.000000000005424 p4=0.000000000265; p5=20; } x = x-p5; y=p4+x*(p3+x*(p2+x*p1));
Ну это я так, для примера выложил... Что-то вот такое получилось, походу старался писать комментарии:... .subckt Cnl pin1 pin2 * * p1...p5 polynomes value tables e_p1 p1 0 TABLE {v(pin1,pin2)} + -100, 0.000000000029209 + 2.9999, 0.000000000029209 + 3.0001, -0.000000000001668 + 8.9999, -0.000000000001668 + 9.0001, 0.00000000000823 + 12.9999, 0.00000000000823 + 13.0001, -0.000000000000087 + 19.9999, -0.000000000000087 + 20.0001, 0 e_p2 p2 0 TABLE {v(pin1,pin2)} + -100, -0.000000000032376 + 2.9999, -0.000000000032376 + 3.0001, 0.000000000016579 + 8.9999, 0.000000000016579 + 9.0001, -0.000000000044843 + 12.9999, -0.000000000044843 + 13.0001, 0.000000000002389 + 19.9999, 0.000000000002389 + 20.0001, 0.000000000000078 e_p3 p3 0 TABLE {v(pin1,pin2)} + -100, -0.000000000302083 + 2.9999, -0.000000000302083 + 3.0001, -0.000000000081081 + 8.9999, -0.000000000081081 + 9.0001, -0.000000000062311 + 12.9999, -0.000000000062311 + 13.0001, -0.000000000026007 + 19.9999, -0.000000000026007 + 20.0001, -0.000000000005424 e_p4 p4 0 TABLE {v(pin1,pin2)} + -100, 0.00000000155 + 2.9999, 0.00000000155 + 3.0001, 0.00000000105 + 8.9999, 0.00000000105 + 9.0001, 0.0000000008 + 12.9999, 0.0000000008 + 13.0001, 0.00000000036 + 19.9999, 0.00000000036 + 20.0001, 0.000000000265 e_p5 p5 0 TABLE {v(pin1,pin2)} + -100, 1 + 2.9999, 1 + 3.0001, 3 + 8.9999, 3 + 9.0001, 9 + 12.9999, 9 + 13.0001, 13 + 19.9999, 13 + 20.0001, 20 * * "x = x-p5" expression e_Xshift Xshift 0 value={v(pin1,pin2)-v(p5)} * * "y=p4+x*(p3+x*(p2+x*p1))" expression, c(v) function e_Cfactor Cfactor 0 + value={v(p4)+v(Xshift)*(v(p3)+v(Xshift)*(v(p2)+v(Xshift)*v(p1)))} * * Ideal analog buffer for voltage of external pins E_pin pin 0 value={v(pin1,pin2)} * * Voltage source (zero value) is sensor of current Vsensor pin Vsens 0V * * Reference Capacitor for current measure C_ref Vsens 0 1nF * * Icap Voltage value node is equal current of C_ref * 1Meg factor is equal 1/1nF H_Icap Icap 0 Vsensor 1Meg * * Output current for simulate nonlinear capacitor. G_out pin1 pin2 value={v(Icap)*v(Cfactor)} * .ends CnlВ точках "стыковки" (3, 9, 13 и 20) в области +-0.0001 есть "всплески" результирующей функции. Это скорее всего из-за конструкции "x = x-p5" и из-за того, что PSpice не "умеет" обрабатывать конструкции "IF" и пришлось сделать кусочно-линейные аппроксимации коэффициентов полинома на заданном интервале. На картинке c(v).png "всплески" выглядят более широкими из-за того, что шаг моделирования равен 0.2. На картинке c(v)_without_spikes.png "всплески" отсунствуют, т.к. расчетные точки не попадают в точки "стыковки". ЗЫ. Посмотрел еще раз встроенную модель конденсатора, в ней возможно задать нелинейность (полином) 2-го порядка с помощью параметров VC1 и VC2. В результате емкость будет умножаться на полином 1+VC1*V+VC2*V**2. ЗЫ2. Макромодель можно сделать через полином намного большего порядка, поэтому если избавиться от "IF" то функцию можно сделать гладкой. Цитата(sultantiran @ Dec 27 2008, 16:05)  Только вот с условиями не умеет... да, переходов по условию нету к сожалению...
Эскизы прикрепленных изображений
--------------------
Человек учится говорить два года, а молчать - всю жизнь
|
|
|
|
Сообщений в этой теме
sultantiran PSpice модель конденсатора, емкость которого зависит от напряженяи на нем Dec 27 2008, 11:02  Пушкарев Михаил Емкости и индуктивности, управляемые напряжением, ... Dec 27 2008, 13:26   sultantiran Цитата(Пушкарев Михаил @ Dec 27 2008, 16... Dec 27 2008, 13:30    Пушкарев Михаил В библиотеке anl_misc.olb модели управляемых напря... Dec 27 2008, 13:50 Lonesome Wolf Цитата(sultantiran @ Dec 27 2008, 13:02) ... Dec 27 2008, 11:55 sultantiran Либо я тормознул, либо уже путаю чего то - ведь в... Dec 27 2008, 14:05 Пушкарев Михаил Микрокапом пользуюсь редко и такой возможности не ... Dec 27 2008, 17:31 sultantiran Ну Вы МОЛОДЕЦ! Нет слов, чтоб выразить благода... Dec 27 2008, 20:52 Jurenja Цитата(sultantiran @ Dec 27 2008, 22:52) ... Dec 28 2008, 14:00 sultantiran Моделька вроде не ругается, но никак не могу получ... Dec 28 2008, 18:26 Jurenja Цитата(sultantiran @ Dec 28 2008, 20:26) ... Dec 28 2008, 23:04 sultantiran Спасибо за подробный ликбез! Буду изучать. Dec 29 2008, 20:32 Jurenja Цитата(sultantiran @ Dec 29 2008, 22:32) ... Dec 30 2008, 06:32  Lonesome Wolf Вообще-то, использование слова PSpice подразумевае... Dec 30 2008, 08:34   Jurenja Цитата(Lonesome Wolf @ Dec 30 2008, 10:34... Dec 30 2008, 09:00    Lonesome Wolf Цитата(Jurenja @ Dec 30 2008, 11:00) Вооб... Dec 30 2008, 09:08     Jurenja Цитата(Lonesome Wolf @ Dec 30 2008, 11:08... Dec 30 2008, 09:31 AML Вот один из возможных принципов построения нелиней... Jan 2 2009, 07:46 sultantiran Да, от себя замечу - такой вариант реализации счит... Jan 3 2009, 09:57 rudy_b А задачка-то оказалась интересной! Посмотрел в... Jan 5 2009, 15:12 Jurenja Цитата(rudy_b @ Jan 5 2009, 17:12) ... По... Jan 5 2009, 16:00 SSerge Цитата(rudy_b @ Jan 5 2009, 21:12) Станда... Jan 5 2009, 21:23 rudy_b Возможно, если прописать их ручками и именно в tem... Jan 6 2009, 01:50 SSerge Цитата(rudy_b @ Jan 6 2009, 07:50) Как-то... Jan 6 2009, 07:01  Jurenja Цитата(SSerge @ Jan 6 2009, 09:01) При то... Jan 6 2009, 07:23 rudy_b А у меня такой текст в библиотеке .lib
* CUVAR mod... Jan 6 2009, 12:07 Jurenja Цитата(rudy_b @ Jan 6 2009, 14:07) ...
Чт... Jan 6 2009, 12:51 rudy_b Самое интересное, что если прописать то же самое в... Jan 6 2009, 14:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|