Световой диммер управляемый Arduino. Радиомодули APC220 подключение к Arduino Подключение APC220 к Arduino

Решил с Arduino поуправлять 220В нагрузкой не очень большой мощности - лампа, компьютер и т.д. Удобно было бы купить так называемое твердотельное реле - это силовой симистор + специальная схема и опторазвязка от управления.
На www.chip-dip.ru нашел всего за 210р S202T02 на ток аж до 16А - чайником управлять можно!. В магазине такого не было - обошелся отдельно симистором BT136-400 на ток 4А за 20р и драйвером с опторазвязкой к нему MOC3061 за 30р. Типовая схема включения по документации подразумевает RC-цепочку на выходе, но можно и без нее.
Отдельную плату городить не стал - собрал всю обвязку вокруг клеммника. Собственно выкладываю схему и фотографии получившейся железки.


В свете наступивших холодов в голову лезет вот такое применение:
Ставим симистор помощнее, вооружаемся Mirand"ой, плагином RemoteX, консольной терминалкой типа lnterm и по ICQ включаем обогреватель в квартире за час до прихода с работы:)
P.S. Еще вот такая идея есть - собрать на дачу имитатор присутствия - пусть периодически свет включает, радио/mp3 какое-нибудь, чтобы бомжи и всякая шушера не лезли. Тут даже компьютер не нужен. Ближе к лету надо попробовать.

Переключение нагрузки переменного тока с использованием Arduino довольно просто: используется либо механическое реле, либо твердотельное реле с оптически изолированным симистором. Становится немного сложнее, если необходимо уменьшать яркость лампы переменного тока используя Arduino: просто ограничивать ток симистором не представляется возможным из-за необходимости в мощном симисторе, и как следствие необходимости рассеивания большого количества тепла, а также это не эффективно с точки зрения использования энергии.

Правильным способом реализации является применение регулирования фазы: Симистор полностью открыт, но только в части синусоидальной волны переменного тока.
Можно просто открывать симистор на некоторое количество микросекунд при помощи Arduino, но проблема в том, что непредсказуемо в какой части синусоидальной волны симистор открывается и, следовательно, уровень затемнения непредсказуем. В синусоидальной волне необходима точка отсчета.

Для этого необходим детектор пересечения нуля. Это схема, которая сообщает Arduino (или другому микроконтроллеру), когда синусоидальная волна проходит через нуль и, следовательно, дает определенную точку на этой синусоидальной волне.

Открытие симистора на некоторое количество микросекунд, начиная от пересечения нуля, дает предсказуемый уровень затемнения.
Такую схему легко сделать: пересечение нуля берётся непосредственно из выпрямленного сетевого переменного тока - конечно через оптрон, и дает сигнал каждый раз, когда волна проходит через нуль. Так как синусоида сначала проходит двухфазное выпрямление, сигнал пересечения нуля подается независимо от того, вверх или вниз идет синусоидальная волна. Затем этот сигнал может быть использован для вызова прерывания Arduino.

Само собой разумеется, что должна быть гальваническая развязка между Arduino и сетью. Для тех, кто не понимает "гальваническая развязка", это значит "без металлических соединений", то есть ---> оптопарами.

Схема изображенная здесь делает именно это. Сетевое напряжение 220 Вольт идет к мостовому выпрямителю через два резистора 30кОм, который выдает двухфазный выпрямленный сигнал на оптрон 4N25. Светодиод в этом оптроне при низком уровне работает на частоте 100 Гц, а на коллекторе выходит сигнал высокого уровня с частотой 100 Гц в соответствии с синусоидальной волной. Сигнал с 4N25 подается на прерывающий вывод в Arduino (или другого микропроцессора). Программа прерываний дает сигнал определенной длины на один из портов ввода/вывода. Сигнал с порта ввода/вывода сигнала уходит в нашу схему и открывает светодиод в MOC3021, который запускает оптотиристор. Светодиод последовательно MOC3021 указывает, проходит ли ток через MOC3021. Имейте в виду, что при затемнении, свечение будет не очень видно из-за коротких вспышек. Если вы решили использовать тиристорный переключатель непрерывно, то светодиод будет гореть ясно.

Имейте в виду, что только обычные лампы накаливания действительно подходят для затемнения. Схема также будет работать с галогенной лампой, но это сократит срок службы галогенной лампы. Она не будет работать с любыми КЛЛ лампами, если они специально не сделаны с возможностью диммирования.

Если у вас есть оптрон H11AA11, то его использование описано ниже.
Предупреждение: Эта схема работает с напряжением 110-220В. Не делайте её, если вы не уверены в своих действиях. Отключайте её, прежде чем приблизиться к печатной плате. Радиатор симистора подключен к сети. Не прикасайтесь к нему во время работы и сделайте для него надлежащий корпус.

