Продолжение темы моделирования электрической схемы в Octave. В прошлый раз рассматривалась схема с двумя контурами, содержащая конденсатор.
Попробую промоделировать другую схему, содержащую больше контуров.
Схема для моделирования была взята из статьи про операционные усилители. Ниже приведен...
Под воздействием статьей с хабрахабр, а так же отличной книги "Электроника - теория и практика", я решил так же сделать разбор цепи и сохранить у себя.
Эти все результаты можно получить с помощью любой программы моделирования электрических схем, статья просто образовательного характера, а так...
Добавлю шпаргалку по CUnit+CMake.
Недавно попадалась мне статья по теме: "CUnit: Автоматическое тестирование с динамической загрузкой тестов". Из статьи было почерпнуто достаточно полезный код по подгрузке тестов, а также сборка таких тестов посредством CMake.
Но в статье описано только структура папки tests, а наличие полного примера проекта пролило бы больше света на возможности разработанного автором метода подключения тестов. Ниже, я приведу структуру проекта, где такая система тестирования добавлена как опция.
Задача: сделать на Си связный отсортированный список с ограниченным размером или хэш-таблицу, необходимо, что весь список занимал не более N байт в куче (стек не считается).
Реализация
Возможные варианты: 1) сделать счетчик сколько выделено и освобождено и при достижении значения не выделять больше, т.е написать враппер для malloc, calloc, realloc; 2) выделить массив нужного размера и все операции по размещению элементов делать в этом массиве, проверяя границы; 3) поискать готовое решение по реализации хэш, массивов или списков на ограниченном участке памяти.
Первый вариант неплох, второй неудобен и требует много кода и отладки, поробуем тертий.
Есть библиотека inarray-allocator(https://brepo.ru/post/inarray-allocator-hash-dinamicheskij-massiv-malloc-svyaznyj-spisok-koljcevoj-bufer-v-shared-memory-ili-v-ukazannom-massive-bajt), которая позволит реализовать такой функционал.
Для управления выходным напряжением, мой блок питания использует LM317, которым в свою очередь управляет микроконтроллер. На ножку ADJ микросхемы необходимо подавать напряжение до 9В-10В, а микроконтроллер сам с таким не справится. Поэтому необходимо вводить преобразователь напряжения.
Экспериментально установил, что напряжение, которое может организовать контроллер с помощью ШИМ и RC цепочки колеблется в диапазоне 0 и 4.3 Вольта. Значит вот они - величины входного сигнала.
Опять же экспериментально установил, что при питании 10В, трудно будет добится в любой из схем всех 10В на выходе преобразователя, т.к на самом преобразователе тоже потеряется напряжение, то было выбрано значение 9В. Большинство транзисторов с переходом База-Эмитер или Эмитер-Коллектор в насыщении в 1 вольт влезают.
Я же буду использовать операционный усилитель в качестве преобразователя, причем LM358, который позволяет работать с однополярным питанием. Большинство примеров приводится для классического двухполярного питания. И происходит жесткий облом, при попытке использовать эти схемы и правила при однополярном питании.