Garage/Werkplaats luchtvochtigheid probleem

Bert Vanderveen

Post veel
1 sep 2015
1.759
195
Enschede, Twente
Als je toegang buiten de garagedeur om hebt, zou je kunnen overwegen een zwaar, 'vallend' gordijn voor de garagedeur te hangen. Met vallend bedoel ik dat die overmaat heeft waardoor het eind op de vloer komt te liggen. Een strakke koof boven erbij, goed ware stof (misschien dubbel uitgevoerd) en je hebt wat mensen vroeger gebruikten om de kou buiten te houden (en de warmte binnen)...
 

vladnl

Actieve deelnemer
18 sep 2012
32
18
Erg goed uitgevoerd, hou in gedachten dat alleen isoleren je in de winter onvoldoende brengt, je wilt eigenlijk altijd iets hogere temperatuur hebben dan buiten, als e.e.a. luchtdicht is hou je de luchtvochtigheid bij kou wel onder controle.

Condenseren van vochtige lucht is je vijand, 2 verdedigings linies, luchtvochtigheid onder de 60% houden en temperatuur binnen hoger dan buiten.

Ik heb mijn betonnen garage van binnenuit geïsoleerd met pirplaten met daarop gipsvezelplaat (osb of underlayment is nog handiger) een kleine kachel voornamelijk voor comfort en een ontvochtiger als noodzaak alhoewel deze in de winter weinig hoeft te doen. De werkplaats is bijna luchtdicht

Thanks!

Hoe heb je dan vloer aangepakt?
 

vladnl

Actieve deelnemer
18 sep 2012
32
18
Als je toegang buiten de garagedeur om hebt, zou je kunnen overwegen een zwaar, 'vallend' gordijn voor de garagedeur te hangen. Met vallend bedoel ik dat die overmaat heeft waardoor het eind op de vloer komt te liggen. Een strakke koof boven erbij, goed ware stof (misschien dubbel uitgevoerd) en je hebt wat mensen vroeger gebruikten om de kou buiten te houden (en de warmte binnen)...
Helaas niet, boven op de foto's kan je zien de metalen kanteldeur... dat is enige toegang naar binnen.
 

mdamsma

Actieve deelnemer
15 mei 2011
253
7
Vladimir
bedankt, ik ben wel nieuwsgierig naar de gebruikte onderdelen
mag als pb mag ook in het forum mogelijk kan het collega houtwormen helpen
eerlijk gezegd ik begrijp het principe, kan het waarschijnlijk wel ”nabouwen” maar alle in en outs wordt wat lastiger
Ik spreek in ieder geval voor mijzelf, misschien ook wel voor meer houtwerkers
Is het mogelijk een bouwbeschrijving of zo iets te posten?
 
  • Leuk
Waarderingen: vandikte

vladnl

Actieve deelnemer
18 sep 2012
32
18
Vladimir
bedankt, ik ben wel nieuwsgierig naar de gebruikte onderdelen
mag als pb mag ook in het forum mogelijk kan het collega houtwormen helpen
eerlijk gezegd ik begrijp het principe, kan het waarschijnlijk wel ”nabouwen” maar alle in en outs wordt wat lastiger
Ik spreek in ieder geval voor mijzelf, misschien ook wel voor meer houtwerkers
Is het mogelijk een bouwbeschrijving of zo iets te posten?
Bouwbeschrijving wordt lastig, tenminste de deel waar ik alles op het printplaat heb gesoldeerd... dat is al gebeurt en ik heb geen foto's van gemaakt. Echter, kan ik wel uitleggen mocht de schema niet duidelijk genoeg zijn.
 

vladnl

Actieve deelnemer
18 sep 2012
32
18
Vandaag even Fritzing programma aangeschaft (was goedkoop :) ) om schema wat duidelijker te maken, dan wat heb ik zelf op de papier staan.

1615823344977.png
1615823491005.png
In principe denk ik dat er altijd beter is om concept eerst op de breadboard te gaan testen, confirmeren dat alles werkt zoals gepland en pas dan te beginnen met de installatie op de printplaat.

Mijn concept is gebaseerd op snel wissel mogelijkheid, dat wil zeggen, mocht een component kapot gaan, dan is deze plug en play te vervangen (spanningsloos natuurlijk). Dit is mogelijk om te doen met: Header socket en Pin headers.

Wat op de tekening ontbreekt is hoofdschakelaar en 220V deel van het verhaal. Die zou ik ook later omschrijven, want eerste deel waar ik me op focus is zo en zo laagspanning tussen 3.3V en 5V.

NodeMCU ESP8266 voeding is op dit moment ook via USB van computer/laptop, want je wil je code toch kunnen uploaden op de controller :) In dat geval moet er voeding naar de relais van de ESP8266 komen. Dit alleen in de test fase.

Zelf heb ik onafhankkelijke voeding van 5V 3A besteld die rechtstreeks aangesloten is op ESP8266 met micro USB kabel (gekannibaliseerd van oude mobiel lader) en op de relais. Verhaal is, dat ESP8266 voeding uitgang (3V of VIN) te weinig kracht levert, iets minder dan 100mA, wat de probleem kan opleveren met functioneren van de relais en daardoor het systeem zelf.

