Главная » Статьи » Полезная информация

Сетевой диммер 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.= Output
Opto Alias Portd.0
Opto = 0

Enable Interrupts
Enable Timer0
Start Timer0
Enable Int0

Wt = 195                                     'минимальный накал
= 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

 







 
      
                минимальный накал                        средний накал                                    максимальный накал


и не большое видео

 



 Управление лампочкой метод конечно не ограничивается, этим же способом можно управлять и другой нагрузкой - нагревателями, двигателями и пр.
 
 
 
 
Категория: Полезная информация | Добавлено: 26.04.2013
Просмотров: 49069 | Комментарии: 65 | Теги: dimmer | Рейтинг: 4.9/11
Всего комментариев: 651 2 3 »
0  
65 exersizze   (17.01.2017 10:03)
Конденсатор не имеет большого значения, скорее всего неправильная частота работы контроллера. Фьюзы не трогали? снимите предделитель на 8 (фьюз CKDIV8)

64 Prorokzv   (16.01.2017 23:05)
Подскажите пожалуйста конденсатор С1 у вас на 0,05 мкФ, я ничего не перепутал? Подключаю правда 0,047 мкФ схема не работает, либо включен либо выключен.

0  
63 exersizze   (28.12.2016 10:50)
Butsun, оптосимисторы со встроенным детектором нуля, типа МОС306х не годятся для регулировки накала ламп...

62 Butsun   (28.12.2016 00:16)
Вот, кому интересно... подключение нагрузки к МК... полезно) И есть хитрость, если использовать МОС3063, то ноль ловить нам не надо... http://eugenemcu.nichost.ru/articles/applications/268-mcu-triac

61 vakulyuk   (09.12.2016 14:49)
Спасибо) Я принцип действия понял, а вот откуда взялась именно цифра 195 не понял, теперь понял, что подобрали эксперементально.. У меня минимум получился 147, а на 146 уже в полный накал..

0  
60 exersizze   (09.12.2016 13:53)
pchela5, ну так это в военное, а у нас в мирное время все примерно)) Нашел ГОСТ 32144-2013 в котором сказано


Цитата
Номинальное значение частоты напряжения электропитания в электрической сети равно 50 Гц.

Для указанного показателя КЭ установлены следующие нормы:

- отклонение частоты в синхронизированных системах электроснабжения не
должно превышать ±0,2 Гц в течение 95% времени интервала в одну неделю и
±0,4 Гц в течение 100% времени интервала в одну неделю

59 pchela5   (09.12.2016 13:32)
> Полуволна в нашей электросети по времени длится примерно 10 мс

В военное время значение синуса может достигать трёх! © Как так примерно? 50 Гц обязаны держать сети, иначе рассинхронизация может пойти и всё накроется медным тазом.

0  
58 exersizze   (09.12.2016 12:43)
Чтобы понять откуда взялась цифра 195 надо сначала въехать в принцип работы: когда начинается новая полуволна (ток прошел через ноль), таймер начинает считать до своего переполнения и после этого откроет симистор. Если мы в него положим значение 255 тогда он переполнится практически сразу и симистор будет открыт все время пока ток снова не пройдет через ноль. Короче, симистор будет пропускать полуволну полностью. На следующей полуволне все повторится.

Теперь уменьшим стартовое значение таймера. Значит между прохождением тока через ноль и переполнением таймера пройдет больше времени, но чтобы получить минимальный накал необходимо чтобы таймер успел переполнится пока не закончилась та полуволна, которая запустила таймер



Полуволна в нашей электросети по времени длится примерно 10 мс, значит в таймер надо закладывать значение которое даст переполнение не позднее 10 мс.
У меня на практике с такой частотой работы контроллера и получилось минимальное значение 195.

57 vakulyuk   (09.12.2016 11:56)
А почему минимальный накал при 195? Насколько минимум можно занизить Wt?

+1   Спам
56 sany2   (20.11.2015 06:46)
добавить кнопки например:
pinc.1=input
pinc.0=input

вместо
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
Пишем
if pinc.0=0 then
decr Wt
end if
if pinc.0=0 then
incr Wt
end if

55 Eugene   (18.11.2015 20:43)
Уважаемый автор!!!
Помогите переделать вашу программу чтобы можно было с помощью кнопок +,- управлять выходной мощностью.
И почему-то ваша программа не хочет моделироваться в протеусе.
Помогите пожалуйста!!!
Заранее спасибо.

+1   Спам
54 aleksandr   (26.05.2014 21:47)
Моё сообщение от 18:33 - решено.

53 aleksandr   (26.05.2014 18:33)
Здравствуйте, друзья! Помогите переделать часть программы из этого примера, чтобы лампочка после разгорания не гасла, а так и оставалась включённой.

52 sasha_1973   (10.01.2014 18:05)
Пишите на форуме, Вам помогут.

51 sasha_1973   (10.01.2014 18:04)
Говорите что именно, скину на мыло

