트렁크 만들기 도전, 자동으로 무게재기

by 조혜인 | 2017-02-23 11:46
hx711 공항 로드셀 몸무게 무게 아두이노 앰프 트렁크

재료

  • 4선식 로드셀 40kg 1개 (15400원)
  • 로드셀 측정 컨버터 모듈 1개 (3300원)

아주 특별한 트렁크를 발견했습니다. 공항에서  캐리어 무게 때문에 수수료 내본 경험 있으신가요?
자동으로 무게를 재주고, 스마트폰으로 Lock을 걸 수 있으며, 잃어버렸을 때 찾을 수 있는 트렁크가 있습니다.Bluesmart라는 트렁크 입니다.!



저는 이 트렁크를 따라보려고 합니다. 트렁크 만들기에 도전! 먼저 무게재는 기능을 따라해 보려고 합니다.


1. 준비물

- 아두이노

- 로드셀 (HX711)
저는 0~40kg의 범위를 잴 수 있는 로드셀을 선택했습니다.


-로드셀 앰프로드셀로 잰 수치를 증폭시켜주는 장치 입니다.



        



2. 원리 이해하기

구글링을 해보니, 다음과 같은 원리로 무게를 잰다고 하네요. (출처 DFRobot Wiki)



로드셀 끝에 화살표 모양의 스티커가 붙어있습니다.

책상 끝에 다음과 같이 수평으로 대 주세요.




HX711로 간단한 체중계를 만들어 볼 수 있는 키트도 판매하는 곳이 있네요. 멋집니다.





3. 회로도


(출처 http://www.layadcircuits.com/tutorial.php?p=4)




4. 라이브러리 다운로드

HX711 라이브러리를 다운받아 설치해 주세요.

https://github.com/bogde/HX711



5. 코드 업로드

라이브러리 설치 후, 아두이노 예제를 활용하세요.

SparkFun_HX711_Calibration과 SparkFun_HX711_Example 코드를 활용하면 됩니다.


1) 값 보정하기

10번째 줄의 변수인 calibration_factor를 조절합니다.
정확한 무게를 알고 있는 물체를 올리고 내리면서 값을을 적당히 조절해 줍니다.
시리얼 창을 켜서 값이 올바르게 들어오고 있는지 확인하면서 고쳐봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
 
#include "HX711.h"
 
#define DOUT  3
#define CLK  2
 
HX711 scale(DOUT, CLK);
 
float calibration_factor = -7050; //-7050 worked for my 440lb max scale setup
 
void setup() {
  Serial.begin(9600);
  Serial.println("HX711 calibration sketch");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press + or a to increase calibration factor");
  Serial.println("Press - or z to decrease calibration factor");
 
  scale.set_scale();
  scale.tare();    //Reset the scale to 0
 
  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);
}
 
void loop() {
 
  scale.set_scale(calibration_factor); //Adjust to this calibration factor
 
  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 1);
  Serial.print(" lbs"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();
 
  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 10;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 10;
  }
}


2) 읽어오기

위에서 얻은 보정값을 아래에 넣어 주세요. (9번라인 노란색 형광팬)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
#include "HX711.h"
 
#define DOUT  3
#define CLK  2
 
HX711 scale(DOUT, CLK);
 
float calibration_factor = -7050; //-7050 worked for my 440lb max scale setup
 
void setup() {
  Serial.begin(9600);
  Serial.println("HX711 calibration sketch");
  Serial.println("Remove all weight from scale");
  Serial.println("After readings begin, place known weight on scale");
  Serial.println("Press + or a to increase calibration factor");
  Serial.println("Press - or z to decrease calibration factor");
 
  scale.set_scale();
  scale.tare();    //Reset the scale to 0
 
  long zero_factor = scale.read_average(); //Get a baseline reading
  Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
  Serial.println(zero_factor);
}
 
void loop() {
 
  scale.set_scale(calibration_factor); //Adjust to this calibration factor
 
  Serial.print("Reading: ");
  Serial.print(scale.get_units(), 1);
  Serial.print(" lbs"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" calibration_factor: ");
  Serial.print(calibration_factor);
  Serial.println();
 
  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 10;
    else if(temp == '-' || temp == 'z')
      calibration_factor -= 10;
  }
}




6. 결과 확인

- 단위는 다음과 같다고 합니다.

파운드 (lb) → 킬로그램 (g)
1 lb = 0.45359 kg


- 값이 잘 나오지 않는다면 원인은 다음 2가지 일 수 있습니다.

1. 무게를 가하는 방향이 잘못되었거나
(그럴 경우 '2.원리 확인하기' 부분을 보고 무게를 가하는 방향을 보정해주세요.)
2. 회로가 잘못연결 되었기 때문


저는 제 가방의 무게를 재어 보려고 합니다! 실제 가방의 무게는 자세히 모르는데요 ㅠ;
일단 아래 시리얼창의 무게 값을 복사해 두었습니다.
447.3과 1.2가 유의미한 수치로 보이네요.
계산해보니 200kg은 아닐 것 같고, 600g정도 되는 것 같습니다.


다음 포스팅에서 실제 가방의 무게를 재어보고 비교해 보도록 하겠습니다.
과연 트렁크를 만들 수 있을지!!!!

Reading: 0.0 lbs

Reading: -147.6 lbs

Reading: -0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 447.3 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 1.2 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: -148.7 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

Reading: 0.0 lbs

댓글 2

MADE BY

조혜인

arduino, processing, rhino, sketchup, 아두이노, 에프터이펙트, 포토샵, 프리미어
트렁크 만들기 도전, 자동으로 무게재기현재글