Hopelijk is dit duidelijk tot nu toe?
 
  • Leuk
Waarderingen: Bigfoot48 en vandikte

vladnl

Actieve deelnemer
18 sep 2012
32
18
De code houdt in exacte adressen van de DS18B20 sensoren, dus die moeten eerst geïdentificeerd worden.
Aansluit schema ziet zo uit dan:

1615909457115.png

Vervolgens deze code in Aurdino IDE geladen moeten worden:
Code:
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port D5 on the ESP8266
#define ONE_WIRE_BUS D5

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// variable to hold device addresses
DeviceAddress Thermometer;

int deviceCount = 0;

void setup(void)
{
  // start serial port
  Serial.begin(115200);

  // Start up the library
  sensors.begin();

  // locate devices on the bus
  Serial.println("Locating devices...");
  Serial.print("Found ");
  deviceCount = sensors.getDeviceCount();
  Serial.print(deviceCount, DEC);
  Serial.println(" devices.");
  Serial.println("");
 
  Serial.println("Printing addresses...");
  for (int i = 0;  i < deviceCount;  i++)
  {
    Serial.print("Sensor ");
    Serial.print(i+1);
    Serial.print(" : ");
    sensors.getAddress(Thermometer, i);
    printAddress(Thermometer);
  }
}

void loop(void)
{ }

void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    Serial.print("0x");
    if (deviceAddress[i] < 0x10) Serial.print("0");
    Serial.print(deviceAddress[i], HEX);
    if (i < 7) Serial.print(", ");
  }
  Serial.println("");
}

Btw. voor de mensen die onbekend zijn met de Arduino platform, op deze link is Arduino IDE te vinden:
Arduino IDE

De code gaat naar de D5 pin luisteren en x aantal temperatuur sensoren vinnden, HEX adressen van de sensoren kunnen uit Serial Monitor gekopieerd kunnen worden.
HEX adresen zitten ongv. zo uit:

sensor1[8] = { 0x28, 0x22, 0x14, 0x66, 0x04, 0x00, 0x00, 0xCA };
sensor2[8] = { 0x28, 0x7D, 0xFE, 0x65, 0x04, 0x00, 0x00, 0x1B };

Iedere sensor heeft zijn unieke HEX adres, die straks is te gebruiken om te identificeren welke sensor is van binnen en welke van buiten.
 

vladnl

Actieve deelnemer
18 sep 2012
32
18
Nadat de HEX adressen bekend zijn, kunnen we doorgaan met het aansluiten van de overige elementen volgens de schema in de post #27.

Hier moet ik we bij zeggen dat het kern van het systeem is dus ESP8255, 2 temperatuur sensoren en de relais, rest wat heb ik gebouwd is niet nodig voor het functioneren van het systeem, maar wel nice to have (keuze is aan bouwer).

Mocht de bouwer een op een willen bouwen dan is het nodig om:
1. Account aan te maken bij Thingspeak
2. App downloaden en registreren bij Blynk

Thingspeak zorgt voor mooie diagrammen en mogelijkheid om je data te downloaden en vervolgens verder te analyseren..
1615978216156.png
Ik heb data vanochtend gedownload en hier is duidelijk te zien dat de kachel maar 4 keer per dag aan is geweest, wat komt eigenlijk dat ik door de dag mijn houtkachel wel stookt, vandaar de hoge temperatuur verschil overdag en logische verklaring dat de elektrische kachel niet aangaat.
1615978400349.png
De warmte van houtkachel wordt goed accumuleert in de garage, wat zorgt voor meer economische werking van het system. Nadeel is dat je er wel aanwezig moet zijn, wat gelukkig in dit geval bij mij zo is, gezien dat ik van huis mag werken, dus met mijn koffie pauze gooi ik wat hout in de kachel en hou ik temperatuur overdag op pijl.

Blynk app is voor aantal functies gratis te gebruiken, en in mijn geval, stuur ik hiermee tweede relais, die op dit moment niets stuurt. Idee is wel evt luchtdroger daar aan te koppelen of ventilator, of wat dan ook, keuze is aan de gebruiker.

1615978975192.png

Echter, je kan ook statistieken volgen, maar bij mij is dat bezet met andere controller data

1615979043715.png

In volgende post ga ik de Code erbij posten, eerst even opknappen zodat die duidelijk is.
 

vanboomtotbeeld

Actieve deelnemer
17 apr 2018
200
13
Hengelo Gld
www.vanboomtotbeeld.nl

vladnl

Actieve deelnemer
18 sep 2012
32
18
aan de afkoelcurve te zien koelt je garage steeds supersnel af. Isoleren is dus best lucratief. Buitentemperatuur op die dag ca. 7graden.
Elektronica mooi werk!
Bedankt.
Yep, Isolatie is dus ultiem doel, dat volgt nog.

P.S. Prachtig werk Jac!
 

