미세먼지 센서 gp2y1010au0f


#define no_dust 0.35 //미세먼지 초기값
// 아두이노 - 미세 먼지 센서 연결
int dustout = A0;
int v_led = 2;
// 미세 먼지 센서 동작
float dust_funtion() {
  digitalWrite(v_led, LOW); // 적외선 LED ON
  delayMicroseconds(280); // 280us동안 딜레이
  vo_value = analogRead(dustout); // 데이터를 읽음
  delayMicroseconds(40); // 320us - 280us
  digitalWrite(v_led, HIGH); // 적외선 LED OFF
  delayMicroseconds(9680); // 10ms(주기) -320us(펄스 폭) 한 값
  sensor_voltage = get_voltage(vo_value);
  dust_density = get_dust_density(sensor_voltage);
  //Serial.print("value = ");
  // Serial.println(vo_value);
  // Serial.print("Voltage = ");
  // Serial.print(sensor_voltage);
  // Serial.println(" [V]");
  // Serial.print("Dust Density = ");
  // Serial.print(dust_density);
  // Serial.println(" [ug/m^3]");
  return dust_density;
}
//////////////////미세먼지 값 변환////////////////
float get_voltage(float value)
{
  // 아날로그 값을 전압 값으로 바꿈
  float V = value * 5.0 / 1024;
  return V;
}
float get_dust_density(float voltage)
{
  // 데이터 시트에 있는 미세 먼지 농도(ug) 공식 기준
  float dust = (voltage - no_dust) / 0.005;
  return dust;
}

Leave a Comment