반응형

(로드셀 캘리브레이션 하시는분들 잘 안되면 아래 최신내용 참조!)

https://bota.tistory.com/1629

 

시중에 팔고있는 완성된 디지털 체중계를 개조해서 HX711과 아두이노를 이용해서

직접 무게측정을 해보려고 합니다.

 

체중계를 먼저 소개해드리면 아래 링크한 옥션사이트에서 구입했습니다.

바로가기>

 

가격은 조금씩 변동이 있는데 7~8천원 사이였던걸로 기억합니다.

어떤 형태의 디지털 체중계든 상관없습니다. 로드셀만 있으면 됩니다.

 

그리고 완성된 체중계를 사용하면 장점이 프레임하고 로드셀 배치가

잘되어 있기 때문에 회로만 좀 변경해주고 코드 넣어주면

즉시 사용가능한것에서 이점이 있습니다.

 

그리고 HX711은 20비트 로드셀 증폭기라고 판매를 할거에요

오픈마켓에서 검색하셔서 구입하시면 됩니다.

 

 

먼저 마음이 아프지만 디지털 체중계를 분해해야합니다.

표시해둔곳에 볼트를 풀어서 뚜껑을 열어줍니다.

 

그리고 메인 기판을 안에서 꺼내줍니다

 

 

이게 메인기판인데 표시해둔 4개 포인트에 납을 녹여서 분리해줍니다

 

 

아래에서 보면 바로 저위치입니다.

 

 

제거를 하고나면 원래 꼽혀있던 핀 순서를 잘 메모해둡니다.

(제가 구입한 제품 기준입니다)

위에서부터 E+, S+ E- S-순서 였습니다.

 

이제 이 기판은 필요없습니다 버리면 됩니다.

 

 

요기 기판에다가 점퍼케이블을 연결해서 밖으로 뺴줬습니다.

 

 

이런식으로 점퍼케이블을 연결해줬습니다.

바로 납땜해줘도 상관없습니다.

 

 

아래쪽에 보이는 이게 로드셀입니다.

총 4개가 한세트로 연결되어있어요

 

 

이렇게 점퍼케이블을 밖으로 빼서 마감처리 해줬습니다.

 

 

다음으로 HX711을 연결을 해야하는데

오른쪽부분을보면 E+ E- A+ A-가 있습니다.

제가 구입한 체중계는 E+ E- S+ S-였는데 기호가 틀리네요

E+는 E+

E-는 E-

A+는 S+

A-는 S-

이렇게 연결하면 되더군요~

 

그리고 왼편에 4핀이

Vcc Gnd DT SCK가 있습니다.

Vcc를 아두이노 5V에

Gnd를 아두이노 Gnd에

DT를 아두이노 A1에

SCK를 아두이노 A0에 연결했습니다.

 

 

암-암 점퍼선이 없어서 연결이 좀 복잡해졌는데

위에서 설명한대로 연결하면 됩니다.

 

다음으로 소프트웨어쪽으로 넘어가보죠

 

먼저 라이브러리를 다운받아야합니다.

아래 링크로 이동해주세요~

 

https://github.com/bogde/HX711

 

 

 

링크한 사이트로 이동해서 Clone or download를 눌러주세요

 

 

위와같이 다운로드화면이 나오면

Download ZIP 을 선택하시면 다운로드가 됩니다.

 

 

그리고 아두이노 개발툴로 이동해서 아래 순으로 눌러줍니다.

스케치라이브러리 포함하기.ZIP 라이브러리 추가...

 

 

다운로드한 파일을 선택하고 "열기" 버튼을 눌러줍니다.

라이브러리를 추가하고 예제에 들어있는 코드를 한번 실행해봤습니다.

 

 

아래 순서로 클릭하면 예제가 나옵니다.

파일예제HX711-masterHX711Serial

 

 

예제코드를 업로드하고 시리얼 모니터를 켜니

오잉? 글자가 깨져서 나오네요

코드를 확인해보니 시리얼 보레이트를 38400으로 해놨습니다.

 

 

예제를 바로 업로드하면 코드는 38400으로 셋팅하고

시리얼 모니터는 9600으로 셋팅이되어서

통신이 정상적으로 되지 않습니다.

코드를 바꾸든 모니터를 바꾸든 해서 똑같게 맞춰줍니다.

 

 

저는 시리얼 모니터쪽을 바꿨는데 이제야 나오는군요

 

 

잠시 주춤한뒤 값이 나오기 시작합니다.

작동이 되는지 확인을 위한 코드 업로드였습니다.

 

여기서 중요한게 있는데 로드셀마다 특성이 약간씩 다를수 있어서

캘리브레이션 과정을 거쳐줘야 합니댜.

 

무슨말이냐면 각 로드셀마다 특성을 어떤 값으로

조율할 수 있는데 그 값이 뭔지는 직접 측정을 해봐야 한다는 겁니다.

 

좋은 코드가 있어서 가져왔습니다.

아래 코드를 참조해주세요

 

HX711.txt
다운로드

 

 

*출처
 Example using the SparkFun HX711 breakout board with a scale
 By: Nathan Seidle
 SparkFun Electronics
 Date: November 19th, 2014
 License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license). 

 

코드는 그대로 쓰면 되는데 혹시나 개인차가 있는 부분은

저같은 경우 A0와 A1 포트에 HX711을 연결해놔서

#define DOUT  3

#define CLK  2

이부분을 

 

#define DOUT  A1

#define CLK  A0

이렇게 바꿔주면 될것 같네요~

 

그리고 이 코드는 파운드(lb)를 기준으로 되어있습니다

 

네이버에 파운드와 킬로그램을 환산하는 식을 보면 위와 같습니다.

즉 첨부한 코드에서 측정한 값이 0.453592를 곱하면 된다는 소리네요~

 

원래 코드에서 제가 아래와 같이 바꿔놨습니다.

  Serial.print(scale.get_units()*0.453592, 3);

  Serial.print(" kg"); 

 

 

이제 프로그램을 업로드하고 시리얼 모니터를 켜면

측정되는 값과 함께 우측에 calibration_factor가 표시됩니다.

화면에 표시한 부분에 +혹은 -를 입력하고

전송버튼을 누르거나 엔터를 치면

calibration_factor가 10씩 증가하거나 감소하느 것을 볼 수 잇습니다.

 

그리고 그에 따라서 무게 값도 변경이 됩니다.

측정값을 맞춰야 하는데 어떻게 맞추느냐??

 

물을 이용하면 됩니다.

2리터짜리 생수통에 물을 가득채우면 2kg가 됩니다.

 

그러므로 물이 가득찬 물통을 저울위에 올려두고

정확하게 2kg이 측정될때까지 +혹은 -를 입력하면 됩니다.

 

마지막으로 정확하다고 판단될때의 calibration_factor를 메모해두면

그게 각자가 사용하는 로드셀의 특성이 됩니다

 

 

위와 같이 생수통을 이용해서 측정해보니 저는 -10040이 측정이 되네요~

이값을 측정했으면 이제 아래 심플한 코드에서 무게를 측정할 수 있습니다.

 

심플코드.txt
다운로드

 

 

업로드 하니 무게가 아주 잘 측정됩니다

이제 응용을 할 수 있는 예제를 한번 준비해봐야겠습니다.

 

아두이노와 HX711, 디지털 체중계를 이용해서 무게를 측정하는 방법

마치겠습니다.

 

반응형
Posted by 덕력킹
,