본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 FSR 압력센서 를 사용해 압력값 출력해 보기

by 오마이엔지니어 2016. 11. 7.
반응형

Arduino Uno 로 FSR 압력센서 를 사용해서 시리얼 모니터에 압력값을 출력해 보는 프로젝트 입니다

FSR (Force Sensitive Resisiter) 압력센서 는 정밀도가 뛰어나진 않지만 저렴한 가격에 간단한 구조로 설계되어 손쉽게
물리적인 압력이나 무게등을 측정할수 있습니다

 

<FSR 압력센서 이미지>

위 이미지 처럼 다양한 사이즈의 다양한 모양의 FSR 압력 센서가 있습니다
(각자의 프로젝트나 용도에 맞게 선택해서 사용하면 되겠습니다)



<FSR 압력센서의 구조>

위 이미지 처럼 FSR 압력센서는 몇개의 레이어로 구성되어 있습니다

Active Area 의 면적중 Semi-Conductor 에 닿는 면적이 증가하면서 저항이 줄어드는 원리입니다
구조는 간단한 반면 정확도는 떨어지는 단점이 있습니다

다양한 제조사에서 생산한 FSR 압력센서가 시중에 판매되고 있으며
본 테스트에서는 압력센서 FSR IMS009-C7.5 (센싱영역 7.5mm)를 사용하였습니다

 

 

FSR (Force Sensitive Resisiter) 라는 이름처럼 압력센서는 물리적인 압력에 따라서 저항값이 변하게 됩니다
압력이 없을 경우에는 센서는 무한대의 저항값을 가집니다


약간의 압력을 가해서 100KΩ 의 저항이 발생하며, 이후에 압력이 커질수록 저항값이 떨어지게 됩니다
위 그래프를 보면 압력값에 따른 저항값의 변화를 확인할수 있습니다 

위 표는 5V 전원 및 10K 풀다운 저항이있는 센서의 힘 / 저항을 기준으로 한 대략적인 아날로그 전압을 나타냅니다

사용된 부품

Arduino Uno R3 (Italy)

압력센서 FSR IMS009-C7.5

점퍼케이블
5mm LED
3색 RGB LED 캐소드 타입
미니 브래드보드
저항 10K (Ohm)
저항 220 (Ohm)



구성 배선도 - 압력감지시 시리얼 모니터로 출력값 변화 확인하기 

 


구성 배선도 - 감지되는 압력에 따른 LED의 밝기 변화 확인하기

 

사용된 예제소스 

FSR.txt
0.00MB
FSR LED.txt
0.00MB
FSR Serial Monitor.txt
0.00MB


주의사항

센서의 VCC 에는 아두이노의 3.3V 또는 5V의 전원에 연결하고, ADC 는 풀다운(pull down)저항을 거쳐서 GND로 연결하면 됩니다
풀다운(pull doun)저항--->외부 변화가 생기기전 GND 를 (0V) 입력 상태로 묶어 두는것


저항과 센서 사이의 선을 아두이노의 analog 핀으로 연결하면 압력이 없을경우 0V,

압력이 생길경우 최대 5V 까지 입력이 됩니다

"FSR" 예제는 압력센서에 가해지는 압력변화에 따른 아날로그 출력값 변화를 0~255 수치까지

시리얼 모니터로 확인할 수 있는 예제입니다 

아두이노의 아날로그 출력값은 0~1023 까지이고 이 수치를 0~255 까지 변환해서 시리얼 모니터로 출력해 줍니다
int mfsr_r18 = map(SensorReading, 0, 1024, 0, 255);
Serial.println(mfsr_r18);

"FSR LED" 예제는 LED를 배선하여 압력센서에 가해지는 압력변화에 따라 LED의 밝기가 변화는것을 확인할수 있습니다
analogWrite(ledPin, value); 

예제코드를 확인해 보면 알수 있듯이 시리얼 모니터로 역시 아날로그 출력값(0~255)을 확인해 볼수 있습니다

Serial.println(value);
value = map(value, 0, 1023, 0, 255);

"FSR Serial Monitor" 예제는 압력센서에 가해지는 압력변화에 따라 아날로그 출력값 0~1023 까지
if (analogReading < 10)       // from 0 to 9
Serial.println(" -> NO FORCE DETECTED");
else if (analogReading < 100) // from 10 to 99
Serial.println(" -> LOW FORCE");
else if (analogReading < 350) // from 99 to 349
Serial.println(" -> MEDIUM FORCE");
else // from 350 to 1023
Serial.println(" -> HIGH FORCE");
압력값이 10보다 작을때는 NO FORCE DETECTED
압력값이 10~99 사이일때는 LOW FORCE
압력값이 100~349 사이일때는 MEDIUM FORCE
압력값이 350~1023 사이일때는 HIGH FORCE
로 시리얼 모니터에 출력해 줍니다

 

