Использование моделей Spice в Proteus

  Понадобилось смакетировать схему в Proteus 7.10 с применением LDO стабилизатора AMS1117-5. Обнаружил, что данной модели нет, лучшее что может предложить мой Proteus, это 78L05. Непорядок, надо исправлять, т.е. попытаться добавить нужную модель в симулятор.
  В симуляторе Proteus могут использоваться 3 типа моделей — схематическая, Spice и DLL. Для первой на дочернем листе надо собрать схему из моделируемых примитивов Proteus, впоследствии преобразовав этот лист в файл *.MDF и подключив его к графическому примитиву. Proteus предоставляет средства для создания такого типа моделей. Для второй надо найти и скачать из инета уже созданную умными головами модель Spice для нужного компонента (в ASCII формате) и опять же подключить к графическому примитиву. Средств для создания такого типа моделей Proteus не продоставляет. Самостоятельное изготовление DLL моделей доступно только программистам, тем более и соответствующий SDK для них (моделей) Labcenter закрыл. Естественно и никаких средств для создания моделей такого типа Proteus не продоставляет.
  В работе с Proteus рускоязычным пользователям может помочь замечательный цикл статей "FAQ (ЧаВО) по PROTEUS для начинающих и не только" от А. Христианчика (ник Halex07). На сайте Kazus.ru они доступны в разрозненном виде в порядке изложения. Для удобства Halex07 собрал первые 8 глав в 4 части (вместе с кодом и примерами) и дал на них ссылки для скачивания. Это же самое FAQ также доступно в формате Proteus.pdf (без кода и примеров). Также этот FAQ доступен в сборнике «РадиоЕжегодник» №24, 2013, «Proteus по-русски». На сайте Kazus.ru существует и незаконченная 5 часть FAQ, но она только на форуме в порядке изложения. Далее для краткости ссылки на FAQ будут именоваться как (FAQ_3.11, т.е. глава 3.11).
  Статья представляет собой вольный перевод раздела "Using Spice Models" хелпа Proteus.


Читать дальше

Среднечастотный частотомер на AVR. Часть 3, + милливольтметр.

  Это продолжение предыдущих частей "Часть1, динамическая индикация" и "Часть2, статическая индикация".
  В первой части я посетовал, что в ATmega8A при занятой памяти менее 10% почти не осталось свободных ножек. Во второй части я эту проблему решил с помощью внешнего контроллера дисплея. Осталось придумать, куда использовать освободившиеся ножки и неиспользованную память.
  Для измерительного генератора эти ресурсы могут быть применены при осовременивании схемы. Например замены переменного резистора настройки на инкрементальный энкодер, замены механических переключателей на управление реле или бесконтактными ключами и т.д. Это все индивидуально для каждой схемы. Но как правило измерительный генератор имеет регулируемый по напряжению выход. Контролировать уровень напряжения на нем также желательно. А у нас как раз остались незадействованными 6 каналов ADC (для PDIP, в корпусе TQFP их 8). Поэтому введем в программу второй канал измерения, измерять будем напряжение на входе ADC.


Читать дальше

Среднечастотный частотомер на AVR. Часть 2, статическая индикация.

  В первой части статьи рассматривался вывод на дисплей с динамической индикацией. В этой будет рассмотрен вывод на дисплеи со статической индикацией. Как правило это достигается применением внешнего контроллера дисплея.


Читать дальше

Среднечастотный частотомер на AVR. Часть 1, динамическая индикация.

  Давно хотелось иметь функциональный генератор с приличными характеристиками и не фантастической сложностью. Поэтому на Ali был прикуплен чип XR-2206, поиском по инету найдена схема генератора — XR-2206 5Hz to 300kHz Function Generator. Конструкция достаточно хорошо проработана и описана.
  Собственно к схеме генератора претензий нет, некоторые вещи я бы сделал по другому, но это потом в процессе изготовления. Мне сразу не понравилась цифровая шкала генератора (там же, страница 2). Его программа представляет сборку из скетчей Arduino, я их не понимаю и не горю желанием изучать. Да и применение ATmega328 мне показалось неоправданно жирным. Короче решил спроектировать свою цифровую шкалу на ATmega8A. Результат представляю вашему вниманию, код написан на ассемблере AVR в среде AVR Studio 4.19.


Читать дальше

Simatic Step 7. STL. Бит четности (паритета).

PLC
  Под четностью битовой строки понимается, какое кол-во единичных бит — четное или нечетное — содержит эта строка. Правильнее было бы назвать его битом нечетности, т.к. нечетному кол-ву бит соответствует единичный бит четности, четному кол-ву — нулевой. Математически результат представляет собой сумму всех бит слова по модулю 2, т.е. над всеми битами выполняется операция исключающее ИЛИ. В стандартной библиотеке такой функции нет.


Читать дальше

Simatic Step 7. STL. Установка/сброс бита по номеру

PLC
  По сути это программная реализация двоичного дешифратора (декодера). Он преобразует двоичный код номера бита в унитарный код со значащей единицей (нулем).


Читать дальше

Simatic Step 7. STL. Реверс бит

PLC
  Под операцией реверса битов понимается отображение содержимого регистра относительно середины слова, т.е. отображение битов в слове в обратном порядке.
  В языке Simatic STL такой команды нет, имеющиеся CAW, CAD реверсируют байты в слове и двойном слове, т.е. преобразуют между форматами little-endian и big-endian. В стандартной библиотеке подобной функции так же нет. Для реализации был выбран алгоритм реверсирования на основе бинарного обмена из книги Генри Уорена «Алгоритмические трюки для программистов», 2014 г.


Читать дальше

Simatic Step 7. STL. Подсчет установленных бит.

PLC
  Эта функция возвращает кол-во установленных (единичных) бит в аргументе. Иногда возвращаемое значение называют весом Хемминга. Кроме самостоятельной ценности, по возвращаемому значению функции легко определить четность аргумента (нулевой бит).


Читать дальше

Simatic Step 7. STL. Номер установленного/сброшенного бита.

PLC
  По сути это программная реализация приоритетного шифратора (кодера). Он преобразует унитарный код с ведущей значащей единицей (нулем) в двоичный код номера установленного/сброшенного бита.
  Есть две разновидности алгоритма, поиск старшего или младшего бита. Например, в системе команд i386 для этого есть специальные команды BSR и BSF. Очевидно, если установленный бит один, результат будет одинаковый для обоих. Соответственно, если установленных битов несколько, результат будет отличаться.


Читать дальше

Simatic Step 7. STL. Доступ к текущему времени.

PLC
  В предыдущей статье Simatic Step 7. STL. Вычисление числа дней в месяце (DayOfMonth) пришлось немного углубиться в преставление системного времени Simatic Step 7. Получилось не очень (ни туда, ни сюда), решил оформить эту тему отдельной статьей. Разговор пойдет только о системном формате времени DATE_AND_TIME. Simatic поддерживает и другие форматы (TIME_OF_DAY (DWord, время суток), S5TIME (Word, время в формате Simatic, для таймеров и счетчиков), TIME (DWord, время в формате IEC), DATE (DWord, дата в формате IEC)), межформатные преобразования предусмотрены стандартной библиотекой.


Читать дальше