Несмотря на наличие в схеме микроконтроллера, это довольно простое устройство, предназначенное для регулирования мощности паяльника либо любой другой подходящей по мощности нагрузки, что питается от 220 В.
Схема фазового регулятора мощности
Что касается принципиальной схемы, здесь нет ничего необычного – контроллер AT90S2313S типичная синхронизация с сетью на PC814, управление симистором через оптрон MOC3021, а также симистор без защиты.
Значение настройки (от 0 до 100) умножается на 100 мс, давая задержку переключения симистора (от 0 до 10 мс).
Как видите, в схеме есть бестрансформаторный БП, благодаря которому плата вышла относительно небольшая, односторонняя, всего несколько элементов SMD типа, остальные полноразмерные.
Алгоритм управления микроконтроллером стандартный. В начале настройки:
// настройка таймеров и прерываний
TCCR1B | = (1 << WGM12); // Устанавливает таймер1 в режим CTC
OCR1A = 40000; // Устанавливает желаемое значение …
TCCR1B | = (1 << CS10); // Установить таймер с прескалером Fcpu / 1TCCR0A | = (1 << WGM01); // Устанавливает таймер в режим CTC
OCR0A = 100; // Устанавливает желаемое значение 10000 Гц для прескалера 8
// TCCR0B | = (1 << CS01); // Установить таймер с помощью прескалера Fcpu / 8TIMSK | = (1 << OCIE0A); // Разрешение на отмену CTC для T0
TIMSK | = (1 << OCIE1A); // Разрешение на отмену CTC для T1// MCUCR | = _BV (ISC00); // включить генерацию прерываний с помощью
MCUCR | = _BV (ISC01);
GIMSK | = (1 << INT0); // включить поддержку прерываний Int0TRIAK_OFF ();
_delay_ms (500);
(SEI);
T1 от мультиплексирования и T0 от вычисления задержки. Хорошо видно, что его прерывание происходит не каждые 100 тактов / 8 или каждые 100 мкс. Далее прерывание от INT0 – синхронизация:
ISR (INT0_vect)
{
GTCCR | = _BV (PSR10); // сбросить таймер прескалераTCNT0 = 0; // сбросить таймер
START_TIMER0; // запускаем таймер 0
TRIAK_OFF (); //
Удаление импульсов запускает:
counter_10ms ++;
// дополнительные плюсы – мигающая точка:
if (counter_10ms% 50 == 0) second = ~ second;
// обратный отсчет до сна
if (counter_10ms> = 6000)
{
counter_minutes ++;
counter_10ms = 0;
}
}
И для правильной работы регулировки фазы рассчитывается задержка переключения симистора:
ISR (TIMER0_COMPA_vect)
{
counter_100_us ++;
if (counter_100_us> = заданное значение)
{
STOP_TIMER0; // остановить таймер 0
TRIAK_ON;
_delay_us (20);
TRIAK_OFF ();
counter_100_us = 0;
}
}
Схема вполне широко используется. От регулирования мощности паяльника, до яркости лампочек или мощности нагрева разных нагревателей (будет необходим конечно радиатор), или скорости вращения дрели и подобных устройств.
Кроме того, после замены 3-х резисторов он может регулировать мощность нагрева низковольтного паяльника (до 24 В) или даже работать в качестве простого регулятора однофазного сварочного аппарата.