реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> PSpice модель конденсатора, емкость которого зависит от напряженяи на нем
sultantiran
сообщение Dec 27 2008, 11:02
Сообщение #1


Участник
*

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



Может кто подскажет, как покрасивее реализовать модель конденсатора, емкость которого изменяется по заранее известной формуле (нелинейный закон), в зависимости от приложенного напряжения к нему? В том числе и отрицательного напряжения. Интересует макромодель или subcst.
Go to the top of the page
 
+Quote Post
Jurenja
сообщение Dec 27 2008, 11:54
Сообщение #2


Местный
***

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



Встроенной модели такого конденсатора в PSpice нет, но можно сделать, как вы уже написали макромодель (subckt). С помощью обычной емкости и зависимых источников. Сообщите зависимость c(v), которую необходимо реализовать.


--------------------
Человек учится говорить два года, а молчать - всю жизнь
Go to the top of the page
 
+Quote Post
Lonesome Wolf
сообщение Dec 27 2008, 11:55
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 897
Регистрация: 21-02-05
Из: Украина
Пользователь №: 2 805



Цитата(sultantiran @ Dec 27 2008, 13:02) *
Может кто подскажет, как покрасивее реализовать модель конденсатора, емкость которого изменяется по заранее известной формуле (нелинейный закон), в зависимости от приложенного напряжения к нему? В том числе и отрицательного напряжения. Интересует макромодель или subcst.


Пользовался моделью диода, там есть возможность задать вольт-фарадную характеристику. При необходимости, используйте два встречно включенных элемента.
Go to the top of the page
 
+Quote Post
sultantiran
сообщение Dec 27 2008, 13:19
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 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) *
Пользовался моделью диода, там есть возможность задать вольт-фарадную характеристику. При необходимости, используйте два встречно включенных элемента.


По приведенной выше формуле вряд ли получиться воспользоваться таким способом... А еще и покруче будут варианты вычислений...
Go to the top of the page
 
+Quote Post
Пушкарев Михаил
сообщение Dec 27 2008, 13:26
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 076
Регистрация: 14-11-06
Из: г. Ульяновск
Пользователь №: 22 301



Емкости и индуктивности, управляемые напряжением, можно моделировать в Orcad.
Go to the top of the page
 
+Quote Post
sultantiran
сообщение Dec 27 2008, 13:30
Сообщение #6


Участник
*

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



Цитата(Пушкарев Михаил @ Dec 27 2008, 16:26) *
Емкости и индуктивности, управляемые напряжением, можно моделировать в Orcad.

Так уж завелось, что пользуюсь микрокапом... В принципе поставить Оркад есть возможность, 16 вроде. А что там за модель такая? И любой закон изменения можно вписать?
Go to the top of the page
 
+Quote Post
Пушкарев Михаил
сообщение Dec 27 2008, 13:50
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 076
Регистрация: 14-11-06
Из: г. Ульяновск
Пользователь №: 22 301



В библиотеке anl_misc.olb модели управляемых напряжением комплексного сопротивления и комплексной проводимости ZX и YX. Насколько сложную функцию сумеете заложить в источник управляющего напряжения, такой закон управления и будет.
Go to the top of the page
 
+Quote Post
sultantiran
сообщение Dec 27 2008, 14:05
Сообщение #8


Участник
*

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



Либо я тормознул, либо уже путаю чего то - ведь в микрокапе емкость конденсатора можно любым выражением задавать??? т.е. вписывать туда просто свою формулу?

Только вот с условиями не умеет...

Вот упростил формулу, для более удобного переваривания:

if (V(C1)<3) 1.55E-09+(V(C1)-1)*(-3.02083E-10+(V(C1)-1)*(-3.2376E-11+(V(C1)-1)*2.9209E-11))
else if (V(C1)<9) 1.05E-09+(V(C1)-3)*(-8.1081E-11+(V(C1)-3)*(1.6579E-11+(V(C1)-3)*-1.668E-12))
else if (V(C1)<13) 8E-10+(V(C1)-9)*(-6.2311E-11+(V(C1)-9)*(-4.4843E-11+(V(C1)-9)*8.23E-12))
else if (V(C1)<20) 3.6E-10+(V(C1)-13)*(-2.6007E-11+(V(C1)-13)*(2.389E-12+(V(C1)-13)*-8.7E-14))
else if (V(C1)<50) 2.65E-10+(V(C1)-20)*(-5.424E-12+(V(C1)-20)*(7.8E-14+(V(C1)-20)*0))

