как подключить релейный модуль к Ардуино?

OlegKireen
Offline
Зарегистрирован: 29.11.2016

1CH5VRMA-1.jpgVCC +5V.

GND земля.

IN Сигнал.

продрема в том что на IN надо подключить землю (GND) тогда реле включается, а с выхода при HIGH +5V. а при LOW 0V а не земля.

 

 

 

 

 

 

 

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

OlegKireen пишет:

продрема в том что на IN надо подключить землю (GND) тогда реле включается, а с выхода при HIGH +5V. а при LOW 0V а не земля.

на IN нужно подключать OUT контроллера.

*публикуй код счетча с которым у тебя не работает.

OlegKireen
Offline
Зарегистрирован: 29.11.2016

Код я выложу. Принцып тоже понятен из раздела програмирования. Но проблема как я подозреваю в том что в этих реле стоит оптрон и из-за этого нет цепи. Вот я и спрашиваю чтоб был не 0V а имено земля.

HIGH

HIGH может обозначать несколько разное в зависимость от уставки режима порта как INPUT или OUTPUT. Когда порт вход/выхода установлен в режим INPUT с помощью функции pinMode, и считывается функцией digitalRead, микроконтроллер отдаст значение HIGH при напряжение 3В или выше на указанном порту.

Также порт может быть установлен как INPUT функцией pinMode, и затем установлен в  HIGH значение функцией digitalWrite. Это подключит к порту внутренний подтягивающий резистор 20K, что позволит получать постоянное значение HIGH при чтение этого порта, если только значение не будет приведено к LOW внешней цепью подключенной к этому порту.

Когда порт вход/выхода сконфигурирован как OUTPUT функцией pinMode, и установлено значение HIGH функцией digitalWrite, на порту будет постоянное напряжение 5В. От этого порта может быть запитан светодиод, подключенный через резистор на землю или к другому порту, сконфигурированному как OUTPUT и установленному в LOW.

LOW

Значение LOW также разное для режима INPUT и OUTPUT. Когда порт сконфигурирован как INPUT, и считывается функцие digitalRead, микроконтроллер вернет LOW если напряжение на данном порту меньше или равно 2В.

Если же порт установлен в OUTPUT и LOW, то напряжение на выходе порта будет 0 Вольт. К этому порту можно подключать нагрузку как к земле, как описано выше на примере светодиода.

 

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

OlegKireen пишет:

Но проблема как я подозреваю

ок. код и схему подключения - сюда.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

OlegKireen 

0V и земля это одно и то же.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Jeka_M пишет:

0V и земля это одно и то же.

0V - это 0V, а не земля.

OlegKireen
Offline
Зарегистрирован: 29.11.2016
// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);




int a = 0; // время загрузки в секундах
int b = 1; // время задержки в секундах
int c = 40; // время предварительный вакуум в секундах
int d = 10; // время пропарки в секундах
int de = 90; // время задержки перед ваккумом
int e = 120; // время вакуумное охлаждение в секундах
int f = 200; // время остывание в секундах
int t = 0;
int k = 1;
int r = 1;
int ra = 1;


void setup() {
  // put your setup code here, to run once:
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.


  pinMode(30, OUTPUT); // инжектор
  pinMode(31, OUTPUT); // улитка
  pinMode(32, OUTPUT);// пар №1
  pinMode(33, OUTPUT);//пар №2
  pinMode(34, OUTPUT);// Вакуум №1
  pinMode(35, OUTPUT); // Вакуум №2
  pinMode(36, OUTPUT); // Батерфляй охлаждения откр.
  pinMode(37, OUTPUT); // Батерфляй охлаждения закр.
  pinMode(38, OUTPUT); // Фонарь блок готов.
  pinMode(39, OUTPUT); // Фонарь открівания двери.

}
byte key() { //// для кнопок ЛСДшилда
  int val = analogRead(0);
  if (val < 50) return 5;
  else if (val < 170) return 3;
  else if (val < 350) return 4;
  else if (val < 500) return 2;
  else if (val < 750) return 1;
  else return 0;
}
byte kay() { //// для кнопок ЛСДшилда
  int vel = analogRead(10);
  if (vel < 50)
    digitalWrite(39, HIGH) ;
  else digitalWrite(39, LOW) ;;
}


