Cyfrowa waga z wykorzystaniem czujnika wagowego i Arduino

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym poście dowiemy się o ogniwie obciążnikowym opartym na tensometrze. Będziemy badać, czym jest Strain Gauge, czym jest ogniwo obciążnikowe, wpływ temperatury na tensometr, kompensację temperatury za pomocą mostka Wheatstone'a i wzmacniacza ogniwa obciążnikowego HX711, a na koniec dowiemy się, jak zbudować wagę opartą na Arduino, wdrażając ogniwo obciążnikowe czujnik wagi.

Ten post dotyczy pomiaru masy i metod pomiarowych oraz implementacji metod w obwodzie wagi opartym na Arduino.



Wszyscy uwielbiamy widzieć swoją wagę, niezależnie od wieku, małe dziecko może uwielbiać widzieć, jak przybiera na wadze, a dorośli mogą uwielbiać widzieć jego utratę wagi. Waga jest kluczową koncepcją od czasów starożytnych, pomagając w handlu towarami, rozwoju sprzętu naukowego i produktów komercyjnych.

W dzisiejszych czasach do celów laboratoryjnych mierzymy ciężary w kilogramach, miligramach, a nawet mikrogramach. Jeden gram jest taki sam na całym świecie, wszystkie urządzenia do pomiaru masy muszą mierzyć to samo. Masowa produkcja pigułki z niewielką różnicą kilku miligramów dawki wystarczy, aby z pigułki ratującej życie zrobić pigułkę samobójczą.



Co to jest waga?

Waga to siła wywierana na samolot. Wielkość wywieranej siły jest wprost proporcjonalna do masy obiektu, co oznacza, że ​​większa masa obiektu, tym większa siła.

Masa to ilość fizycznej materii obecnej w obiekcie.

Waga zależy od jeszcze jednego czynnika: grawitacji.

Grawitacja jest stała na całym świecie (istnieją niewielkie różnice w grawitacji z powodu niejednorodnego kulistego kształtu Ziemi, ale jest ona bardzo mała). Waga 1 kg na Ziemi będzie ważyć 160 gramów na Księżycu z dokładnie taką samą masą, ponieważ Księżyc ma znacznie słabszą siłę grawitacji.

Teraz wiesz, co to jest waga i jakie czynniki powodują, że przedmiot jest ciężki.

Co to jest tensometr:

Tensometr to przetwornik lub czujnik mierzący odkształcenie (odkształcenie) przedmiotu. Zostało to wymyślone przez inżyniera elektryka Edwarda E. Simmonsa i inżyniera mechanika Arthura Claude'a Ruge'a.

Ilustracja tensometru:

Czujnik tensometru

Tensometr jest elastyczny, jest to wzór cienkiej metalowej folii umieszczonej pomiędzy dwoma cienkimi plastikowymi arkuszami i należy go przymocować do powierzchni za pomocą odpowiedniego kleju lub innego materiału klejącego.

Kiedy przykładamy ciężar lub siłę na powierzchnię, deformuje się ona, a także odkształca się tensometr. Odkształcenie tensometru powoduje zmianę oporu elektrycznego folii metalowej.

Teraz zmiana oporu tensometru jest wprost proporcjonalna do ciężaru lub siły przyłożonej do powierzchni.

W rzeczywistości zmiana rezystancji tensometru jest bardzo nieznaczna do wykrycia. Aby wykryć drobne zmiany w oporze, używamy mostka Wheatstone'a.

Przyjrzyjmy się w skrócie, czym jest most Wheatstone'a.

Zrozumieć most Wheatstone'a:

Kamienny most z pszenicy to obwód, który można wykorzystać do określenia nieznanego oporu. Most Wheatstone'a został wymyślony przez Samuela Huntera Christie, później most Wheatstone'a został ulepszony i rozpowszechniony przez Sir Charlesa

Wheatstone.

Ilustracja obwodu mostka Wheatstone'a:

