본문 바로가기

관리하지않음/아두이노

[아두이노] 풍속센서 사용법

아두이노 센서 중에 바람을 측정하는 풍속 센서는 찾기 힘들었습니다. 디바이스 마트에 아두이노 호환 풍속 센서로 판매하는 제품이 있긴 한데, 98000원이라는 사악한 가격으로 판매되고 있습니다. 45m/s까지 측정이 가능하나 너무 비싼 가격 때문에 이것으로 시제품을 만들기에는 무리가 있었습니다.

 

아두이노 호환 풍속센서

다른 풍속 센서를 찾다가 오므론(Omron)이라는 외국회사에서 만든 D6F-V03A1이라는 유량 센서를 발견했습니다. 3만원대이고 3m/h까지 측정되지만 일단 시제품 만들기엔 적합한 것 같아서 구매했습니다.

 

Omron D6F-V03A1 유량센서

이 센서를 사용하기 위해서는 03SR-3S 소켓과 AWG30 와이어도 필요해서 같이 구매했습니다.

 

D6F-V03A1 유량센서 + 03SR-3S + AWG30

이 센서는 Datasheet는 제공하지만 라이브러리가 따로 없었습니다. 그래서 데이터시트를 이용해서 직접 코드를 작성했습니다. 코드를 작성할 때 메카솔루션 블로그 포스팅을 참고했습니다.

1.  보드 구성

데이터 시트

데이터 시트를 보면 3개의 핀이 순서대로 GND, Vout, Vcc에 연결되어야 하는 것을 알 수 있습니다. 전원은 3.15 ~ 3.45V 사이에 연결해줘야 해서 아두이노 3.3V에 연결해줬습니다.

 

보드 연결

GND는 아두이노 GND에, Vout은 아두이노 A0에, Vcc는 아두이노 3.3V핀에 연결해줬습니다.

 

2. 데이터시트를 통한 프로그램 코드 유추

데이터시트

이 포스팅에서 오차는 고려하지는 않겠습니다.

데이터 시트에 나와있는 그래프를 보면 0m/s일 때 0.5V, 3m/s일 때 2V가 나오는 것을 알 수 있습니다. 이상적인 직선 형태로 가정하고 2차 방정식을 풀어보겠습니다.

 

0 = 0.5a + b

3 = 2a + b

a = 2, b = -1

 

바람 세기에 따른 출력 값이 직선형태라고 가정하면, 2차 방정식 y=2x-1을 따를 것입니다.

 

3. 코드 작성

위에서 유추한 y=2x-1을 참고해 작성한 아두이노 코드는 다음과 같습니다.

void setup() {
  Serial.begin(9600);
}
void loop() {
  int pin = analogRead(A0);
  float flow = pin/1023.0*3.0; // 0~1023으로 표시되는 범위를 0~3으로 매핑
  
  if(0.5 <= flow) {
    float value = flow*2-1; //y=2x-1 공식 대입
    Serial.print(value, 1); //소수점 첫째짜리까지 표시
    Serial.println("m/s");
  } else{ // 풍속이 음수가 나오면 안되므로 기준값 이하면 0.0m/s로 출력 
   Serial.println("0.0m/s");
  }
  delay(500); // 0.5초에 한번
}

0.5초에 한 번씩 센서 값이 찍히는 걸 확인할 수 있었습니다.

 

아두이노 시리얼모니터

D6F-V03A1 유량 센서의 최대 측정값이 3m/s밖에 안 되는 점 참고해주세요.!