void loop() {
  digitalWrite(37, HIGH); // включен канал №34


  lcd.clear();
  lcd.setCursor(0, 0);         // Шапка меню
  lcd.print("MENU -> SELECT");
  lcd.setCursor(0, 1);
  lcd.print("START -> START");


  while (k == 1) {

    if (key() == 5) {        // ловушка для цыкла
      k = k + 1;
    }
    if (key() == 1) {
      t = t + 1;
    }
    switch (t) {
      case 1:
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("#1 ZAGRUZKA");
        lcd.setCursor(0, 1);
        if (key() == 3) {
          a = a + 1;
        }
        if (key() == 4) {
          a = a - 1;
        }
        lcd.print("Znah v c. <");
        lcd.print(a);
        lcd.print(">");
        delay(100);
        break;

      case 2:
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("P#2 *ZADERGHKA*");
        lcd.setCursor(0, 1);
        if (key() == 3) {
          b = b + 1;
        }
        if (key() == 4) {
          b = b - 1;
        }
        lcd.print("Znah v c. <");
        lcd.print(b);
        lcd.print(">");
        delay(100);
        break;
      case 3:
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("P#3 Pred Vakuum");
        lcd.setCursor(0, 1);
        if (key() == 3) {
          c = c + 1;
        }
        if (key() == 4) {
          c = c - 1;
        }
        lcd.print("Znah v c. <");
        lcd.print(c);
        lcd.print(">");
        delay(100);
        break;

      case 4:
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("P#4 *PAUZA*");
        lcd.setCursor(0, 1);
        if (key() == 3) {
          de = de + 1;
        }
        if (key() == 4) {
          de = de - 1;
        }
        lcd.print("Znah v c. <");
        lcd.print(de);
        lcd.print(">");
        delay(100);
        break;

      case 5:
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("P#5 Vakuum OXL.");
        lcd.setCursor(0, 1);
        if (key() == 3) {
          e = e + 1;
        }
        if (key() == 4) {
          e = e - 1;
        }
        lcd.print("Znah v c. <");
        lcd.print(e);
        lcd.print(">");
        delay(100);
        break;
      case 6:
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("P#6 STABILIZACIY");
        lcd.setCursor(0, 1);
        if (key() == 3) {
          f = f + 1;
        }
        if (key() == 4) {
          f = f - 1;
        }
        lcd.print("Znah v c. <");
        lcd.print(f);
        lcd.print(">");
        delay(100);
        break;
    }
    if (t >= 7) {
      t = 0;
    }
    delay(100);
  }
  analogWrite(10, 200);
  lcd.clear();
  lcd.print("*     START    *");
  delay(1000);

  digitalWrite(38, LOW); // включен канал №34
  lcd.clear();
  lcd.print("* ZAGRUZKA *");
  digitalWrite(30, HIGH); // включен канал №30
  digitalWrite(31, HIGH); // включен канал №31
  for (int ab = 0; ab <= a; ab = ab + 1) {
    lcd.setCursor(0, 1);
    lcd.print(a);
    lcd.print("  <");
    lcd.print(ab);
    lcd.print(">");
    delay(1000);
  }

  digitalWrite(30, LOW); // включен канал №30
  digitalWrite(31, LOW); // включен канал №31
  delay(2000);
  lcd.clear();
  lcd.print("* PRED  VAKUUM *");
  digitalWrite(34, HIGH); // включен канал №34
  for (int ab = 0; ab <= b; ab = ab + 1) {
    lcd.setCursor(0, 1);
    lcd.print(b);
    lcd.print("  <");
    lcd.print(ab);
    lcd.print(">");
    delay(1000);
  }
  lcd.clear();
  lcd.print("* VAKUUM + PAR *");
  digitalWrite(32, HIGH); // включен канал №32
  for (int ab = 0; ab <= (c - b); ab = ab + 1) {
    lcd.setCursor(0, 1);
    lcd.print((c - b));
    lcd.print("  <");
    lcd.print(ab);
    lcd.print(">");
    delay(1000);
  }
  digitalWrite(32, LOW); // вывключен канал №32
  digitalWrite(34, LOW); // вывключен канал №32
  digitalWrite(33, HIGH); // вывключен канал №32
  delay(25000);
  digitalWrite(32, HIGH); // вывключен канал №32
  lcd.clear();
  lcd.print("*      PAR     *");
  while (r == 1) {

    if (key() == 2) {        // ловушка для цыкла
      r = r + 1;
    }
  }
  delay(2000);
  digitalWrite(32, LOW); // включен канал №32
  delay(10000);
  lcd.clear();
  lcd.print("*PAUZA*");
  digitalWrite(37, LOW ); // включен канал №34
  digitalWrite(36, HIGH); // включен канал №34
  for (int ab = 0; ab <= de; ab = ab + 1) {
    lcd.setCursor(0, 1);
    lcd.print(de);
    lcd.print("  <");
    lcd.print(ab);
    lcd.print(">");
    delay(1000);
  }
  digitalWrite(36, LOW); // включен канал №34
  digitalWrite(37, HIGH); // включен канал №34
  for (int ab = 0; ab <= de; ab = ab + 1) {
    lcd.setCursor(0, 1);
    lcd.print(de);
    lcd.print("  <");
    lcd.print(ab);
    lcd.print(">");
    delay(1000);
  }
  lcd.clear();
  lcd.print("*VAK.OXLAGDENIE*");
  digitalWrite(34, HIGH); // включен канал №34
  digitalWrite(35, HIGH); // включен канал №34
  for (int ab = 0; ab <= e; ab = ab + 1) {
    lcd.setCursor(0, 1);
    lcd.print(e);
    lcd.print("  <");
    lcd.print(ab);
    lcd.print(">");
    delay(1000);
  }
  digitalWrite(37, LOW); // включен канал №34
  digitalWrite(34, LOW); // включен канал №34
  digitalWrite(35, LOW); // включен канал №34
  lcd.clear();
  lcd.print("* STABILIZACIY *");
  digitalWrite(36, HIGH); // включен канал №34
  for (int ab = 0; ab <= f; ab = ab + 1) {
    lcd.setCursor(0, 1);
    lcd.print(f);
    lcd.print("  <");
    lcd.print(ab);
    lcd.print(">");
    delay(1000);
  }
  digitalWrite(36, LOW); // включен канал №34
  digitalWrite(37, HIGH); // включен канал №34
  digitalWrite(38, HIGH); // включен канал №34
  lcd.clear();
  lcd.print("*  BLOK GOTOV  *");
  // команда стоп перезапуск программы кнопка
  for (int x = 0; x <= 20; x = x + 1) {
    analogWrite(10, 10);
    delay(250);
    analogWrite(10, 100);
    delay(500);
  }
  analogWrite(10, 200);
  delay(10000);
  k = 1;
  t = 0;
  r = 1;
  ra = 1;
}

 

OlegKireen
Offline
Зарегистрирован: 29.11.2016

сейчас я подключил на реле IN и GND к земле а pin 30 к VCC на реле. Так работает но хотелось бы чтоб работало как положено.

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

OlegKireen, неправильно.

Подключаешь к реле питание (VCC и GND). Земли (GND) реле и ардуины должны быть соединены. IN соединяешь с пином ардуины и подаёшь на него HIGH/LOW в режиме выхода (OUTPUT).

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

OlegKireen пишет:

сейчас я подключил на реле IN и GND к земле а pin 30 к VCC на реле. Так работает но хотелось бы чтоб работало как положено.

ты точно понимаешь, что у тебя в коде происходит?

digitalWrite(30, HIGH); // включен канал №30

digitalWrite(30, LOW); // включен канал №30

подключи всё как положено, а не через гланды своей мамы и определись, что у тебя реле включает HIGH или LOW

OlegKireen
Offline
Зарегистрирован: 29.11.2016

пробовал но так неработает потому что котушка реле не соеденина с IN оптопара долбаная. в ютубе видел что выпаивают ее и замыкают IN на катушку реле.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

OlegKireen пишет:

пробовал но так неработает потому что котушка реле не соеденина с IN оптопара долбаная. в ютубе видел что выпаивают ее и замыкают IN на катушку реле.

