Feuchtigkeitsmessung mit ON Semiconductor Sensor - Z-Uno - SmartHome Z-Wave Modul

Direkt zum Seiteninhalt

Feuchtigkeitsmessung mit ON Semiconductor Sensor

-> Feuchtigkeitssensor
Beschreibung:
Diese Z-Wave-Baugruppe realisiert eine Temperatur-/ Feuchtigkeitsmessung über einen Honeywell CCD2Dxx I²C Sensor, der sich mehrere Meter vom Z-Uno entfernt befinden kann.
Einige On Semiconductor Sensoren sind auch für kondensierende Feuchtigkeit ausgelegt, wir verwenden ausschliesslich diese.
Die Sensoren eignen sich hervorragend für den Batteriebetrieb, da sie mit einer unteren Betriebsspannungsgrenze von 2,3V arbeiten.

Die Bibliotheken aus dem Projekt sollten vorerst im Projektordner bleiben (bis sie im Z-Uno integriert wurden), um bei einem Update diese nicht zu verlieren.

Weitere Beipiele findet man unter http://z-uno.z-wave.me/examples/
Aufbau
(Fritzing)

(folgt bald)

VCC: ab 2,7V !
batterietauglich
Schaltplan:
(Fritzing)
(folgt bald)

Arduino Code: (Arduino 1.6.5)

Download Code (folgt bald)
 /*     Amphenol Advanced Sensors
  *     Sensor ChipCap® 2-SIP CCD2D25
  *     front:
  *     1       -> ZUNO(digital pin 9) SCL
  *     2       -> 3v3   
  *     3       -> GND 
  *     4       -> ZUNO(digital pin 10) SDA
  *	
  * 	Used Amphenol datasheet, modified and published
  *	by Michael Pruefer http://z-uno.smarthome.work
  *	V. 0.9 (library will be done soon) 12.12.2016
  */

#include "Wire.h"
#define CHIPCAP2_I2CADDRESS  0x28

long cc2d_temperature10=0;
long cc2d_humidity=0;

int temp, hum;

ZUNO_SETUP_CHANNELS(
   ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE, 
                          SENSOR_MULTILEVEL_SCALE_CELSIUS, 
                          SENSOR_MULTILEVEL_SIZE_TWO_BYTES, 
                          SENSOR_MULTILEVEL_PRECISION_ONE_DECIMAL,
                          getterTemp),
   ZUNO_SENSOR_MULTILEVEL_HUMIDITY(getterHumidity)                       
);

 
void setup()
{
 Wire.begin(); // wake up I2C bus, init sensor
 Serial.begin();
}
 
void loop()
{
  int ccd_status=readCC2D25();
  if (ccd_status==0){
    temp=cc2d_temperature10;
    Serial.print("temp:");Serial.println(cc2d_temperature10/10.0);
    hum=cc2d_humidity;
    Serial.print("Hum:");Serial.println(cc2d_humidity);
    zunoSendReport(1);
    zunoSendReport(2);
  }
  else
  {
    Serial.print("Status: failed ");Serial.println(ccd_status);
  }  
  delay(30000);  // send once in 30 seconds
}

int getterTemp() {
    return temp;
}

int getterHumidity() {
    return hum;
}

// Read value of sensor
byte readCC2D25(){
 Wire.beginTransmission(CHIPCAP2_I2CADDRESS );
 Wire.write(CHIPCAP2_I2CADDRESS);
 Wire.endTransmission(); 
 delay(150);  // wait until sensor is ready
  byte c0,c1,c2,c3;
  Wire.requestFrom(CHIPCAP2_I2CADDRESS ,4); //send data read request
    while(Wire.available()){
      c0=Wire.read();
      c1=Wire.read();
      c2=Wire.read();
      c3=Wire.read();
      Wire.endTransmission();
  }  
/* for debugging
  Serial.println("----");
  Serial.println(c0,HEX);
  Serial.println(c1,HEX);
  Serial.println(c2,HEX);
  Serial.println(c3,HEX);
  Serial.println("----");
*/  
  cc2d_temperature10=(((long)((c2 << 6) + (c3 >> 2))* 1650) >>14 )  - 400;
//  Serial.println(cc2d_temperature10);
  cc2d_humidity=(((long)(((c0 & 0x3f) << 8) + c1)*100) >>14) ;
//  Serial.println(cc2d_humidity);
  byte cc2d_status=(c0 & 0xc0) >> 6;
  return cc2d_status;
}
Copyright 2018 Michael Prüfer
Zurück zum Seiteninhalt