Видимо пропустил когда это писалось.
Я и сам уже не помню, где писал - выкладывал вместе с описанием како-го варианта модели (PDF).
В двух словах, проблема такова. Разрядный фронт конденсатора - самое "быстрое" место такта работы, где надо производить измерение (сравнение с нулем).
Если ставить времязадающую емкости минимально допустимого значения (500 пФ - 1нФ) конденсатор в модельке разряжается очень быстро (менее 50нС). А перед разрядом идет достаточно медленный заряд. На этапе заряда программа выставила максимально допустимый шаг (предположим, мы задали его 100 нС). И с этим же шагом она пытается считать быстрый процесс разряда. А он всего-то 50 нС. Уменьшить шаг программа сможет, если "почувствует", что скакнула слишком далеко. Но уменьшит она шаг, толко со второго, а первый в любом случае окажется большим (до того, как она сделает этот большой шаг она не еще не знает, что шаг нужно уменьшить). За этот первый большой шаг емкость разрядится не до нуля, а до какого-то отрицательного напряжения. Ключ почувствует, что надо разомкнуться (напряжение стало меньше нуля) и начнется процесс заряда. Но заряд начнется е с нуля, а с отрицательного напряжения. Соответственно будет проходить дольше (упадет частота работы).
Насколько сильно уйдет напряжение в отрицательную область зависит от выбранного максимального шага и начального тока разряда (на вершине пилы). И напряжение это может очень сильно "гулять" в зависимости от макчимального шага.
Вот картинка с маленьким шагом расчета
Здесь все нормально (жирными точками помечены расчетные точки)
А вот если увеличить шаг, то генератор "проскочит" ноль
"Лобовое" решение - уменьшить максимальный шаг расчета так, чтобы на разрядный фронт попало несколько расчетных точек. Т.е. ограничить его на уровне 10 нС. Это очень сильно замедляет расчет.
Второй способ - заставить программу уменьшить шаг расчета при подходе к заднему фронту. При этом передний (медленный) фронт считается с максимальным шагом, а при приближении к вершине импульса шаг уменьшается и задний фронт просчитывается с маленьким шагом. Для этого в разрядную цепь вводится какая-либо нелинейность. У меня было несколько вариантов, остановился на нелинейном изменении сопротивления разрядного резистора в зависимости от напряжения на емкости.
Собственно, основные мои "траханья" с моделью были направлены на то, чтобы при емкости 1нФ и максимальном шаге расчета 400нС ноль отлеживался достаточно четко. Ведь ограничение максимального заполнения мереется на уроне 0.12В, поэтому ноль нужно "ловить" в высокой точностью.
Дополнительная сложность - в Микрокапе есть стандартные установки расчета, а есть "для силовых схем". Во втором случае снижена точность расчетов. Обсчет перехода черех ноль быстрого процесса - существенно по-разному обрабатывется в этих двух режимах. Пришлось искать компромисс. Один из вариантов того, что получилось -
При приближении к нулю число расчетных точек значительно возрастает и ноль отслеживается с достаточно высокой точностью.
Но это все - в Микрокапе. Хотелось бы узнать, что дает моделька в SwCad. Насколько точно выжерживаются пороги пилы (0 и 3В) при значении емкости 1нС и ограничении на максимальный шаг расчета 400нС.