Млять... Катушка реле и не должна быть соединена с IN. Катушка соединена с "силовым" питанием (VCC, GND). На IN подается "слаботочное" питание с цифрового пина, которое через оптопару и транзистор включает "силовое" питание на катушку. Подключать катушку реле напрямую к цифровому пину ардуины ни в коем случае нельзя, она потребляет слишком много тока. Для реле требуется отдельное питание, хотя бы с платы ардуино (пин +5В).

OlegKireen
Offline
Зарегистрирован: 29.11.2016

что в коде происходи понемаю. описание за // не отвечает действительности. HIGH реле включено LOW выключено.

OlegKireen
Offline
Зарегистрирован: 29.11.2016

но для работы этого реле на IN должна идти земля. А у меня при HIGH идет +5В. При LOW 0В. Вот я испращую как зделать чтоб при HIGH была земля а при LOW 0v.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

OlegKireen пишет:

но для работы этого реле на IN должна идти земля. А у меня при HIGH идет +5В. При LOW 0В. Вот я испращую как зделать чтоб при HIGH была земля а при LOW 0v.

поменяй в коде HIGH на LOW, LOW на HIGH 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

OlegKireen пишет:

как зделать чтоб при HIGH была земля а при LOW 0v.

Никак. Включается и выключается реле наоборот:

digitalWrite(Relay, LOW); // включить реле
digitalWrite(Relay, HIGH); // выключить реле

 

OlegKireen
Offline
Зарегистрирован: 29.11.2016

то есть при LOW 0V реле должно работать это земля, а при HIGH +5в реле не работает. ну а то что на реле на IN идет +5в для реле и ардуины это несмертельно?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Подключай реле, как написано в сообщении #8

OlegKireen
Offline
Зарегистрирован: 29.11.2016
// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);




void setup() {
  // put your setup code here, to run once:
 pinMode(12, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
 digitalWrite(12,LOW ); // реле включено 12
delay(2000);
digitalWrite(12,HIGH ); // реле выключено 12
delay(2000);

 
}

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Jeka_M пишет:

Подключай реле, как написано в сообщении #8

я запретил - космолёты должны продолжать падать в Туву.

OlegKireen
Offline
Зарегистрирован: 29.11.2016

OlegKireen пишет:

то есть при LOW 0V реле должно работать это земля, а при HIGH +5в реле не работает. ну а то что на реле на IN идет +5в для реле и ардуины это несмертельно?

при HIGH c pin 12 будет идти +5v. ЭТО несмертельно для реле и порта Ардуины?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

OlegKireen пишет:

при HIGH c pin 12 будет идти +5v. ЭТО несмертельно для реле и порта Ардуины?

Если pin 12 соединён с IN, тогда всё нормально. Так и должно быть.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Клапауций 112 пишет:

я запретил - космолёты должны продолжать падать в Туву.

Тогда надо ещё добавить delay(100500); в алгоритмы системы ориентации, чтоб уж наверняка.

OlegKireen
Offline
Зарегистрирован: 29.11.2016

ок всем Спасибо проверю отпишусь.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

OlegKireen пишет:

проверю отпишусь.

зачем?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

OlegKireen пишет:

пробовал но так неработает потому что котушка реле не соеденина с IN оптопара долбаная. в ютубе видел что выпаивают ее и замыкают IN на катушку реле.

Скинь ссылку на это видео.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

OlegKireen пишет:
а при LOW 0V а не земля

А оптопару просто так придумали, чтобы была?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Voodoo Doll пишет:

OlegKireen пишет:
а при LOW 0V а не земля

А оптопару просто так придумали, чтобы была?

для развязки )))
26 постов ни о чём, а всего то контакт GND с минусом ардуины не соединил

