temperaturen en vocht in en om het huis meten

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 6
Geregistreerd: 10 Sep 2014, 10:25

temperaturen en vocht in en om het huis meten

Berichtdoor patrick2603 » 10 Sep 2014, 10:52

dag iedereen

Ik ben nieuw op dit forum ik heb wel al de eerste testen gedaan led blink temperatuur meten vocht meten
Mijn naam is patrick jacobs, 56 jaar en zou graag temperaturen en vocht in en om mijn huisje meten
om later te gebruiken om sturingen mee te doen. bv in mijn veranda te warm een raam openen te koud
een verwarming opzetten.(een van mijn hobby's is palmbomen kweken) vandaar sturen met arduino.
ik gebruik deze sensor http://hobbycomponents.com/index.php/dh ... odule.html
de code die ik heb aangepast voor twee sensoren werkt niet ik heb al van alles eraan verandert.
als ik het programma laat lopen geeft hij temp en vocht maar als ik een voeler aanraak blijft de temp hetzelfde
ook als ik een voeler uit het testbordje trek blijft de temp en vocht werken pas als ik beiden uittrek werkt het niet meer
de twee voelers geven dus dezelfde temp en vocht aan ook als ik ene opwarm.
de code die ik gebruik staat in de bijlage
misschien zijn er mensen op dit forum zijn die mij hiermee een beetje op weg helpen?

Alvast vriendelijk bedankt!

dit is de code die ik gebruik

/*-----( nodige libraries )-----*/
#include <dht11.h>

/*-----( verklaar objecten )-----*/
dht11 DHT11;

/*-----( Verklaar constanten, pin nummers)-----*/
#define DHT11PIN 2
#define DHT11PIN 3

void setup() /*----( SETUP: loopt eenmaal )----*/
{
Serial.begin(9600);

}/*--(einde van de setup )---*/

void loop() /*----( LOOP: loopt constant )----*/
{
Serial.println("\n");

int chk = DHT11.read(DHT11PIN);

Serial.print("lees sensor: ");
switch (chk)
{
case 0: Serial.println("OK"); break;
case -1: Serial.println("Checksum fout"); break;
case -2: Serial.println("Tijd verlopen fout"); break;
default: Serial.println("onbekende fout"); break;
}

Serial.print("Vocht (%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("Vocht annex (%): ");
Serial.println((float)DHT11.humidity, 3);

Serial.print("Temperatuur (C): ");
Serial.println((float)DHT11.temperature, 2);
Serial.print("Temperatuur annex (C): ");
Serial.println((float)DHT11.temperature, 3);

Serial.print("Dauwpunt (C): ");
Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));



delay(5000);
}/* --(end main loop )-- */

/*-----( Declare User-written Functions )-----*/
//
//Celsius to Fahrenheit conversion
double Fahrenheit(double celsius)
{
return 1.8 * celsius + 32;
}

//Celsius to Kelvin conversion
double Kelvin(double celsius)
{
return celsius + 273.15;
}

// dewPoint function NOAA
// reference: http://wahiduddin.net/calc/density_algorithms.htm
double dewPoint(double celsius, double humidity)
{
double A0= 373.15/(273.15 + celsius);
double SUM = -7.90298 * (A0-1);
SUM += 5.02808 * log10(A0);
SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
SUM += log10(1013.246);
double VP = pow(10, SUM-3) * humidity;
double T = log(VP/0.61078); // temp var
return (241.88 * T) / (17.558-T);
}

Advertisement

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

Re: temperaturen en vocht in en om het huis meten

Berichtdoor shooter » 12 Sep 2014, 21:38

even snel er staat twee maal dht11pin in , waar heb je hem op aangesloten ? zou pin 3 moeten zijn.

dit is de code van arduino.cc
probeer deze eens:
cpp code
// 
// FILE: dht11_test1.pde
// PURPOSE: DHT11 library test sketch for Arduino
//

//Celsius to Fahrenheit conversion
double Fahrenheit(double celsius)
{
return 1.8 * celsius + 32;
}

