Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Ответ
Опции темы
Непрочитано 25.07.2018, 11:44   #2201
OldDriver
Прописка
 
Регистрация: 12.02.2016
Сообщений: 107
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
OldDriver на пути к лучшему
По умолчанию Re: Proteus модели

Сообщение от ProtAS-13 Посмотреть сообщение
В моей шпаргалке есть раздел "Аналоговое моделирование" и много примеров.
В Вашем же коде, не вижу определений матриц/режимов. В моем понимании, так, как у Вас, работать просто не должно
Я его безусловно посмотрел. Так же как как и примеры найденные с VSM SDK.
У меня несколько проще задача. Есть светодиод. 2 ногий. Анод-катод. Есть его ВАХ. Есть формула интерполяции этой ВАХ с приемлимой точностью. Есть зависимости видимой яркости экрана LCD от тока через светодиод. Формально - элемент простой. Всего 2 ноги. Из примеров близко подходит пример резистора и источника тока. Только зависимость сопротивления нелинейная. В первом варианте я пробовал считать динамическое сопротивление светодиода исходя из полученного напряжения и вычисленного тока, занося результат проводимости в матрицу проводимости. Результат тот же. В рабочей точке все считается на раз. Стоит спустится по графику ВАХ ниже(меньше ток), начинаются проблемы со сходимостью. Видимо точку перегиба не может посчитать. Второй вариант проще по вычислительным затратам. Раз я все равно считаю ток, то и помещать его в вектор токов.(пример источник тока), только направлениею тока естественно противоположное. Я что то не учел? Нужно объеденить эти два моих варианта. Нужны и проводимость и ток? А двойного счета при этом не будет?
Реклама:

Последний раз редактировалось OldDriver; 25.07.2018 в 12:07.
OldDriver вне форума   Ответить с цитированием
Непрочитано 25.07.2018, 14:36   #2202
OldDriver
Прописка
 
Регистрация: 12.02.2016
Сообщений: 107
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
OldDriver на пути к лучшему
По умолчанию Re: Proteus модели

Сделал согласно шаблону диода. Заработало. Но смысла не могу понять в таком разделении. Как 2 элемента проще чем 1. Зависимости от времени же нет.?
Еще непонятно как правильно считать проводимость для моей формулы.

Последний раз редактировалось OldDriver; 25.07.2018 в 14:40.
OldDriver вне форума   Ответить с цитированием
Непрочитано 26.07.2018, 01:28   #2203
ProtAS-13
Прописка
 
Регистрация: 17.03.2015
Сообщений: 293
Сказал спасибо: 0
Сказали Спасибо 214 раз(а) в 125 сообщении(ях)
ProtAS-13 на пути к лучшему
По умолчанию Re: Proteus модели

Сообщение от OldDriver Посмотреть сообщение
как правильно считать проводимость для моей формулы
Как, как - дифференцированием: Geg=dId/dVd
Функция Id(Vd) у Вас есть, так что, все очень просто, если, конечно, с дифурами на ТЫ.
ProtAS-13 вне форума   Ответить с цитированием
Сказали "Спасибо" ProtAS-13
OldDriver (26.07.2018)
Непрочитано 26.07.2018, 11:17   #2204
OldDriver
Прописка
 
Регистрация: 12.02.2016
Сообщений: 107
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
OldDriver на пути к лучшему
Хорошо Re: Proteus модели

Сообщение от ProtAS-13 Посмотреть сообщение
Как, как - дифференцированием: Geg=dId/dVd
Функция Id(Vd) у Вас есть, так что, все очень просто, если, конечно, с дифурами на ТЫ.
Эх, пришлось вспоминать 30 летней давности знания.
Ну где то так получилось:
Код:
#define R_LED_PARALELL      10000000
#define R_LED_SERIALS       0.025
#define IWHITELEDVAX_K1     3.268
#define IWHITELEDVAX_K2     13.98
#define IWHITELEDVAX(X,Y)   ((X / R_LED_PARALELL) + exp(IWHITELEDVAX_K1 * (X - R_LED_SERIALS * Y) - IWHITELEDVAX_K2))