50 koteika   (10.01.2014 12:15)
уже нашел Ваш вариант http://bascomavr.3bb.ru/viewtopic.php?id=1113
проект в протеусе работает, жаль в исходнике все самое интересное на ассемблере, а я его вообще не понимаю:(.
от сюда прошивка работает в том-же проекте, пока не начинаю переделывать её под управление кнопками, и по UART. в чем проблема не пойму

49 sasha_1973   (10.01.2014 11:19)
Давайте почту, скину рабочий вариант.

48 koteika   (10.01.2014 10:41)
"Все равно что-то не получается включить симуляцию, т.е. симуляция работает пару секунд потом, останавливается:
https://dl.dropboxusercontent.com/u/52618061/Proteus.png"
та-же петрушка не работает симуляция((

47 sasha_1973   (10.01.2014 09:33)
Симуляцию не хотите добавить, у меня есть готовая, на 1 и 3 фазы?

46 exersizze   (26.12.2013 23:48)
dossalab, можно, но придется подбирать частоту чтобы время переполнения таймера осталось прежним (в отличии от 8и битного "нулевого таймера"  Timer1 считает до 65535).
Очень рекомендую ознакомится с этим http://decada.org.ru/project/lessons/bascom_avr/10/

45 dossalab   (25.12.2013 21:31)
Можно ли перевести устройство на Timer1?И как?

44 emmgold   (23.12.2013 14:26)
Вот тут http://forum.easyelectronics.ru/viewtopic.php?f=14&t=17314 интересная схема, если управлять полевиком ШИМ сигналом, то вполне получится вот такая картина но с очень узкими периодами, сильно меньше частоты. http://avrproject.ru/dimmer/sinuspwm1.png

43 exersizze   (22.12.2013 14:02)
emmgold , это почему же?

42 emmgold   (21.12.2013 16:16)
А если частоту ШИМ увеличить раз в 100. И париться не нужно.

41 myweb   (12.11.2013 01:59)
Все равно что-то не получается включить симуляцию, т.е. симуляция работает пару секунд потом, останавливается:
https://dl.dropboxusercontent.com/u/52618061/Proteus.png
https://dl.dropboxusercontent.com/u/52618061/noname1.hex

40 exersizze   (09.11.2013 22:21)
В протеусе есть инструменты для генерирования различных сигналов, в том числе и синуса



после того как вставили генератор на лист, двойной щелчек по нему и откроется окно настроек генератора, там можно задать частоту, амплитуду и много чего еще.

Проект для ознакомления по ссылке http://avrproject.ru/dimmer/dimmer.dsn

39 myweb   (09.11.2013 20:48)
Можно ли прикрепить архив проекта Proteus к статье? Только начинаю знакомство с микроконтроллерами и Proteus - много вопрос...
Скажите, как вы подаете переменное напряжение на схему в Proteus?

38 exersizze   (22.10.2013 01:46)
а ведь и вправда) спасибо! исправлю график.

+1   Спам
37 TomaTLAB   (22.10.2013 00:23)
"Если использовать управление с помощью ШИМ, ключ через который регулируем сигнал (например симистор) будет открываться и пропускать в нагрузку куски синусоиды, имеющие разную мощность. Как итог, никакого плавного регулирования не получится, а будет безупорядоченный сигнал на выходе"
Будет так, но не так как показано на картинке. Симистор откроется первым же импульсом и уже не закроется до перехода тока через ноль.

36 TomaTLAB   (22.10.2013 00:18)
И еще оно замечание касаемо двигателей. Единственное, ну кроме нагревателей и лампочек, да и то не всех :), что более мене "спокойно" относится к фазо-импульсному регулированию, это коллекторные двигатели.
Все остальное будет усиленно этому регулированию сопротивляться :)

1-30 31-60 61-65
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Часы, термометр, барометр, гигрометр в одном флаконе.
21.02.2017 - vlad860:
кто может собрать это устройство за оплату? не поймите не правильно просто взял ...
Регулятор температуры и влажности
21.02.2017 - Evgeny6873:
добрый день! Собрал Ваш девайс на DHT22, работает. Только влажность показывает 1...
Минитерминал V.3.0
21.02.2017 - selevo:
хороший труд
Но для таких решений есть любой андроид с установленым блюту...
Минитерминал V.3.0
19.02.2017 - exersizze:
пьезодинамик у меня подпаивается прямо к ножке микроконтроллера, на этой фотке в...
Минитерминал V.3.0
19.02.2017 - y_moroz:
На плате не нашел пьезодинамика. Он не нужен?
Направлятор
18.02.2017 - sany2:
Тут аудиопроц делал на td8425.Дисплей SH1106 попался.Тоже немцы помогли.Исходник...
Направлятор
14.02.2017 - Mrshilov:
Да, к N81 библиотека подойдет.
Направлятор
13.02.2017 - AlekS:
+++++... оригинальная штучка ) и оч. полезная, особо детям.) Mrshilov хотелось б...
Направлятор
13.02.2017 - RD3AVJ:
Автор привет)))) А для проекта вот такая платка уже с акселерометром и магнитоме...


Лучшие цены на 3D принтеры


Prusa i3

Prusa i3 от 12000 р.



Rostoсk

Rostock от 15000 р.