본문 바로가기

아두이노로 장난하기

아두이노로 구부러짐 측정하기




안녕하세요 고군입니다~

이번 시간에는 휨 센서(Flex Sensor)에 대하여 알아보고 아두이노에 연결하여 동작을 시켜보겠습니다. 모양은 위 그림과 같이 길쭉한 형태로 생겼고 얇은 필름으로 덮여 있습니다. 이름 처럼 휘어지면서 구부러짐 정도에 따라 저항값이 바뀌게 됩니다.


휨 센서는 센서 본체를 구부리면 저항값이 변하는 센서입니다. 똑바로 펴진 상태에서의 저항값은 약 10kΩ으로, 구부리면 천천히 저항값이 증가하여 90도일 때 약 30~40kΩ이 됩니다(곡률 반지름에 따라서도 360도까지 구부릴 수 있습니다). 인쇄 면을 바깥쪽으로 해서 구부리면 저항값이 증가하지만, 인쇄 면을 안쪽으로 구부리면 저항값이 점점 줄어들다가 변화를 멈춥니다. 두 개의 휨 센서를 사용해 양쪽 방향의 구부러진 정도를 검출할 수 있습니다.




  이 센서는  장갑에 붙여 각 손가락의 구부러진 상태를 감지하는 용도로 사용되고 있습니다. 오래 전에는 닌텐도의 패밀리 컴퓨터용으로 판매된 파워글러브라는 장갑형 컨트롤러에도 사용되었습니다. 또 전자악기에 응용한 예로, 센서를 손과 발의 관절에 붙여, 팔꿈치나 무릎이 구부려지는 정도를 이용하여 연주하는 야마하의 미부리와 같은 악기도 있습니다.



  휨 센서의 인쇄 면은 열에 약합니다. 납선을 납땜할 때 시간이 많이 걸리면, 단자와 인쇄 부분의 사이가 확실히 접촉되지 않아 정상적인 저항값을 얻기 힘들 수도 있습니다. 또한 휨 센서는 얇은 필름 상태이기 때문에 한번 강한 힘으로 접어버리면 그 상태로 모양이 잡혀서 정확한 값을 얻을 수 없습니다. 이를 방지하려면 휘어지는 얇은 플라스틱 판을 붙여 사용합니다.


[전자부품목록]


▶ 아두이노 보드: 1개 

▶ 브레드보드: 1개

▶ 점프선 : 다량

▶ 저항 : 10k

▶ LED 1개

▶ 휨 센서 : 1개 (스펙트라 심볼사의 플렉스 센서

▶ CLCD: 1개


 아두이노


Flex 센서의 값을 읽어 들여 LDC에 표시하는 예제입니다. 구부러진 상태와 각도가 반드시 대응하지는 않습니다. 그렇기 때문에 손에 붙였을 때의 초기 상태와 가장 많이 구부러진 상태의 값을 각각 구한 다음, 적용하는 파라미터에 따라 값을 조정해야 합니다.


Flex센서 아두이노 연결도 및 회로도


Flex센서 제어를 위한 핀 연결


▶ 아두이노 소스 예제


Flex 센서의 값을 읽어 들여 LDC에 표시하는 예제입니다.


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
#include <LiquidCrystal.h>
 
// SensorPin은 휨 센서에 연결한 아날로그 핀(0번)
const int sensorPin = 0;
 
//LCD
LiquidCrystal lcd(12115432);
 
void setup() {
    //LCD의 열수와 행수를 설정
    lcd.begin(162);
}
 
void loop() {
    // flex 센서의 값을 읽어 들인다
    int value = analogRead(sensorPin);
 
    // LCD화면을 지우고, 읽어 들인 값을 표시
    lcd.clear();
    lcd.setCursor(00);
    lcd.print("Flex: ");
    lcd.print(value);
 
    // 100ms 동안 대기
    delay(100);
}
cs