Не срабатывает твердотельное рэле

4adt
4adt аватар
Offline
Зарегистрирован: 04.02.2022

Всем здравствуйте! Собираю проэкт управление обогревом комнаты на основе этой темы

http://arduino.ru/forum/proekty/upravlenie-obogrevom-komnaty-pri-pomoshchi-arduino-i-dallas18b20

Скетч немного доработал под себя

#include <OneWire.h>
OneWire oneWire(2);
#include <DallasTemperature.h>
DallasTemperature sensors(&oneWire);
DeviceAddress tempDeviceAddress;  
float temp1=0;
int setTmp=20;
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define BACKLIGHT_PIN 10
boolean backlightStatus = 1;
#include <EEPROM2.h>
#define RELAY_PIN 11
boolean relayStatus1=LOW;
long previousMillis1 = 0;
long interval1 = 1000;
#define KEYPAD_PIN A0
#define ButtonUp_LOW 90
#define ButtonUp_HIGH 200
#define ButtonDown_LOW 210
#define ButtonDown_HIGH 380
#define ButtonLeft_LOW 390
#define ButtonLeft_HIGH 600
#define ButtonRight_LOW 0
#define ButtonRight_HIGH 80
#define ButtonSelect_LOW 620
#define ButtonSelect_HIGH 800
void setup() {
sensors.getAddress(tempDeviceAddress, 0);
  sensors.setResolution(12);
  pinMode(BACKLIGHT_PIN, OUTPUT);
  digitalWrite(BACKLIGHT_PIN, backlightStatus);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("    ArDuInKo    ");
  lcd.setCursor(0, 1);
  lcd.print("      v1.0      ");
  delay(3000);
  lcd.setCursor(0, 1);
  lcd.print("  Set temp:     ");
  lcd.setCursor(12,1);
  lcd.print(setTmp);
  delay(3000);
  lcd.begin(16, 2);
}

int ReadKey(int keyPin)
{
 int KeyNum=0;
 int KeyValue1=0;
 int KeyValue2=0;
do {
KeyValue1=analogRead(keyPin);
 KeyValue2=analogRead(keyPin);
 } while (KeyValue1==KeyValue2&&KeyValue2!=1023);

 if (KeyValue2<ButtonUp_HIGH&&KeyValue2>ButtonUp_LOW) {KeyNum=1;}//Up
 if (KeyValue2<ButtonDown_HIGH&&KeyValue2>ButtonDown_LOW) {KeyNum=2;}//Down
 if (KeyValue2<ButtonLeft_HIGH&&KeyValue2>ButtonLeft_LOW) {KeyNum=3;}//Left
 if (KeyValue2<ButtonRight_HIGH&&KeyValue2>ButtonRight_LOW) {KeyNum=4;}//Right
 if (KeyValue2<ButtonSelect_HIGH&&KeyValue2>ButtonSelect_LOW) {KeyNum=5;}//Select
return KeyNum;
}
void setTemperature() {
  int keyCode=0;
  lcd.begin(16,2);
  lcd.setCursor(0, 0);
  lcd.print("  Setting temp  ");
  lcd.setCursor(7, 1);
  lcd.print(setTmp);
do {
  keyCode=ReadKey(KEYPAD_PIN);
  if (keyCode==1){setTmp++;delay(200);lcd.setCursor(7, 1);lcd.print(setTmp);}
  if (keyCode==2){setTmp--;delay(200);lcd.setCursor(7, 1);lcd.print(setTmp);}
} while (keyCode!=5 && keyCode!=4);
  delay(200);
(keyCode==5);{EEPROM.write(0, setTmp);}
if (keyCode==4);{setTmp = EEPROM.read(0);}
}
void loop() {
  unsigned long currentMillis1 = millis();
if(currentMillis1 - previousMillis1 > interval1) {
    previousMillis1 = currentMillis1; 
  sensors.setWaitForConversion(false);
  sensors.requestTemperatures();
  sensors.setWaitForConversion(true);
Delay(1000);
  sensors.getAddress(tempDeviceAddress, 0);
  temp1=sensors.getTempC(tempDeviceAddress);
  lcd.setCursor(0, 0);
  lcd.print("  Current temp  ");
  lcd.setCursor(5, 1);
  lcd.print(temp1);
Serial.println(temp1,4);
}
if (temp1<setTmp&&relayStatus1==LOW){relayStatus1=HIGH; digitalWrite(RELAY_PIN,HIGH);}
if (temp1>setTmp&&relayStatus1==HIGH){relayStatus1=LOW; digitalWrite(RELAY_PIN,LOW);}
int Feature = ReadKey(KEYPAD_PIN);
if (Feature==1 ) {backlightStatus=1;digitalWrite(BACKLIGHT_PIN, backlightStatus);}
if (Feature==2 ) {backlightStatus=0;digitalWrite(BACKLIGHT_PIN, backlightStatus);}
if (Feature==5 ) {delay(200);setTemperature();}

}

 

