Klimaat regeling serre

algemene C code
Berichten: 3
Geregistreerd: 17 Feb 2021, 12:20

Klimaat regeling serre

Berichtdoor Wube » 17 Feb 2021, 12:51

Beste,
Eerst de situatie schetsen.
ik ben een kast aan het maken om sla te kweken op Aquaponic, daarbij is het belangrijk dat de atmosfeer goed geregeld wordt.
Ik heb de kast zo ontworpen zodat de ventilator de lucht door de kast trekt, dus om te koelen moet enkel de ventilator werken.
Maar ook bij verwarming en bevochteging .

Nu werkt mijn code voor het ventileren (koeling)
en ook bij het bevochtege van de kast gaat de ventilator mee aan

Maar bij verwarming wil de ventilator niet aangaan.

Mijn code


#include "DHT.h"
#define Type DHT11
#include <LiquidCrystal_I2C.h>

const int railaisWarmte = 3;
const int railaisVent = 5;
const int railaisVocht = 6;

int warmteOp = 25;
int ventOp = 40;
int vochtOp = 20;
int sensePin=2;

DHT HT(sensePin,Type);

LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display

float humidity;
float tempC;
int setTime=500;
int dt=1000;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
HT.begin();
delay(setTime);

pinMode(railaisWarmte, OUTPUT);
pinMode(railaisVent, OUTPUT);
pinMode(railaisVocht, OUTPUT);


lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
}

void loop() {
delay(2000);


tempC=HT.readTemperature();
humidity=HT.readHumidity();


// put your main code here, to run repeatedly:
lcd.setCursor(0,0);
lcd.print("Temp cel.");
lcd.setCursor(12,0);
lcd.print(tempC);

lcd.setCursor(0,1);
lcd.print("Vocht. %");
lcd.setCursor(12,1);
lcd.print(humidity);





if(tempC < warmteOp){

digitalWrite(railaisWarmte, HIGH); // turn on DEZE WERKT NIET
digitalWrite(railaisVent, LOW);
}


else{

digitalWrite(railaisWarmte, LOW); // turn of

}

if(tempC > ventOp){

digitalWrite(railaisVent,LOW); // turn on
}else{

digitalWrite(railaisVent, HIGH); // turn of

}

if(humidity < vochtOp){

digitalWrite(railaisVocht, LOW); DEZE WERKT
digitalWrite(railaisVent, LOW);
}else{

digitalWrite(railaisVocht, HIGH);
}




}
Nota

Ik werk met een relais module BTE13-003 die de voor mij onbekende reden hoog gaat bij LOW

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Klimaat regeling serre

Berichtdoor shooter » 17 Feb 2021, 22:37

Bijna alle relais werken zo dat als je de input naar nul trekt het relais aangaat, je kunt met #define aan LOW wel de zaak omdraaien hoor dat is handig.
verder moet het relaisbordje niet gevoed worden vanaf de arduino maar extern dus je stekker voeding zowel naar het relaisbordje als naar de arduino verbinden. op de USB gaat het overigens wel voor een paar relais maar dat komt omdat dan de spanningsregelaar op de arduino niet werkt.
zet ook de setpoints in een float dus float tempop=25.0; bijvoorbeeld.
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 17 Feb 2021, 12:20

Re: Klimaat regeling serre

Berichtdoor Wube » 18 Feb 2021, 12:44

Beste shooter,

Dank u voor je reactie.

Heb van de setpoint allemaal floats gemaakt dat maak geen verschil.
Ik ben ook van plan als ik dit ga bouwen de relais op een aparte voeding te zetten.
Maar bij de bevochtiging gaan de twee relais perfect samen Hoog

if(humidity < vochtOp){

digitalWrite(railaisVocht, LOW);
digitalWrite(railaisVent, LOW);
}else{

digitalWrite(railaisVocht, HIGH);

}
Maar bij verwarming, die in mijn ogen dezelfde code is, gaat enkel de verwarming relais hoog

if(tempC < warmteOp){

digitalWrite(railaisWarmte, HIGH); // turn on
digitalWrite(railaisVent, LOW);
}


else{

digitalWrite(railaisWarmte, LOW); // turn of

}

De warmte relais is wel een ander type relais KEYES_SR1

Het verschil tussen de twee relais is zoals ik in mijn vorig bericht heb beschreven
bij de BTE13-003 is HOOG = LOW
Bij de KEYES_SR1 is HOOG= HIGH

Zoals ik u begrijp kan je dit verhelpen door #define aan LOW .
Maar ik snap niet aan wat je #define aan LOW moet toeschrijven.

MVG
WUBE

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Klimaat regeling serre

Berichtdoor shooter » 18 Feb 2021, 21:31

met define kun je zeggen #define BTEAAN LOW en volgende regel #define BTEUIT HIGH, en dus ook KEYAAN HIGH en KEYUIT LOW.
dan wordt bijvoorbeeld digitalWrite(railaisWarmte,BTEAAN);
wel even opletten dat je de NUL en de 5V goed aansluit en op de keyes, moet dat dus ook de 5Volt aangesloten worden.en de nul meestal ook dus 3 aansluitingen.
het relais zelf heeft dus een aparte voeding nodig soms 5 V maar ook 12 volt is mogelijk, daar zit dan een optocoupler tussen.
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 17 Feb 2021, 12:20

Re: Klimaat regeling serre

Berichtdoor Wube » 18 Feb 2021, 22:26

is shooter == admin

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Klimaat regeling serre

Berichtdoor shooter » 22 Feb 2021, 16:06

nee ik ben geen admin maar kan wel goedkeuren en ja ik kan best wel omgaan met de arduino.
paul deelen
shooter@home.nl

Berichten: 8
Geregistreerd: 16 Mrt 2021, 21:40

Re: Klimaat regeling serre

Berichtdoor Johi » 16 Mrt 2021, 22:21

Hallo,
Paul heeft een punt,
Zelfs als je in een test opstelling zit, dan nog dien je de relais apart te voeden. (zeker als er meerdere relais in het spel zijn)
Het is best mogelijk als je 1 relais al aan het voeden bent, dat het tweede voeden betekent dat je over de limiet van de max stroom gaat en dat je bordje niet meer correct gevoed wordt.
Als je 2 spoelen stuurt, dan trekken die meer stroom dan de paar honderd mA die het bordje kan leveren.
Daarom zijn er op het relais bordje aparte pinnetjes voorzien om het spoeltje van het relais te voeden en om de optocoupler te voeden die je via je Arduino aanstuurt.
Ik heb krak hetzelfde meegemaakt met een bordje met 8 relais.
Vriendelijke groeten,
Johi
www.SylvesterSolutions.com

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast