Трехрелейная плата для управления нагрузкой с помощью ИК-пульта - Своими руками
Своими руками

Трехрелейная плата для управления нагрузкой с помощью ИК-пульта

>

В этой статье мастер-самодельщик расскажет нам, как он изготовил плату на базе Arduino, которая может управляться с помощью любого универсального ИК-пульта дистанционного управления. Плата имеет 3 реле и может использоваться для управления различной нагрузкой (вентиляторы, освещение и т.д.) мощностью менее 1000 Вт.
Инструменты и материалы:-Паяльные принадлежности;-Мультиметр;-Провода;-Релейный модуль – 3 шт;-Транзистор BC547 – 3 шт;-Оптопара PC817 – 3 шт;
-Atmega328p или Arduino;
-Кристалл 16 МГц;-Резистор 1 кОм – 9 шт;-Резистор 10К;-Конденсатор 22 пФ – 2 шт;-Конденсатор 100 нФ;-Винтовые клеммы – 3шт;-5 мм красный светодиод – 3шт;
-Резистор 100 Ом;
-Печатная плата;-Батарея 9В;-Диод 1N4007 – 3 шт;-ИК-приемник TSOP 1738;
Трехрелейная плата для управления нагрузкой с помощью ИК-пультаШаг первый: декодирование сигнал ИК-пульта
Каждая цифра / кнопка ИК-пульта дистанционного управления имеет идентификационный номер. Он выдается микроконтроллером внутри пульта дистанционного управления и передается через ИК-светодиод. Эти данные представлены в виде чередований 0 и 1. Чтобы понять какой код “передается” каждой кнопкой, нужно захватить их и декодировать. Сделать это можно с помощью несложной схемы на базе Ардуино.
Трехрелейная плата для управления нагрузкой с помощью ИК-пультаТрехрелейная плата для управления нагрузкой с помощью ИК-пультаТрехрелейная плата для управления нагрузкой с помощью ИК-пультаПодробней как декодировать любой ИК-пульт с помощью Arduino можно ознакомится по этой ссылке.

Шаг второй: схема и плата
Согласно принципиальной схеме мастер производит монтаж платы. Сначала устанавливает все реле и соответствующие им винтовые клеммы. Затем устанавливает все остальные компоненты: транзистор, оптрон, резисторы, диоды и светодиоды. Используя ту же идею, можно увеличить количество каналов с одного до трех и даже больше. Максимальное количество каналов ретрансляции, которые могут поддерживаться этим методом, – 12.

После блока управления схемой устанавливает микроконтроллер и схему питания. Для этого мастер использует популярный микроконтроллер Arduino Atmega328p- 8bit. Этого более чем достаточно для проекта такого типа, Atmega328p работает на кристалле 16 МГц и также имеет функцию EEPROM (память). EEPROM помогает запоминать последнее состояние реле при отключении или отключении питания.
Наконец, подключает ИК-приемник TSOP-1738 и для считывания значения шестнадцатеричных данных с помощью цифрового входного вывода Arduino. Код точно включает / выключает соответствующее реле, как указано в коде.
Батареи на 9В достаточно для правильного питания схемы. Микроконтроллер и реле работают от 5В, поэтому при использовании 9-вольтовой батареи необходимо использовать регулятор 5В (7805).
Трехрелейная плата для управления нагрузкой с помощью ИК-пультаТрехрелейная плата для управления нагрузкой с помощью ИК-пультаТрехрелейная плата для управления нагрузкой с помощью ИК-пультаТрехрелейная плата для управления нагрузкой с помощью ИК-пультаПлату можно сделать самостоятельно или заказать ее изготовление промышленным способом. Файлы для изготовления платы можно скачать здесь
Трехрелейная плата для управления нагрузкой с помощью ИК-пультаТрехрелейная плата для управления нагрузкой с помощью ИК-пультаТрехрелейная плата для управления нагрузкой с помощью ИК-пульта.
Шаг третий: работа устройства
Каждая кнопка на ИК-пульте имеет разные шестнадцатеричные числа (код). Если нужно включить / выключить устройство, понадобятся две кнопки ИК-пульта. Одна для включения, другая для выключения того же устройства.

Для включения/выключения 3-х канального реле нужны шесть кнопок. Кроме того, если нужно включить / выключить все устройства одновременно, понадобятся еще две кнопки. Всего на ИК-пульте должно быть 8 кнопок.
При нажатии кнопки на пульте ИК-данные будут захвачены на стороне приемника, и микроконтроллер декодирует данные, немедленно включив / выключив соответствующий контакт.

