로드셀과 Arduino를 사용한 디지털 저울

문제를 제거하기 위해 도구를 사용해보십시오





이 게시물에서는 스트레인 게이지 기반 로드셀에 대해 알아볼 것입니다. 스트레인 게이지가 무엇인지,로드 셀이 무엇인지, 스트레인 게이지에 대한 온도 영향, 휘트 스톤 브리지 및로드 셀 증폭기 HX711을 사용한 온도 보상을 살펴보고, 마지막으로로드 셀을 다음과 같이 구현하여 Arduino 기반 계량 스케일 기계를 구축하는 방법을 배웁니다. 무게 센서.

이 게시물은 무게 측정 및 측정 방법을 다루고 Arduino 기반 무게 측정 회로에서 방법을 구현합니다.



우리 모두는 나이에 관계없이 체중을보고 싶어하며, 어린 아이는 체중 증가를보고 싶어 할 수 있으며, 성인은 체중 감소를보고 싶어 할 수도 있습니다. 무게는 고대부터 상품 거래, 과학 장비 및 상용 제품 개발에 도움이 된 중요한 개념입니다.

현대에서 우리는 실험실 목적으로 킬로그램, 밀리그램, 심지어 마이크로 그램 단위의 무게를 측정합니다. 1 그램은 전 세계적으로 동일하며 모든 체중 측정 장치는 동일하게 측정되어야합니다. 몇 밀리그램의 용량 차이가 작은 알약의 대량 생산은 생명을 구하는 알약을 자살 알약으로 만들기에 충분합니다.



무게는 무엇입니까?

무게는 비행기에 가해지는 힘입니다. 가해지는 힘의 양은 물체의 질량에 정비례합니다. 즉, 물체의 질량이 높을수록 가해지는 힘도 높아집니다.

질량은 물체에 존재하는 물리적 물질의 양입니다.

무게는 또 하나의 요소 인 중력에 따라 달라집니다.

중력은 지구 전체에서 일정합니다 (지구의 불균일 한 구형으로 인해 중력에 약간의 변화가 있지만 매우 작습니다). 달의 중력이 훨씬 약하기 때문에 지구에서 1Kg의 무게는 정확히 동일한 질량으로 달에서 160g의 무게를가집니다.

이제 무게가 무엇이고 물체를 무겁게 만드는 요인이 무엇인지 알게되었습니다.

스트레인 게이지 란?

스트레인 게이지는 물체의 변형 (변형)을 측정하는 트랜스 듀서 또는 센서입니다. 이것은 전기 엔지니어 Edward E. Simmons와 기계 엔지니어 Arthur Claude Ruge가 발명했습니다.

스트레인 게이지 그림 :

스트레인 게이지 센서

스트레인 게이지는 유연하며 두 개의 얇은 플라스틱 시트 사이에 끼워진 얇은 금속 호일 패턴이며 적절한 접착제 또는 접착 재료를 사용하여 표면에 부착해야합니다.

표면에 무게 나 힘을 가하면 변형되고 스트레인 게이지도 변형됩니다. 스트레인 게이지의 변형으로 인해 금속 호일의 전기 저항이 변경됩니다.

이제 스트레인 게이지의 저항 변화는 무게 또는 표면에 가해지는 힘에 정비례합니다.

실생활에서 스트레인 게이지의 저항 변화는 감지하기에 매우 중요하지 않습니다. 저항의 작은 변화를 감지하기 위해 휘트 스톤 브리지를 사용하고 있습니다.

Wheatstone 다리가 무엇인지 간단히 살펴 보겠습니다.

휘트 스톤 브리지 이해 :

밀 돌 다리는 알려지지 않은 저항을 결정하는 데 사용할 수있는 회로입니다. Wheatstone 다리는 Samuel Hunter Christie에 의해 고안되었으며 나중에 Wheatstone 다리는 Charles 경에 의해 강화되고 전파되었습니다.

휘트 스톤.

휘트 스톤 브리지 회로의 그림 :

휘트 스톤 브리지 회로

