Сделал регулятор мощности для резистивной нагрузки на ATmega8. В нем применено обычное фазоимпульсное регулирование мощности. В качестве симистора применен BTA12 (STM), подключенный через опторазвязку MOC3023 (схему детекта нуля не содержит). Схема микроконтроллера питается от сети через обычный понижающий транс.
Написал программу управления симистором. В ней полупериод делится на 100 частей и мощность регулируется от 0 до 100 проц с шагом 1 проц. Все работает и регулируется, но есть некое чувство неудовлетворенности/непонимания в вопросе управления симистором.
Дело в том, что на крайних значениях регулятора (примерно от 1 до 7 проц и от 98 до 100) наблюдается нечеткое управление. Связано это скорее не с ошибками в программе, а просто из соображений здравого смысла: на данных значениях симистор включается нечетко из-за нестабильности собсвенных параметров (Igt,Il,Ih) вкупе с некоторой нестабильностью сети.
Анализируя эту проблему, пришел к выводу, что управление симистором может быть осуществлено двумя способами:
1. Импульс на управляющем электроде имеет длительность на все необходимое время включения. Именно так сейчас и сделано. Работает замечательно. Осциллом можно наблюдать как изменяется скважность импульсов в цепи управления. Эффектов нестабильности на крайних значениях мощности абсолютно нет... Казалось бы все хорошо, но исходя из примененнной схемы включения через MOC3023, есть неуверенность... Где-то читал, что такой способ управления приведет к сильному нагреву симистора, однако у меня что-то он чуть теплый при нагрузке в виде лампы 100 Вт. (правда установлен на небольшом радиаторе).
2. Импульс в цепи управления имеет минимально возможную для надежного включения длительность. Тут сразу начинаются проблемы с нестабильным включением на крайних значения при регулировке, что и понятно... Предполагаю, что оптимальная длительность импульса должна быть не менее четверти полупериода.
Применение метода 2 нежелательно еще и по той причине, что этот метод несколько усложняет обработчики прерываний от датчика и по сравнению OCR1A. Если учесть, что в регуляторе хотелось бы реализовать еще и алгоритм Брезенхема, обработчики эти еще более усложнятся... Увеличивается и время реакции...
Итак, вопрос: все же разумно ли будет оставить метод 1 для избежания всяческих проблем?