// Расчет по постоянному току.
VOID JDT1800::dcload(REALTIME crt, SPICEMODES cmode, DOUBLE *oldrhs, DOUBLE *newrhs) {
    //ainstance-›log("Current dcload time %f, modes: %s.\n", crt, getNameOfSpiceMode(cmode));
    //--- Расчет тока через пару паралельных белых светодиодов
    if ((cmode & (SPICEINITTRAN | SPICEINITPRED))) {
        DOUBLE сvoltage = oldrhs[LEDA_PIN] - oldrhs[LEDK_PIN];  //--- Предидущее значение напряжения на пинах светодиода.
        ccurrent = IWHITELEDVAX(сvoltage, ccurrent);            //--- Экспоненциальная апроксимация ВАХ для белого светодиода.
        ainstance-›log("For voltage=%f V, current=%f A.\n", сvoltage, ccurrent);
        //if (SpicePopup) SpicePopup-›print("For voltage=%f V, current =%f A.\n", сvoltage, ccurrent);
        conduction_equ = (1 / R_LED_PARALELL) + (IWHITELEDVAX_K1 * ccurrent);
        ccurrent_equ = ccurrent - conduction_equ * сvoltage;
        ainstance-›log("Ccurrent_equ=%f a, conduction_equ=%f, current via conduction=%f A.\n", ccurrent_equ, conduction_equ, conduction_equ * сvoltage);
    }
    *nodeaa += conduction_equ;
    *nodekk += conduction_equ;
    *nodeak -= conduction_equ;
    *nodeka -= conduction_equ;
    newrhs[LEDA_PIN] -= ccurrent_equ;
    newrhs[LEDK_PIN] += ccurrent_equ;
}
OldDriver вне форума   Ответить с цитированием
Непрочитано 26.07.2018, 16:16   #2205
ProtAS-13
Прописка
 
Регистрация: 17.03.2015
Сообщений: 293
Сказал спасибо: 0
Сказали Спасибо 214 раз(а) в 125 сообщении(ях)
ProtAS-13 на пути к лучшему
По умолчанию Re: Proteus модели

Сообщение от OldDriver Посмотреть сообщение
Ну где то так получилось
У самого "счастливые" воспоминания о дифурах погребены 40 летним слоем всякого мусора, но, на мой взгляд, Ваш код должен выглядеть так:
Код:
...
DOUBLE сvoltage = oldrhs[LEDA_PIN] - oldrhs[LEDK_PIN];
conduction_equ = (1 / R_LED_PARALELL) + (IWHITELEDVAX_K1 * exp(IWHITELEDVAX_K1 * (сvoltage - R_LED_SERIALS * ccurrent) - IWHITELEDVAX_K2));
ccurrent = IWHITELEDVAX(сvoltage, ccurrent);
ccurrent_equ = ccurrent - conduction_equ * сvoltage;
...
Надеюсь ничего не напутал.
Это из условия, как я понял, что в IWHITELEDVAX(X,Y) - Y соответствует предыдущему значению тока.
Впрочем, разница между обоими вариантами будет равна (IWHITELEDVAX_K1 * сvoltage)/R_LED_PARALELL, что при очень большом R_LED_PARALELL, наверное, несущественно.
Да, и в функции ...::dcload, oldrhs это ВЫЧИСЛЕННЫЙ, т.е. ТЕКУЩИЙ вектор узловых напряжений/токов, а newrhs - ЗАДАВАЕМЫЙ вектор.
ProtAS-13 вне форума   Ответить с цитированием
Непрочитано 26.07.2018, 18:03   #2206
OldDriver
Прописка
 
Регистрация: 12.02.2016
Сообщений: 107
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
OldDriver на пути к лучшему
По умолчанию Re: Proteus модели

Сообщение от ProtAS-13 Посмотреть сообщение
У самого "счастливые" воспоминания о дифурах погребены 40 летним слоем всякого мусора, но, на мой взгляд, Ваш код должен выглядеть так:
Код:
...
DOUBLE сvoltage = oldrhs[LEDA_PIN] - oldrhs[LEDK_PIN];
conduction_equ = (1 / R_LED_PARALELL) + (IWHITELEDVAX_K1 * exp(IWHITELEDVAX_K1 * (сvoltage - R_LED_SERIALS * ccurrent) - IWHITELEDVAX_K2));
ccurrent = IWHITELEDVAX(сvoltage, ccurrent);
ccurrent_equ = ccurrent - conduction_equ * сvoltage;
...
Надеюсь ничего не напутал.
Это из условия, как я понял, что в IWHITELEDVAX(X,Y) - Y соответствует предыдущему значению тока.
Впрочем, разница между обоими вариантами будет равна (IWHITELEDVAX_K1 * сvoltage)/R_LED_PARALELL, что при очень большом R_LED_PARALELL, наверное, несущественно.
Да, и в функции ...::dcload, oldrhs это ВЫЧИСЛЕННЫЙ, т.е. ТЕКУЩИЙ вектор узловых напряжений/токов, а newrhs - ЗАДАВАЕМЫЙ вектор.
Ну если посмотрите, в condaction_equ после IWHITELEDVAX_K1 и есть ccurrent. То есть множитель в экспоненте перед х выполз из экспоненты. И у вас примерез на диод так же.
Так что выгоднее сначало посчитать его а потом использовать при расчете проводимости.
Кстати грабля вылезла в этом коде. При попытке построить ВАХ средствами протеуса (пример sweep analysis example) грохается где внурри dll. Завтра буду искать где и почему.
OldDriver вне форума   Ответить с цитированием
Непрочитано 27.07.2018, 01:12   #2207
ProtAS-13
Прописка
 
Регистрация: 17.03.2015
Сообщений: 293
Сказал спасибо: 0
Сказали Спасибо 214 раз(а) в 125 сообщении(ях)
ProtAS-13 на пути к лучшему
По умолчанию Re: Proteus модели