// fast integer version with rounding
//int Celcius2Fahrenheit(int celcius)
//{
// return (celsius * 18 + 5)/10 + 32;
//}


//Celsius to Kelvin conversion
double Kelvin(double celsius)
{
return celsius + 273.15;
}

// dewPoint function NOAA
// reference (1) : http://wahiduddin.net/calc/density_algorithms.htm
// reference (2) : http://www.colorado.edu/geography/weath ... /about.htm
//
double dewPoint(double celsius, double humidity)
{
// (1) Saturation Vapor Pressure = ESGG(T)
double RATIO = 373.15 / (273.15 + celsius);
double RHS = -7.90298 * (RATIO - 1);
RHS += 5.02808 * log10(RATIO);
RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ;
RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
RHS += log10(1013.246);

// factor -3 is to adjust units - Vapor Pressure SVP * humidity
double VP = pow(10, RHS - 3) * humidity;

// (2) DEWPOINT = F(Vapor Pressure)
double T = log(VP/0.61078); // temp var
return (241.88 * T) / (17.558 - T);
}

// delta max = 0.6544 wrt dewPoint()
// 6.9 x faster than dewPoint()
// reference: http://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity)
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity*0.01);
double Td = (b * temp) / (a - temp);
return Td;
}


#include <dht11.h>

dht11 DHT11;

#define DHT11PIN 2

void setup()
{
Serial.begin(115200);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
}

void loop()
{
Serial.println("\n");

int chk = DHT11.read(DHT11PIN);

Serial.print("Read sensor: ");
switch (chk)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}

Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);

Serial.print("Temperature (°C): ");
Serial.println((float)DHT11.temperature, 2);

Serial.print("Temperature (°F): ");
Serial.println(Fahrenheit(DHT11.temperature), 2);

Serial.print("Temperature (°K): ");
Serial.println(Kelvin(DHT11.temperature), 2);

Serial.print("Dew Point (°C): ");
Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));

Serial.print("Dew PointFast (°C): ");
Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity));

delay(2000);
}
//
// END OF FILE
//
paul deelen
shooter@home.nl

Berichten: 6
Geregistreerd: 10 Sep 2014, 10:25

Re: temperaturen en vocht in en om het huis meten

Berichtdoor patrick2603 » 13 Sep 2014, 16:07

beste shooter alvast bedankt voor uw reactie maar het gaar over 2 dht11 sensoren een op #define DHT11PIN 2
en de andere op #define DHT11PIN 3
dat is juist mijn probleem meerdere sensoren tegelijk inlezen.
in de code dat u meegeeft is er een fout opgetreden (DHTLIB_OK was not declared in this scope)

groetjes
patrick

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

Re: temperaturen en vocht in en om het huis meten

Berichtdoor shooter » 14 Sep 2014, 19:39

je defined DHT11PIn (de naam dus ) aan nummer 2 en een regel eronder aan 3.
als je twee sensoren hebt is het prima om die aan twee cerschillende pinnen te hangen maar die moeten dan wel verschillende namen hebben, zoals DHT11PIN2 2 en DHT11PIN3 3
dan noem je dus de ene routine dht2 dht11 en dht3 dht11.

int chk2 = DHT2.read(DHT11PIN2);
int chk3 = DHT3.read(DHT11PIN3);

om maar even duidelijk te houden heb ik de pinnummers aangehouden, dat mag natuurlijk anders zijn.
dan moet je dus overal waar DHT11 staat (behalve in de declaratie ) vervangen door DHT2, en dan een stuk eraan plakken met DHT3 dan krijg je ze achter elkaar, maar dat kun je zelf uitzoeken hoe je ze wil presenteren.
het is erg lastig als je de namen alleen laat onderscheiden door hoofdletters.
DHTLIB_OK is een define in de DHT11 library dus of je ziet de library niet (moet staan in libraries\DHT11\dht11.h)
deze code komt van u af,
mocht het niet lukken van de week, zal ik eens kijken in uw code als u deze samen met de libs opstuurt.
een DHT11 heb ik wel liggen)
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 13
Geregistreerd: 19 Sep 2014, 07:36

