Показать сообщение отдельно
Непрочитано 20.08.2010, 18:37  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,507 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

6.3. Генераторы на RC и LC цепях в Протеусе и несколько способов их запуска. Извечные русские вопросы: «Что делать? » и «Кто виноват? ».
Очень многих начинающих пользователей программы эти два вынесенных в заголовок вопроса начинают терзать уже на первом этапе знакомства с ISIS при попытке моделировать генераторы с задающей RC цепочкой. Я уже столько раз отвечал по этому поводу на форуме, что сбился со счета. Пора положить этому достойный конец и разобрать вопрос досконально. Тем более, что частично этот материал нам понадобится при моделировании счетчика К176ИЕ12 буквально в следующем параграфе. Почему то на второй из извечных вопросов большинство пользователей отвечает однозначно: «Глюк программы, виноваты разработчики». Особенно прельщает частая добавка: «Да вот я в Мультисиме проверял – там сразу все работает, а в Протеусе никак». Ну, так каждому свое. Нравится – моделируйте там, ну а мы грешные уж как нибудь справимся и здесь. Ну а теперь к делу…
Основная ошибка при попытке моделирования генераторов – это «тупое» (другого слова, извините, подобрать не могу) перерисовывание схемы генератора и попытка в лоб запустить его. Автор схемы или учебник по электронике гласит, что работает – значит так и должно быть. Ну, что ж «нарисуем» классический мультивибратор на транзисторах и попробуем его запустить (Рис. 36).
Как видим, и в графическом режиме, и в интерактивном никакой генерации не наблюдается, оба транзистора полностью открыты – напряжения на коллекторах 0,18 Вольт (пример во вложении MULT_TRANS/ Default_mult.DSN). Все, – Протеус в помойку, разработчики – «кАзлы». Или все-же мы слегка закозлили? Вспомним теорию – режим генерации в таких мультивибраторах возникает из-за несимметричности плеч, обусловленных разбросом параметров реальных компонентов схемы. При этом один из конденсаторов зарядится быстрее и возникнет генерация. Ну и где она у нас разброс параметров у виртуальных моделей? Значит, напрасно мы виним разработчиков. Основным времязадающим элементом здесь является конденсатор. Давайте зарядим один из них. Для предварительной зарядки (вспомним свойства примитива конденсатора) используется свойство PRECHARGE. Зададим для C1 мультивибратора PRECHARGE=2 (т.е. зарядим хотя бы до 2V, а можно и больше). Оп-ля, заработало!!! (Рис. 37 ). В той же папке вложения - Precharge_mult.DSN.
Да, «ларчик просто открывался». Но это не единственный способ заставить наш мультик работать, как положено. Вернемся к исходному варианту и уберем у конденсатора первоначальный заряд. Вспомним, что существует еще одно замечательное свойство – Initial Condition (первоначальное состояние). По отношению к проводникам оно означает начальное напряжение на проводе при старте симуляции и назначается в режиме меток LABEL из левого меню. Давайте присвоим проводнику от базы транзистора Q1 (он же подключен и к выводу конденсатора C2) метку IC=0. Запустим график и … - тоже работает (Рис. 38 ). Вот и еще один способ обнаружился.
Ну а теперь несколько экзотичный, хотя и работающий в некоторых случаях способ. Иногда достаточно просто поменять конденсатор на его анимированную модель, лежащую в библиотеке Capacitors=›Animated. Есть у меня большое подозрение, что в этом случае срабатывает стоящее по умолчанию для этой модели в ее MDF свойство PRECHARGE=0. Правда этот способ хорош, когда времязадающий конденсатор в единственном числе.
Как мы видим из всех приведенных примеров, в основном устойчивый запуск генераторов связан именно с проблемами конденсаторов, а уж если быть совсем точным, то с начальным условием старта симуляции. Вот этот фактор и надо учитывать при моделировании генераторов в ISIS.
Недавно на форуме всплывал вопрос по генератору трехточке Колпитца, навеянный материалом, расположенным по этой ссылке:
http://logic-bratsk.ru/radio/ewb/ewb...-8-1/2-8-1.htm
Автор вопроса поступил именно так, как я описывал вначале, т.е. просто перенес схему от Electronic Workbench в ISIS. Естественно, результат был плачевный. Но теперь мы «вооружены и очень опасны». Поступим так же, как и в предыдущих случаях (Рис. 39).
Простым добавлением IC=0 в базовую цепь легко удалось запустить генератор. Более того, в ISIS результат симуляции именно этого варианта оказался более приемлемым. Если у этой схемы в EWB согласно приведенной ссылке период оказался равным 7,34 мс при теоретическом — 6,28 мс, то в ISIS период равен 6,63 мс (Рис. 40). Сравните, чей ближе. Этот вариант в приложенном файле 3_POINT\Colpitts1_IC.DSN. В той же папке вариант с емкостной связью Colpitts2_Precharge.DSN, в котором использовано свойство конденсаторов PRECHARGE. Чтобы уж окончательно развеять мифы, я взял и грубо, не вдаваясь в расчеты, набросал схему с индуктивной связью – генератор Мейснера (или Майснера). И воспользовавшись свойством Initial Condition, в несколько секунд добился его работы. Этот вариант я также приложил в той же папке под именем Meisner1_IC.DSN. Думаю, достаточно материала по чисто аналоговым генераторам, чтобы убедиться в их работоспособности. Мы же далее немного остановимся на RC-генераторах на логических элементах, с которыми тоже у начинающих возникают большие проблемы.
Я уже ранее указывал на свойство SCHMITT, которое в большинстве случаев позволяет запустить генератор на логических элементах. Но это большинство тоже строго ограничено. Как правило, все пытаются моделировать генератор на элементах 2И-НЕ микросхемы 4011 – наши аналоги ЛА7 в сериях 176, 561, 564 и т.п. Мы уже рассмотрели ее модель выше и обратили внимание, что свойство SCHMITT прописано в MDF. Быстренько набросаем типовой генератор, пропишем первому логическому элементу по входам это свойство и запустим симуляцию (Рис. 41).
Я на рисунке 42 приведу аналоговые графики в характерных точках схемы. Обратите внимание, что на четвертом – DIGITAL первый пробник выглядит достаточно «коряво». Именно поэтому в данном случае я и использовал аналоговые графики для анализа этого генератора. Этот вариант во вложении LOGIC_SCHMITT\ NAND_2.DSN.
В той же папке лежит схема генератора на элементах 3И-НЕ микросхемы 4023. И так же, как и в предыдущем случае для логического элемента стоящего первым задано SCHMITT=D0,D1,D2. Ну вроде все, как учили, но при попытке запустить симуляцию мы видим унылые серые квадратики вместо веселого перемигивания и строго половинчатые уровни напряжения по всем входам/выходам (Рис. 43). Вроде кому то пора что-то набить - это я имею ввиду себя. Но, я и не говорил, что это свойство будет работать всегда.
А вот теперь открою секрет из «загашника» - почему не работает. Сходите в файл 40NAND3.MDF, назначенный для 4023 и посмотрите в его начало. Раньше просто посылать вас туда было бесполезно - вы б его и не нашли, но теперь уже пора. Ниже я приведу значимый кусок из этого файла:
Код:
*MAPPINGS,3,VALUE+VOLTAGE
4073+5V : TDLHDQ=45n, TDHLDQ=55n, TGQ=?
4073+10V : TDLHDQ=20n, TDHLDQ=25n, TGQ=?
4073+15V : TDLHDQ=15n, TDHLDQ=20n, TGQ=?