Obwód mostka Wheatstone

Nasze nowoczesne multimetry cyfrowe mogą odczytywać wartości rezystancji w zakresie od megaomów, kiloomów i omów.

Za pomocą kamiennego mostu pszenicznego możemy zmierzyć rezystancję w zakresie miliomów.

Kamienny mostek pszenicy składa się z 4 rezystorów, z których 3 to rezystancje znane, a jeden to oporność nieznana.

Różnica potencjałów (napięcie) jest przykładana do punktów „A” i „C”, a z punktów „B” i „D” podłączany jest woltomierz.

Jeśli wszystkie rezystory są równe, w punktach „B” i „D” nie będzie płynął prąd, a woltomierz wskaże zero. Nazywa się to zrównoważonym mostem.

Jeśli rezystancja rezystora różni się od pozostałych trzech rezystorów, nastąpi przepływ napięcia między punktami „B” i „D”, a woltomierz odczyta pewną wartość proporcjonalną do nieznanej rezystancji. Nazywa się to niezrównoważonym mostem.

Tutaj nieznaną rezystancją jest tensometr, gdy zmienia się rezystancja, odbija się na woltomierzu.

Teraz przekonwertowaliśmy odkształcenie, ciężar lub siłę na sygnał napięciowy. To napięcie musi zostać wzmocnione, aby uzyskać przydatne odczyty, które zostaną podane do mikrokontrolera, aby uzyskać odczyty w gramach.

Omówmy teraz, jak temperatura wpływa na działanie tensometru.

Wpływ temperatury na tensometr:

Tensometr jest wrażliwy na temperaturę i może zepsuć rzeczywiste odczyty wagi / siły. W przypadku zmiany temperatury otoczenia folia metalowa jest poddawana rozszerzaniu metalowemu, co bezpośrednio wpływa na jej odporność.

Możemy zniwelować efekt temperatury za pomocą mostka Wheatstone'a. Zobaczmy, jak możemy skompensować temperaturę za pomocą mostka Wheatstone'a.

Kompensacja temperatury:

Możemy łatwo zneutralizować wpływ temperatury, zastępując wszystkie rezystory tensometrem. Teraz temperatura będzie miała wpływ na całą rezystancję tensometru, a niepożądany hałas zostanie zniwelowany przez charakter mostka Wheatstone'a.

Co to jest ogniwo obciążnikowe?

Ogniwo obciążnikowe to aluminiowy profil z tensometrem przymocowanym z 4 stron w konfiguracji mostka Wheatstone'a.

Ilustracja ogniwa obciążnikowego:

Urządzenie obciążnikowe

Ten typ ogniwa obciążnikowego jest sztywny i powszechnie stosowany w przemyśle. Istnieją 4 śruby mocujące, jedna strona jest przykręcona do nieruchomej powierzchni, a druga końcówka jest przykręcona do uchwytu (np. Kosza), aby trzymać mierzony przedmiot.

Ma maksymalną wagę określoną w arkuszu danych lub na korpusie, przekroczenie specyfikacji może spowodować uszkodzenie ogniwa obciążnikowego.

Ogniwa pełnego mostka składają się z 4 zacisków, a mianowicie E +, E-, które są przewodami wzbudzającymi, przez które przykładane jest napięcie zasilania. Pozostałe dwa przewody to S + i S-, które są przewodami sygnałowymi, z których mierzone jest napięcie.

Teraz te napięcia są w zakresie miliwoltów, które nie są wystarczająco silne, aby mikrokontroler mógł je odczytać i przetworzyć. Potrzebujemy wzmocnienia, a mikrokontroler powinien widzieć drobne zmiany. Aby to zrobić, istnieje specjalny moduł zwany wzmacniaczami ogniw obciążnikowych, przyjrzyjmy się temu.

Wzmacniacz ogniwa obciążnikowego HX711:

Ilustracja modułu wzmacniacza ogniwa obciążnikowego HX711:

