오늘 우리는 빌드하려는 아두 이노이트 기계 에 의해, 로드 셀 및 아두 이노와 HX711 무게 센서를 인터페이스. 우리는 많은 상점에서 중량 기계를 보았는데, 기계는 계량 플랫폼에 항목을 올려 놓는 것만으로 중량을 표시합니다. 그래서 여기서 우리는 최대 40kg까지 측정 할 수있는 Arduino와 Load cell을 사용하여 동일한 계량기를 구축하고 있습니다. 이 한계는 더 높은 용량의 로드셀을 사용하여 더 늘릴 수 있습니다.
이 Arduino 계량 스케일 을 구축하는 데 필요한 주요 구성 요소 는 무게를 동등한 전기 신호로 변환 할 수있는 센서입니다. 이 센서를 로드셀이라고 하므로이 프로젝트에서는이 로드셀을 Arduino 무게 센서로 사용 합니다. 또한 Portable Arduino Retail Weighing Machine, Raspberry pi Weighing scale 등과 같은 몇 가지 다른 프로젝트에서도 동일한로드 셀을 사용했습니다. 관심이있는 경우 확인할 수도 있습니다.
Arduino 체중계를 만드는 데 필요한 구성 요소:
- Arduino Uno
- 로드셀 (40kg)
- HX711 로드셀 증폭기 모듈
- 16x2 LCD
- 전선 연결
- USB 케이블
- 브레드 보드
- 너트 볼트, 프레임 및베이스
로드셀 및 HX711 중량 센서 모듈:
로드 셀은 힘 또는 압력을 전기 출력으로 변환하는 변환기입니다. 이 전기 출력의 크기는 적용되는 힘에 정비례합니다. 로드셀에는 압력이 가해지면 변형되는 스트레인 게이지가 있습니다. 그런 다음 스트레인 게이지는 변형에 대한 유효 저항이 변함에 따라 변형에 대한 전기 신호를 생성합니다. 로드 셀은 일반적으로 Wheatstone 브리지 구성에서 4 개의 스트레인 게이지로 구성됩니다. 로드셀은 5kg, 10kg, 100kg 등 다양한 범위로 제공되며 여기서는 최대 40kg까지 무게가 나가는 로드셀을 사용했습니다.
이제로드 셀에서 생성 된 전기 신호는 몇 밀리 볼트이므로 일부 증폭기에 의해 추가로 증폭되어야하므로 HX711 계량 센서가 그림에 나타납니다. HX711 계량 센서 모듈 에는 24 고정밀 A / D 컨버터 (아날로그-디지털 컨버터) 인 HX711 칩이 있습니다. HX711에는 2 개의 아날로그 입력 채널이 있으며 이러한 채널을 프로그래밍하여 최대 128 개의 이득을 얻을 수 있습니다. 따라서 HX711 모듈 은로드 셀 의 낮은 전기 출력 을 증폭 한 다음이 증폭 및 디지털 변환 된 신호를 Arduino에 공급하여 무게를 유도합니다.
로드 셀은 4 개의 와이어를 사용하여 HX711로드 셀 증폭기와 연결됩니다. 이 네 개의 전선은 빨간색, 검은 색, 흰색 및 녹색 / 파란색입니다. 모듈마다 전선의 색상에 약간의 차이가있을 수 있습니다. 연결 세부 정보 및 다이어그램 아래:
- RED Wire가 E +에 연결됨
- BLACK 와이어는 E-
- WHITE 와이어는 A-
- GREEN 와이어는 A +에 연결됩니다.
플랫폼 및베이스로로드 셀 고정:
이 단계는 선택 사항이며 플랫폼없이 로드셀에 직접 분동을 올려 놓을 수 있으며,베이스로 고정하지 않고 간단히 클램핑 할 수 있지만, 큰 물건을 올려 놓을 플랫폼을 부착하고베이스에 고정하는 것이 좋습니다. 멈춰 있습니다. 그래서 여기서 우리 는 무게 측정을위한 물건을 놓을 프레임이나 플랫폼 을 만들어야합니다. 너트와 볼트를 사용하여 로드셀을 그 위에 고정하려면베이스가 필요합니다. 여기에서는 프레임에 단단한 판지를 사용하여 그 위에 물건을 놓고 나무 판을베이스로 사용했습니다. 이제 회로도에 표시된대로 연결을 수행하면 준비가 완료됩니다.
회로 설명:
이 프로젝트의 연결은 간단하며 회로도는 아래에 나와 있습니다. 16x2 LCD 핀 RS, EN, d4, d5, d6 및 d7은 각각 Arduino의 핀 번호 8, 9, 10, 11, 12 및 13과 연결됩니다. HX711 모듈의 DT 및 SCK 핀은 Arduino의 핀 A0 및 A1과 직접 연결됩니다. HX711 모듈과의로드 셀 연결은 이미 앞에서 설명했으며 아래 회로도에도 나와 있습니다.
작동 설명:
이 Arduino 무게 측정 프로젝트 의 작동 원리 는 간단합니다. 세부 사항으로 들어가기 전에 먼저 올바른 무게를 측정하기 위해이 시스템 을 보정해야합니다. 사용자가 전원을 켜면 시스템이 자동으로 보정을 시작합니다. 사용자가 수동으로 보정하려면 푸시 버튼을 누릅니다. 보정을 위해 void calibrate () 함수를 만들었습니다. 아래 코드를 확인하십시오.
캘리브레이션 을 위해 아래 그림과 같이 로드셀 위에 100g을 넣는 LCD 표시를 기다립니다. LCD에 "put 100g" 가 표시되면 로드셀 위에 100g 무게를 놓고 기다립니다. 몇 초 후에 보정 프로세스가 완료됩니다. 캘리브레이션 후 사용자는 로드셀 위에 무게 (최대 40kg)를 올릴 수 있으며 그램 단위의 LCD 값을 얻을 수 있습니다.
이 프로젝트에서는 Arduino 를 사용 하여 전체 프로세스를 제어했습니다. 로드 셀 은 무게를 감지하고 HX711로드 증폭기 모듈에 전기 아날로그 전압을 공급합니다. HX711은로드 셀 출력을 증폭하고 디지털로 변환하는 24 비트 ADC입니다. 그런 다음이 증폭 된 값이 Arduino에 공급됩니다. 이제 Arduino는 HX711의 출력을 계산하고이를 그램 단위의 무게 값으로 변환하여 LCD에 표시합니다. 푸시 버튼 시스템을 교정하는 데 사용됩니다. 우리는 전체 프로세스에 대한 Arduino 프로그램을 작성했으며이 튜토리얼의 끝에서 코드 및 데모 비디오 를 확인합니다.
Arduino 계량 스케일 코드:
이 프로젝트의 프로그래밍 부분은 초보자에게 약간 복잡합니다. 이 프로젝트에서는 HX711 부하 센서를 Arduino와 인터페이스하는 데 라이브러리를 사용하지 않았습니다. 우리는 HX711의 데이터 시트와 애플리케이션 노트를 따랐습니다. 이 목적을 위해 존재하는 일부 라이브러리가 있지만 해당 라이브러리를 포함하기 만하면되고 한 줄의 코드를 사용하여 가중치를 얻을 수 있습니다.
먼저 LCD 용 헤더 파일을 포함하고 동일한 핀을 정의했습니다. 그리고 누름 버튼도 있습니다. 그런 다음 계산 목적으로 일부 변수를 선언했습니다.
#포함
그 후 HX711 모듈에서 데이터를 읽고 출력을 반환하는 아래 함수를 만들었습니다.
unsigned long readCount (void) {unsigned long Count; 서명되지 않은 char i; pinMode (DT, OUTPUT); digitalWrite (DT, HIGH); digitalWrite (SCK, LOW); 개수 = 0; pinMode (DT, INPUT); while (digitalRead (DT)); for (i = 0; i <24; i ++) {digitalWrite (SCK, HIGH); 개수 = 개수 << 1; digitalWrite (SCK, LOW); if (digitalRead (DT)) 개수 ++; } digitalWrite (SCK, HIGH); 개수 = Count ^ 0x800000; digitalWrite (SCK, LOW); 반환 (개수); }
그 후 LCD를 초기화하고 void setup () 에서 입력 및 출력 핀에 대한 지침을 제공 합니다.
void setup () {Serial.begin (9600); pinMode (SCK, OUTPUT); pinMode (sw, INPUT_PULLUP); lcd.begin (16, 2); lcd.print ("무게"); lcd.setCursor (0,1); lcd.print ("측정"); 지연 (1000); lcd.clear (); calibrate (); }
다음으로 void loop () 함수에서 HX711 모듈에서 데이터를 읽고이 데이터를 무게 (그램)로 변환하여 LCD로 보냈습니다.
void loop () {count = readCount (); int w = (((카운트 샘플) / 발) -2 * ((카운트 샘플) / 발)); Serial.print ("무게:"); Serial.print ((int) w); Serial.println ("g"); lcd.setCursor (0,0); lcd.print ("무게"); lcd.setCursor (0,1); lcd.print (w); lcd.print ("g"); if (digitalRead (sw) == 0) {val = 0; 샘플 = 0; w = 0; 개수 = 0; calibrate (); }}
그 전에 100gm 무게를로드 셀 위에 올려 시스템을 보정하는 보정 기능을 만들었습니다.
void calibrate () {lcd.clear (); lcd.print ("보정 중…"); lcd.setCursor (0,1); lcd.print ("기다려주십시오…"); for (int i = 0; i <100; i ++) {count = readCount (); 샘플 + = 개수; Serial.println (count); }……………….
그래서 여기서 우리는 무게 를 측정하기 위해 Arduino와 로드셀과 HX11 무게 센서 의 기본 인터페이스를 배웠습니다. 텍스트 튜토리얼에서는 스마트 컨테이너, 자동 게이트 등과 같은 무게 측정을 기반으로 몇 가지 응용 프로그램을 만들 것입니다.