작은항해자의 항해

HS1101 습도센서 본문

IT 이야기/IOT 센서

HS1101 습도센서

작은항해자 2019. 1. 24. 17:40

HS1101 습도센서




콘덴서를 기반으로 하고, 저항값이 변하는 센서가 아닌 정전용량이 변경되는 센서이다.


측정범위 : 1 ~ 99%RH

응답시간 : 5초

정확도는 ±5%RH

적용온도 : -40°C ~ 100°C

동작 전압 : 5V ~ 10V


Doc

 HS1101 Datasheet27920-Humidity-Sensor-Datasheet.pdf

 Humidity Sensor Documentation27920-Humidity-Sensor-Documention-S1101-v1.0.pdf

 HS1101 Pin code :  27920-HS1101-Humidity-Sensor-Spin-Code.zip

 HS1101 Arduino Code27920-HS1101-Humidity-Sensor-Arduino-Code.zip


Code

 Arduino Code


int sensorPin = 4;                        // RC circuit with HS1101 sesnor connected to digital pin D4

long result = 0;

int const RHconstant = 12169;             // RH constant


void setup() {

   Serial.begin(9600);                   // Use Serial Monitor window at 9600 baud

   Serial.println("Humidiy reading start");

   Serial.print("RC delay");

   Serial.print("\t");

   Serial.println("Humidity");

}

void loop() {

   long RCdelay = RCTime(sensorPin);     // Take RC time reading of sensor

   Serial.print(RCdelay);                // Display RC time delay

   Serial.print("\t\t"); 

   

   RCdelay = RCdelay * 215;               // Calibation to RC time delay; experiment with literal value

   int humidity = (RCdelay - RHconstant) / 24;

   Serial.println(humidity / 100, DEC);  

   delay(500);                           // Wait 1/2 second for the next read

}


// Standard RC time function

long RCTime(int sensePin){

   long result = 0;

   pinMode(sensePin, OUTPUT);       // Make pin OUTPUT, and turn HIGH

   digitalWrite(sensePin, HIGH);    

   delay(1);                        // Wait 1 ms delay

   pinMode(sensePin, INPUT);        // Make sensor INPUT

   digitalWrite(sensePin, LOW);     // Turn off Arduino internal pullup resistor

   while(digitalRead(sensePin)){    // Loop until pin goes low

      result++;

   }

   return result;

}



위의 회로를 가지는 센서. 

충전과 방전을 계속 반복하기 위한 회로도.

10M옴은 전류 누수를 제한 해주는 소자.


아두이노에서 핀에 HIGH를 넣어주면 충전되고, LOW가 되면 충전이 방전된다.

정전용량의 변화는 방전되는 속도의 변화로 측정.


Code

  void setup() {

  Serial.begin(9600);

}


void loop() {

  int a=0;

  pinMode(12,OUTPUT);

  digitalWrite(12,HIGH);

  delay(1);//1/1000초간 충전해주도록 합니다.

  pinMode(12,INPUT);//핀을 입력으로변경하고, 

  digitalWrite(12,LOW);//LOW를 인가해서 방전시키기 시작합니다.

  while(digitalRead(12)){//방전되는 동안은 값이 HIGH입니다.

    a++;//이 방전되는 시간은 1/1000초보다 짧기 때문에, delay없이 카운트를 합니다.

  }

  Serial.println(a);//카운트 한값을 출력합니다.

}



'IT 이야기 > IOT 센서' 카테고리의 다른 글

co2 농도의 영향도  (0) 2019.02.03
Light Intensity Sensor - BH1750FVI, GY-30  (0) 2019.01.24
8 Digit 7-Segment Display Module - MAX7219  (0) 2019.01.23
MH-Z14A CO2 Sensor  (0) 2019.01.21
MH-Z19 CO2 Sensor  (4) 2019.01.21