Большинство людей делают это с помощью триаков. Триак похож на два параллельных диода (параллельно, но с перевернутой полярностью) с триггерным выводом. Симистор проводит ток в любом направлении только при его срабатывании. После срабатывания он действует как обычный диод и продолжает работать до тех пор, пока ток не упадет ниже своего порога.
Вы можете видеть это как двунаправленный переключатель на линии переменного тока и может изменять средний ток, вызывая его в различные моменты относительно момента, когда синусоида переменного тока пересекает ноль.
Грубо говоря, это работает так: при нулевом синусоидальном переменном токе диоды выключаются, а лампа не получает никакой энергии. Если вы активируете диоды, скажем, на полпути через синусоидальные колебания, ваша лампа получит половину нормального тока, который она получит, поэтому она загорается с половиной своей мощности, пока синусоида снова не пересечет ноль. В этот момент вы начинаете все сначала.
Если вы активируете триак раньше, ваша лампа будет получать ток в течение более длительного промежутка времени, светясь ярче. Если вы активируете последний триак, ваша лампа светится тусклее.
То же самое относится к любой нагрузке переменного тока.
Это почти тот же принцип ШИМ для DC. Вы включаете и выключаете ваш источник тока быстрее, чем ваша нагрузка может среагировать. Время его включения пропорционально току, который получит ваша нагрузка.
Как ты это делаешь со своим Arduino?
Проще говоря, вы должны сначала найти нулевое пересечение сети, затем установить таймер / задержку и по ее окончании активировать триак.
Для обнаружения перехода через ноль обычно используется оптопара. Вы соединяете светодиодную сторону соединителя с сетью, а транзисторную сторону - с контактом прерывания вашего Arduino.
Вы можете подключить контакты ввода-вывода arduino напрямую к триггерам триаков, но я бы использовал другую оптопару, чтобы быть в безопасности.
Когда синусоида приближается к нулю, вы получаете импульс на вашем выводе прерывания.
На этом прерывании вы устанавливаете таймер. чем дольше таймер, тем меньше энергии получит ваша нагрузка. Вы также сбрасываете состояние контактов ваших триаков.
В этом прерывании таймеров вы устанавливаете свои IO выводы для запуска триаков.
Конечно, вы должны немного разбираться в аппаратной части, чтобы не жарить свою доску и не сжечь свой дом,
И само собой разумеется, что вы должны быть осторожны, чтобы не покончить с собой при работе с сетью переменного тока =).
ЗДЕСЬ - это проект, который заставил меня начать некоторое время назад.
Он использует AVR, поэтому его легко адаптировать к Arduino.
Это также довольно полно, со схемами.
Их программное обеспечение немного сложнее, поэтому вы должны начать с чего-то более простого.