Wzmacniacz ogniwa obciążnikowego HX711

Wzmacniacz tensometryczny oparty jest na układzie IC HX711, który jest 24-bitowym przetwornikiem analogowo-cyfrowym zaprojektowanym specjalnie do pomiarów wagi. Ma różne wybieralne wzmocnienia 32, 64 i 128 i działa na 2,6 do 5,5 V.
Ta wyłamywana płytka pomaga wykryć drobne zmiany w ogniwie obciążnikowym. Ten moduł wymaga biblioteki HX711.h do pracy

Arduino lub dowolny inny mikrokontroler.

Czujnik wagowy zostanie podłączony do modułu HX711, a moduł będzie połączony z Arduino. W ten sposób należy opracować obwód pomiaru masy.

Podsumowując, teraz już wiesz, czym jest tensometr, czym jest mostek Wheatstone'a, wpływ temperatury na tensometr, kompensację temperatury i czym jest wzmacniacz ogniwa obciążnikowego.

W pełni zrozumieliśmy teoretyczną część projektu wagi z powyższej dyskusji, teraz zobaczmy, jak komórka loas może być użyta do wykonania praktycznej wagi z wykorzystaniem Arduino

Zaprojektowanie wagi cyfrowej z wykorzystaniem Arduino

W kolejnych dyskusjach nauczymy się, jak zbudować cyfrową wagę przy użyciu Arduino, która może mierzyć wagę od kilku gramów do 40 kg (w zależności od specyfikacji twojego ogniwa obciążnikowego) z rozsądną dokładnością. Dowiemy się o klasyfikacji precyzyjnych ogniw obciążnikowych oraz będziemy kalibrować proponowany obwód i sfinalizować wagę wagi.

Uwaga: ten obwód może nie być zgodny ze standardami wymaganymi do wdrożenia komercyjnego.

Maszyny do wag są używane w różnych branżach i badaniach, od miligramów do kilku ton. Maksymalna skala proponowanej wagi zależy od specyfikacji ogniwa obciążnikowego. Istnieją zakresy od 500 gramów, 1 kg, 5 kg, 10 kg, 20 kg i 40 kg itd.

Istnieją różne klasy ogniw obciążnikowych, oferują one różny zakres dokładności i należy wybrać odpowiedni dla swojego projektu.

Klasyfikacja klasy dokładności ogniw obciążnikowych:

Różne klasy dokładności są zdefiniowane dla różnych rodzajów zastosowań. Poniższa klasyfikacja obejmuje zakres od najniższej dokładności do najwyższego zakresu dokładności.

Ogniwa obciążnikowe o niższej dokładności (ale dość dokładnych) są klasyfikowane jako D1, C1 i C2. To wystarczy na ten projekt. Te ogniwa obciążnikowe służą do pomiaru masy piasku, cementu lub wody.

Ogniwa obciążnikowe klasy C3 są używane do zapewniania jakości, np. Sprawdzania wagi łożysk kulkowych, części konstrukcji maszyn itp.

C4, C5, C6 są najlepszą w swojej klasie dokładnością, te klasy ogniw obciążnikowych są używane do pomiaru w gramach na mikrogramy. Te klasy są używane w wagach sklepowych, monitorowaniu produkcji na dużą skalę, pakowaniu żywności i zastosowaniach laboratoryjnych itp.

Przejdźmy teraz do szczegółów technicznych projektu.

Schemat obwodu:

Podłączenie czujnika wagowego HX711 do Arduino i czujnika wagowego.

Podłączenie czujnika wagowego HX711 do Arduino i czujnika wagowego.

Projekt składa się z płyty wzmacniacza ogniw obciążnikowych Arduino, Load cell i HX711 oraz komputera. Wyjście może być monitorowane na monitorze szeregowym Arduino IDE.

