Объясните идиоту по датчику влажности почвы

Тема в разделе "Arduino & Shields", создана пользователем Танкист, 7 фев 2017.

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

    Вопрос заключается в следующем: почему при подаче +5В через реле (+5 берется с самой Ардуино) датчик влажности перестает работать, если +5В подключать минуя реле, то все работает.
     
  2. Onkel

    Onkel Гуру

    схему давайте, иначе неоднозначно. Я могу сделать десяток схем с описанным вами свойством.
     
  3. не работает.jpg

    Как-то так. Реле только в программе другое. Поэтому управляющий провод (зеленый) приткнут на реле куда придется.
     
  4. Проблема вроде как решилась (проблема в коде). Решение только оказалось странным.

    Может кто-то пояснить, почему digitalWrite(SensorsRealayPin, LOW) замыкает реле, digitalWrite(SensorsRealayPin, HIGH) размыкает. Вроде как наоборот должно быть.

    Код (C++):
    #include <Adafruit_GFX.h>
    #include <Adafruit_PCD8544.h>

    #define SensorPin  A0 //Настраиваем пин А0 на Ардуино для работы с датчиком
    #define SensorsRealayPin 8 //Настраиваем пин 8 для управления реле подачи питания на датчик

    #define thresholdUp  400; //верхний предел влажности
    #define thresholdDown  250; //нижний предел влажности


    Adafruit_PCD8544 display = Adafruit_PCD8544(6, 5, 4, 3, 2);

    unsigned int SensorValue;

    void setup() {


    // Настройка констант влажности зависит от условий внешней среды, в которой используется датчик


    //Установка выходов для управления реле
    pinMode(SensorsRealayPin, OUTPUT);  // установить порт как исходящий для подачи питания на датчики влажности

    digitalWrite(SensorsRealayPin, HIGH);
    Serial.begin(9600);

    // Инициализируем дисплей
    display.begin();
    // Делаем его пустым
    display.clearDisplay();
    display.display();
    // Устанавливаем контраст
    display.setContrast(60);
    //
    display.println("Ready");
    display.display();

    delay (10000);

    }

    // uint32_t old_ts;
    void loop()
    {
    //Выводим значения на экран
    //Подаем питание на датчик
    digitalWrite(SensorsRealayPin, LOW);
    delay (1000);

    //
    SensorValue = analogRead (SensorPin);
    // SensorValue = analogRead (SensorPin);
    display.setCursor(0, 0);
    // Устанавливаем размер текста
    display.setTextSize(1);
    // Выводим текст

    //Выводим значения на экран
      display.clearDisplay();
      display.display();

      display.setTextSize(1);
      display.setTextColor(BLACK);
      display.setCursor(0,0);
      display.println("Moisture:");
      display.println(SensorValue);
      display.display();
    //SensorValue = analogRead (SensorPin);
    //Снимаем питание с датчиков
      digitalWrite(SensorsRealayPin, HIGH);
      delay(10000);
    }
     
  5. rkit

    rkit Гуру

    Должно быть так, как решит производитель.
     
    arkadyf нравится это.
  6. Просто во всех примерах, которые мне попались HIGH включено / LOW выключено. Вот я по наивности и подумал, что везде так.
     
  7. rkit

    rkit Гуру

    Всегда читайте документацию на прибор. Иначе можно и спалить по наивности.
     
  8. rkit

    rkit Гуру

    И то и то.
     
  9. А что, на разных Ардуино уровни сигналов HIGH и LOW отличаются?
     
  10. rkit

    rkit Гуру

    И уровни, и ток, и функции пинов.
     
  11. Tim308

    Tim308 Нерд

    @Танкист Там транзистор p-n-p, при высоком уровне он закрыт.
     
  12. Спасибо за внятный ответ. А то некоторые выражаются абстрактными фразами.
    Я так понимаю на другом реле может быть с точность до наоборот? К сожалению в электронике не силен, и школьный курс физики в котором изучали работу транзистора прочно забыт. Видимо придется учить заново.
     
  13. Vad33

    Vad33 Капитан-оригинал

    Для блока реле обычно указывается каким сигналом он управляется, 1 или 0.
    (есть разные варианты)
    Нужно внимательно читать описание на модули.
     
  14. user999

    user999 Гик

    На реле перемычка обычно есть и 3 контакта для нагрузки. На центральный контакт подаешь питание, правый и левый управляются. У меня 10-ти амперные реле при подаче HIGHT на пин замыкает правый контакт, при LOW - левый. А на 30-ти амперном наоборот. Поэтому я поменял положение перемычки.
    Т.е. есть 3 варианта. Поменять в коде HIGHT и LOW местами, перебросить провод питания на другую клему, поменять положение перемычки.
    Речь идет о таком реле: [​IMG]