Главная » Статьи » Полезная информация |
Сетевой диммер 220V на микроконтроллере
Сегодня я поделюсь результатами своих экспериментов в области управления нагрузками, подключенными к бытовой сети 220 вольт. А именно займемся диммированием - будем плавно зажигать и гасить лампочку накаливания с помощью микроконтроллера.
На первый взгляд тут ничего сложного нет - используем ШИМ и регулируем в свое удовольствие. Но не стоит забывать что напряжение в розетке переменное, а значит что сделать это будет немного сложнее. Дальше будет немного теории, схема и метод управления.
При работе с высоким сетевым напряжением следует быть осторожным и внимательным! Ни в коем случае не дотрагиваться до оголенных участков схемы.
Так почему же нельзя в данном случае использовать простой шим сигнал?
Как известно в розетке у нас переменное напряжение синусоидальной формы, как на рисунке ниже.
Если использовать управление с помощью ШИМ, ключ через который регулируем сигнал (например симистор) будет открываться и пропускать в нагрузку куски синусоиды, имеющие разную мощность. Как итог, никакого плавного регулирования не получится, а будет безупорядоченный сигнал на выходе:
Для того чтобы этого избежать, мы должны знать когда включать и выключать симистор, то есть привязать управляющий сигнал к управляемому. Как? Все просто, достаточно знать когда сигнал проходит через 0. Зная где начинается каждая следующая полуволна мы сможем открывать ключ в нужные моменты, тем самым отдавая нагрузке одинаковую мощность. А изменяя время, которое управляющий ключ находится в открытом состоянии мы можем плавно изменять отдаваемую мощность.
Момент прохождения сетевого напряжения через 0, можно определять с помощью оптопары. Для того чтобы детектировать начало каждой полуволны (и отрицательной и положительной) оптопару подключаем через диодный мост. Таким образом на выходе детектора нуля получаем короткие положительные импульсы в момент когда напряжение в сети проходит через 0. Для наглядности приведу картинку с виртуального осциллографа смоделлированной схемы в proteus. Синим цветом изображен исходный сигнал (~220V), красным - сигнал после выпрямления диодным мостом. Зеленым цветом изображены импульсы на выходе оптопары U3.
Сигнал с детектора нуля можно завести на вход внешнего прерывания, чтобы ловить начало новой полуволны, а дальше открывать симистор U4 (я использовал BT16-600) на необходимое время. Для опторазвязки я использовал оптосимистор MOC3022 (U2).
Остается только подсчитать время на которое нужно открывать симистор. При частоте сетевого напряжения равной 50 Гц время полупериода (длительность одной полуволны) составит 0,01 сек. То есть если мы откроем симистор на 0,005 сек, мы пропустим половину полуволны, мощность составит 50%, если откроем симистор на 0,01 сек (или больше), пропустим всю полуволну и отдаваемая мощность составит 100%. Тут думаю все понятно.
код в Bascom-AVR
$regfile = "attiny2313.dat"
$crystal = 8000000 Dim N As Bit '1-плавно зажигаем лампочку, 0-гасим Config Int0 = Falling On Int0 Imp Config Timer0 = Timer , Prescale = 1024 'переполнение за 0,032 сек Dim Wt As Byte On Timer0 Perepolnenie Config Portd.0 = Output Opto Alias Portd.0 Opto = 0 Enable Interrupts Enable Timer0 Start Timer0 Enable Int0 Wt = 195 'минимальный накал N = 1 Wait 2 Do 'бесконечный цикл Loop End Imp: 'прерывание от детектора нуля Timer0 = Wt 'чем большее значение сюда положим, тем быстрее переполнится таймер Start Timer0 If N = 1 Then 'плавно зажигаем лампу Incr Wt 'увеличиваем до максимального значения If Wt = 255 Then N = 0 End If Else 'плавно гасим Decr Wt 'уменьшаем до минимального значения If Wt = 195 Then N = 1 End If End If Return Perepolnenie: 'переполнение таймера Stop Timer0 'останавливаем таймер Opto = 1 'включение симистора Waitus 100 Opto = 0 'выключение оптосимистора Return минимальный накал средний накал максимальный накал и не большое видео Управление лампочкой метод конечно не ограничивается, этим же способом можно управлять и другой нагрузкой - нагревателями, двигателями и пр. | |
Просмотров: 89180 | Комментарии: 65
| Теги: |
Всего комментариев: 65 | 1 2 3 » | ||||||||||||||||||||||||
| |||||||||||||||||||||||||
1-30 31-60 61-65 | |||||||||||||||||||||||||
авторизация
рубрики
Проекты [46] |
Как подключить [32] |
Инструменты [3] |
Полезная информация [18] |
Объявления [3] |
метки