Все железо идентичное, запитывается схема от не стабилизированного источника 12в 1,2а на разъём вин.

Вообщем-то схема работает, когда температура ниже установленной на пине 11 появляется 4,5 вольта, но когда подключаю рэле напряжение проседает до 0.96. Землю на рэле беру напрямую с бп. 

Рэле вот такое

Рэле проверял источником тока 5вольт 1 ампер(зарядкой от мобилы) - работает.

Кому не лень, помогите разобраться пожалуйста.

 

4adt
4adt аватар
Offline
Зарегистрирован: 04.02.2022

забыл добавить - использую китайскую ардуино нано

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

где pinMode на RELAY_PIN?

4adt
4adt аватар
Offline
Зарегистрирован: 04.02.2022

Спасибо за наводку, сейчас разберусь - поправлю

4adt
4adt аватар
Offline
Зарегистрирован: 04.02.2022

Ещё раз спасибо, все заработало. Ошибка нелепая, но новичку надеюсь простительно))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вообще-то, это реле лучше прямо на пин не цеплять, а подключать через транзистор, как вот в этом руководстве на стр. 3.

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ЕвгенийП пишет:

Вообще-то, это реле лучше прямо на пин не цеплять, а подключать через транзистор, как вот в этом руководстве на стр. 3.

ну во первых, руководство от другого реле, а во вторых, зачем?? 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Транзистор в идеале. Но там на входе что-то вроде обычной моськи должно быть. 5-15 mA. Можно и с ноги?

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Rumata пишет:

Транзистор в идеале. Но там на входе что-то вроде обычной моськи должно быть. 5-15 mA. Можно и с ноги?

зачем тут еще один транзистор?

а так да, в идеале можно еще одну оптопару подкинуть.

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

xDriver пишет:

Rumata пишет:

Транзистор в идеале. Но там на входе что-то вроде обычной моськи должно быть. 5-15 mA. Можно и с ноги?

зачем тут еще один транзистор?

 

а так да, в идеале можно еще одну оптопару подкинуть.

Ну в китайских SSR транзистора нет. Там стот моська с конролем перехода через 0 (типа 3041), несколько резюков, симистор и снаббер ему паралельно. Моська от 3-4 мА запускается нормально, так что транзистор особо и не требуется.

Стоит учесть что заявленные токи такие SSR долго не держат, стоит брать минимум с 2х кратным запасом. Т.е. если нагрузка 15А SSR надо брать на 40А

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

xDriver пишет:

Rumata пишет:

Транзистор в идеале. Но там на входе что-то вроде обычной моськи должно быть. 5-15 mA. Можно и с ноги?

зачем тут еще один транзистор?

Я то почем знаю? Вопрос не в то окно

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

asam пишет:

Ну в китайских SSR транзистора нет. Там стот моська с конролем перехода через 0 (типа 3041), несколько резюков, симистор и снаббер ему паралельно. Моська от 3-4 мА запускается нормально, так что транзистор особо и не требуется.

Именно это и имел ввиду.