Files
rapi/rapimeasure.py
shkim 6aadfadc34 feat: 캘리브레이션 및 영점 조정 기능 추가
- perform_calibration(): 시작 시 자동 캘리브레이션
- tare(): 수동 영점 조정
- 10회 평균값으로 오프셋 계산
- CALIBRATION_FACTOR = -411.17
2026-01-12 12:27:57 +09:00

110 lines
2.3 KiB
Python

#!/usr/bin/env python3
"""
LoadCell - Raspberry Pi Python library for HX711 load cell amplifier
하드웨어 연결:
- HX711 [VCC] -> Pi 5 [Pin 1] (3.3V)
- HX711 [GND] -> Pi 5 [Pin 6] (GND)
- HX711 [DT] -> Pi 5 [Pin 29] (GPIO5)
- HX711 [SCK] -> Pi 5 [Pin 31] (GPIO6)
"""
from HX711 import SimpleHX711, Rate
import time
# HX711 핀 설정
DT_PIN = 5 # GPIO5 -> 29번 핀
SCK_PIN = 6 # GPIO6 -> 31번 핀
# 설정 변수
CALIBRATION_FACTOR = -411.17 # 캘리브레이션 팩터
# 상태 변수
is_calibrated = False
offset_value = 0
# HX711 인스턴스
hx = None
def init_hx711():
"""HX711 초기화"""
global hx
print("HX711 초기화 중...")
print(f" DT 핀: GPIO{DT_PIN} (Pin 29)")
print(f" SCK 핀: GPIO{SCK_PIN} (Pin 31)")
try:
hx = SimpleHX711(DT_PIN, SCK_PIN, 1, 0, Rate.HZ_10)
print("HX711 연결 성공!")
return True
except Exception as e:
print(f"HX711 연결 실패: {e}")
print("배선 확인 필요")
return False
def perform_calibration():
"""캘리브레이션 수행"""
global is_calibrated, offset_value
if is_calibrated:
return
print()
print("-" * 50)
print(">> 최초 캘리브레이션 진행")
print("-" * 50)
print("로드셀 위에 아무것도 올리지 마세요!")
print("2초 후 영점 조정을 시작합니다...")
time.sleep(2)
print("영점 조정 중...")
readings = []
for _ in range(10):
readings.append(hx.read())
time.sleep(0.1)
offset_value = sum(readings) / len(readings)
print(">> 캘리브레이션 완료!")
print(f"현재 오프셋 값: {offset_value:.2f}")
print()
is_calibrated = True
def tare():
"""영점 조정 함수"""
global offset_value
print("\n>> 영점 조정 중...")
print(" 로드셀 위에 아무것도 올리지 마세요")
time.sleep(1)
readings = []
for _ in range(10):
readings.append(hx.read())
time.sleep(0.1)
offset_value = sum(readings) / len(readings)
print(">> 영점 조정 완료!\n")
def main():
if not init_hx711():
return
perform_calibration()
print("5초 후 tare() 테스트...")
time.sleep(5)
tare()
print("테스트 완료")
if __name__ == "__main__":
main()