где V(C1) - собственно напряжение на этом конденсаторе.
Go to the top of the page
 
+Quote Post
Пушкарев Михаил
сообщение Dec 27 2008, 17:31
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 076
Регистрация: 14-11-06
Из: г. Ульяновск
Пользователь №: 22 301



Микрокапом пользуюсь редко и такой возможности не использовал.
Go to the top of the page
 
+Quote Post
Jurenja
сообщение Dec 27 2008, 19:19
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 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) *
Только вот с условиями не умеет...
да, переходов по условию нету к сожалению...
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 


--------------------
Человек учится говорить два года, а молчать - всю жизнь
Go to the top of the page
 
+Quote Post
sultantiran
сообщение Dec 27 2008, 20:52
Сообщение #11


Участник
*

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



Ну Вы МОЛОДЕЦ! Нет слов, чтоб выразить благодарность! При беглом взгляде - графики те!!! Спасибо, я в синтаксисе спайса не особо силен, вот и парюсь :-)

Емкость только в нФ должна была получиться, но это уже мелочи :-)

А вот на ЗЫ и ЗЫ2 можно поподробней?

Можно схему в виде картинки, в которой Вы это реализовали? Это ведь Оркад у Вас? У меня просто его нет.
Go to the top of the page
 
+Quote Post
Jurenja
сообщение Dec 28 2008, 14:00
Сообщение #12


Местный
***

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



Цитата(sultantiran @ Dec 27 2008, 22:52) *
Ну Вы МОЛОДЕЦ! Нет слов, чтоб выразить благодарность! При беглом взгляде - графики те!!! Спасибо, я в синтаксисе спайса не особо силен, вот и парюсь :-)
Емкость только в нФ должна была получиться, но это уже мелочи :-)
А вот на ЗЫ и ЗЫ2 можно поподробней?
Можно схему в виде картинки, в которой Вы это реализовали? Это ведь Оркад у Вас? У меня просто его нет.
да, емкость д.б. в нФ, значения полинома были порядка 1e-9...
В макромодели одна строчка неправильная, найдите строчку "H_Icap Icap 0 Vsensor 1Meg" и замените ее на "H_Icap Icap 0 Vsensor 1e9" и будут нанофарады.
OrCAD у меня есть, но использовал не его, а MicroSim DesignLab, но это не принципиально. Вообще-то это должно работать в любом Spice-подобном симуляторе. Тот текст, который жирным шрифтом, скопируйте в любой текстовый редактор и сохраните в виде файла. А потом в своем симуляторе подключить его в качестве модели к символу с двумя выводами, только полярность напряжения д.б. правильной.
Схемы нету, вернее есть фрагменты на листке бумаги. Модель писал сразу именно в таком тесктовом виде, это не трансляция из графической схемы. Попробуйте нарисовать ее сами - специально писал комментарии. Если все таки не получится, то нарисую smile.gif

про ЗЫ (конденсатор с моделью):
CFDBCK 3 33 <model name> 10pF
.MODEL <model name> CAP [model parameters]
-------------------------------------------------
Model Parameters, Description, Units, Default
-------------------------------------------------
C, capacitance multiplier, -, 1.0
TC1, linear temperature coefficient, 1/°C, 0.0
TC2, quadratic temperature coefficient, 1/°C**2, 0.0
T_ABS, absolute temperature, °C, -
T_MEASURED, measured temperature, °C, -
T_REL_GLOBAL, relative to current temperature, °C, -
T_REL_LOCAL, relative to AKO model temperature, °C, -
VC1, linear voltage coefficient, 1/volt, 0.0
VC2, quadratic voltage coefficient, 1/volt**2, 0.0

про ЗЫ2: если можно будет сделать полином более высокого порядка и без разрывов на поддиапазоны, то у макромодели не будет всплесков и макромодель будет проще.

Сообщение отредактировал Jurenja - Dec 28 2008, 14:04
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Человек учится говорить два года, а молчать - всю жизнь
Go to the top of the page
 
+Quote Post
sultantiran
сообщение Dec 28 2008, 18:26
Сообщение #13


Участник
*

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



Моделька вроде не ругается, но никак не могу получить такой же график, как у Вас. Что в Дизайнлабе подразумевается под MAX(I(Epin))/(2*pi*1Meg) и vpin? В тексте модели не могу найти Epin и vpin. Есть источник E_pin и вывод pin. Поясните плиз. И если можно, расшифруйте синтаксис для ИТУТ Н1_Icap.
Go to the top of the page
 
