아두이노 압력센서 활용 - adu-ino ablyeogsenseo hwal-yong

ARDUINO AND LPS22HB ABSOLUTE PRESSURE SENSOR EXAMPLE 

가을이 쏴 몰려온다. 노랑, 주황10월 부터 대면수업이 가능해 지고 학교는 부쩍 아이들이 많아졌다. 지금 이 순간보다 더 좋은 때는 이전에도 없었고, 앞으로도 오지 않는다. 강의실을 변경해 대면수업을 진행하기로 한다. 가장 아름답고 건강하고 푸르디 푸른 시절을 지내는 아이들에게 계절따위가 무어그리 대수인가? 계절은 지루하고 지루하게 일상을 사는 어른들이 하다 하다 못해 계절에게까지 의미를 부여하는 일을 만들어 준다. 

"가을이 좋다고 생각하니 갑자기 주체할 수 없을 정도로 가을이 좋아졌다. 누렇게 떡잎 진 나뭇잎이 길바닥에 뒹구는 것도 좋았고, 노란 잔디가 시들고 엉성하게 꺾어져 가는 모습도 못 견디게 좋았다. 그리고 그것들 위에 떠 있는 그 말간 하늘이며 흰 구름은 가을에만 있는 것 같아서 보다 소중스러웠다." 손소희 / 그 해 가을 중

짧은 단어를 쓸 수 있을 때는 절대 긴 단어를 쓰지 않는다. 빼도 지장이 없는 단어가 있을 경우에는 반드시 뺀다. 능동태를 쓸 수 있는데도 수동태를 쓰는 경우는 절대 없도록 한다. - 조지 오웰   

아두이노에서 LPS22HB 압력센서 모듈을 테스트 하는 글입니다. 여기서는 절대 압력 센서를 살펴봅니다. LPS22HB는 디지털 출력 기압계로 작동하는 초소형 압저항 절대 압력 센서입니다. 이 장치는 감지 소자와 I2C 또는 SPI 인터페이스를 통해 감지 소자에서 애플리케이션으로 통신하는 I2C 인터페이스로 구성됩니다.

절대압을 감지하는 센싱 요소는 ST가 개발한 전용 공정을 통해 제조된 부유 멤브레인으로 구성됩니다. LPS22HB는 풀 몰드, 홀드 LGA 패키지(HLGA)로 제공됩니다. -40°C ~ +85°C의 온도 범위에서 작동이 보장됩니다. 패키지는 외부 압력이 감지 요소에 도달할 수 있도록 구멍이 뚫려 있습니다. 

아두이노 압력센서 활용 - adu-ino ablyeogsenseo hwal-yong
ARDUINO AND LPS22HB ABSOLUTE PRESSURE SENSOR EXAMPLE 

스펙을 간단하게 알아보면 다음과 같다.

  • Features 260 to 1260 hPa absolute pressure range
  • Current consumption down to 3 μA
  • High overpressure capability: 20x full-scale
  • Embedded temperature compensation
  • 24-bit pressure data output
  • 16-bit temperature data output
  • ODR from 1 Hz to 75 Hz
  • SPI and I²C interfaces
  • Embedded FIFO
  • Interrupt functions: Data Ready, FIFO flags, pressure thresholds
  • Supply voltage: 1.7 to 3.6 V
  • High shock survivability: 22,000 g 

연결도는 아래 그림과 같다. 연결은 I2C 인터페이스로 연결한다.

아두이노 압력센서 활용 - adu-ino ablyeogsenseo hwal-yong
연결도 http://arduinolearning.com/code/arduino-and-lps22hb-absolute-pressure-sensor-example.php

아래 실습코드에서 사용하는 라이브러리는 IoThings Arduino Library for LPS22HB MEMS Pressure Sensor (260-1260 hPa) Absolute Digital Barometer Breakout 라이브러리를 사용합니다. 물론 더 간단하고 쉬운 라이브러를 구하거나 직접 아두이노 IDE에서 라이브러리 설치가 가능한지도 알아봐야 한다.

/***************************************************************************
This is a library for the LPS22HB Absolute Digital Barometer
Designed to work with all kinds of LPS22HB Breakout Boards
These sensors use I2C, 2 pins are required to interface, as this :
VDD to 3.3V DC
SCL to A5
SDA to A4
GND to common groud
Written by Adrien Chapelet for IoThings
***************************************************************************/
#include <Wire.h>
#include "IO_LPS22HB.h"

IO_LPS22HB lps22hb;

void setup()
{
    Serial.begin(9600);
    Serial.println("IoThings LPS22HB Arduino Test");
    lps22hb.begin(0x5D);
    byte who_am_i = lps22hb.whoAmI();
    Serial.print("Who Am I? 0x");
    Serial.print(who_am_i, HEX);
    Serial.println(" (expected: 0xB1)");
    if (who_am_i != LPS22HB_WHO_AM_I_VALUE) 
    {
        Serial.println("Error while retrieving WHO_AM_I byte...");
        while (true) 
        {
            // loop forever
        }
    }
}

void loop()
{
    Serial.print("P=");
    Serial.print(lps22hb.readPressure());
    Serial.print(" mbar, T=");
    Serial.print(lps22hb.readTemperature());
    Serial.println("C");
    delay(300);
}