당사의 최신 디지털 멀티 미터는 메가 옴, 킬로 옴 및 옴 범위의 저항 값을 읽을 수 있습니다.

밀 스톤 브리지를 사용하여 밀리 옴 범위의 저항을 측정 할 수 있습니다.

밀 스톤 브리지는 4 개의 저항으로 구성되며 4 개 중 3 개는 알려진 저항이고 1 개는 알 수없는 저항입니다.

전위차 (전압)는 'A'및 'C'지점에 적용되고 'B'및 'D'지점에서 전압계가 연결됩니다.

모든 저항이 같으면 'B'와 'D'지점에서 전류가 흐르지 않고 전압계가 0을 읽습니다. 이를 밸런스 브리지라고합니다.

저항의 저항이 다른 3 개의 저항과 다른 경우 'B'와 'D'지점 사이에 전압이 흐르고 전압계는 알 수없는 저항에 비례하는 값을 읽습니다. 이를 불균형 브리지라고합니다.

여기서 알려지지 않은 저항은 스트레인 게이지이며, 저항이 변경되면 전압계에 반영됩니다.

이제 변형이나 무게 또는 힘을 전압 신호로 변환했습니다. 이 전압은 유용한 판독 값을 얻기 위해 증폭되어야하며, 마이크로 컨트롤러에 공급되어 판독 값을 그램 단위로 얻습니다.

이제 온도가 스트레인 게이지 성능에 어떤 영향을 미치는지 논의하겠습니다.

스트레인 게이지에 대한 온도 영향 :

스트레인 게이지는 온도에 민감하며 실제 무게 / 힘 판독 값을 엉망으로 만들 수 있습니다. 주변 온도가 변하면 금속 호일이 금속 팽창을 받아 저항에 직접 영향을줍니다.

휘트 스톤 브리지를 사용하여 온도 효과를 무효화 할 수 있습니다. 휘트 스톤 브리지를 사용하여 온도를 보정하는 방법을 살펴 보겠습니다.

온도 보상 :

모든 저항을 스트레인 게이지로 교체하여 온도 영향을 쉽게 중화 할 수 있습니다. 이제 모든 스트레인 게이지의 저항은 온도의 영향을 똑같이 받고 원하지 않는 소음은 휘트 스톤 브리지의 특성에 의해 무효화됩니다.

로드셀이란?

로드 셀은 휘트 스톤 브리지 구성에서 4면에 스트레인 게이지가 부착 된 알루미늄 프로파일입니다.

로드셀 그림 :

로드셀 장치

이 유형의 로드셀은 견고하며 산업에서 일반적으로 사용됩니다. 4 개의 나사 마운트가 있으며, 한쪽은 고정 된 표면에 볼트로 고정되고 다른 쪽 끝은 측정 대상 물체를 고정하기 위해 홀더 (예 : 바구니)에 볼트로 고정됩니다.

데이터 시트 또는 본체에 명시된 최대 중량이 지정되어있어 사양을 초과하면 로드셀이 손상 될 수 있습니다.

풀 브리지 셀은 E +, E-라는 4 개의 단자로 구성되며, 이는 공급 전압이 적용되는 여기 와이어입니다. 다른 두 개의 와이어는 전압이 측정되는 신호 와이어 인 S + 및 S-입니다.

이제 이러한 전압은 마이크로 컨트롤러가 읽고 처리하기에 충분히 강하지 않은 밀리 볼트 범위에 있습니다. 우리는 증폭이 필요하며 마이크로 컨트롤러에 작은 변화가 보여야합니다. 이를 위해 로드셀 증폭기라는 전용 모듈이 있습니다. 이에 대해 간략히 살펴 보겠습니다.

로드셀 증폭기 HX711 :

HX711 로드셀 증폭기 모듈 그림 :

로드셀 증폭기 HX711

로드셀 증폭기는 중량 측정을 위해 특별히 설계된 24 비트 아날로그-디지털 변환기 인 IC HX711을 기반으로합니다. 선택 가능한 이득 32, 64 및 128이 다르며 2.6 ~ 5.5V에서 작동합니다.
이 브레이크 아웃 보드는로드 셀의 미세한 변화를 감지하는 데 도움이됩니다. 이 모듈을 사용하려면 HX711.h 라이브러리가 필요합니다.

