Не срабатывает реле...

Тема в разделе "Arduino & Shields", создана пользователем Алексей_Д, 12 июл 2016.

  1. Не могу понять почему не переключается реле, программа выполняется подаётся " HIGH" на контакты реле, загорается светодиод на релюшке, а переключение не происходит. Пробовал несколько однотипных реле все то же.
    На сигнальной линии по отношению к земле, в момент включения появляется напряжение 2.3в, но контакты не замыкаются. Пробовал на оригинальной ардуине, та же картина. В чем причина, кто знает?
     

    Вложения:

    • 0001.jpg
      0001.jpg
      Размер файла:
      621,1 КБ
      Просмотров:
      844
    • 0002.jpg
      0002.jpg
      Размер файла:
      455,5 КБ
      Просмотров:
      960
  2. DIYMan

    DIYMan Guest

    А реле по какому уровню управляется? Не по низкому часом?
     
  3. Не знаю. И мне не понятно почему на сигнальной линии не 5вольт а 2,3
     
  4. DIYMan

    DIYMan Guest

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

    Код (C++):
    digitalWrite(relayPin, LOW);
    И посмотреть, включится ли реле.
     
  5. Нет это не помогло...
     
  6. Может оно срабатывает при 5в на сигнальной линии?

    #include <OneWire.h>
    #include <DallasTemperature.h>

    #define ONE_WIRE_BUS_1 2
    #define ONE_WIRE_BUS_2 4
    #define Rel_truba 5
    #define Rel_filtr 6

    OneWire oneWire_1(ONE_WIRE_BUS_1);
    OneWire oneWire_2(ONE_WIRE_BUS_2);

    DallasTemperature sensor_truba(&oneWire_1);
    DallasTemperature sensor_filtr(&oneWire_2);

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

    sensor_truba.begin();
    sensor_filtr.begin();
    // sensor_truba.setResolution(Thermometer1, 1);
    // sensors_filtr.setResolution(Thermometer2, 1);
    }

    void loop(void)
    {

    sensor_truba.requestTemperatures();
    sensor_filtr.requestTemperatures();

    float temperature1 = (sensor_truba.getTempCByIndex(0));
    float temperature2 = (sensor_filtr.getTempCByIndex(0));

    boolean tooCold_t=(temperature1>30.0);
    boolean tooCold_f=(temperature2<25.0);


    Serial.print("temp truba: ");
    Serial.print( temperature1);//Выводим температуру
    Serial.print(" C");
    Serial.println();
    Serial.print("temp filtr: ");
    Serial.print( temperature2);//Выводим температуру
    Serial.print(" C ");
    Serial.println();



    if(tooCold_t){
    digitalWrite(Rel_truba,HIGH);
    }else {
    digitalWrite(Rel_truba,LOW);
    }
    if(tooCold_f){
    digitalWrite(Rel_filtr,HIGH);
    }else {
    digitalWrite(Rel_filtr,LOW);
    }
    }
     
  7. DIYMan

    DIYMan Guest

    Сделайте проще: подключите модуль реле к VCC и GND, а сигнальный шнурок попробуйте ткнуть или в +5В, или в землю и посмотрите, тыканием в какой из уровней у вас срабатывает реле.

    Код вставьте как положено, плз - есть кнопка "code" на тулбаре редактора.

    И да - в коде не вижу инициализации пинов реле на выход.
     
    РусНекромант и 9xA59kK нравится это.
  8. Всё верно, ошибка в коде. Не написал OUTPUT для пинов. Заработало. Большое спасибо !!!!!!!!!!!!!!!!!!!!!!!!!