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

 
 
> PSpice модель конденсатора, емкость которого зависит от напряженяи на нем
sultantiran
сообщение Dec 27 2008, 11:02
Сообщение #1


Участник
*

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



Может кто подскажет, как покрасивее реализовать модель конденсатора, емкость которого изменяется по заранее известной формуле (нелинейный закон), в зависимости от приложенного напряжения к нему? В том числе и отрицательного напряжения. Интересует макромодель или subcst.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
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
sultantiran
сообщение Dec 27 2008, 13:19
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 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
Jurenja
сообщение Dec 27 2008, 19:19
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 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   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


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:48
Рейтинг@Mail.ru


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