프로젝트 동영상 - 압력감지시 시리얼 모니터로 출력값 변화 확인하기 


프로젝트 동영상 - 감지되는 압력에 따른 LED의 밝기 변화 확인하기


프로젝트 동영상 - 압력감지시 시리얼 모니터로 출력값 변화 확인하기 (LOW~HIGH FORCE 문구 출력)


이어서 추가로 압력 변화시 시리얼 모니터로 출력값을 확인해 보고 3색 RGB LED를 제어해 보는 프로젝트입니다

구성 배선도 - 압력감지시 시리얼 모니터로 출력값 변화 확인해 보고 3색 RGB LED 제어해 보기

구성 배선도 - 압력감지시 시리얼 모니터로 출력값 변화 확인해 보고 5mm LED 3개 제어해 보기

사용된 예제소스 

FSR RGB LED.txt
0.00MB


주의사항

센서의 VCC 에는 아두이노의 3.3V 또는 5V의 전원에 연결하고, ADC 는 풀다운(pull doun)저항을 거쳐서 GND로 연결하면 됩니다
풀다운(pull doun)저항--->외부 변화가 생기기전 GND 를 (0V) 입력 상태로 묶어 두는것


저항과 센서 사이의 선을 아두이노의 analog 핀으로 연결하면 압력이 없을경우 0V,

압력이 생길경우 최대 5V 까지 입력이 됩니다


int FSR;
const int analog_0=0;
int l1=8;
int l2=9;
int l3=10;
압력센서는 아두이노 아날로그 A0번핀에 LED는 l1=블루 8번, l2=그린 9번, l3=레드 10번 순으로 배선합니다

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(l1,OUTPUT);
  pinMode(l2,OUTPUT);
  pinMode(l3,OUTPUT);
  pinMode(5,OUTPUT);
}
셋업에서 아날로그 입력값을 받아서 LED l1~l3, 그리고 부저 5번핀에 출력해 줍니다

void loop() {   
  // put your main code here, to run repeatedly:
FSR=analogRead(analog_0);
Serial.println(FSR);
if(FSR>0&&FSR<10)
 { 
  digitalWrite(l1, LOW);
  digitalWrite(l2, LOW);
  digitalWrite(l3, LOW);
  digitalWrite(5, LOW);
 }
else if(FSR>10&&FSR<100)
 {
  digitalWrite(l1, HIGH);
  digitalWrite(l2, LOW);
  digitalWrite(l3, LOW);
  digitalWrite(5, LOW);
 }
else if(FSR>100&&FSR<300)
 {
  digitalWrite(l1, LOW);
  digitalWrite(l2, HIGH);
  digitalWrite(l3, LOW);
  digitalWrite(5, LOW);
  }
else if(FSR>300&&FSR<700)
 {
  digitalWrite(l1, LOW);
  digitalWrite(l2, LOW);
  digitalWrite(l3, HIGH);
  digitalWrite(5, HIGH);
  }
}
루프에서 FSR 아날로그 출력값을 시리얼 모니터로 출력해 주고
아날로그 출력값이 FSR이 0~10 사이일때 l1,l2,l3,l4,부저(5번핀) 가 모두 LOW로 꺼짐입니다
아날로그 출력값이 FSR이 10~100 사이일때 l1(8번 블루LED)이 HIGH로 켜지고 나머지는 모두 LOW로 꺼짐입니다
아날로그 출력값이 FSR이 100~300 사이일때 l2(9번 그린LED)이 HIGH로 켜지고 나머지는 모두 LOW로 꺼짐입니다
아날로그 출력값이 FSR이 300~700 사이일때 l3(10번 레드LED)과 부저(5번핀)가 HIGH로 켜지고

나머지는 모두 LOW로 꺼짐입니다

3색 RGB LED 대신 위 배선도를 참조해서 5mm LED 3개를 배선해 동일한 예제로 테스트 가능합니다


프로젝트 동영상 - 압력감지시 시리얼 모니터로 출력값 변화 확인해 보고 3색 RGB LED 제어해 보기


구성 배선도 - 압력감지시 시리얼 모니터로 출력값 변화 확인해 보고 5mm LED 3개 제어해 보기

반응형

댓글