Эта схема безопасна, если она собрана человеком, который знает, что делает. Если вы понятия не имеете об этом или сомневаетесь в своих действиях, то вы можете погибнуть!

Материалы

Детектор пересечения нуля
4N25 или H11AA11 (см. текст).
Резистор 10кОм.
Мостовой выпрямитель 400В.
2x Резистор 30кОм 1/2 Вт (Скорее всего на каждом резисторе будет рассеиваться 200mW).
1 разъем.
Стабилитрон 5,1В(опционально).

Драйвер лампы
Светодиод
MOC3021
Резистор 220 Ом (я использовал 330 Ом, и всё хорошо работало).
Резистор 470 Ом-1кОм (Я закончил с использованием 560 Ом, и всё хорошо работало)
Симистор TIC206
1 разъем

Прочее
Кусок текстолит 6x3см.
Провода.

Плата

Я сделал плату при помощи и вытравил её в растворе солянной кислоты и перекиси водорода. В интернете есть много . Вы можете сделать плату, используя прилагаемый рисунок ПП. Сборка платы достаточно проста. Я использовал панельки для оптронов и мостового выпрямителя. Скачать рисунок платы и его зеркальную версию можно внизу статьи.

Примечание: рисунок платы имеет текст. В незеркальной версии рисунка текст зеркален, а в зеркальной версии рисунка текст не зеркален. Это правильно. При ЛУТ, отпечатанный рисунок переноситься непосредственно на медь, где он и выглядит правильно.

Я использовал TIC206. Он может выдавать 6 ампер. Имейте в виду, что проводники платы не выдержат 6 ампер. При подключении мощной нагрузки припаяйте провод на проводники от симистора к разъемам и на проводники ко вторым разъемам.

Если неясно значение контактов: сверху вниз по второй фотографии:
+5 вольт.
Сигнал прерывания (Digital Pin 2 Arduino).
Сигнал для симистор (выходит из Digital Pin 3 на Arduino).
GND.

ПРИМЕЧАНИЕ:
Если у вас есть оптрон H11AA11, то вам не нужен мостовой выпрямитель. H11AA11 имеет два не параллельных диода, и может работать с переменным током. Он совместим по выводам с 4N25, просто вставьте его в припоя и 2 перемычки между R5 и + и R7 и -.

Программа

Программа довольно проста. Нулевой Х сигнал генерируется в прерывании. Затем в прерывании симистор переключается на определенное время. Программа доступна ниже.

О программе: Теоретически в цикле можно было позволить переменной "i" начинается с "0 ". Однако, поскольку времени на прерывание мало, использование "0"(полностью вкл.) может немного испортить время. То же самое касается 128(полностью выкл.), хотя это кажется менее критичным. Точность "5" или, возможно, "1" является пределом настройки. Ваш диапазон может быть, например, от 2 до 126, вместо 0-128. Если у кого-то есть более точный способ настройки времени прерывания, я буду рад услышать его.

Результаты и применение

Посмотрите короткое видео о работе устройства, записанное на мобильный телефон.

Подобным способом можно сделать схему для смешивания RGB светодиодов. Это также возможно с текущей схемой, но необходимы две дополнительных симисторных схемы. Разумеется, нужен только один детектор пересечения нуля.

Также возможно сделать традиционную (назовем ей старомодной) гирлянду для рождественской елки, работающую непосредственно от 220 (или 110) вольт. Повесьте 3 провода с разными лампами на дерево и регулируйте их при помощи этой схемы с двумя дополнительными симисторными схемами.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
T1 Симистор TIC206 1 В блокнот
T4 Оптопара

MOC3021M

1 В блокнот
T5 Оптопара

4N25M

1 В блокнот
BR1 Диодный мост 400 В 1 В блокнот
Резистор

220 Ом

1 В блокнот
Резистор

1 кОм

1

Подключить на прямую к Arduino мощную нагрузку, например лампу освещения или электронасос не получится. Микроконтроллер не обеспечивает необходимую мощность, для работы такой нагрузки. Ток, который может протекать через выходы Arduino, не превышает 10-15 мА. На помощь приходит реле, с помощью которого можно коммутировать большой ток. К тому же, если нагрузка питается от переменного тока, например 220v, то без реле ни как вообще не обойтись. Для подключения мощных нагрузок к Arduino через реле, обычно используют реле модули.

В зависимости от количества коммутируемых нагрузок, применяют одно-, двух-, трёх-, четырёх- и более канальные реле модули.

Свои, одно и четырёх канальные модули, я купил на Aliexpress, за $ 0,5 и $ 2.09 соответственно.

Устройство реле модуля для Arduino, на примере 4-х канального модуля HL-54S V1.0.

Рассмотрим более детально устройство данного модуля, по данной схеме обычно строятся все многоканальные модули.