시리얼 모니터를 열어 결과를 확인하면 아래와 같다.

IoThings LPS22HB Arduino Test
Who Am I? 0xB1 (expected: 0xB1)
P=982.52 mbar, T=18.21C
P=982.56 mbar, T=18.25C
P=982.51 mbar, T=18.26C
P=982.52 mbar, T=18.27C
P=982.54 mbar, T=18.27C
P=982.55 mbar, T=18.27C
P=982.51 mbar, T=18.26C
P=982.55 mbar, T=18.26C
P=982.55 mbar, T=18.26C

LPS22HB 센서 데이터쉬트를 올려둔다.

lps22hb.pdf

1.46MB

더욱 좋은 정보를 제공하겠습니다.~ ^^


아두이노로 장난하기

아두이노로 압력을 측정하기

2018. 3. 13. 00:37

FSR(Force Sensing Resister)은 고분자후막(PTF)장치의  하나입니다. 압력을 감지하는 면에 가해지는 압력에 반비례해서 전기 저항이 감소하는 특성이 있고, 이것을 센서 입력으로 받아서 입력을 측정할 수 있습니다. 필름 상태로 된 얇고 가벼운 센서로, 아주 약한 압력도 감지할 수 있습니다. 또 어느 정도 구부러지는 성질이 있어 곡면에도 접착할 수 있기 때문에 버튼으로 사용되고 있습니다. 보통 스위치를 이용하는 버튼에는 ON/OFF 두 단계의 정보밖에 얻을 수 없지만, FSR을 이용하는 버튼에서는 버튼을 누르는 강도에 따른 정보까지 얻을 수 있는 것이 특징입니다.

정확하게 측정하기 위해서는 압력을 감지하는 면을 균일하게 눌러야 합니다. 누르는 범위가 감지하는 면보다 넓으면, 면의 크기보다 작은 원반이나 스폰지를 감지하는 면 위에 놓거나 하는 방안이 필요합니다.

압력센서 동작원리

그림과 같이 압력 센서는 4개의 레이어로 구성되어 있습니다. Electrode의 면적 중 Semi-Conductor에 닿는 면적이 증가하면 저항이 줄어드는 원리로써 약간의 힘을 가하면 약100KΩ의 저항이 발생하며, 힘을 더 가할수록 센서의 저항값이 감소합니다. 얇은 필름 방식으로 제작된 압력센서로서 간단한 접촉의 압력 측정이 가능하며,센서 영역에 얼마나 많은 압력이 가해졌느냐에 따라 저항 값이 변하게 됩니다.

아두이노 압력센서 활용 - adu-ino ablyeogsenseo hwal-yong

▶ 아두이노 보드: 1개 

▶ 브레드보드: 1개

▶ 점프선

▶ 저항 : 330옴, 10k옴

▶ LED 1개

▶ 압력 센서 : 1개 (FSR-402)

(http://www.icbanq.com/P007537141)

▶ CLCD: 1개

 아두이노

압력센서로 들어온 값을 눌린 강도에 따라 LED 밝기를 바꾸는 예제입니다.

 아두이노 예제

※ 압력센서로 들어오는 신호를 디지털로 변환 후 LED의 밝기가 바뀌고 LCD에 그값을 표시하는 예제

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#include <LiquidCrystal.h>

//sensorpin은 센서에 압력센서에 연결한 아날로그 핀(0번)

int sensorPin = 0;

//ledPin은 LED에 견결한 핀(9번)

int ledPin = 9;

//LCD 객체

LiquidCrystal lcd(12115432);

void setup( ){

  //LCD의 열수와 행수를 설정

  lcd.begin(162);

  //ledPin을 출력으로 설정

  pinMode(ledPin, OUTPUT);

}

void loop( ){

  //센서 값을 읽어 들인다 

  int value = analogRead(sensorPin);

  //LCD화면을 지운 후에 읽어 들인 압력을 표시

  lcd.setCursor(00);

  lcd.print("PRESSURE");

  lcd.print(value);

  //읽어 들인 값으로 LED의 밝기를 구하고 LED의 밝기 바꿈

  int intensity = map(value, 010230255);

  analogWrite(ledPin, intensity);

  //10ms 동안 대기

  delay(10);

}

cs

※ 압력센서로 들어오는 신호를 디지털로 변환 후 LED의 밝기가 바뀌고 아두이노 IDE 시리얼 모니터에 값을 표시하는 예제 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//sensorpin은 센서에 압력센서에 연결한 아날로그 핀(0번)

int sensorPin = 0;

//ledPin은 LED에 견결한 핀(9번)

int ledPin = 9;

void setup( ){

   //시리얼 통신 속도 설정

  Serial.begin(9600);

  //ledPin을 출력으로 설정

  pinMode(ledPin, OUTPUT);

}

void loop( ){

  //센서 값을 읽어 들인다

  int value = analogRead(sensorPin);

  //읽어 들인 값으로 LED의 밝기를 구하고 LED의 밝기 바꿈

  int intensity = map(value, 010230255);

  //압력센서값을 시리얼 모니터로 출력

  Serial.println(value);

  analogWrite(ledPin, intensity);

  //10ms 동안 대기

  delay(10);

}

cs

'아두이노로 장난하기' Related Articles