로드셀과 HX711로 무게 측정하기 (아두이노 전자저울)
주방용 전자저울 속에는 로드셀(load cell) 이라는 힘 센서가 들어 있습니다. 이 실험에서는 로드셀을 HX711 증폭기 모듈로 아두이노에 연결해 전자저울을 직접 만들고, 그 과정에서 저울이 실제로 측정하는 것이 무엇인지(무게인지, 질량인지) 생각해 봅니다.
원리 — 저울은 무엇을 재는가
물체의 질량 m 은 물체 고유의 양이고, 무게 W 는 지구가 물체를 당기는 힘입니다. 질량이 정확히 무엇을 뜻하는지는 F=ma 글에서 자세히 다룹니다.
로드셀이 감지하는 것은 힘, 즉 무게 쪽입니다. 로드셀은 알루미늄 막대에 스트레인 게이지(strain gauge, 얇은 저항선)를 붙인 구조인데, 물체를 올리면 막대가 아주 미세하게 휘고, 함께 늘어나거나 줄어든 저항선의 저항이 변합니다. 저항 R 의 변화는 변형률 \varepsilon (늘어난 비율)에 비례합니다:
응력·변형률이 정확히 무엇인지, 왜 텐서로 다루는지는 응력과 변형률, 그리고 텐서 글에서 자세히 설명합니다.

로드셀 막대 가운데에 붙은 스트레인 게이지 (원본 사진)
이 변화는 수천 분의 일 수준으로 매우 작아서 그냥은 잴 수 없습니다. 그래서 게이지 4개를 **휘트스톤 브리지**로 연결해 저항의 "차이"만 전압으로 뽑아내고, 그 미소 전압(mV 수준)을 HX711 이 128배 증폭해 24비트 숫자로 바꿔 아두이노에 전달합니다.
정리하면: 무게(힘) → 막대의 변형 → 저항 변화 → 브리지 전압 → HX711 → 숫자.
준비물
- 로드셀 (막대형, 1 kg 또는 5 kg 정격)
- HX711 모듈
- 아두이노 우노 (호환 보드 가능)
- 점퍼선, 로드셀 고정용 판 2장 (아크릴/목재) 과 볼트
- 질량을 아는 물체 (분동, 또는 새 동전·생수병 등)

막대형 로드셀(TAL220)과 HX711 증폭 보드. 사진: SparkFun Electronics, CC BY 2.0
배선
로드셀의 4가닥을 HX711 에, HX711 을 아두이노에 연결합니다.
| 로드셀 | HX711 | HX711 | 아두이노 | |
|---|---|---|---|---|
| 빨강 | E+ | VCC | 5V | |
| 검정 | E− | GND | GND | |
| 초록 | A+ | DT | D3 | |
| 흰색 | A− | SCK | D2 |
선 색은 제품마다 다를 수 있으니 로드셀에 붙은 표기를 우선하세요. 막대형 로드셀은 한쪽 끝만 아래판에 고정하고, 반대쪽 끝에 윗판을 달아 물체의 무게가 막대를 휘게 만들어야 합니다. 화살표(하중 방향) 표시가 아래를 향하게 조립합니다.

Fritzing 으로 그린 배선도. 그림의 보드는 SparkFun HX711 (RED=E+, BLK=E−, WHT=A−, GRN=A+ — 초록 보드의 E±/A± 표기와 같은 순서)
아두이노 코드
라이브러리 매니저에서 HX711 (Bogdan Necula) 을 설치한 뒤 업로드합니다.
#include "HX711.h"
const int DT_PIN = 3;
const int SCK_PIN = 2;
// 보정 계수 — 아래 '보정' 단계에서 구한 값으로 바꿀 것
float CALIBRATION = 1.0;
HX711 scale;
void setup() {
Serial.begin(9600);
scale.begin(DT_PIN, SCK_PIN);
scale.set_scale(CALIBRATION);
scale.tare(); // 빈 저울을 0점으로
Serial.println("ready");
}
void loop() {
// 10회 평균 — 잡음을 줄인다
Serial.println(scale.get_units(10), 1);
delay(500);
}
보정 — 기준 질량으로 눈금 만들기
HX711 이 주는 값은 단위가 없는 숫자일 뿐입니다. 저울로 쓰려면 아는 질량으로 눈금을 매겨야 합니다.
CALIBRATION = 1.0인 상태로 실행하고, 빈 저울의 출력이 0 근처인지 확인합니다 (tare()가 처리).- 질량 m_0 (예: 100 g 분동)을 올리고 출력값 N 을 읽습니다.
- 보정 계수를 계산합니다: \text{CALIBRATION} = N / m_0 (g 단위 저울 기준).
- 코드의
CALIBRATION을 이 값으로 바꿔 다시 업로드하면, 이후 출력이 그램 단위가 됩니다.
분동이 없다면 새 500원 동전(7.70 g) 여러 개나 새 생수(라벨의 내용량 + 빈 병 질량)를 쓸 수 있습니다.
측정해 보기
- 같은 물체를 5회 반복해 올렸다 내리며 값이 얼마나 흔들리는지(반복성) 기록해 봅시다.
- 100 g, 200 g, 300 g … 을 올리며 출력이 질량에 비례하는지 그래프로 확인해 봅시다. 훅 법칙 범위 안에서는 변형이 힘에 비례하므로 직선이 나와야 합니다.
보정 측정 예시 그래프 (실제 측정값으로 바꿔 넣을 것)
생각해 볼 것
- 이 저울이 직접 감지하는 물리량은 질량인가, 무게인가? 그런데 왜 눈금은 g(그램)으로 매겨도 되는가?
- 이 저울을 달에 가져가면 100 g 분동을 올렸을 때 얼마라고 표시될까? (g_\text{달} \approx g/6)
- 엘리베이터가 가속하며 올라가는 동안 측정하면 값이 어떻게 변할까? 직접 해 보자.
- 보정을 서울에서 했는데 적도 지방에서 쓰면 오차가 생길까? 생긴다면 몇 % 정도일까?
더 해 보기
- HX711 의 24비트 분해능 이론값과 실제 흔들림(잡음)을 비교해 보기 — 평균 횟수를 바꾸면 잡음이 어떻게 줄어드는가? (√N 법칙과 맞는지 확인해 보자.)
- 온도가 변하면 0점이 흐르는(drift) 현상 관찰하기 — 드라이어로 로드셀을 살짝 데워 보자.
- 막대에 추를 매달아 단진동시키며 무게 값의 진동을 기록해 보기 — 용수철 저울과 같은 원리임을 확인할 수 있다.