Принципиальная схема модуля .

Для защиты выводов Ардуино от скачков напряжения в катушке реле, применяется транзистор J3Y и оптрон 817C. Обратите внимание, сигнал с пина In подаётся на катод оптрона. Это значит, для того что бы реле замкнуло контакты, нужно подать на пин In логический 0 (инвертированный сигнал).

Так же бывают модули, у которых сигнал с пина In подаётся на анод оптрона. В таком случае, нужно подать логическую 1 на пин In , для срабатывания реле.

Мощность нагрузки, которую могут включать / отключать модули, ограничивается установленными на плате реле.

В данном случае используются электромеханические реле Songle SRD-05VDC-SL-C , имеющее следующие характеристики:

Рабочее напряжение: 5 В
Рабочий ток катушки: 71 мА
Максимальный коммутируемый ток: 10А
Максимальное коммутируемое постоянное напряжение: 28 В
Максимальное коммутируемое переменное напряжение : 250 В
Рабочий температурный режим: от -25 до +70°C

Реле Songle SRD-05VDC-SL-C имеет 5 контактов. 1 и 2 питание реле. Группа контактов 3 и 4 представляют из себя нормально разомкнутые контакты (NO ), группа контактов 3 и 5 - нормально замкнутые (NC ).

Подобные реле бывают на различные напряжения: 3, 5, 6, 9, 12, 24, 48 В. В данном случае используется 5-вольтовый вариант, что позволяет питать реле-модуль непосредственно от Arduino.

На плате имеется перемычка (JDVcc ), для питания реле либо от Arduino, либо от отдельного источника питания.

Пинами In1 , In2 , In3 , In4 модуль подключается к цифровым выводам Arduino.

Подключение реле модуля HL-54S V1.0 к Arduino.

Поскольку у нас модуль с 5-вольтовыми реле, подключим его по такой схеме, питание возьмём от самой Ардуино. В примере подключу одно реле, в качестве нагрузки буду использовать лампочку на 220 в.

Для питания реле модуля от Arduino, перемычка должна замыкать пины «Vcc » и «JDVcc », обычно по-умолчанию она там и установлена.

Если у вас реле не на 5 вольт, питать от Ардуино модуль нельзя, питание нужно брать от отдельного источника.

Нижеприведённая схема показывает, как подключить питание модуля от отдельного источника. По такой схеме нужно подключать реле, рассчитанное на питание от более или менее чем 5 В. Для 5-вольтовых реле эта схема так же будет более предпочтительная.

При таком подключении нужно убрать перемычку между пинами «Vcc » и «JDVcc ». Далее пин «JDVcc » подключить к «+ » внешнего источника питания, пин «Gnd » подключить к «- » источника питания. Пин «Gnd », который в предыдущей схеме подключался к пину «Gnd » Ардуино, в данной схеме не подключается. В моём примере, внешний источник питания 5 В, если ваше реле рассчитано на другое напряжение (3, 12 ,24 В), выбираете соответствующее внешнее питание.

Скетч для управления реле модулем через Ардуино.

Зальём в Ардуино скетч, который будет сам включать и отключать лампочку (мигалка).

int relayPin = 7;

void setup() {
pinMode(relayPin, OUTPUT);
}

void loop() {
digitalWrite(relayPin, LOW);
delay(5000);
digitalWrite(relayPin, HIGH);
delay(5000);
}

В строке int relayPin = 7; указываем номер цифрового пина Arduino , к которому подключали пин In1 реле модуля. Можно подключить на любой цифровой пин и указать его в этой строке.

В строке delay(5000); можно менять значение времени, при котором лампочка будет гореть и при котором будет погашена.

В строке digitalWrite(relayPin, LOW); указано, при подаче логического нуля (LOW ), реле-модуль замкнёт контакты и лампочка будет гореть.

В строке digitalWrite(relayPin, HIGH); указано, при подаче логической единицы (HIGH ), реле-модуль разомкнёт контакты и лампочка погаснет.

Как видим, в строке digitalWrite(relayPin, LOW); оставили параметр LOW . Если реле замкнёт контакты и лампочка загорится, значит на пин In1 вам нужно подавать логический нуль, как и у меня. Если лампочка не загорится, зальём скетч, в котором заменим параметр LOW на HIGH.


Результат скетча на видео.

Теперь давайте добавим в схему тактовую кнопку и при нажатии на неё, реле-модуль будет включать лампочку.

Кнопку подключаем вместе с подтягивающим резистором на 10к, который не позволит внешним наводкам влиять на работу схемы.

Заливаем скетч

В строкеif(digitalRead(14)==HIGH) задаём номер цифрового пина, на котором подключена кнопка. Подключать можно на любой свободный. В примере эта аналоговый пин A0 , его же можно использовать в качестве цифрового 14 пина.