Этот код управляет только цифровыми выводами Arduino. Для включения / выключения любой нагрузки нельзя напрямую установить реле на какой-либо микроконтроллер без схемы управления и переключения. Вот почему здесь используется комбинация оптопары и транзистора NPN в качестве переключателя для правильного управления реле. Соответствующую библиотека ИК можно загрузить здесь
Трехрелейная плата для управления нагрузкой с помощью ИК-пульта.
Шаг четвертый: код
Соответствующую библиотека ИК можно загрузить здесь
Этот код написан для 4-х канального реле, но он отлично работает и на этой плате 3-канального реле.
Код можно скачать ниже.
Трехрелейная плата для управления нагрузкой с помощью ИК-пульта Показать / Скрыть текст/* hello guys this code is designed by Sagar saini, youtube channel- sagar networks

* follow us on hackster using this link

* If the code not work, try to update IR libraries or download new and compatible library from my website.

* link: https://drive.google.com/file/d/14ooV9b64H_579zfkCLHSwh-WmZjaBadH/view?usp=sharing this code is 4 channel relay/ but work fine on this 3 channel relay pcb.

* To decode the data of any universal ir remote follow this link:

https://www.hackster.io/sainisagar7294/arduino-based-ir-remote-decoder-ac67c4

* I am always available on Instagram so please check out me there: saini_sagar_7294

*/

#include <IRremote.h>

const int RECV_PIN=8;

IRrecv irrecv(RECV_PIN);

decode_results results;

#define Relay1 12 // Load1 Pin Out

#define Relay2 11 // Load2 Pin Out

#define Relay3 10 // Load3 Pin Out

#define Relay4 9 // Load4 Pin Out

int load1, load2, load3, load4, power;

void setup()

{

Serial.begin(9600);

pinMode(Relay1, OUTPUT); // declare as output for Load1 Pin Relay1

pinMode(Relay2, OUTPUT); // declare as output for Load2 Pin Relay2

pinMode(Relay3, OUTPUT); // declare as output for Load3 Pin Relay3

pinMode(Relay4, OUTPUT); // declare as output for Load4 Pin Relay4

digitalWrite(Relay1, 0); // Turn Off Load1

digitalWrite(Relay2, 1); // Turn Off Load2

digitalWrite(Relay3, 1); // Turn Off Load3

digitalWrite(Relay4, 1); // Turn Off Load4

irrecv.enableIRIn(); // Start the receiver

irrecv.blink13(true);

}

void loop() {

if (IrReceiver.decode())

{

Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);

if(IrReceiver.decodedIRData.decodedRawData==0xED127F80){ // For Load1 ON ( change the hex value ED127F80 to your remote value)

load1 = 0;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xE51A7F80){ // For Load1 Off

load1 = 1;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xFE017F80){ // For Load2 On

load2 = 0;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xFD027F80){ // For Load2 Off

load2 = 1;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xFB047F80){ // For Load3 On

load3 = 0;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xFA057F80){ // For Load3 Off

load3 = 1;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xF8077F80){ // For Load4 On

load4 = 0;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xF7087F80){ // For Load4 Off

load4 = 1;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xE11E7F80){ // For Load4 Off

load1=0;

load2=0;

load3=0;

load4=0;

}

else if(IrReceiver.decodedIRData.decodedRawData==0xFC037F80){ // For Load4 Off

load1=1;

load2=1;

load3=1;

load4=1;

}

irrecv.resume(); // Receive the next value

delay(100);

}

if(power==1){

digitalWrite(Relay1, 1); // Turn Off Load1

digitalWrite(Relay2, 1); // Turn Off Load2

digitalWrite(Relay3, 1); // Turn Off Load3

digitalWrite(Relay4, 1); // Turn Off Load4

}else{

digitalWrite(Relay1, load1);

digitalWrite(Relay2, load2);

digitalWrite(Relay3, load3);

digitalWrite(Relay4, load4);

}

delay(500);

}
Все готово.
Трехрелейная плата для управления нагрузкой с помощью ИК-пультаВ будущих обновлениях мастер планирует сделать эту схему более компактной и увеличить скорость микроконтроллера – просто заменив ее версией STM. Так же планируется функция EEPROM в коде и возможность подключения Bluetooth или Wi-Fi.

SitesReady

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.