vladnl

Actieve deelnemer
18 sep 2012
32
18
De code:

Code:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DHT.h>;
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <ESP8266WiFi.h>
#include "ThingSpeak.h"
#include <BlynkSimpleEsp8266.h>


#define ONE_WIRE_BUS D5 // Temperature sensor data wire is plugged into port D2 on the ESP8266
#define DHTPIN D4     // DHT 22 pin we're connected to
#define DHTTYPE DHT22   // DHT 22  (AM2302)
#define RELAY 0 //Connect GPIO0 to RELAY (D3)
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define BLYNK_PRINT Serial

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass  oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino


float tempSensor1, tempSensor2;
float hum;  //Stores humidity value
float temp; //Stores temperature value
float tempDiff;

unsigned long previousMillis = 0;
const long interval = 30000; //Thinkspeak send interval. Dont put too low or your account will be locked
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // Blynk authorisation code
int pinButton = D7; //the pin where we connect the button (virtual button)
int LED = D6; //the pin we connect the Relay, blynk contolled


uint8_t sensor1[8] = { 0x28, 0x22, 0x10, 0x66, 0x04, 0x00, 0x00, 0xBF  }; // Enter your HEX address here, inside temp sensor
uint8_t sensor2[8] = { 0x28, 0x7D, 0xFE, 0x65, 0x04, 0x00, 0x00, 0x8C  }; // Enter your HEX address here, outside temp sensor


/*Put your SSID & Password*/

char ssid[] = "YOUR SSID";   //  your network SSID (name)
char pass[] = "YOUR PWD";   // your network password
int status = WL_IDLE_STATUS;
WiFiClient  client;

unsigned long myChannelNumber = xxxxxxxxx; //your Thingspeak channel without commas
const char * myWriteAPIKey = "xxxxxxxxxxxxxx"; //your Thingspeak writeAPIKey with commas

          
 
void setup() {
  Serial.begin(115200);
  dht.begin();
  pinMode(RELAY, OUTPUT);
  digitalWrite(RELAY, LOW);
  delay(100);
 
  sensors.begin();   
    // OLED
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
   delay(2000);
   display.clearDisplay();
   display.setTextColor(WHITE);
    // End OLED


  WiFi.begin(ssid, pass);
  ThingSpeak.begin(client);

  Blynk.begin(auth, ssid, pass);
}


void loop() {
   sensors.requestTemperatures();
   tempSensor1 = sensors.getTempC(sensor1); // Gets the values of the temperature
   tempSensor2 = sensors.getTempC(sensor2); // Gets the values of the temperature
   tempDiff = (tempSensor1 - tempSensor2);
   temp= dht.readTemperature();
   hum = dht.readHumidity();
   Blynk.run();
   delay(3000);




// Heater relay ON/OFF function

  if (tempDiff > 4) {
    digitalWrite(RELAY, LOW);
  }
//  else {
//    digitalWrite(RELAY, HIGH);
//  }

  if(tempDiff<2) {
    digitalWrite(RELAY, HIGH);
  }
 
// End of relay funct.


// debug mode

 Serial.print("T1 ");
 Serial.print(tempSensor1);
 Serial.print(" C");
 Serial.println("");
 Serial.print("T2 ");
 Serial.print(tempSensor2);
 Serial.print(" C");
 Serial.println("");
 Serial.println(tempDiff);
 Serial.print("DHT Temp ");
 Serial.print(temp);
 Serial.print(" C");
 Serial.println("");
 Serial.print("DHT Hum ");
 Serial.print(hum);
 Serial.print(" %");
 Serial.println("");
 Serial.println(tempDiff);
 Serial.println(digitalRead (RELAY));

 // OLED Print mode
  if (isnan(hum) || isnan(tempDiff)) {
    Serial.println("Failed to read from DHT sensor!");
  }

  //clear display
  display.clearDisplay();

  // display temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("TempDiff: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print(tempDiff);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");
 
  // display humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Humidity: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(hum);
  display.print(" %");
 
  display.display();
 
  Blynk.run();

//Function to send to Thingspeak on defined interval
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    Serial.println("Sending to ThingSpeak");
    previousMillis = currentMillis;
    ThingSpeak.setField(1, tempSensor1);
    ThingSpeak.setField(2, tempSensor2);
    ThingSpeak.setField(3, digitalRead(RELAY));
    ThingSpeak.setField(4, tempDiff);
    ThingSpeak.setField(5, hum);
    ThingSpeak.setField(6, temp);
    
    ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
 
}

}

Dus dit is de complete code die kan aangepast kunnen zijn gebaseerd op de gebruikers wensen of gebruikte componenten.

Mocht iemand nog wat vragen over het project in geheel hebben, hoor en beantwoord ik die graag.

Groet,
Vladimir
 

Deze plek is voor toekomstige tekst. Door nu alvast deze kolom te activeren blijft de kolommen structuur ongewijzigd en de lezerservaring hetzelfde als er hier content geplaatst gaat worden.

Hier kan straks ook info geplaatst worden.