Arduino 또는 기타 마이크로 컨트롤러.

로드 셀은 HX711 모듈에 연결되고 모듈은 Arduino와 인터페이스됩니다. 무게 측정 회로는 이러한 방식으로 개발되어야합니다.

결론적으로 이제 스트레인 게이지가 무엇인지, Wheatstone 브리지가 무엇인지, 스트레인 게이지에 대한 온도 영향, 온도 보상 및로드 셀 증폭기가 무엇인지 알 수 있습니다.

우리는 위의 논의를 통해 계량 스케일 설계의 이론적 부분을 포괄적으로 이해했습니다. 이제 Arduino를 사용하여 실용적인 계량 스케일 기계를 만드는 데 loas 셀이 어떻게 사용될 수 있는지 살펴 보겠습니다.

Arduino를 사용하여 디지털 저울 기계 설계

다음 토론에서는 적절한 정확도로 몇 그램에서 40Kg (로드 셀 사양에 따라 다름)까지 무게를 측정 할 수있는 Arduino를 사용하여 디지털 체중계 기계를 구성하는 방법을 배웁니다. 정밀 등급 로드셀의 분류에 대해 배우고 제안 된 회로를 교정하고 체중계 기계를 완성합니다.

참고 :이 회로는 상업적 구현에 필요한 표준을 준수하지 않을 수 있습니다.

체중계는 밀리그램에서 수 톤에 이르는 다양한 종류의 거래 및 연구에 사용됩니다. 제안 된 체중계 기계의 최대 스케일은로드 셀의 사양에 따라 다릅니다. 500g, 1Kg, 5Kg, 10Kg, 20Kg 및 40Kg 등의 범위가 있습니다.

로드셀에는 등급이 다르며 정확도 범위가 다르므로 프로젝트에 적합한 것을 선택해야합니다.

로드셀 정확도 등급 분류 :

다양한 종류의 애플리케이션에 대해 서로 다른 정확도 등급이 정의됩니다. 아래 분류는 최저 정확도에서 최고 정확도 범위까지입니다.

정확도가 낮지 만 상당히 정확한로드 셀은 D1, C1 및 C2로 분류됩니다. 이 프로젝트에는 이것으로 충분합니다. 이로드 셀은 모래, 시멘트 또는 물의 무게를 측정하는 데 사용됩니다.

C3 등급 로드셀은 볼 베어링, 기계 구성 부품 등의 중량 확인과 같은 품질 보증에 사용됩니다.

C4, C5, C6은 동급 최고의 정확도이며, 이러한 등급의로드 셀은 그램에서 마이크로 그램으로 측정하는 데 사용됩니다. 이 등급 등급은 상점 카운터 저울, 대규모 생산 모니터링, 식품 포장 및 실험실 사용 등에 사용됩니다.

이제 프로젝트의 기술적 세부 사항을 살펴 보겠습니다.

회로도 :

Arduino 및 로드셀에 대한 로드셀 연결 HX711.

Arduino 및 로드셀에 대한 로드셀 연결 HX711.

이 프로젝트는 Arduino, 로드셀 및 HX711 로드셀 증폭기 보드와 컴퓨터로 구성됩니다. 출력은 Arduino IDE의 직렬 모니터에서 모니터링 할 수 있습니다.

프로젝트의 두뇌는 항상 arduino이며 모든 Arduino 보드 모델을 사용할 수 있습니다. HX711은 24 비트 ADC로로드 셀의 무게로 인해 가장 작은 플렉스를 찾을 수 있습니다. 2.7V에서 5V까지 동작 할 수 있습니다. 전원은 Arduino 보드에서 제공됩니다.

로드 셀에는 일반적으로 Wheatstone 브리지 구성 스트레인 게이지의 출력 인 4 개의 와이어가 있습니다.

