Arduino (regeling douche afzuiging )

Status
Niet open voor verdere reacties.

caffie

Gebruiker
Lid geworden
2 jan 2008
Berichten
281
ik wil graag met mijn Arduino de afzuiging van de douche laten regelen

De afzuiging aangestuurd via een klik aan en klink uit systeem
Dit wil ik allemaal intact houden.
Ik heb dus nu een vochtsensor die keurig meet
Maar omdat deze bij een hoog vocht gehalte de schakelaar blijft bedienen
Heb ik er een teller in gebracht zodat hij de schakelaar maar 1 keer bediend voor enkele seconden


Alles zit goed aangesloten en werkt
Probleem zit erin dat de teller waarde die hij krijgt niet wordt gezien
En dus de knop blijft bedienen zolang hij hoog blijft


Wie kan me verder helpen


Code:
#include <SimpleDHT.h>

// for DHT11, 
//      VCC: 5V or 3V
//      GND: GND
//      DATA: 2
int pinDHT11 = 2;


SimpleDHT11 dht11(pinDHT11);

void setup() {
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);}


void loop() { 
  byte temp = 0;
  byte humidity = 0;
  byte teller = 0; 

 
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(&temp, &humidity, NULL)) != SimpleDHTErrSuccess) {
    Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
    return;}
  
   // Serial.println("Sample OK: ");
    Serial.print((int)temp); Serial.println( " Graden"); 
    Serial.print((int)humidity); Serial.println(" %Vochtgehalte");
    Serial.println(teller);



    if ( teller == 0 && humidity > 45)
      {Serial.println(teller);  
      Serial.print((int)temp); Serial.println( " Graden"); 
      Serial.print((int)humidity); Serial.println(" %Vochtgehalte");
      digitalWrite(10, HIGH);
      teller = 1; 
      delay (10000);
      digitalWrite(10, LOW);}
    if ( teller == 1 && humidity < 40)
      {Serial.println(teller);
      Serial.print((int)temp); Serial.println( " Graden"); 
      Serial.print((int)humidity); Serial.println(" %Vochtgehalte");
      digitalWrite(11, HIGH);
      teller = 0; 
      delay (50000);
      digitalWrite(11, LOW);}


  // DHT11 sampling rate is 1HZ.
  delay(1500);
}


ik dacht dat het een makkelijk klusje was maar dat valt toch niet mee

Extra info
De Arduino meet het vocht gehalte
Als deze hoog is stuur deze een relais aan die de klik aan klik uit knop voor enkele seconden maakt
Een tweede relais doet het zelfde en zet de afzuiging weer uit als deze ander een bepaalde waarde komt.
Op deze manier heb ik zwakstroom (12 volt) in de badkamer en dus veilig
 

Bijlagen

  • Douche.png
    Douche.png
    267,7 KB · Weergaven: 53
Laatst bewerkt:
Laatst bewerkt:
dat was een testje van mijn om te kijken of de waarde werd overgenomen maar dat werkte ook niet
ik heb de regel er weer uitgehaald.
Toch vast bedankt voor het mee denken.
 
Soms is de sensor niet zo goed... Weet niet hoe je dat voor dit spul het beste kunt testen.
Maar je kunt ook even door de problemen van anderen heen lopen, mss zie je daar een beter stukje cod=e staan of tips over de sensor.
Op hun forum maak je wrs ook meer kans dan hier, lijkt me een inkopper....
Voor RPi zaken ga ik ook meestal eerst naar hun forum en dan pas naar Tweakers,
 
u ook bedankt voor het mee denken

Alles werkt dat is gecontroleerd
het probleem ligt in de code.
ik heb de vraag ook op het Arduino form gesteld
Maar zo heb ik 2 kansen.
 
Het voelt voor dehelpers igg mij prettig aan als je meldt dat je het elders ook hebt lopen....juist zulke helpers hebben vaak ook accounts bij arduino of
RPi forums.
Zet de een link daarvan hier neer. Thnx.
 