OlegKireen
Offline
Зарегистрирован: 29.11.2016
OlegKireen
Offline
Зарегистрирован: 29.11.2016
arDubino
Offline
Зарегистрирован: 12.01.2017

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

И что непонятно? С оптопарой управляется LOW сигналом на выходе ардуино, с транзистором - HIGH

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

схема подключения модуля реле к ардуино

вроде бы всё ясно и понятно, НО у меня на нагрузке будет насос DC

не могу врубиться, как же подключить насос, если источник питания - только ардуино?

на ум приходит только вот такая схема

bwn
Offline
Зарегистрирован: 25.08.2014

А смысл тогда в реле? Рабочие напряжения одинаковы, источник питания один, зачем реле? Поставьте ключ на транзисторе и радуйтесь.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

под рукой есть модуль реле, но нет транзистора

а ток у насоса 100мА

bwn
Offline
Зарегистрирован: 25.08.2014

Тогда по второй, граунд общий для насоса и ардуины, +5 на один контакт реле, второй контакт на насос. Но это жуткое извращение. ИМХО. 
Не забываем искрогасящие цепи. 

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

как0то так?

bwn
Offline
Зарегистрирован: 25.08.2014

Да. Мне только не нравится идея питания двигателя от USB.

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

на самом деле будет все работать от дикиспак, которая включена в павербанк :)

а с нее питание пойдет на релейный модуль (как и объяснял, что есть под рукой) и на насос

Nikodeeem
Offline
Зарегистрирован: 22.08.2019

vworld пишет:

на самом деле будет все работать от дикиспак, которая включена в павербанк :)

а с нее питание пойдет на релейный модуль (как и объяснял, что есть под рукой) и на насос

 

Можешь скрипт тут выложить?:)

Operator-den
Offline
Зарегистрирован: 26.09.2020

Приветствую всех! Подскажите были куплены релейные модули 4-х канальный (https://a.aliexpress.com/_eNtYGs) и 3-х канальный (https://a.aliexpress.com/_eLMLmY) . При подключении 4-х канальный работает без проблем, а вот 3-х канальные 2шт, подключенные также как и 4-х канальный не работают. Может я не так подключаю? Не могу понять для чего на модуле вход RGND?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Operator-den пишет:
Приветствую всех! Подскажите были куплены релейные модули 4-х канальный (https://a.aliexpress.com/_eNtYGs) и 3-х канальный (https://a.aliexpress.com/_eLMLmY) . При подключении 4-х канальный работает без проблем, а вот 3-х канальные 2шт, подключенные также как и 4-х канальный не работают. Может я не так подключаю? Не могу понять для чего на модуле вход RGND?

Ну так вы расскажите как именно подключили.

VCC, RGND это для питания реле которое оптоизолировано от СHx и GND

Operator-den
Offline
Зарегистрирован: 26.09.2020

Подключено к VCC плюс 5в, к GND минус, к входам In подключено от Arduino управляющий провод. Дак вот 4-канальный работает, а вот 3-х канальные модули не вкакую, пробывал переставлять минусовой провод на RGND, все без изменений.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Operator-den пишет:

Подключено к VCC плюс 5в, к GND минус, к входам In подключено от Arduino управляющий провод. Дак вот 4-канальный работает, а вот 3-х канальные модули не вкакую, пробывал переставлять минусовой провод на RGND, все без изменений.

Если все запитано от одного БП, то GND и RGND нужно объединить

Operator-den
Offline
Зарегистрирован: 26.09.2020

v258 пишет:

Operator-den пишет:

Подключено к VCC плюс 5в, к GND минус, к входам In подключено от Arduino управляющий провод. Дак вот 4-канальный работает, а вот 3-х канальные модули не вкакую, пробывал переставлять минусовой провод на RGND, все без изменений.

Если все запитано от одного БП, то GND и RGND нужно объединить

Да все запитано от одного блока питания, и ардуино тоже. Спасибо большое попробую объеденить.