*MODELDEFS,0    

*PARTLIST,1    
U?,AND_3,AND_3,PRIMITIVE=DIGITAL,TDHLDQ=‹TDHLDQ›,TDLHDQ=‹TDLHDQ›,TGQ=‹TGQ›
Вы где-нибудь видите упоминание SCHMITT? Представьте, я тоже не вижу. Ну и что тогда здесь будет работать? Делаем вывод – это свойство будет работать только в тех случаях, если прописано в MDF для данного компонента. А универсальными моделями, содержащими его, являются те, которые предназначены для моделирования триггеров Шмитта. Так что не надо даже лазить по всем MDF, а достаточно заглянуть в библиотеку. Вводим ключевое слово Schmitt, выбираем серию, например 4000 и видим, что наряду с рассмотренным в предыдущем параграфе 40NAND2, которое назначено для 4011 и двухвходового триггера Шмитта 4093, это свойство будет еще в модели инверторов 40INV.MDF (Рис. 44).
Заглянем в этот MDF и увидим, что его можно примвоить следующим инверторам: 4009, 4049, 4069 (конечно же для 40106, 4093 и 4584 оно уже присвоено). Присваиваться оно будет строчкой SCHMITT=D, поскольку у инверторов только один вход, и он не нумеруется. Файл 40INV.MDF есть во вложении.
Ну а как быть, если мне приспичило использовать, например, элементы 2ИЛИ-НЕ нашей К561ЛЕ5 или ее аналога CD4001 – в Протеусе просто 4001. Там Шмитт не катит…. Итак, второй «кролик из цилиндра» - я сегодня как факир. Подумайте логически, о чем я тут распинался вначале. Ну а теперь посмотрите на Рис. 45 и загляните в папку LOGIC_GEN вложения. Там представлены в двух дизайнах генераторы на двух и трех логических элементах. От комментариев воздержусь, по-моему, и так всем все ясно.
Ну, вот такой небольшой, но весьма познавательный материал по моделированию генераторов в ISIS. Надеюсь, что теперь со страниц форума надолго пропадут заголовки типа: «не работает генератор в Протеусе». А если начнут появляться в мое отсутствие, то каждый теперь знает, куда послать страждущего…
************************************************** ************************
Материал был уже готов и выложен на форуме, когда в параллельной ветке форума:
https://kazus.ru/forums/showthread.php?t=13612
возник вопрос о генераторах на триггерах в Протеусе. Естественно, я не мог пройти мимо, так как этот вопрос напрямую связан с симуляцией генераторов, рассматриваемой в этом пункте. Чтобы не нарушать нумерацию прилагаемых рисунков, в этом дополнении их приводить не буду. Но в дополнительном вложении Trigger_Gens в папке Examples_Gens добавлю парочку вариантов генераторов на RS-триггерах, устойчиво работающих в Протеусе.
А заинтересовал меня этот вопрос еще и потому, что при исследовании модели 4042, на которой сделана попытка просимулировать генератор по приведенной выше ссылке, обнаружена ошибка. Суть ошибки в том, что в реальном триггере CD4042 происходит асинхронный перенос данных с входов Dx на выходы Qx при одинаковых уровнях сигнала на управляющих входах CLK и POL. Т.е. если CLK=POL=0 или CLK=POL=1, то сигнал с входа D должен переноситься на соответствующий ему выход Q асинхронно. Внутренняя структура модели 4042 в ISIS выполнена на D-триггерах и сигнал переносится только по изменению фронтов на управляющих входах, что не соответствует действительности. Я не поленился, и проверил поведение аналогичной модели в Multisim 11, там она ведет себя вполне адекватно и генератор с использованием данной модели устойчиво запускается. Пришлось заняться исправлением модели. Что у меня получилось в результате приложено в папке вложения New_model_4042. В папке Structure_Vers_1 приложен тестовый проект одного из четырех каналов микросхемы, созданного на основе даташита. Однако, мне этот вариант не очень понравился и другой, более компактный приложен в папке Structure_Vers_2. С этим вариантом был протестирован генератор. Результат в проекте из папки Test_Generator_With_Child. Там схематичная модель присоединена в качестве дочернего листа к графической модели. С этого листа скомпилирован файл 4042B.MDF. Тест модели с этим файлом приложен в папке Test_Generator_With_MDF. Можно просто cкопировать его в папку MODELS Протеуса, а над моделью из этого проекта произвести Make Device и сохранить вариант 4042B для дальнейшего использования. Если есть желание заменить существующую модель 4042, то можно над ней проделать Make Device и на третьей вкладке поправить ссылку для MODFILE на 4042B.MDF. Для желающих полностью заменить модель в библиотеке DIGITAL.LML рекомендую воспользоваться методикой из п.6.17 этой части FAQ. С этой целью в папке New_4042_MDF приложен MDF-файл, в разделе *MAPPINGS литера B на конце имени модели отсутствует, как и в оригинальном файле модели из поставки Протеуса.
************************************************** **************************
Рисунки 36, 37, 38.
Рисунки 39, 40, 41.
Рисунки 42, 43, 44.
Рисунок 45.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_36.gif
Просмотров: 529
Размер:	15.2 Кб
ID:	11310   Нажмите на изображение для увеличения
Название: Pic_37.gif
Просмотров: 619
Размер:	28.3 Кб
ID:	11311   Нажмите на изображение для увеличения
Название: Pic_38.gif
Просмотров: 511
Размер:	17.3 Кб
ID:	11312  