빨간색 와이어는 E +, 검정색 와이어는 E-, 녹색 와이어는 A-, 흰색 와이어는 A +입니다. 일부 HX711 모듈은로드 셀의 단자 이름을 지정하고 일부 HX711 모듈은 전선의 색상을 지정합니다. 이러한 모델은 회로도에 나와 있습니다.

HX711의 DATA 핀은 Arduino의 3 번 핀에 연결되고 HX711의 Clock 핀은 Arduino의 2 번 핀에 연결됩니다.

로드셀 장착 방법 :

Arduino로 로드셀을 설치하는 방법

로드 셀에는 양쪽에 2 개씩 4 개의 나사 구멍이 있습니다. 최상의 정확성을 위해 한쪽면은 고정되어 있어야하며 적당한 무게를 가진 목재에 마 운딩 될 수 있습니다.

얇은 나무 또는 얇은 판을 사용하여 위의 그림과 같이 측정 무게를 지탱할 수 있습니다.

따라서 무게를 놓을 때로드 셀이 구부러져 스트레인 게이지가 구부러지고 HX711 모듈로 측정되어 Arduino에 공급되는 저항이 변경됩니다.

하드웨어 설정이 완료되면 코드를 업로드하고 보정하겠습니다.

회로 교정 :

두 가지 프로그램이 있습니다. 하나는 교정 프로그램입니다 (교정 계수 찾기). 또 다른 코드는 중량 측정 프로그램이며, 교정 프로그램 코드에서 찾은 교정 계수를 중량 측정 프로그램에 입력해야합니다.

보정 계수는 무게 측정의 정확도를 결정합니다.

여기에서 HX711 라이브러리를 다운로드하십시오 : github.com/bogde/HX711

교정 프로그램 코드 :

//-------------------- --------------------//
#include
const int out = 3
const int clck = 2
HX711 scale(out, clck)
float CalibrationFactor = -96550
char var
void setup()
{
Serial.begin(9600)
Serial.println('------------- Weight Scale Calibration --------------')
Serial.println('Press Q,W,E,R or q,w,e,r to increase calibration factor by 10,100,1000,10000 respectively')
Serial.println('Press A,S,D,F or a,s,d,f to decrease calibration factor by 10,100,1000,10000 respectively')
Serial.println('Press 'T' or 't' for tare')
scale.set_scale()
scale.tare()
long zero_factor = scale.read_average()
Serial.print('Zero factor: ')
Serial.println(zero_factor)
}
void loop()
{
scale.set_scale(CalibrationFactor)
Serial.print('Reading: ')
Serial.print(scale.get_units(), 3)
Serial.println(' Kilogram')
Serial.print('Calibration Factor is: ')
Serial.println(CalibrationFactor)
Serial.println('--------------------------------------------')
if (Serial.available())
{
var = Serial.read()
if (var == 'q')
{
CalibrationFactor = CalibrationFactor + 10
}
else if (var == 'a')
{
CalibrationFactor = CalibrationFactor - 10
}
else if (var == 'w')
{
CalibrationFactor = CalibrationFactor + 100
}
else if (var == 's')
{
CalibrationFactor = CalibrationFactor - 100
}
else if (var == 'e')
{
CalibrationFactor = CalibrationFactor + 1000
}
else if (var == 'd')
{
CalibrationFactor = CalibrationFactor - 1000
}
else if (var == 'r')
{
CalibrationFactor = CalibrationFactor + 10000
}
else if (var == 'f')
{
CalibrationFactor = CalibrationFactor - 10000
}
else if (var == 'Q')
{
CalibrationFactor = CalibrationFactor + 10
}
else if (var == 'A')
{
CalibrationFactor = CalibrationFactor - 10
}
else if (var == 'W')
{
CalibrationFactor = CalibrationFactor + 100
}
else if (var == 'S')
{
CalibrationFactor = CalibrationFactor - 100
}
else if (var == 'E')
{
CalibrationFactor = CalibrationFactor + 1000
}
else if (var == 'D')
{
CalibrationFactor = CalibrationFactor - 1000
}
else if (var == 'R')
{
CalibrationFactor = CalibrationFactor + 10000
}
else if (var == 'F')
{
CalibrationFactor = CalibrationFactor - 10000
}
else if (var == 't')
{
scale.tare()
}
else if (var == 'T')
{
scale.tare()
}
}
}
//-------------------- --------------------//

보정 방법 :

  • 하드웨어 설정이 완료되면 위 코드를 업로드하십시오.
  • 2 개의 나사를 포함하여 무게를 지탱하는 데 사용되는 얇은 판 또는 목재를 제거합니다 (로드셀의 다른 쪽은베이스에 고정되어야합니다).
  • 직렬 모니터를 엽니 다.
  • 알려진 무게를로드 셀에 직접 100g (예 :)을 놓습니다.
  • 프레스 Q, W, E, R 보정 계수를 각각 10,100,1000,10000 씩 증가시킵니다.
  • 프레스 A, S, D, F 보정 계수를 각각 10,100,1000,10000 씩 줄입니다.
  • 교정 계수가 증가하거나 감소 할 때마다 'Enter'를 누릅니다.
  • 알려진 분동 재료의 정확한 무게가 나타날 때까지 보정 계수를 높이거나 낮 춥니 다.
  • Tare 기능은 무게 눈금을 0으로 설정하는 것으로, 그릇의 무게없이 물의 무게를 측정하고자 할 때 유용합니다. 먼저 그릇을 놓고 용기를 누르고 물을 붓습니다.
  • 보정 계수를 기록하고 알고있는 분동이 나타난 후 적어 둡니다.

이제 알려지지 않은 가중치를 측정 할 수 있습니다.

무게 측정 프로그램 코드 :

//---------------- ----------------//
#include
const int out = 3
const int clck = 2
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
void setup()
{
Serial.begin(9600)
Serial.println('Press 'T' or 't' to tare')
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
Serial.print('Weight: ')
Serial.print(scale.get_units(), 3)
Serial.println(' Kilogram')
if (Serial.available())
{
char var = Serial.read()
if (var == 't')
{
scale.tare()
}
if (var == 'T')
{
scale.tare()
}
}
}
//---------------- ----------------//

float CalibrationFactor = -12000

-12000을 찾은 보정 계수로 바꿉니다. 음수 또는 양수일 수 있습니다.

전체 하드웨어 설정과 함께 위 코드를 업로드하면 체중계 기계가 준비됩니다.

LCD 디스플레이를 이용한 체중계

위의 기사는 PC를 사용하는 Arduino 기반 체중계 시스템을 설명했습니다. 다음 섹션에서는 측정하는 동안 PC에 의존하지 않도록 16 x 2 LCD 디스플레이를 추가하여 체중계 기계의 실용적인 버전을 구축하려고합니다. 무게. 이 게시물에서는 'I2C'16 x 2 LCD가있는 버전과 'I2C'16 x 2 LCD 디스플레이가없는 버전의 두 가지 버전이 제안됩니다.

독자가 자신의 편의에 따라 디자인을 선택할 수 있도록 두 가지 선택이 제공됩니다. 두 가지의 주요 차이점은 I2C 어댑터 모듈과의 와이어 연결은 LCD 디스플레이의 기능을 위해 4 개의 와이어 (Vcc, GND, SCL 및 SDA) 만 필요하지만 I2C 어댑터가 없으면 Arduino와 LCD 디스플레이를 연결하는 데 여러 개의 와이어가 필요하다는 것입니다.

그러나 두 기능 모두 정확히 똑같은 일부는 기존의 것보다 I2C를 선호하고 일부는 그 반대를 선호하므로 여기에 두 디자인이 있습니다.

기존의 LCD 디자인을 살펴 보겠습니다.

회로도 :

arduino, 16 x 2 LCD 디스플레이 및 LCD 디스플레이 대비 조정을위한 10K 전위차계

위의 회로도에는 LCD 디스플레이 대비를 조정하기위한 arduino, 16 x 2 LCD 디스플레이 및 10K 전위차계가 있습니다.

