초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

압력 센서-힘 측정하기

2014-08-12 09:55:08

개요

이번 예제에서는 압력센서에 대해 알아보고, 센서를 통해 '힘'을 측정하는 방법에 대해 학습해 보겠습니다.

먼저 압력센서에 대해 알아보겠습니다.

압력센서는, Force Sensitive Resistor를 줄여서 FSR 센서라고도 합니다.

출처 : 압력센서의 구성과 원리 - itp.nyu.edu


센서의 동그란 부분이 누르는 힘을 감지하여 눌렀을때 저항을 감소시키며, 누르지 않은 상태에서 저항을 유지하는 원리로 작동합니다

 

출처: Charm LAB - MOZART GLOVE
 

장갑에 부착하여 누르는 힘으로 연주하는 악기를 만들수도 있고,


 

 

출처:diybiomechanic
 

기타 피크 사이에 압력센서를 넣어 기타를 연주하면서 동시에 다른 악기도 컨트롤 할수 있습니다.
이처럼 압력센서는 다루기가 손쉽고 가격도 저렴하지만 다양한 프로젝트에 응용될수 있는 센서입니다.




그럼 본격적으로 실습에 들어가 보갰습니다.
힘의 크기(저항값)에 따라 LED의 밝기를 조절할수 있는 간단한 예제를 통해 압력센서 활용법에 대해 알아 봅시다.

 

 

미리보기 동영상

 

 

 

 

부품목록


본 예제에서는 총 7가지의 부품이 필요합니다.

 

 

NO 부품명 수량 상세설명
1 아두이노 (오렌지보드) 1 아두이노 (오렌지보드)
2 LED 1 LED
3 브레드보드 1 브레드보드
4 점퍼 케이블 7 점퍼 케이블
5 압력 센서 1 압력 센서
6 220Ω 저항 1 저항
7 10㏀ 저항 1 저항

 

 

 

부품명

아두이노 

(오렌지보드)

브레드보드 점퍼케이블 압력센서 LED
파트 x1 x1 x7  x1 x1

 

부품명 220Ω 저항 10㏀ 저항
파트 x1 x1
 

 

 

하드웨어 Making


회로도

 

브레드보드 레이아웃

 

 

소프트웨어 Coding

// LED를 3번핀에 연결합니다.
int LED = 3; 
void setup() {
	// 센서값을 측정하기위해 시리얼통신을 준비합니다.
	Serial.begin(9600); 
}

void loop() {
	//아날로그 0번 핀에 압력센서를 연결합니다.
	int sensorval = analogRead(A0);
	// 0부터 1023의 센서값을 PWM 값 범위(0-255)로 변환 합니다.
	int brightness = map(sensorval, 0 , 1023, 0, 255);
	
	// 아나로그 입력을 통해 LED를 밝기를 조절합니다..
	analogWrite(LED,brightness); 
	
	//시리얼 모니터를 통해 센서값과 LED의 밝기를 표기합니다. 
	Serial .println("Sensorvalue : " +String(sensorval) + ", LED Output : " + String(brightness));
	
	//100ms동안 대기합니다. 
	delay(100);
}

 

 

 

소프트웨어 & 하드웨어 설명

1.스케치 설명
 

int LED = 3; // LED를 3번핀에 연결합니다.


3번 핀 외에도 아두이노 우노의 경우 11,10,6,5 번의 핀이 PWM출력을 지원합니다.

 

int sensorval = analogRead(A0);//아날로그 0번 핀에 압력센서를 연결합니다.
int brightness = map(sensorval, 0 , 1023, 0, 255);// 0부터 1023의 센서값을 PWM 값 범위(0-255)로 변환 합니다.
analogWrite(LED,brightness); // 아나로그 입력을 통해 LED를 밝기를 조절합니다..

 

sensorval 이란 표기는 임의로 변경 가능하며 아날로그 0번 핀으로 부터 읽어들인 값을 sensorval 이란 이름으로 쓰겠다 라고 선언하였고,
0V-5V의 전압을 0부터 1023의값으로 읽어 들이는 센서값을  PWM출력으로 변환 해 주어야 하는데 그이유는 LED 의 밝기가 0에서 최대255의 값을 지니기 때문입니다.
그 변환 된 값을 analogWrite()함수를 통해 LED(3번핀)으로 보내주겠다 라고 선언하였습니다.

 

Serial .println("Sensorvalue : " +String(sensorval) + ", LED Output : " + String(brightness));
//시리얼 모니터를 통해 센서값과 LED의 밝기를 표기합니다. 
delay(100);

 

 


시리얼 모니터창을 통해 숫자로 이루어진 센서값을 정확하게 측정하여 보여주는데
(" 시리얼모니터상 표기 : "+String(스케치상에서 불러들일 값) + ", 의 구성으로 작성하시면 됩니다.
delay(100); 은 100밀리초 동안 대기하지 않으면 너무빠른 속도로 센서값이 표기 되기떄문에 지연시간을 주었습니다.

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

압력센서, 아두이노, 오렌지보드