В строке delay(300); задаётся значение в миллисекундах. Это значение указывает, через какое время после нажатия или отпускание кнопки, нужно производить действия. Это защита от дребезга контактов.

Для информации! Все аналоговые входы от A0 (нумеруется как 14) до A5 (19), можно использовать как цифровые (Digital PWM ).

В заключении результат выполнения скетча на видео.

Более дешёвые реле-модули могут не содержать в своей схеме оптрона, как например в моём случае с одноканальным модулем.



Схема одноканального реле-модуля . Производитель сэкономил на оптроне, из-за чего Ардуино плата лишилась гальванической развязки. Для работы такой платы, на пин In нужно подавать логический нуль.

Подключение реле модуля к Arduino Due.

Arduino Due работает от 3,3 вольт, это максимальное напряжение, которое может быть на его вводах / выводах. Если будет более высокое напряжение, плата может сгореть.

Возникает вопрос, как подключить к реле модуль?

Убираем перемычку JDVcc. Подключаем пин «Vcc » на плате реле модуля к пину «3,3V » Arduino. Если реле рассчитано на 5 вольт, соединяем пин «GND » платы реле модуля, с пином «GND » Arduino Due. Пин «JDVcc » подключаем к пину «5V » на плате Arduino Due. Если реле рассчитано на другое напряжение, то питание к реле подключаем как на рисунке, в примере это 5 вольт. Если у вас многоканальный реле модуль, пожалуйста проверьте что бы «JDVcc » подключен к одной стороне всех реле. Оптопара активируется сигналом 3,3 В, которая в свою очередь активирует транзистор, используемый для включения реле.

Твердотельное реле из симистора для коммутации мощной нагрузки через Ардуино

Данная статья также будет составной частью в дальнейшей сборке дистанционно управляемой машинки.

Компоненты для повторения (купить в Китае):

Для начала скачаем два файла:
Драйвер для APC220 (Windows XP/Vista/7)
Программа для конфигурации APC220

После загрузки распаковываем архив с драйверами и устанавливаем их.
Теперь можно перейти к настройке модулей.

Настройка модулей

Примечание: все модули, с которыми нам приходилось работать, шли с корректными заводскими настройками, а именно одинаковым адресом. Следовательно, этот шаг можно пропустить и перейти ко второй части статьи. Только в случае каких-либо проблем вернитесь к нему и измените адреса модулей.

Настройка модулей

1 . Подключаем модуль к компьютеру, используя USB/TTL переходник, идущий в комплекте. Модули представленные в нашем магазине одной из последних версий, распиновка модуля и USB переходника одинаковы по количеству выводов. Втыкаем их друг в друга без каких-либо то сдвигов. P.S. если у вас старая модель, то будьте осторожны, разъемы могут быть разными по количеству выводов и их необходимо будет правильно сопоставить.

2 . Открываем программу для конфигурации APC220 и выбираем COM порт, на который установился наш модуль. Учтите, на официальном сайте указано, что если устройство определилось на COM порт с номером больше 4 - возможны проблемы при работе с программой конфигурации RF-ANET. Если вашему модулю назначен такой номер порта - открываем статью " . Переназначение порта для устройства" и находим там решение.

3 . Для корректной работы модулей, они должны иметь одинаковые NET ID и NODE ID. NET ID может принимать значения от 0 до 255. NODE ID - от 1 до 65534.
Установим, например, следующие значения.

4 . Нажимаем Write. Как видно - всё хорошо.

Повторяем шаги 1-4 для второго модуля.

В результате модули имеют одинаковые адреса и готовы к работе.
Чтобы узнать текущие настройки модуля, используется кнопка Read в приложении RF-ANET.

Подключение APC220 к Arduino

Работа с радиомодулями APC220 точно такая же как с блютузом.

В качестве реального примера выполним небольшой алгоритм.

Печатаем и посылаем символы в монитор порта => Радиомодуль на стороне компьютера транслирует отправляемые значения => Радиомодуль на стороне Arduino принимает значения и передает их на Arduino => Arduino обрабатывает данные и при совпадении с заданными в коде символами выполняет действие (вкл/выкл светодиод pin13)

пример программного кода

Int val; int LED = 13; void setup () { Serial .begin (9600); pinMode (LED, OUTPUT ); } void loop () { if (Serial .available ()) { val = Serial .read (); // При символе "W" включаем светодиод if (val == "W" ) { digitalWrite (LED, HIGH ); } // При символе "S" выключаем светодиод if (val == "S" ) { digitalWrite (LED, LOW ); } } }

После заливки скетча ОБЯЗАТЕЛЬНО отключаем Arduino плату от USB и подключаем внешнее питание. При использовании питания от USB происходит конфликт и устройство не будет корректно работать.