+Quote Post
Jurenja
сообщение Dec 28 2008, 23:04
Сообщение #14


Местный
***

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



Цитата(sultantiran @ Dec 28 2008, 20:26) *
Моделька вроде не ругается, но никак не могу получить такой же график, как у Вас. Что в Дизайнлабе подразумевается под MAX(I(Epin))/(2*pi*1Meg) и vpin? В тексте модели не могу найти Epin и vpin. Есть источник E_pin и вывод pin. Поясните плиз. И если можно, расшифруйте синтаксис для ИТУТ Н1_Icap.
ниже полный нетлист для моделирования, в нем все, что не нашлось:

Circuit : CNL_T
*
* ***********************************************************
* * *
* * NX-SPICE Version 1.31B *
* * Copyright © 1983,1986 - Personal CAD Systems, Inc. *
* * *
* * File In : CNL_T.NLT *
* * File Out : CNL_T.SPI *
* * Log File : NXSPICE.LOG *
* * *
* ***********************************************************
*
*
.WIDTH IN=80 OUT=132
*
*
* ELEMENTS
*
*
X_TRAN OUT 0 CNL
X PIN 0 CNL
R_TRAN IN OUT 1K
*
* Top File Cnl_t.add
.Options Itl5=0 Vntol=200mV Abstol=20uA
+ NoPage Node Acct
*.Incl d:\pcad\SymPrt1l\add\W_L.mod
*
.Probe
*
* v_GND $g_GND 0
* Vcc $g_GND $g_Vcc -5
.Lib d:\pcad\SymPrt1l\add\S_Analog.lib
.lib d:\pcad\SymPrt1l\add\BSIM3v2.mod
*
V_in In 0 pwl 0ns 50v 10ps 0v
Cout Out 0 1fF ; very small
*
Epin pin V_ACsource value={Vpin}
V_ACsource V_ACsource 0 AC=1
*
.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
* 1e9 factor is equal 1/1nF
H_Icap Icap 0 Vsensor 1e9
*
* Output current for simulate nonlinear capacitor.
G_out pin1 pin2 value={v(Icap)*v(Cfactor)}
*
.ends Cnl

.Param Vpin=0v
.Step Param Vpin 0.1V 50V 0.2V
.AC lin 100 999kHz 1MegHz
*
*.DC V_ACsource -1V 51V 1mV
*
*.tran 5ns 10ns 0ns 50ps
*
* End File Cnl_t.add
*
*
*
.END


Проводится АС анализ, он проводится много раз (инструкция .Step) при этом напряжение на емкости меняется от 0 до 50 В.
MAX(I(Epin))/(2*pi*1Meg) - это для программы Microsim Probe формула расчета емкости C=I/(2*pi*F), MAX(I(Epin)) - это значение тока через емкость при частоте 1 МГц, т.к. AC анализ проводится в диапазоне 999кГц-1МГц и максимум тока для емкости будет на частоте 1МГц. При параметрическом анализе расчет проводится много раз, в результате получаем график c(v).
Попробуйте запустить на моделирование нетлист, который выше, затем загрузите результаты (.dat файл) в Microsim Probe, затем в Microsim Probe нужно на панели нажать кнопочку Performance Analysis, а только после этого выводить кривую MAX(I(Epin))/(2*pi*1Meg).
Вам совсем необязательно повторять один-в-одим мое моделирование, вы можете потестировать емкость любым другим понятным вам способом smile.gif

H_Icap это ИНУТ (ист. напряжения, управляемый током)
Строка H_Icap Icap 0 Vsensor 1e9 означает что напряжение в узле Icap численно равно току через источник Vsensor, умноженному на 1e9. Т.к. ток через источник Vsensor получается подачей внешнего напряжения на емкость 1нФ (1e-9), то напряжение в узле Icap соответствует току через емкость 1e9*1нФ=1Ф. Зачем этот ток умножается на полином и выдается во внешнюю цепь: G_out pin1 pin2 value={v(Icap)*v(Cfactor)}


--------------------
Человек учится говорить два года, а молчать - всю жизнь
Go to the top of the page
 
+Quote Post
sultantiran
сообщение Dec 29 2008, 20:32
Сообщение #15


Участник
*

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



Спасибо за подробный ликбез! Буду изучать.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 16:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016