Сообщение от OldDriver Посмотреть сообщение
И у вас примерез на диод так же
Согласен, поленился написать подробный вывод формулы - для себя то было понятно.
В шпаргалке, эквивалентная проводимость для диода является не 100% результатом дифференцирования, а его приблизительным значением (см. рисунок).
Да, и по DC SWEEP.
Учитывайте, что для данного режима вызов функции ...::setup будет многократным.
Миниатюры:
Нажмите на изображение для увеличения
Название: 01.jpg
Просмотров: 0
Размер:	113.1 Кб
ID:	131302  

Последний раз редактировалось ProtAS-13; 27.07.2018 в 01:21. Причина: дополнение ответа
ProtAS-13 вне форума   Ответить с цитированием
Сказали "Спасибо" ProtAS-13
OldDriver (27.07.2018)
Непрочитано 27.07.2018, 11:42   #2208
OldDriver
Прописка
 
Регистрация: 12.02.2016
Сообщений: 107
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
OldDriver на пути к лучшему
По умолчанию Re: Proteus модели

Сообщение от ProtAS-13 Посмотреть сообщение
Да, и по DC SWEEP.
Учитывайте, что для данного режима вызов функции ...::setup будет многократным.
Да, проблема в этом оказалась. Простой игнор повторных вызовов привел к полному непросчету. Она просто в блок расчета не попадает. Таких битиков не разу не выпало.
А в этом есть какой то глубокий смысл ( в повторных вызовах setup, они для чего то делаются?
Основные режимы при этом:
Цитата:
PROSPICE 8.04.00 (Build 21720) (C) Labcenter Electronics 1993-2017.
Loaded netlist 'C:\Users\AB68~1\AppData\Local\Temp\LISA6761.SDF' for design 'Sweep Analysis Example'
SPICE setup. [LCD1]
DSIM setup. [LCD1]
SPICE dcload. [LCD1]
Current dcload time 0.000000, modes: SPICEDC, SPICEDCOP, SPICEINITJCT. [LCD1]
SPICE dcload. [LCD1]
Current dcload time 0.000000, modes: SPICEDC, SPICEDCOP, SPICEINITFIX. [LCD1]
SPICE dcload. [LCD1]
Current dcload time 0.000000, modes: SPICEDC, SPICEDCOP, SPICEINITFLOAT. [LCD1]
SPICE dcload. [LCD1]
Current dcload time 0.000000, modes: SPICEDC, SPICEDCOP, SPICEINITSMSIG. [LCD1]
Repeatable SPICE setup. Ignored. [LCD1]
Repeatable DSIM setup. Ignored. [LCD1]
SPICE dcload. [LCD1]
Current dcload time 0.000000, modes: SPICEDC, SPICEDCOP, SPICEINITJCT. [LCD1]
SPICE dcload. [LCD1]
Current dcload time 0.000000, modes: SPICEDC, SPICEDCOP, SPICEINITFIX. [LCD1]
SPICE dcload. [LCD1]
Current dcload time 0.000000, modes: SPICEDC, SPICEDCOP, SPICEINITFLOAT. [LCD1]
SPICE dcload. [LCD1]
Current dcload time 0.000000, modes: SPICEDC, SPICEDCOP, SPICEINITSMSIG. [LCD1]
OldDriver вне форума   Ответить с цитированием
Непрочитано 27.07.2018, 13:29   #2209
OldDriver
Прописка
 
Регистрация: 12.02.2016
Сообщений: 107
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
OldDriver на пути к лучшему
По умолчанию Re: Proteus модели

Да и с расчетом какая то лажа. Вид тот что надо. Результат не тот.
Светодиод стал источником тока. Круто.
Вложения:
Тип файла: pdf Sweep.PDF (102.3 Кб, 0 просмотров)
OldDriver вне форума   Ответить с цитированием
Непрочитано 27.07.2018, 14:26   #2210
OldDriver
Прописка
 
Регистрация: 12.02.2016
Сообщений: 107
Сказал спасибо: 22
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
OldDriver на пути к лучшему
По умолчанию Re: Proteus модели

Кстати, у вас примере также получается.
Если для Iequ1 развернуть с учетом вышестоящего выражения:
Ieq1 = ID*(1 -LAMBDA*(oldhrs[D1_1]-oldhrs]D1_2]);
LAMBDA = 38.9.
Разница на переходе 0.7 v. получаем псевдоисточник тока противоположной полярности почти в 35 раз больше чем пропускает диод по своей ВАХ.
OldDriver вне форума   Ответить с цитированием
Ответ

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Proteus: 3D модели Yahman Proteus 50 22.05.2020 16:48
Пример создания цифровой модели 1-wire Debugger for Proteus Lexx09 Proteus 27 21.04.2014 00:41
Создание модели для Proteus k000858 Proteus 1 04.02.2010 14:33
Создание 3-д модели для компонентов Proteus Noble_heart Proteus 10 22.01.2010 23:18


Часовой пояс GMT +4, время: 10:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot