Sida 1 av 1

Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 11:53:58
av PHermansson
Sitter och testar en HH10D fuktsensor men får inga bra värden. Någon som har någon bra kod?
Jag använder denna kod:

Kod: Markera allt

/*
* Read HH10D humidity sensor (http://www.sparkfun.com/products/10239)
* It contains a M24C02BN6 Eeprom with calibration values.
* 
* Author: Patrik Hermansson, www.patrikhermansson.se
* Date: 110309
*
* Example calibration values:                          
* Sensitivity: 327
* Offset: 7499
*
* Connections:
* Vss - Gnd
* Vdd - +3.3V
* Fout - D5 (Mega168 pin 11)
* SDA - A4 (pin 27)
* SCL - A5 (pin 28)
*/ 
                  
#include <Wire.h>
#include <FreqCounter.h>	// http://interface.khm.de/index.php/lab/experiments/arduino-frequency-counter-library/

int rv = 0, offset;
float sens;
long int freq;


void setup() {
	Wire.begin();
	Serial.begin(38400);
	Serial.println("Hi!");

	readCalib(81,10);
        sens = rv;
        // Debug, test without I2C connection
        //sens = 327;
	Serial.print("Sensitivity: ");
	Serial.println(sens);
 
	readCalib(81,12);
        offset=rv;
        // Debug, test without I2C connection
        //offset = 7499;	
        Serial.print("Offset: ");
	Serial.println(offset);	
        
	delay(1000);
}

void loop() {
	// Calculate frequency out from HH10D
	FreqCounter::f_comp= 8;             // Set compensation to 12
	FreqCounter::start(1000);            // Start counting with gatetime of 1000ms
	while (FreqCounter::f_ready == 0)         // wait until counter ready 
		freq=FreqCounter::f_freq;            // read result
	
        float RH = (offset-freq)*(sens/4096);
	//int RH = (7499 - freq) * 0.09033203125;
	Serial.print("Sens: ");
	Serial.println(sens);
	Serial.print("offset: ");
	Serial.println(offset);
	Serial.print("Humidity: ");
	Serial.println(RH);	
	Serial.print("Freq: ");
	Serial.println(freq);	
	Serial.print("offset-freq: ");
	Serial.println(offset-freq);	
	Serial.print("sens/4096: ");
	Serial.println(sens/4096);
	Serial.print("offset-freq)*sens/4096: ");
	Serial.println((offset-freq)*sens/4096);

        delay(10000);
}


int readCalib( int deviceaddress, int calibAddress )   // deviceaddress is 1  according to datasheet
{
    // Set address
    Wire.beginTransmission(deviceaddress);
    Wire.write(calibAddress); 
    Wire.endTransmission();

    // Request return value
    Wire.requestFrom(deviceaddress, 2);
    // Collect return value
    for (int c = 0; c < 2; c++ )
      if (Wire.available()) rv = rv * 256 + Wire.read();
    return rv;
  }

Koden tycker att luftfuktigheten i rummet är 6-7% vilket inte känns rimligt. Det jag hittar som skiljer sig mot andras värden är kalibrationsvärdet sens som i mitt fall är 327, någon annan hade fått ett värde på 420 eller så. Borde vara detta som gör att min avläsning blir för låg?

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 14:28:35
av FormerMazda
Inget bra svar på din fråga, men, jag köpte dessa:
http://viewitem.eim.ebay.se/DHT11-Digit ... 16232/item

Och tillsammans med detta lib: http://playground.arduino.cc/Main/DHT11Lib

Busenkelt och vad jag kunde se fungerade det bra.
Projektet har dock inte blivit av, men på testbänk under några timmar låg det rätt stadigt på typ 32%Rh

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 14:47:30
av PHermansson
Jo en sån har jag liggande också. Men jag har som avsikt att köra med två AA-batterier, blir lite låg spänning för DHT11an.

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 14:48:43
av FormerMazda
Ah! Ja, som sagt, jag tillförde nog inget. :wink:

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 15:38:05
av swesysmgr
Jag hade kollat på I2C-bussen och utfrekvensen från sensorn att de adresser som skickas och svaren som kommer verkligen är samma som mjukvaran ger i från sig i andra änden. Pullup för bussen antar jag sitter på din Arduino?

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 17:14:44
av PHermansson
Du menar att jag läser ut fel kalibreringsvärden?
Kollar på frekvensen ut från HH10D nu. Arduinoprogrammet säger ca 7419Hz, min DSO Nano säger samtidigt 7,42kHz. Så långt är det rätt i alla fall...

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 17:34:24
av PHermansson
Jag har visst missat pull-up för SCL och SDA men läst ut samma värden flera gånger. Hmm är ny på I2C :)

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 17:46:35
av PHermansson
Även om jag manuellt ökar värdet på sens till 500 så ökar inte resultatet nämnvärt. Hmm beräkningsfel ändå?

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 17:50:36
av swesysmgr
Ja för att avgöra om felet sitter i sensorns hårdvara eller om den skickar rätt värden på bussen som sedan blir manglade pga. konvertering eller fel byteordning i mjukvaran. Eller att fel adresser i eeprommet avläses eller att bussklockan inte är utanför vad det klarar.

Du borde snabbt och enkelt kunna se I2C-kommunikationen med ett digitaloscilloskop, Saleae eller Buspirate.

Re: Arduino och HH10D fuktmätare

Postat: 22 mars 2013, 20:00:40
av PHermansson
Hittade detta:
You can hence assume they're close to 7700 (Offset) & 340 (Sens.).

Så jag undrar ändå om det inte är min formel som är fel...