als je de volgende code gebruikt (!!!maak een copy van uw huidige code zodat u terug kan!!!)
kan je eens zeggen wat je in de serial monitor ziet?
en kan je mij eens de relais die aanstuurbaar zijn bij 5 vold laten weten of is het een shield kan je een fototje toevoegen
let wel op relais en inductieve verbruik (spoelen kunnen wel eens een piek terugsturen dus je zal ook wel een zenderdiode of scheiding moeten gebruiken)
Code:
#include <SimpleDHT.h>
// for DHT11, 
// VCC: 5V or 3V
// GND: GND
// DATA: 2
int pinDHT11 = 2;
SimpleDHT11 dht11(pinDHT11);
void setup(){
    Serial.begin(9600);
    pinMode(10, OUTPUT);
    pinMode(11, OUTPUT);
}
void loop(){ 
    byte temp = 0;
    byte humidity = 0;
    byte teller = 0; 
    int err = SimpleDHTErrSuccess;
    if((err = dht11.read(&temp, &humidity, NULL)) != SimpleDHTErrSuccess){
        Serial.print("Read DHT11 failed, err=");
        Serial.println(err);
        delay(1000);
        return;
    }
    // Serial.println("Sample OK: ");
    Serial.print((int)temp); Serial.println(" Graden"); 
    Serial.print((int)humidity); Serial.println(" %Vochtgehalte");
    Serial.println(teller);
    if(teller == 0 && humidity > 45){
        Serial.println(teller);  
        Serial.print((int)temp); Serial.println(" Graden"); 
        Serial.print((int)humidity); Serial.println(" %Vochtgehalte");
        digitalWrite(10, HIGH);
        teller = 1;
        Serial.println("start delay 10000");
        delay (10000);
        Serial.println("end delay 10000");
        digitalWrite(10, LOW);
    }
    if(teller == 1 && humidity < 40){
        Serial.println(teller);
        Serial.print((int)temp); Serial.println(" Graden"); 
        Serial.print((int)humidity); Serial.println(" %Vochtgehalte");
        digitalWrite(11, HIGH);
        teller = 0;
        Serial.println("start delay 50000");
        delay (50000);
        Serial.println("end delay 50000");
        digitalWrite(11, LOW);
    }
    // DHT11 sampling rate is 1HZ.
    Serial.println("start delay 1500");
    delay(1500);
    Serial.println("end delay 1500");
}
 
Een wat simpele variant van mijn plantbewatering sketch maar dan voor een douche fan ipv een waterpompje, ik neem aan dat het outputsignaal van een moisture sensor hetzelfde werkt als een humidity sensor.
Ik gebruik maar 1 relais om mijn pomp aan te sturen.

Code:
int digitalSensor = 2;
int fanPin = 8; //relais pin

void setup() {
  pinMode(digitalSensor, INPUT);
  pinMode(fanPin, OUTPUT);
}

void loop() {
  if(digitalRead(digitalSensor) == HIGH){
    digitalWrite(pumpPin, HIGH);
    delay(1500);
    digitalWrite(pumpPin, LOW);
  }
  delay(3600000); // elk uur testen of vocht te hoog is optioneel ik gebruik dit om te testen of de grond nog vochtig is.
}
 
Laatst bewerkt:
Gelukt

Allemaal bedankt voor het mee denken
het project is gelukt
Alles werkt
ben nu nog een het spelen met de tijden

Hierbij de werkende code

HTML:
#include <SimpleDHT.h>

// Variable
int pinDHT11 = 2;                          // Sensor     
int aanPin = 6;                            // Aanknop
int uitPin = 7;                            // Uitknop
int knopaansatus = 0;                      // 
int knopuitsatus = 0;                      //  
int laatsteknopaansatus = 0;               //   
int laatsteknopuitsatus = 0;               // 
int ledredPin = 7;                         // Ledrood
int ledgreenPin = 6;                       // Ledgroen
int teller = 0;                           //
byte temp = 0;                             //
byte humidity = 0;                         //
int err = SimpleDHTErrSuccess;             //
SimpleDHT11 dht11(pinDHT11);               //