Mózgiem projektu jest jak zwykle arduino, możesz użyć dowolnego modelu płytki Arduino. HX711 to 24-bitowy przetwornik ADC, który może znaleźć najmniejszy flex ze względu na ciężar ogniwa obciążnikowego. Może pracować w zakresie od 2,7 V do 5 V. Zasilanie zapewnia płytka Arduino.

Ogniwo obciążnikowe ma ogólnie cztery przewody, które są wyjściem z tensometru skonfigurowanego z mostkiem Wheatstone'a.

Czerwony przewód to E +, czarny to E-, zielony to A-, a biały to A +. Niektóre moduły HX711 określają nazwę zacisków ogniwa obciążnikowego, a niektóre moduły HX711 określają kolory przewodów, taki model jest pokazany na schemacie obwodu.

Pin DATA w HX711 jest podłączony do pinu nr 3 Arduino, a pin zegara w HX711 jest podłączony do pinu nr 2 Arduino.

Jak zamontować ogniwo obciążnikowe:

jak zainstalować loadcell z Arduino

Ogniwo obciążnikowe ma cztery otwory na śruby, po dwa po obu stronach. Każda strona musi być nieruchoma, aby uzyskać najlepszą dokładność, można ją wbić w drewno o rozsądnej masie.

Do utrzymania ciężaru pomiarowego można użyć cienkiego drewna lub cienkiej płyty, jak pokazano powyżej.

Kiedy więc umieścisz obciążnik, ogniwo obciążnikowe wygina się, podobnie jak tensometr i zmienia jego rezystancję, która jest mierzona przez moduł HX711 i podawana do Arduino.

Po zakończeniu konfiguracji sprzętu prześlijmy kod i dokonaj kalibracji.

Kalibracja obwodu:

Istnieją dwa programy, jeden to program do kalibracji (znajdowanie współczynnika kalibracji). Innym kodem jest program do pomiaru masy, współczynnik kalibracji znaleziony w kodzie programu kalibracji należy wprowadzić w programie do pomiaru masy.

Współczynnik kalibracji określa dokładność pomiaru masy.

Pobierz bibliotekę HX711 tutaj: github.com/bogde/HX711

Kod programu kalibracji:

//-------------------- --------------------//
#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()
}
}
}
//-------------------- --------------------//

Jak skalibrować:

  • Po zakończeniu konfiguracji sprzętu prześlij powyższy kod.
  • Usuń cienką płytkę lub drewno, które służy do trzymania ciężarka, w tym dwie śruby (druga strona ogniwa obciążnikowego powinna być przymocowana do podstawy)
  • Otwórz monitor szeregowy.
  • Umieść znaną masę bezpośrednio na ogniwie obciążnikowym, 100 gramów (powiedzmy).
  • naciśnij Q, W, E, R aby zwiększyć współczynnik kalibracji odpowiednio o 10,100,1000,10000.
  • naciśnij A, S, D, F. aby zmniejszyć współczynnik kalibracji odpowiednio o 10,100,1000,10000.
  • Naciśnij „Enter” po każdym zwiększeniu lub zmniejszeniu współczynnika kalibracji.
  • Zwiększ lub zmniejsz współczynnik kalibracji, aż pojawi się prawidłowa masa znanego materiału o masie.
  • Funkcja tarowania polega na ustawieniu wagi na zero, jest to przydatne, gdy chcesz mierzyć wagę wody (powiedzmy) bez wagi miski. Najpierw postaw miskę, naciśnij tarę i wlej wodę.
  • Zanotuj współczynnik kalibracji i zapisz go po wyświetleniu znanej masy.

Teraz może mierzyć nieznane wagi.

Kod programu pomiaru masy ciała:

//---------------- ----------------//
#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

Zastąp -12000 znalezionym współczynnikiem kalibracji. Może to być liczba ujemna lub dodatnia.

Prześlij powyższy kod z pełną konfiguracją sprzętu i Twoja waga jest gotowa.

Waga z wyświetlaczem LCD

