본문 바로가기

아두이노로 장난하기

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







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

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



압력센서 동작원리




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




[전자부품목록]

▶ 아두이노 보드: 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