Перед тем как рассказать об алгоритмах, небольшая добавка к "железу". Силовой модуль нужно питать переменным напряжением частотой около 100 кГц. Я использовал такой генератор:
Сигнальные светодиоды весело сообщили, что все источники питания в норме и плата готова к приему управляющих сигналов.
Чтобы превратить плату частотника в стабилизатор, соединять клеммы нужно так (набросали прямо в Ватсапе, поэтому немного коряво - кому надо, разберетесь, кому не надо, пропустите:))
Реализация программных алгоритмов
Я рад, что в комментариях начали появляться намеки на таймауты и сложность алгоритмов - публика жаждет алгоритмическую реализацию. Попробуем разобраться.
Чтобы не рябило в глазах, сначала упростим схему, изобразив транзисторы в виде ключей и получим начальное положение ключей - когда стабилизатор не подает питание на потребители:
Допустим, что напряжение сети в норме - включаем транзитный режим:
Об этом режиме шла речь в самом начале поста - там я предлагал отключать стабилизатор, если его работа не требуется, чтобы уменьшить потери и увеличить КПД системы.
Теперь давайте допустим, что напряжение сети заниженное. В этом случае мы сначала должны зарядить конденсатор, а потом включить его последовательно в цепь (операция из двух слайдов, прокрутите карусель, чтобы понять действие):
Первая фаза режима отличается от транзитного только тем, что заряжается конденсатор. Во второй фазе (второй рисунок карусели) конденсатор включается в цепь последовательно и увеличивает выходное напряжение своим потенциалом. В постоянной цепи и без нагрузки напряжение на выходе при таком построении увеличится в 2 раза.
Если же манипуляции производить быстро, например 15000 раз в секунду (15кГц), получится ШИМ, который увеличит напряжение и в переменной цепи. При этом, величина вольтодобавки будет зависеть от того, на какое время мы растянем скважность второго этапа..
Если конденсатор сможет заряжаться быстро, напряжение можно увеличить в 2 раза, а это значит, что нижняя граница входного напряжения стабилизатора может быть от 110 Вольт:
достаточно неплохая характеристика для стабилизатора.
Чтобы быть последовательными, давайте смоделируем работу стабилизатора, когда напряжение сети завышено, и его нужно убавить. Для этого нам также понадобится зарядить конденсатор, а после включить его последовательно, но теперь уже противоположной полярностью:
Если и здесь учитывать, что конденсатор зарядится мгновенно, напряжение можно уменьшить с любой величины. Мы ограничены лишь безопасностью - нет смысла выбирать диапазоны свыше 380 Вольт, потому что такие значения в однофазной сети считаются серьезной аварией.
Если Вы внимательно рассмотрели, то наверняка заметили, что средний верхний ключ не используется ни в одном из вариантов. Дело в том, что в примере мы не учли полярность конденсатора. Чтобы не зарядить конденсатор обратной полярностью, верхние и нижние по схеме ключи должны меняться ролями, в зависимости от полупериода синусоиды. Так что и тот ключ, который "отдыхал" в следующем полупериоде включится в работу.
Настройку ШИМ-мов нужно производить по даташиту контроллера - там все подробно изложено. Что же касается скважности, она рассчитываются по стандартным формулам ШИМ или графически - интегрируя площади под уровнями графиков потенциалов.
Я описал здесь только принцип главного алгоритма. Для полноценного стабилизатора потребуются еще замеры напряжений, мониторинг неполадок, перегрузок и всего такого. Реализация этих элементов стандартна и уже многократно описана на просторах Интернета.