Нажмите на изображение для увеличения
Название: Pic_39.gif
Просмотров: 478
Размер:	7.6 Кб
ID:	11313   Нажмите на изображение для увеличения
Название: Pic_40.gif
Просмотров: 427
Размер:	14.2 Кб
ID:	11314   Нажмите на изображение для увеличения
Название: Pic_41.gif
Просмотров: 537
Размер:	5.7 Кб
ID:	11315  

Нажмите на изображение для увеличения
Название: Pic_42.gif
Просмотров: 470
Размер:	19.4 Кб
ID:	11316   Нажмите на изображение для увеличения
Название: Pic_43.gif
Просмотров: 500
Размер:	5.6 Кб
ID:	11317   Нажмите на изображение для увеличения
Название: Pic_44.gif
Просмотров: 456
Размер:	17.6 Кб
ID:	11318  

Нажмите на изображение для увеличения
Название: Pic_45.gif
Просмотров: 577
Размер:	10.8 Кб
ID:	11319  
Вложения:
Тип файла: rar GENERATORS.rar (315.7 Кб, 1294 просмотров)
Тип файла: rar Trigger_Gens.rar (114.3 Кб, 962 просмотров)

Последний раз редактировалось Halex07; 14.04.2014 в 17:58.
Halex07 вне форума  
Эти 10 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
bozhko (22.09.2010), haruta (23.08.2010), kittec (22.09.2010), retas (08.12.2013), Tischon (21.01.2011), Traan (16.09.2013), ua9ult (08.11.2014), ДимаК (21.06.2011)