Re: temperaturen en vocht in en om het huis meten

Berichtdoor Hackerstore » 19 Sep 2014, 07:50

Moet je de DHT11 niet aan een analoge pen hangen?
Bijvoorbeeld zo:
Code: Alles selecteren
#define DHT11PIN A0


Wat ook een goed idee is om in het begin altijd een kleine sketch te maken die alleen de temperatuur meet, gewoon om de hardware te testen. En dan vervolgens (als het werkt) de sketch uit te breiden met meer logica/berekeningen e.d.

Voorbeeld:
Code: Alles selecteren
#include <dht.h>

// De analoge pen waar de sensor aan zit
#define INGANG A0

dht DHT;

void setup(){
 Serial.begin(115000);
 delay(300); // Pauze om sensor stabiel te laten worden
 Serial.println("Temperatuur en vochtigheid\r\n");
 delay(700); // Nog een pauze (in totaal is 1sec nodig)
}

void loop(){
 // Lees de temperatuur en vochtigheid uit
 DHT.read11(INGANG);

 Serial.print("Huidige relatieve vochtigheid = ");
 Serial.print(DHT.humidity);
 Serial.print("% ");
 
 Serial.print("Temperatuur = ");
 Serial.print(DHT.temperature);
 Serial.println("C ");
 delay(2000);
}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: temperaturen en vocht in en om het huis meten

Berichtdoor nicoverduin » 19 Sep 2014, 08:54

Hackerstore schreef:Moet je de DHT11 niet aan een analoge pen hangen?

Nope...... 't is een one wire digitaal ding
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 6
Geregistreerd: 10 Sep 2014, 10:25

Re: temperaturen en vocht in en om het huis meten

Berichtdoor patrick2603 » 19 Sep 2014, 17:28

bedankt voor de reactie Hackerstore
maar van die kleine sketch en dan uitbreiden naar groter en meer voelers
dat is juist het probleem eentje uitlezen geen probleem maar meerdere ???
k'zal mij eerst meer moeten verdiepen in de c programeertaal denk ik

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

Re: temperaturen en vocht in en om het huis meten

Berichtdoor shooter » 21 Sep 2014, 19:31