void setup() {
  Serial.begin(9600);                      //   
  pinMode(10, OUTPUT);                     //
  pinMode(11, OUTPUT);                     //   
  pinMode(aanPin, INPUT);                  // Drukknop aan
  pinMode(uitPin, INPUT);                  // Drukknop uit
  pinMode(ledredPin, OUTPUT);              //
  pinMode(ledgreenPin, OUTPUT);}           //

void show (){
    //Serial.print((int)temp); Serial.println( " Graden"); 
    Serial.print((int)humidity); Serial.println(" %Vochtgehalte");
    //Serial.print("teller ");Serial.println(teller);
    knopaansatus = digitalRead(aanPin);
    if (knopaansatus != laatsteknopaansatus){ 
    laatsteknopaansatus = knopaansatus;
    Serial.print("Aanknop is bediend"); Serial.println(knopaansatus);}
    knopuitsatus = digitalRead(uitPin);
    if (knopuitsatus != laatsteknopuitsatus) {
    laatsteknopuitsatus = knopuitsatus;
    Serial.println("Uitknop is bediend ");}
    }
  
void loop() { 

if ((err = dht11.read(&temp, &humidity, NULL)) != SimpleDHTErrSuccess) {
    Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
    return;}

    
      show ();   
      //zet afzuiging aan
      if (((humidity > 85) && (teller == 0)) || (knopaansatus == HIGH))
      {
      Serial.println("Zet afzuiging aan"); //Controle tekst zodat je kan zien dat de afzuiging wordt aangezet
      digitalWrite(ledgreenPin, HIGH);     //Zolang de afzuiging aan staat brand de groen led
      digitalWrite(ledredPin, HIGH);       //Hieraan kan je zien dat er een signaal naar de klik aan en klik uit wordt gestuurd
      digitalWrite(10, HIGH);              //bekrachtig het START relais voor het stuursignaal tbv "klik aan klik uit"
      delay (20000);                       //De tijd die het "Klik aan en klik" uit signaal nodig heeft             
      teller = 1;                          //Dit zorgt ervoor dat start knop niet opnieuw wordt bediend als deze al bediend is geweest
      digitalWrite(10, LOW);               //Reset START relais
      digitalWrite(aanPin, LOW);           //Reset de aanknop 
      digitalWrite(ledredPin, LOW);        //Reset de rode led 
      delay (60000);                       //Vertraging zodat de zuiging niet constant aan en uit kan gaan
      }
    
      //zet afzuiging UIT
      if (((humidity < 80) && (teller == 1)) || (knopuitsatus == HIGH))
      {
      Serial.println("Zet afzuiging uit");
      digitalWrite(ledgreenPin, LOW);
      digitalWrite(ledredPin, HIGH); 
      digitalWrite(11, HIGH);
      delay (20000);
      teller = 0;
      digitalWrite(11, LOW);
      digitalWrite(ledredPin, LOW);
      digitalWrite(uitPin, LOW);
      delay (60000);
      }
      delay (2000);       
}

                        
  // DHT11 sampling rate is 1HZ.
 

Bijlagen

  • Douche-01.JPG
    Douche-01.JPG
    1.006,3 KB · Weergaven: 52
  • Douche-02.JPG
    Douche-02.JPG
    705,7 KB · Weergaven: 48
  • Douche-03.JPG
    Douche-03.JPG
    924,4 KB · Weergaven: 61
  • Douche-04.JPG
    Douche-04.JPG
    747,6 KB · Weergaven: 53
  • Douche-05.JPG
    Douche-05.JPG
    612,2 KB · Weergaven: 50
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan