무게를 측정할 때 사용하는 센서입니다.

HX711 weight sensor 모듈(증폭기)과 로드셀(bridge weight sensor)를 연결해서 사용하는 것 같네요.

감지할 무게 범위에 따라 로드셀을 선택하고 로드셀이 낮은 전압의 값을 출력하면 이걸 증폭하는 구조라고 합니다. 측정 무게 범위가 높을수록 비싸져서… 체중계를 만들고 싶다면 부품을 따로 사느니 차라리 싼 체중계를 분해해서 쓰는게 낫다고 하네요. 체중계를 원하시는 분은 링크를 참고하세요.

로드셀과 HX711 모듈 연결은 아래 이미지를 참고하시면 됩니다.

HX711 모듈에서 DOUT과 SCK 두 라인을 아두이노의 A2, A3로 연결합니다.

무게 값을 얻기 위해서는 아래 링크에서 라이브러리를 받아 사용하면 됩니다.

 libraries : https://github.com/aguegu/ardulibs/tree/master/hx711

아래 코드가 기본이 되는 코드입니다.

/* sample for digital weight scale of hx711
 * library design: Weihong Guan (@aguegu)
 * library host on
 *https://github.com/aguegu/ardulibs/tree/3cdb78f3727d9682f7fd22156604fc1e4edd75d1/hx711
 */

// Hx711.DOUT - pin #A2
// Hx711.SCK - pin #A3

#include 
Hx711 scale(A2, A3);

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print(scale.getGram(), 1);
  Serial.println(" g");
  delay(200);
}

별다른 보정 작업 없이 바로 값을 받아서 출력합니다. 따라서 값이 정확하게 나오지 않을 수 있으므로 0점을 맞춰줘야 합니다.

Hx711 라이브러리 안에 있는 Hx711.h 에 정의된 아래 함수를 통해 보정작업을 할 수 있습니다.

void setScale(float scale = 1992.f);

정확한 무게를 알고 있는 물체를 올리고 내리면서 scale 값(=1992 )을 적당히 조절해 줘야 합니다.

이런 번거러운 작업을 고려해서 좀 더 쓰기 편하게 나온 라이브러리도 있습니다.

HX711 라이브러리 (by bogde)

이 라이브러리는 다음 과정을 거쳐 보정작업을 할 수 있습니다.

  1. set_scale() 함수를 파라미터 없이 호출
  2. tare() 함수를 파라미터 없이 호출
  3. 무게를 알고 있는 물체를 올려서 get_units(10) 호출
  4. 함수의 결과 값을 알고 있는 무게로 나누기.
  5. set_scale() 함수를 4번에서 얻은 값을 넣어서 호출
  6. 정확한 값이 나올때 까지 3~5 반복

주의!!!

본 문서는 부품들이 없어 테스트가 되지 않은 자료입니다. 자세한 내용은 아래 링크들을 참고하세요.

참고자료