de code van hackerstore is volledig fout. (zoals nico ook al zegt
pak mijn code maar eens en kijk wat er waar gebeurt.
je kunt die dewpointsubroutines zien als een functie waar een waarde uitkomt, dus als je er iets anders instopt komt er ook iets anders uit.
paul deelen
shooter@home.nl

Berichten: 6
Geregistreerd: 10 Sep 2014, 10:25

Re: temperaturen en vocht in en om het huis meten

Berichtdoor patrick2603 » 24 Sep 2014, 19:12

in dit stukje code heb ik al van alles verandert en geprobeerd.
namen veranderd zoals in uitleg van 14 Sep 2014, 19:39
ik krijg geen 2 sensoren aan het lezen.
shooter heeft wel een punt dat de code van hackerstore niet werkt.
ik zal nog wat verder zoeken en als ik het ooit aan de praat krijg
zet ik het stukje code op dit forum

/*-----( nodige libraries )-----*/
#include <dht11.h>

/*-----( verklaar objecten )-----*/
dht11 DHT11;

/*-----( Verklaar constanten, pin nummers)-----*/
#define DHT11PIN1 A0

void setup() /*----( SETUP: loopt eenmaal )----*/
{
Serial.begin(9600);

}/*--(einde van de setup )---*/

void loop() /*----( LOOP: loopt constant )----*/
{
Serial.println("\n");

int chk = DHT11.read(DHT11PIN1);


Serial.print("Vocht (%): ");
Serial.println((float)DHT11.humidity, 2);

Serial.print("Temperatuur (C): ");
Serial.println((float)DHT11.temperature, 2);


delay(5000);
}/* --(einde loop )-- */

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

Re: temperaturen en vocht in en om het huis meten

Berichtdoor shooter » 24 Sep 2014, 21:18

misschien een beetje stout maar het werkt wel.
Ik heb gewoon een beetje knip en plakken gedaan, getest op een mega maar een uno zal geen probleem zijn.
als je er nog meer wilt is dat geen probleem.

cpp code
#include <dht11.h>

//
// FILE: dht11_test1.pde
// PURPOSE: DHT11 library test sketch for Arduino
//

//Celsius to Fahrenheit conversion
double Fahrenheit(double celsius)
{
return 1.8 * celsius + 32;
}

// fast integer version with rounding
//int Celcius2Fahrenheit(int celcius)
//{
// return (celsius * 18 + 5)/10 + 32;
//}


//Celsius to Kelvin conversion
double Kelvin(double celsius)
{
return celsius + 273.15;
}

// dewPoint function NOAA
// reference (1) : http://wahiduddin.net/calc/density_algorithms.htm
// reference (2) : http://www.colorado.edu/geography/weath ... /about.htm
//
double dewPoint(double celsius, double humidity)
{
// (1) Saturation Vapor Pressure = ESGG(T)
double RATIO = 373.15 / (273.15 + celsius);
double RHS = -7.90298 * (RATIO - 1);
RHS += 5.02808 * log10(RATIO);
RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ;
RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
RHS += log10(1013.246);

// factor -3 is to adjust units - Vapor Pressure SVP * humidity
double VP = pow(10, RHS - 3) * humidity;

// (2) DEWPOINT = F(Vapor Pressure)
double T = log(VP/0.61078); // temp var
return (241.88 * T) / (17.558 - T);
}

// delta max = 0.6544 wrt dewPoint()
// 6.9 x faster than dewPoint()
// reference: http://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity)
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity*0.01);
double Td = (b * temp) / (a - temp);
return Td;
}


#include <dht11.h>

dht11 DHT2;
dht11 DHT3;

#define DHT2PIN 2
#define DHT3PIN 3

void setup()
{
Serial.begin(115200);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
}

void loop()
{
Serial.println("\n");

int chk2 = DHT2.read(DHT2PIN);

Serial.print("Read sensor 2 : ");
switch (chk2)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}

Serial.print("Humidity (%): ");
Serial.println((float)DHT2.humidity, 2);

Serial.print("Temperature (°C): ");
Serial.println((float)DHT2.temperature, 2);

Serial.print("Temperature (°F): ");
Serial.println(Fahrenheit(DHT2.temperature), 2);

Serial.print("Temperature (°K): ");
Serial.println(Kelvin(DHT2.temperature), 2);

Serial.print("Dew Point (°C): ");
Serial.println(dewPoint(DHT2.temperature, DHT2.humidity));

Serial.print("Dew PointFast (°C): ");
Serial.println(dewPointFast(DHT2.temperature, DHT2.humidity));

delay(2000);

// now sensor 3
Serial.println("\n");

int chk3 = DHT3.read(DHT3PIN);

Serial.print("Read sensor 3: ");
switch (chk3)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}

Serial.print("Humidity (%): ");
Serial.println((float)DHT3.humidity, 2);

Serial.print("Temperature (°C): ");
Serial.println((float)DHT3.temperature, 2);

Serial.print("Temperature (°F): ");
Serial.println(Fahrenheit(DHT3.temperature), 2);

Serial.print("Temperature (°K): ");
Serial.println(Kelvin(DHT3.temperature), 2);

Serial.print("Dew Point (°C): ");
Serial.println(dewPoint(DHT3.temperature, DHT3.humidity));

Serial.print("Dew PointFast (°C): ");
Serial.println(dewPointFast(DHT3.temperature, DHT3.humidity));

delay(2000);
}
//
// END OF FILE
//
paul deelen
shooter@home.nl

Volgende

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Google Adsense [Bot] en 6 gasten