Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Włącznik 230V na podstawie wilgotności powietrza (z higrometrem)

doman18 20 Oct 2015 12:57 4428 11
  • #1
    doman18
    Level 17  
    W domu mam nawilżacz, który jest podłączony do najprostszego analogowego programatora czasowego (taki za 10zł). Chciałbym wiedzieć czy dało by się przy pomocy któregoś z czujników z TME ...

    http://www.tme.eu/pl/katalog/#id_category=100525&page=1&s_field=niski_prog&s_order=ASC

    na przykład tego
    http://www.tme.eu/pl/details/sy-hs-230/czujniki-wilgotnosci/syhitech/

    ... i jakiegoś tranzystora, potencjometru i zasilacza 5V dało by radę zrobić włącznik dla 230V?

    Próbowałem szukać gotowców ale sa drogie (200zł +)

    https://www.elektroda.pl/rtvforum/topic2094545.html


    //EDYCJA
    Chyba znalazłem to czego szukałęm
    http://automatyka.elstat.com.pl/p10984,modul-czujnika-wilgotnosci-z-przekaznikiem.html
  • #2
    bgolab
    Level 22  
    Na allegro jest z dostawą za 30zł: wyszukac "czujnik wilgotnosci przekaznik"

    Dodano po 1 [minuty]:

    Problem tylko w tym, że te czujniki nie są zbyt dobrej jakości (po czasie są niestabilne).
  • #3
    Freddy
    Level 43  
    bgolab wrote:
    Problem tylko w tym, że te czujniki nie są zbyt dobrej jakości (po czasie są niestabilne).
    No co Ty nie powiesz, to masz jakieś pechowe.
  • #4
    bgolab
    Level 22  
    Normalne, chińskie z allegro.
  • #5
    Freddy
    Level 43  
    To masz pecha, mam te czujniki od chińczyka i pracują od roku.
    Nie zauważyłem niestabilności.
  • #6
    doman18
    Level 17  
    A w jaki sposób to jest zasilane? Gdzie są wejścia i wyjścia? Bo widzę że oprócz 3 zacisków są jeszcze 2 goldpiny między czujnikiem a czerwoną diodą oznaczone Vcc i GND? To osobno jeszcze zasilacz trzeba?
  • #7
    jdubowski
    Tube devices specialist
    doman18 wrote:
    A w jaki sposób to jest zasilane? Gdzie są wejścia i wyjścia? Bo widzę że oprócz 3 zacisków są jeszcze 2 goldpiny między czujnikiem a czerwoną diodą oznaczone Vcc i GND? To osobno jeszcze zasilacz trzeba?


    Jeśli idzie o
    doman18 wrote:
    https://www.elektroda.pl/rtvforum/topic2094545.html
    to masz wszystko w opisie - wymaga zasilacza 5V.
  • #8
    bgolab
    Level 22  
    Vcc - zasilanie 5V
    GND - masa

    Czyli potrzebny jest zasilacz 5V.

    Niebieskie złącze to zaciski przekaźnika.
  • #9
    doman18
    Level 17  
    Chodziło mi raczej o dokładne opisanie tych zacisków, bo to że one są od przekaźnika to wiem.

    Chodzi mi o ostatni link w moim pierwszym poście lub aukcje allegro o których koledzy mówili.
  • #10
    bgolab
    Level 22  
    Zwykle taki przekaźnik ma 3 wyprowadzenia:
    -C - common (wspólny zacisk)
    -NO - normally open (standardowo otwarty styk)
    -NC - normally closed (standardowo zamkniety styk)

    Załączanie i otwieranie odbywa się miedzy stykami:
    C i NC
    oraz
    C - NO

    Omomierz lub bateryjka i żaróweczka pozwolą Ci ustalić kóre styki sa otwarte i zamkniete.
  • #11
    doman18
    Level 17  
    Minął rok i zaczyna się sezon grzewczy więc problem powraca. Nie zdecydowałem się na ten gotowy moduł higrometru z przekaźnikiem bo obawiałem się że będzie mi zbyt często "cykał" przekaźnikiem na ustalonym poziomie wilgotności (brak histerezy). Potrzebuję raczej czegoś działającego w przedziale zadanych wilgotności. Czyli aby np. włączało się gdy wilgotność spada poniżej 40% a wyłącza gdy wzrasta powyżej 60%. Gotowe rozwiązania są stosunkowo drogie a nie umiem programować mikrokontrolerów. Wpadłem więc na pomysł że najlepszym kompromisem między taniością i łatwością produkcji będzie arduino. Znalazłem tutorial o Arduino MINI Pro + czujnik DHT 11

    https://www.youtube.com/watch?v=r6xt9LHO9KQ

    Nie wydaje się trudny, programować umiem więc jedyne co może nastręczyć problemów to pierwsza konfiguracja (instalacja i konfiguracja programatora z programem do skryptów).

    Jednak ja jeszcze myślałem o pójściu o krok dalej - bezprzewodowości. Żeby czujnik umieścić z dala od samego nawilżacza aby nie było przekłamań oraz żeby umieścić go w miejscu gdzie utrzymanie wilgotności będzie najbardziej istotne (przy łóżku dziecka). Okazało się że również i w tym przypadku są bardzo tanie i proste rozwiązania.

    https://www.youtube.com/watch?v=RHJVyMYJ1XQ

    Kupiłem już wszystko. Zmontowałem część odbiorczą czyli odbiornik + przekaźnik + zasilacz (wymontowałem płytkę z zasilacza 5V 350mA Nokii) + wtyczka i gniazdko.

    Pozostaje jeszcze część nadawcza. Zaprogramowanie MINI Pro i połączenie go z czujnikiem, nadajnikiem i oczywiście zasilaczem (stary zasilacz Sony 5V 500A).

    Główna pętla będzie sprawdzać wilgotność i jeżeli trzeba włączy HIGH na odpowiedni analogowy pin podłączony do nadajnika. Odbiornik odbierze sygnał, wyśle napięcie na przekaźnik i ten zewrze obwód 230V.


    Chciałem opisać już działające rozwiązanie ale może koledzy wyłapią jakieś luki w całej koncepcji lub przestrzegą przed czymś zanim wszystko uruchomię?
  • #12
    doman18
    Level 17  
    Bo długich bojach w końcu złożyłem urządzenie. Niestety moduł bezprzewodowy jest trudniejszy w aplikacji niż to co pokazuje autor filmiku. Ktoś poradził mi przerobienie bezprzewodowego dzwonka do drzwi. Ale również on się nie sprawdził ze względu na arcymały prąd wychodzący z pinu aktywującego melodyjki (za mały by np. zamknąć przekaźnik 3V). W końcu zamiast kombinować dalej z mało wymagającymi tranzystorami kupiłem gniazdko na pilota. Gniazdko było już ustawione na pierwszy rząd przycisków pilota.

    Schemat ideowy.
    Włącznik 230V na podstawie wilgotności powietrza (z higrometrem)

    Wylutowałem mikrostyki ON i OFF p i zamiast nich wstawiłem po stronie masy 2x BUZ11. Dziwne bo każdy mikrostyk zwierał 2 obwody więc obok tranzystorów musiałem też dolutować zwory. Baza każdego tranzystorów jest dołączona do wyjść Arduino, do którego też dołączony jest czujnik DHT11. Samo arduino jest zasilane z płytki wymontowanej z ładowarki samochodowej (przetwornica 12V->5V). Zasilanie płytki jest połączone z zasilaniem pilota gdzie zamiast blaszek na baterie dolutowałem standardowe gniazdo 2.1/5.5 żeby móc podpinać typowe zasilacze 12V. Po drodze stosowałem antenowy ale mi się zepsuł (liche kabelki przy trafo).

    Po stronie odbiornika (gniazda) nic nie musiałem robić. Jego bistabilność (osobny włącznik na włączenie i wyłączenie) ma szereg zalet. Oszczędność to jedna z nich (choć i tak mizerna bo mamy zasilacz a nie baterie) natomiast najważniejsza to znikoma podatność na zakłócenia - impuls wł/wył trwa tylko 1s a nie stale.

    Arduino zaprogramowałem tak że przy włączeniu testowo włącza przekaźnik na 10s (żeby się upewnić że wszystko działa) i później robi co minutę pomiar. Histerezę zmniejszyłem na 45-55% wilgotności. I tak w praktyce to duża różnica.

    Biblioteka dla DHT11 jest autorstwa Roba Tillaart
    https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib

    
    #include <idDHT11.h>
    
    int idDHT11pin = 3; //Digital pin for comunications
    int idDHT11intNumber = 1; //interrupt number (must be the one that use the previus defined pin (see table above)
    
    //declaration
    void dht11_wrapper(); // must be declared before the lib initialization
    
    // Lib instantiate
    idDHT11 DHT11(idDHT11pin,idDHT11intNumber,dht11_wrapper);
    
    int stan = 0;
    int start = 1;
    
    void setup()
    {
      Serial.begin(9600);
      Serial.println("idDHT11 Example program");
      Serial.print("LIB version: ");
      Serial.println(IDDHT11LIB_VERSION);
      Serial.println("---------------");
      pinMode(6, OUTPUT);
      pinMode(9, OUTPUT);
      pinMode(13, OUTPUT);
    }
    // This wrapper is in charge of calling 
    // mus be defined like this for the lib work
    void dht11_wrapper() {
      DHT11.isrCallback();
    }
    
    void loop()
    {
        //wlaczenie kontrolne
      if(start==1){
      digitalWrite(13, HIGH); 
      digitalWrite(9, HIGH); 
      delay(1000); 
      digitalWrite(9, LOW);
      delay(10000); 
      digitalWrite(6, HIGH); 
      delay(1000); 
      digitalWrite(6, LOW);
      digitalWrite(13, LOW); 
      start=0;
      }
      Serial.print("nRetrieving information from sensor: ");
      Serial.print("Read sensor: ");
      //delay(100);
      DHT11.acquire();
      while (DHT11.acquiring())
        ;
      int result = DHT11.getStatus();
      switch (result)
      {
      case IDDHTLIB_OK: 
        Serial.println("OK"); 
        break;
      case IDDHTLIB_ERROR_CHECKSUM: 
        Serial.println("ErrornrtChecksum error"); 
        break;
      case IDDHTLIB_ERROR_ISR_TIMEOUT: 
        Serial.println("ErrornrtISR Time out error"); 
        break;
      case IDDHTLIB_ERROR_RESPONSE_TIMEOUT: 
        Serial.println("ErrornrtResponse time out error"); 
        break;
      case IDDHTLIB_ERROR_DATA_TIMEOUT: 
        Serial.println("ErrornrtData time out error"); 
        break;
      case IDDHTLIB_ERROR_ACQUIRING: 
        Serial.println("ErrornrtAcquiring"); 
        break;
      case IDDHTLIB_ERROR_DELTA: 
        Serial.println("ErrornrtDelta time to small"); 
        break;
      case IDDHTLIB_ERROR_NOTSTARTED: 
        Serial.println("ErrornrtNot started"); 
        break;
      default: 
        Serial.println("Unknown error"); 
        break;
      }
      Serial.print("Wilg: (%): ");
      Serial.println(DHT11.getHumidity(), 2);
    
      Serial.print("Temp (oC): ");
      Serial.println(DHT11.getCelsius(), 2);
    
      
      if (DHT11.getHumidity()>55){
        digitalWrite(6, HIGH); 
        delay(1000); 
        digitalWrite(6, LOW);
      } 
      if (DHT11.getHumidity()<45){
        digitalWrite(9, HIGH); 
        delay(1000); 
        digitalWrite(9, LOW); 
      }
      if (DHT11.getHumidity()>45 && DHT11.getHumidity()<55 ){
        Serial.println("Wilgotnosc OK"); 
          digitalWrite(13, HIGH);   
          delay(1000);             
          digitalWrite(13, LOW);    
          delay(1000);             
           digitalWrite(13, HIGH);  
          delay(1000);             
          digitalWrite(13, LOW);   
          delay(1000);             
           digitalWrite(13, HIGH);  
          delay(1000);              
          digitalWrite(13, LOW);    
          delay(1000);             
      }
      delay(60000);
    }


    Jest to prototyp więc samo wykonanie nie jest jakieś super, nawet diody zasilania nie są wyprowadzone na zewnątrz. Nie mówiąc o samym kodzie który zdecydowanie przydałoby się zoptymalizować.

    Włącznik 230V na podstawie wilgotności powietrza (z higrometrem) Włącznik 230V na podstawie wilgotności powietrza (z higrometrem)

    Jest szereg innych rzeczy które można by wrzucić, np. wskaźnik diodowy albo ekranik LCD z przyciskami nastawy, żeby nie musieć zmieniać ustawień urządzenia przez programowanie całości na komputerze. Można też poszukać bardziej zaawansowanych algorytmów które uwzględniają wpływ zmian temperatury na wilgotność. Ale to już ekstrawagancja. Zastanawiam się też czy nie wyrzucić tego zasilacza 12V->5V i nie podłączyć Arduino bezpośrednio pod 12V przez złącza RAW. Cały czas też myślę nad wykorzystaniem tych modułów 433Mhz które mi zostały tylko muszę się podszkolić z wiedzy na temat przesyłania i kodowania sygnałów. Kolega piotr411 nawet zasugerował wykorzystanie modułu Wifi ESP8266 do projektu - fajnie byłoby odczytywać i zmieniać ustawienia np. z komórki :)

    Ogólnie jestem zadowolony. Żałuję tylko że od początku nie zastosowałem tych gniazdek na pilota. Owszem myślałem o nich ale chciałem zaoszczędzić, a koniec końców wyszło drożej (i dłużej). Ale tak nie jest źle. Z tego co widziałem najtańsze regulatory wilgotności z histerezą (przedziałem a nie wartością graniczną) kosztują od 230zł wzwyż.

    Moje tematy związane z problemem:
    Najprostszy moduł bezprzewodowy 433MHz - problemy
    Przekaźnik 3V nie działa z inwerterem CD4069 - za mały prąd?