Управление увлажнителем воздуха при помощи Andurino и вспомогательных модулей.

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Dimons, 14 фев 2014.

  1. Dimons

    Dimons Нуб

    Что у меня есть:
    1. Arduino Uno
    2. Релейный модуль
    3. Датчик температуры и влажности DHT11

    Какой необходим скейч, для работы этой системы:
    Установить на увлажнитель воздуха датчик влажности. Увлажнитель будет работать при влажности 0- 60%. При влажности более 60%, релейный модуль отключает увлажнитель воздуха.
     
  2. Dimons

    Dimons Нуб

    /* программа работа с датчиком влажности
    1. Датчик влажности, DTH11- выход A0
    2. Релейный блок, - выход А1
    */
    #include <dht.h>
    #define rele A1
    DHT sensor = DHT();
    int sen;

    void setup()
    {
    sensor.attach(A0);
    serial.begin(9600);
    pinMode(rele,OUTPUT);
    int sen;
    int senkonst;
    delay (1000);
    }

    void loop ()
    {
    sensor.update();
    sen=sensor.getTemperatureInt(); // или sensor.getHumidityInt(); -измерение влажности
    serial.println(sen);

    boolean senist = (25 > sen); //температура или влажность
    if (senist)
    {
    digitalWrite(rele,HIGH);
    }
    else
    digitalWrite(rele,LOW);
    delay (2000);
    }
     
  3. Unixon

    Unixon Оракул Модератор

    А в чем вопрос то был? :)

    В программе гистерезиса еще не хватает, а так более-менее. Переменные лишние в setup(), состояние реле неопределено до опроса датчика и в случае проблем с получением измерений.
     
  4. Dimons

    Dimons Нуб

    А что нужно сделать что-бы добавить "гистерезиса". А какие именно переменные лишние в setup()? Все-таки программа будет работать или нет, очень нужно. Спасибо вам.
     
  5. rav_75

    rav_75 Гик

    гистерезис - некая дельта между включением реле и выключением в вашем случае. Допустим, пусть включается при 24 и меньше и выключается при 26 и больше. Иначе можете получить постоянно щелкающее реле. Чтоб не дергать постоянно пины - можно ввести еще переменную - статус состояния реле.
    в setup() лишние
    int sen;
    int senkonst;
    ибо они нигде у Вас не используется.
     
  6. Dimons

    Dimons Нуб

    Здравствуйте!
    Изменил программу, все работает. Только релюшка очень часто щелкает, мешает работать. Что нужно сделать что-бы увеличить время, я так думаю с параметром delay.
    Вот сам скейч:

    //*****************************************************
    /* DHT11 черный "-"
    красный "+"
    зеленый "сигнал"
    Реле черный "-"
    красный "+"
    желтый "сигнал"
    */
    #include "dht.h" //
    #define rele A1 //
    DHT sensor = DHT();



    void setup()
    {
    Serial.begin(9600);
    //Serial.println("DHTxx test!");
    sensor.attach(A0);
    pinMode(rele,OUTPUT);
    }


    void loop()
    {
    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to A0 seconds 'old' (its a very slow sensor)
    sensor.update();
    delay(1000);
    float t = sensor.getTemperatureInt();
    float h = sensor.getHumidityInt();

    // check if returns are valid, if they are NaN (not a number) then something went wrong!
    if (h <= 20)
    {
    Serial.println("Vlazhnost < 20%");

    digitalWrite(rele,LOW);
    delay(1000);
    }
    else if (h >20 && h < 65)
    {
    Serial.println("Vlazhnost ot 20% do 65%");
    Serial.print("Vlazhnost: ");
    Serial.print(h);
    Serial.println(" %");
    digitalWrite(rele,HIGH);
    delay(1000);
    }
    else if (t >65 && t<100)
    {
    Serial.println("Vlazhnost ot 65% do 100%");
    digitalWrite(rele,LOW);
    Serial.print(h);
    Serial.println(" %");
    delay(1000);
    }
    }
    //*******************************************************************
     
  7. rav_75

    rav_75 Гик

    Давайте котлеты отдельно, а мухи отдельно. Выводить на экран или куда бы то ни было Вы можете когда угодно и что угодно. Конкретно по увлажнителю - нормальная влажность в комнате 40-60%. Давайте включать увлажнитель при влажности меньше 40% и выключать при более 60%. Ну или по потребностям.
    Код (Text):
    if(h<40){
        digitalWrite(rele, HIGH);
    }
    else if(h>60){
        digitalWrite(rele, LOW);
    }
     
  8. Dimons

    Dimons Нуб

    Спасибо! Внесу изменеия, мир не без добрых людей!