W powyższym artykule wyjaśniono system wagowy oparty na Arduino za pomocą komputera, w następnym rozdziale postaramy się zbudować praktyczną wersję wagi poprzez dodanie wyświetlacza LCD 16 x 2, aby nie polegać na komputerze podczas pomiaru ciężary. W tym poście zaproponowano dwie wersje, jedną z wyświetlaczem LCD „I2C” 16 x 2 i jedną bez wyświetlacza LCD „I2C” 16 x 2.

Tutaj podano dwie możliwości, aby czytelnicy mogli wybrać projekt zgodnie z ich wygodą. Główną różnicą między nimi jest połączenie przewodowe z modułem adaptera I2C do działania wyświetlacza LCD potrzebne są tylko 4 przewody (Vcc, GND, SCL i SDA), natomiast bez adaptera I2C potrzeba kilku przewodów do połączenia Arduino z wyświetlaczem LCD.

Jednak obie funkcje są dokładnie takie same, niektórzy wolą I2C od konwencjonalnego, a niektórzy wolą odwrotnie, więc oto oba projekty.

Spójrzmy na konwencjonalny projekt LCD:

Schemat obwodu:

arduino, wyświetlacz LCD 16 x 2 i potencjometr 10K do regulacji kontrastu wyświetlacza LCD

Na powyższym schemacie mamy arduino, wyświetlacz LCD 16 x 2 i potencjometr 10K do regulacji kontrastu wyświetlacza LCD.

3,3 V może być doprowadzone z Arduino do wyświetlacza LCD w celu podświetlenia. Dostępny jest przycisk do zerowania odczytu wagi, funkcja ta zostanie szczegółowo wyjaśniona na końcu.

To tylko połączenie między wyświetlaczem LCD i Arduino, połączenie między ogniwem obciążnikowym i wzmacniaczem ogniwa obciążnikowego do Arduino pokazano w poprzedniej sekcji.

Kod do wagi 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 -------//

Teraz zobaczmy, jak używać tej wagi z wyświetlaczem LCD opartym na adapterze I2C.

Schemat obwodu Arduino i wyświetlacz LCD z adapterem I2C:

Arduino i wyświetlacz LCD z adapterem I2C

Tutaj mamy tylko Arduino i wyświetlacz LCD z adapterem I2C z tyłu. Teraz połączenia przewodów są uproszczone i proste.

Ilustracja modułu I2C:

Moduł I2C

Moduł ten można przylutować bezpośrednio z tyłu normalnego wyświetlacza LCD 16 x 2 lub nawet 20 x 4 i postępować zgodnie ze schematem.

I ponownie zapoznaj się z poprzednią sekcją dotyczącą podłączenia czujnika wagowego, wzmacniacza czujnika obciążenia i Arduino.

Pobierz następującą bibliotekę dla opartej na I2C:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

Kod obwodu wagi opartej na 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 -------//

UWAGA:

Należy wprowadzić współczynnik kalibracji w kodzie przed przesłaniem któregokolwiek z kodów do Arduino.

float CalibrationFactor = -12000

Uzyskanie współczynnika kalibracji jest wyjaśnione w jednej z poprzednich sekcji powyżej.

Funkcja tary:

Funkcja tary na wadze polega na sprowadzaniu odczytów do zera. Na przykład, jeśli mamy koszyk, w którym ładowane są towary, wówczas waga netto będzie równa ciężarowi koszyka + ciężar towaru.

Jeśli przed załadowaniem towaru wciśniemy przycisk tarowania z koszykiem na tensometrze, waga kosza zostanie pominięta i będziemy mogli zmierzyć wagę samego towaru.

Jeśli masz jakiekolwiek pytania dotyczące tego praktycznego obwodu wagi LCD opartej na Arduino, prosimy o wyrażenie w sekcji komentarzy, aby uzyskać szybką odpowiedź.




Poprzedni: Obwód stycznika półprzewodnikowego do pomp silnikowych Dalej: Jak zrobić transformatory obniżające