Ардуино перестает отправлять данные в serial port и выполнять код

Volan4ik
Offline
Зарегистрирован: 14.07.2021

Здравствуйте, возникла проблемма, небольшая програмка на ардуино, в зависимости от значений с датчика температуры включается или выключается реле, все работает нормально, но через какое-то время перестает включатся и выключатся реле, и в serial port перестают отправлятся данные с датчика. В чем может быть проблемма?

Вот код:

#include "DHT.h"
 
#define DHTPIN 2 
#define PIN_RELAY 5
 
DHT dht(DHTPIN, DHT22);
 
 
void setup() {
  Serial.begin(9600);
 
  dht.begin();
  pinMode(PIN_RELAY, OUTPUT);
  digitalWrite(PIN_RELAY, LOW);
}
void loop() {
  
  delay(2000); 
  float h = dht.readHumidity(); 
  float t = dht.readTemperature(); 
  if (isnan(h) || isnan(t)) {  
    Serial.println("Ошибка считывания");
    return;
  }
  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Температура: ");
  Serial.print(t);
  Serial.println(" *C "); 
  if(t>37.5)
  {
    digitalWrite(PIN_RELAY, HIGH);
    }
    else if(t<37.2)
    {
      digitalWrite(PIN_RELAY, LOW);
      }
      
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Volan4ik пишет:

Вот код:

Это не код. Вернее, код, но работать с ним невозможно. Где номера строк? Как его обсуждать?

Вставьте код как положено, тогда поговорим.

Заодно, вставьте Вашу схему! Только именно Вашу схему, а не "картинко из инета".

И приведите характеристик ВСЕХ компонентов: что за ардуина, что за реле, что за блок питания и т.д.

Volan4ik
Offline
Зарегистрирован: 14.07.2021


Ардуинка у меня Нано стоит, модуль реле jqc-3ff-s-z, датчик температуры DHT22(На схеме он "голый" у меня он на плате с 3 выходами).

#include "DHT.h"

#define DHTPIN 2
#define PIN_RELAY 5

DHT dht(DHTPIN, DHT22);


void setup() {
Serial.begin(9600);

dht.begin();
pinMode(PIN_RELAY, OUTPUT);
digitalWrite(PIN_RELAY, LOW);
}
void loop() {

delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Ошибка считывания");
return;
}
Serial.print("Влажность: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Температура: ");
Serial.print(t);
Serial.println(" *C ");
if(t>37.5)
{
digitalWrite(PIN_RELAY, HIGH);
}
else if(t<37.2)
{
digitalWrite(PIN_RELAY, LOW);
}

}

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

может температура стабильна в диапазоне 37.2 - 37.5 ?

b707
Offline
Зарегистрирован: 26.05.2017

в коде криминала не вижу, кроме строки 23. Вообще использование return в loop() - это глупость

По сути вопроса - проблема банальная, реле при включении дает наводки и ардуина перегружается. Или реле включает что-то мощное и оно просаживает питание. Результат тот же.

Чем у вас реле управляет, кстати?

 

Volan4ik
Offline
Зарегистрирован: 14.07.2021

Лампа накаливания, у меня бывает все работает и лампочка tx моргает, потом перестает и все ардуинка ничего не делает, еще бывает лампочка моргает очень быстро и в мониторе порта одни и те же значения пишет.

Если проблемма в реле, то если отодвинуть ардуинку подальше, проблемма должна уйти?

 

Volan4ik
Offline
Зарегистрирован: 14.07.2021

Она не может быть стабильна, постоянно остывает

b707
Offline
Зарегистрирован: 26.05.2017

Volan4ik пишет:

бывает лампочка моргает очень быстро и в мониторе порта одни и те же значения пишет.

в этом коде лампочка чаще чем в 2 сек моргать не может. Или у вас в ардуине "не совсем этот код"?

Попробуйте добавить на питание реле диод обратной полярности(если на плате реле нет), а на питание ардуино - конденсатор 100-1000 мкф

