힘·무게 · 난이도 쉬움
FSR402 압력 센서로 누르는 힘을 전도도로 읽고 저울로 쓸 수 없는 이유 확인하기
FSR402는 누를수록 저항이 줄어드는 얇은 힘 센서예요. 3.3V와 10kΩ으로 만든 분압 배선, 전압에서 FSR 저항과 전도도(1/R)를 계산하는 코드, 같은 힘에도 값이 달라지는 까닭(편차·이력·느린 변화), 무게·시간·측정 저항을 바꾸는 탐구를 정리했어요.
이 센서로 무엇을 잴 수 있나
FSR402는 인터링크 일렉트로닉스(Interlink Electronics)가 만든 얇은 원형 힘 센서예요. 데이터시트(P/N 30-81794)에 따르면 지름 18.28mm, 실제로 힘을 느끼는 부분(감지부)은 지름 12.7mm이고, 누르지 않을 때 저항은 10MΩ이 넘어요. 0.1N부터 반응하고, 힘을 구별하는 범위는 0.1~10N이에요. 무게로 바꾸면 약 10g에서 1kg 사이의 물체가 감지부를 누르는 힘이에요.
이 센서가 잘하는 일은 "눌렸나, 얼마나 세게 눌렸나"를 알아내는 거예요. 의자 방석에 사람이 앉았는지, 버튼을 살짝 눌렀는지 꾹 눌렀는지, 발판을 밟은 횟수처럼 사람의 손과 몸이 주는 힘을 감지하는 작품에 잘 맞아요.
반대로 저울로는 쓰지 않아요. 인터링크의 통합 안내서(FSR Integration Guide)는 FSR이 로드셀이나 스트레인 게이지가 아니며 정밀 측정에 맞지 않는다고 분명히 적어요. 무게를 g 단위로 재야 한다면 로드셀과 HX711을 써요.
원리
FSR은 전기가 통하는 면을 인쇄한 필름 두 장을 얇은 접착층(사이띄개)으로 띄워 붙인 센서예요. 누르면 마주 본 두 면이 닿는 넓이가 늘어 저항이 줄어요. 안내서의 그래프를 보면 누르기 시작하는 순간 저항이 100kΩ 넘는 값에서 10kΩ 근처로 갑자기 떨어지고(문턱 힘), 그 뒤로는 힘이 커질수록 저항이 대략 힘에 반비례해 줄어요. 그래서 저항의 역수인 전도도(1/R)로 그리면 0~1kg 범위에서 거의 직선이 돼요. 아주 세게 누르면 더는 저항이 줄지 않는 포화가 오는데, 안내서는 이것이 힘보다 압력(넓이당 힘)에 따라 정해진다고 설명해요.
피코는 저항을 바로 읽지 못하니 고정 저항 RM과 짝을 지어 전압으로 바꿔요. 3V3 ─ FSR ─ GP26 ─ 10kΩ ─ GND로 이으면, 데이터시트의 식 그대로 Vout = 3.3 × RM ÷ (RM + R_FSR)이에요. 누르지 않으면 R_FSR이 10MΩ이 넘어 거의 0V, 세게 누를수록 3.3V 쪽으로 올라가요. 거꾸로 전압 V를 알면 R_FSR = RM × (3.3 − V) ÷ V로 FSR 저항을 구할 수 있어요.
같은 힘에도 값이 늘 같지 않은 까닭이 세 가지 있어요. 데이터시트의 반복성은 같은 센서에서 ±2%, 센서끼리 ±6%이고, 이력(누를 때와 뗄 때의 차이)은 +10%, 1kg을 올려 둔 채 시간이 지나면 저항이 시간의 로그 한 칸(예: 1분→10분)마다 5% 미만씩 변해요. 그래서 센서를 바꾸면 다시 보정하고, 올린 뒤 같은 시간에 기록해요.
준비물
- 라즈베리파이 피코와 USB 케이블
- FSR402 1개, 10kΩ 저항 1개, 브레드보드, 점퍼선
- 감지부보다 작은 누름 조각(지름 1cm쯤으로 자른 지우개 조각), 가벼운 종이컵
- 무게를 정할 물(눈금실린더)이나 주방 저울
- 탐구 3용: 4.7kΩ, 47kΩ, 100kΩ 저항
배선
브레드보드 따라 꽂기 순서 (8단계)
- 피코를 브레드보드 가운데 홈에 걸쳐 꽂아요. USB 단자가 왼쪽을 보게 하고, 1번 핀이 f2, 40번 핀이 e2에 들어가요. 다리가 홈 양쪽에 모두 들어갔는지 옆에서 봐요.
- 주황 선: 피코 36번 핀(3V3(OUT)) 옆 칸 a6 → 위쪽 + 줄(3.3V). 이제 이 줄 전체가 3.3V예요.
- 검은 선: 피코 38번 핀(GND) 옆 칸 a4 → 위쪽 − 줄(GND). 이제 이 줄 전체가 GND예요.
- 누르는 힘 압력 FSR402 꽂기: 다리 FSR 다리 1 · FSR 다리 2를 위쪽 a24 · a25에 차례로 꽂아요. 다리가 브레드보드에 바로 안 들어가면 암-수 점퍼선으로 같은 칸에 이어요.
- 주황 선(3.3V 전원): 누르는 힘 압력 FSR 다리 1 줄 b24 → 위쪽 + 줄(3.3V)
- 저항 10kΩ(색띠 갈색·검정·주황): b25 ↔ 위쪽 − 줄(GND). FSR 다리 2의 값을 0V 쪽으로 정해 주는 저항이에요(센서와 함께 전압을 나눠요).
- 초록 선(신호): 누르는 힘 압력 FSR 다리 2 줄 c25 → 피코 31번 핀(GP26) 옆 칸 a11
- 마지막 확인: ① 위쪽 + 줄(3.3V)과 아래쪽 + 줄(5V)이 서로 이어지지 않았나요? ② 모든 부품의 GND가 − 줄에 이어졌나요? ③ 5V 신호 다리는 저항을 거쳐 피코에 이어졌나요? ④ 긴 브레드보드는 + − 줄이 가운데에서 끊긴 것도 있어요(빨간·파란 선이 끊겨 있으면 짧은 선으로 이어요). ⑤ 그림과 한 칸씩 비교한 뒤 USB를 꽂아요.
| 모듈 핀 | 피코 핀 | 비고 |
|---|---|---|
| FSR 다리 1 | 3V3 (36번) | 극성은 없어요 |
| FSR 다리 2 | GP26 (31번) | 같은 줄에서 10kΩ을 GND로 |
| 10kΩ 다른 쪽 | GND (38번) | 누르지 않을 때 GP26을 0V로 |
10kΩ이 없으면 GP26이 떠 있는 상태라 누르지 않아도 값이 제멋대로 움직여요. FSR402의 꼬리(은색 선이 인쇄된 띠)는 접히면 선이 끊어질 수 있어요. 안내서는 굽힘 반지름을 약 2.5mm보다 작게 하지 말고, 드러난 은색 선에 바로 납땜하지 말라고 적어요. 끝의 금속 단자를 브레드보드에 꽂거나 전용 커넥터를 써요.
코드
from machine import ADC, Pin
import time
fsr = ADC(Pin(26)) # 3V3 ─ FSR ─ GP26 ─ 10kΩ ─ GND
RM = 10000 # GND 쪽 측정 저항(Ω)
VCC = 3.3
def read_v(n=16):
s = 0
for i in range(n):
s += fsr.read_u16()
return s / n * VCC / 65535
while True:
v = read_v()
if v > 0.02:
r = RM * (VCC - v) / v # FSR 저항(Ω)
g = 1000000 / r if r > 0 else 0 # 전도도(µS) = 1 ÷ 저항
else:
r = -1 # 거의 0V: 누르지 않음
g = 0
state = "세게" if v > 2.0 else "보통" if v > 0.8 else "살짝" if v > 0.1 else "안 누름"
print(f"DATA: fsr_v={v:.3f}, fsr_ohm={r:.0f}, cond_us={g:.1f}")
print(state)
time.sleep(0.2)
- 시나브로 PICO 센서 가이드 예제처럼 값이 클수록 세게 누른 거예요. 여기서는 전압을 FSR 저항(
fsr_ohm)과 전도도(cond_us, 마이크로지멘스)로 바꿔 함께 내보내요. - 전압이 0.02V보다 작으면 누르지 않은 것으로 보고 저항을 −1로 적어요. 10MΩ 넘는 저항을 계산해도 의미가 없어서예요.
state의 문턱(0.1V, 0.8V, 2.0V)은 예시예요. 내 작품에서 원하는 느낌에 맞춰 바꿔요.
값 해석과 보정
힘의 단위로 바꿔 생각해요. 질량 m(kg)인 물체가 누르는 힘은 m × 9.8N이에요. 100g이면 약 0.98N, 1kg이면 약 9.8N이라, FSR402의 구별 범위(0.1~10N)는 대략 10g~1kg에 해당해요.
누르는 방법을 고정해요. 안내서는 누르는 물체의 넓이, 모양, 단단함과 놓는 자리를 매번 같게 하라고 해요. 손가락은 매번 닿는 넓이가 달라서 비교 실험에 맞지 않아요. 감지부 가운데에 지우개 조각을 올리고 그 위에 종이컵을 얹어 물로 무게를 정하면, 넓이와 자리가 고정돼요. 안내서의 그래프도 지름 10mm 고무 끝으로 눌러 얻은 값이에요. 넓고 딱딱한 판으로 누르면 감지부 둘레의 접착층까지 눌러 값이 이상해질 수 있다고도 적혀 있어요.
보정은 "대략"이에요. 무게 몇 단계에서 cond_us를 재어 직선을 그리면 이 센서의 대략적인 힘-전도도 관계를 얻어요. 하지만 이력과 느린 변화 때문에 같은 무게도 올리는 순서와 시간에 따라 몇 %씩 달라져요. 그래서 발표할 때는 "약 ○N" 또는 "세게·약하게"처럼 오차를 담은 말로 써요. 안내서는 사람의 손으로는 ±50%보다 작은 힘의 차이를 잘 구별하지 못한다는 연구를 소개하며, 손으로 누르는 장치라면 이 정도 오차는 문제가 되지 않는다고 설명해요.
자주 하는 실수
- g을 소수점까지 발표하기. 저울이 아니에요. 센서끼리 ±6%, 이력 +10%를 기억해요.
- 꼬리를 접거나 은색 선에 납땜하기. 선이 끊기거나 필름이 녹아요.
- 손가락으로 눌러 힘을 비교하기. 닿는 넓이가 달라져요. 누름 조각과 무게로 눌러요.
- 10kΩ을 빼먹기. 누르지 않아도 값이 떠다녀요.
- 측정 저항을 너무 작게 바꾸기. 1kΩ처럼 작으면 세게 눌렀을 때 전류가 커져요. 아래 '안전'의 기준을 지켜요.
이 센서로 잴 수 있는 탐구
1. 무게가 두 배면 전도도도 두 배일까
- 질문: 누름 조각 위 무게를 두 배씩 늘리면 cond_us도 두 배씩 늘어날까?
- 바꾸는 것: 누름 조각 위 무게(50g, 100g, 200g, 400g). 컵 무게까지 더해 적어요
- 재는 것: 올리고 10초 뒤부터 5초 동안의 평균 cond_us(µS)
- 방법: 가벼운 쪽에서 무거운 쪽으로, 다시 무거운 쪽에서 가벼운 쪽으로 재요. 두 방향의 차이로 이력을 확인하고, 3번 반복해요.
2. 같은 무게를 오래 두면 값이 변할까
- 질문: 200g을 5분 동안 올려 두면 cond_us는 처음보다 몇 % 변할까?
- 바꾸는 것: 올린 뒤 지난 시간(10초, 1분, 5분)
- 재는 것: 각 시점의 cond_us(µS), 10초 값에 대한 변화율(%)
- 방법: 무게를 올리는 순간 시간을 재기 시작해요. 한 번 잰 뒤 센서를 10분 쉬게 하고 3번 반복해요.
3. 측정 저항을 바꾸면 잘 보이는 힘의 범위가 바뀔까
- 질문: RM을 4.7kΩ, 10kΩ, 47kΩ, 100kΩ으로 바꾸면 어느 무게에서 fsr_v가 가장 크게 변할까?
- 바꾸는 것: RM(배선의 저항과 코드의 RM을 함께 바꿔요)
- 재는 것: 무게 50g~400g에서의 fsr_v(V)
- 방법: RM마다 탐구 1의 무게를 차례로 올려요. 무게-전압 그래프에서 기울기가 가장 큰 구간을 찾아요. 데이터시트도 RM에 따라 달라지는 곡선 묶음을 보여 줘요.
안전
- 안내서는 누르는 면적 1cm²당 1mA를 넘는 전류를 흘리지 말라고 해요. 이 배선의 최대 전류는 3.3V ÷ RM이라 10kΩ이면 0.33mA, 4.7kΩ이면 약 0.7mA예요. 1kΩ이면 3.3mA까지 갈 수 있어 지름 1cm 누름 조각(약 0.79cm²)의 기준을 넘으니 4.7kΩ보다 작은 RM은 쓰지 않아요.
- FSR402는 사람의 몸무게를 재는 부품이 아니에요. 위에 올라서지 않고, 날카로운 물건으로 누르지 않아요.
- 전원은 3V3만 쓰고, 배선은 USB를 뽑은 채로 바꿔요.
더 알아보기
- 데이터시트: Interlink Electronics "FSR 402 Data Sheet"(P/N 30-81794: 지름 18.28mm, 감지부 12.7mm, 0.1~10N, 반복성 ±2%·±6%, 이력 +10%, 시간에 따른 변화, 분압 식)
- 안내서: Interlink Electronics "FSR Integration Guide"(정밀 측정에 맞지 않음, 1/R과 전도도 그래프, 문턱 힘과 포화, 누르는 물체 고정, 꼬리 굽힘·납땜 주의, 1mA/cm²)
- 라이브러리: 따로 없어요. MicroPython 내장
machine.ADC - 기초 글: 센서 값의 신뢰도, 분압 회로, 잴 수 있는 탐구 주제 만들기, 브레드보드 처음 쓰기