무게 센서 Weight sensor (HX711)
무게를 측정할 때 사용하는 센서입니다.
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)
이 라이브러리는 다음 과정을 거쳐 보정작업을 할 수 있습니다.
- set_scale() 함수를 파라미터 없이 호출
- tare() 함수를 파라미터 없이 호출
- 무게를 알고 있는 물체를 올려서 get_units(10) 호출
- 함수의 결과 값을 알고 있는 무게로 나누기.
- set_scale() 함수를 4번에서 얻은 값을 넣어서 호출
- 정확한 값이 나올때 까지 3~5 반복
주의!!!
본 문서는 부품들이 없어 테스트가 되지 않은 자료입니다. 자세한 내용은 아래 링크들을 참고하세요.
참고자료