Volan4ik
Offline
Зарегистрирован: 14.07.2021

b707 пишет:

Volan4ik пишет:

бывает лампочка моргает очень быстро и в мониторе порта одни и те же значения пишет.

в этом коде лампочка чаще чем в 2 сек моргать не может. Или у вас в ардуине "не совсем этот код"?

Попробуйте добавить на питание реле диод обратной полярности(если на плате реле нет), а на питание ардуино - конденсатор 100-1000 мкф

Хорошо, попробую, спасибо,

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

Volan4ik пишет:
Ардуинка у меня Нано стоит, модуль реле jqc-3ff-s-z, датчик температуры DHT22(На схеме он "голый" у меня он на плате с 3 выходами).

Мой вопрос

ЕвгенийП пишет:
что за блок питания и т.д.

Не замечен или проигнорирован?

Volan4ik
Offline
Зарегистрирован: 14.07.2021

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

Volan4ik пишет:
Ардуинка у меня Нано стоит, модуль реле jqc-3ff-s-z, датчик температуры DHT22(На схеме он "голый" у меня он на плате с 3 выходами).

Мой вопрос

ЕвгенийП пишет:
что за блок питания и т.д.

Не замечен или проигнорирован?

Извините, не заметил, блок питания от светодиодной ленты на 12В/3А, через преобразователь напряжения на 5в.

sadman41
Offline
Зарегистрирован: 19.10.2016

DHT-шке нужен резистор на +

Если на модуле его нет, то чтение будет нестабильно (да и с ним тоже - например плохой контакт), и по условию проверки на nan МК будет выскакивать из лупа, пропуская все остальное.

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

Volan4ik пишет:

Извините, не заметил, блок питания от светодиодной ленты на 12В/3А, через преобразователь напряжения на 5в.

Вы опять не поняли. Нужны характеристики. Что за блок питания. что за преобразователь. Есть подозрение, то проблема как раз в них, что там просадка возникает (и Вам про это уже писали), но Вы как партизан - из Вас клещами надо всё тянуть.

Volan4ik
Offline
Зарегистрирован: 14.07.2021

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

Volan4ik пишет:

Извините, не заметил, блок питания от светодиодной ленты на 12В/3А, через преобразователь напряжения на 5в.

Вы опять не поняли. Нужны характеристики. Что за блок питания. что за преобразователь. Есть подозрение, то проблема как раз в них, что там просадка возникает (и Вам про это уже писали), но Вы как партизан - из Вас клещами надо всё тянуть.

Блок питания Lemanso LM819 36W и понижающий преобразователь XL4015 5A.

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

#7 пробовали? Что получилось? Конденсатор как можно ближе к ардуине.

Если не поможет, скажите, попробуем совсем отвязать реле от ардуины. Но это уже ultima ratio, по идее и без этого должно заработать.

Volan4ik
Offline
Зарегистрирован: 14.07.2021

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

#7 пробовали? Что получилось? Конденсатор как можно ближе к ардуине.

Если не поможет, скажите, попробуем совсем отвязать реле от ардуины. Но это уже ultima ratio, по идее и без этого должно заработать.

Пробовал, конденсатор поставил как можно ближе, не помогло, взял другую ардуино(уно), попробую может решится проблема.

И еще такой вопрос, с твердотельным реле таких проблем быть не должно?

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

Volan4ik пишет:

И еще такой вопрос, с твердотельным реле таких проблем быть не должно?

Пока непонятно, что у Вас за проблемы, ничего сказать нельзя.

Вы не могли бы сфоткать модуль реле как можно крупнее сверху и снизу, чтобы посмотреть что там?

b707
Offline
Зарегистрирован: 26.05.2017

Volan4ik пишет:

Пробовал, конденсатор поставил как можно ближе, не помогло

характеристики конденсатора?

Volan4ik
Offline
Зарегистрирован: 14.07.2021

b707 пишет:

Volan4ik пишет:

Пробовал, конденсатор поставил как можно ближе, не помогло

характеристики конденсатора?

10V 470мкф