백라이트를 위해 Arduino에서 LCD 디스플레이로 3.3V를 공급할 수 있습니다. 무게 측정 값을 0으로 만드는 푸시 버튼이 제공되며,이 기능은 마지막에 자세히 설명됩니다.

이것은 LCD와 Arduino 간의 연결이며, 로드셀과 로드셀 증폭기와 Arduino 간의 연결은 이전 섹션에 나와 있습니다.

LCD 체중계 기계 코드 :

// -------- Program developed by R.GIRISH -------//
#include
#include
const int rs = 10
const int en = 9
const int d4 = 8
const int d5 = 7
const int d6 = 6
const int d7 = 5
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
const int out = 3
const int clck = 2
const int Tare = 4
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
void setup()
{
lcd.begin(16, 2)
pinMode(Tare, INPUT)
digitalWrite(Tare, HIGH)
lcd.setCursor(0, 0)
lcd.print(' Weight Scale')
lcd.setCursor(0, 1)
lcd.print(' Machine')
delay(2000)
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Weight:')
lcd.print(scale.get_units(), 3)
lcd.print(' Kg')
delay(200)
if (digitalRead(Tare) == LOW)
{
scale.tare()
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Tare ......')
lcd.setCursor(0, 1)
lcd.print('Setting to 0 Kg.')
delay(1000)
}
}
// -------- Program developed by R.GIRISH -------//

이제이 체중계를 I2C 어댑터 기반 LCD 디스플레이와 함께 사용하는 방법을 살펴 보겠습니다.

회로도 Arduino 및 I2C 어댑터가있는 LCD 디스플레이 :

I2C 어댑터가있는 Arduino 및 LCD 디스플레이

여기에는 뒷면에 I2C 어댑터가있는 Arduino 및 LCD 디스플레이가 있습니다. 이제 와이어 연결이 간단하고 간단합니다.

I2C 모듈 그림 :

I2C 모듈

이 모듈은 일반 16 x 2 또는 20 x 4 LCD 디스플레이 뒷면에 직접 납땜하고 회로도를 따를 수 있습니다.

로드셀, 로드셀 증폭기 및 Arduino의 연결에 대해서는 이전 섹션을 다시 참조하십시오.

다음 I2C 기반 라이브러리를 다운로드하십시오.

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

I2C 기반 체중계 회로에 대한 코드 :

// -------- Program developed by R.GIRISH -------//
#include
#include
#include
const int out = 3
const int clck = 2
const int Tare = 4
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
LiquidCrystal_I2C lcd(0x27, 16, 2)
void setup()
{
lcd.init()
lcd.backlight()
pinMode(Tare, INPUT)
digitalWrite(Tare, HIGH)
lcd.setCursor(0,0)
lcd.print(' Weight Scale')
lcd.setCursor(0,1)
lcd.print(' Machine')
delay(2000)
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Weight:')
lcd.print(scale.get_units(), 3)
lcd.print(' Kg')
delay(200)
if (digitalRead(Tare) == LOW)
{
scale.tare()
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Tare ......')
lcd.setCursor(0,1)
lcd.print('Setting to 0 Kg.')
delay(1000)
}
}
// -------- Program developed by R.GIRISH -------//

노트:

코드 중 하나를 Arduino에 업로드하기 전에 코드에 보정 계수를 입력해야합니다.

float CalibrationFactor = -12000

보정 계수를 얻는 방법은 위의 이전 섹션에서 설명합니다.

용기 기능 :

체중계의 용기 기능은 판독 값을 0으로 만드는 것입니다. 예를 들어 상품이 적재 된 바구니가있는 경우 순 중량은 바구니 중량 + 상품 중량이됩니다.

상품을 싣기 전에 로드셀에 바스켓이있는 용기 버튼을 누르면 바스켓의 무게가 무시되고 상품의 무게 만 측정 할 수 있습니다.

이 Arduino 기반의 실용적인 LCD 계량 저울 기계 회로에 대한 질문이 있으시면 빠른 답변을 받으실 수 있습니다.




이전 : 모터 펌프 용 솔리드 스테이트 접촉기 회로 다음 : 강압 변압기를 만드는 방법