Digital vejningsskala ved hjælp af vejecelle og Arduino

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg skal vi lære om belastningscelle baseret på stregmåler. Vi vil undersøge, hvad Strain Gauge er, hvad vejecelle er, temperatureffekt på stregmåler, temperaturkompensation med Wheatstone bridge og vejecelleforstærker HX711, og til sidst lærer vi, hvordan man bygger en Arduino-baseret vejemaskine ved at implementere vejecelle som vægtsensoren.

Dette indlæg beskæftiger sig med vægtmåling og målemetoder og implementering af metoderne i et Arduino-baseret vægtskala.



Vi elsker alle at se vores vægt uanset vores alder, et lille barn kan elske at se sin vægtøgning og voksne kan elske at se hans / hendes vægttab. Vægt er et vigtigt begreb, siden det i oldtiden hjalp med handel med varer, udvikling af videnskabeligt udstyr og kommercielle produkter.

I moderne tid måler vi vægte i kg, milligram endog mikrogram til laboratorieformål. Et gram er ens over hele kloden, alt vægte måleenhed skal måle det samme. Masseproduktionen af ​​en pille med en lille forskel på få milligram dosering er nok til at gøre en livreddende pille til en selvmordspille.



Hvad er vægt?

Vægt er den kraft, der udøves på et plan. Mængden af ​​kraft, der udøves, er direkte proportional med massen af ​​et objekt, hvilket betyder højere objektets masse, jo højere er den kraft, der udøves.

Masse er den mængde fysisk stof, der er til stede i et objekt.

Vægten afhænger af endnu en faktor: Tyngdekraften.

Tyngdekraften er konstant over hele kloden (Der er mindre variation i tyngdekraften på grund af ikke-ensartet sfærisk form på jorden, men den er meget lille). Vægten på 1 kg på jorden vejer 160 gram på månen med nøjagtig samme masse, fordi månen har meget svagere tyngdekraft.

Nu ved du, hvad der er vægt, og hvad er de faktorer, der gør et objekt tungt.

Hvad er stammåler:

Tøjmåleren er en transducer eller en sensor, der måler belastningen (deformation) på en genstand. Dette blev opfundet af elektroingeniør Edward E. Simmons og maskiningeniør Arthur Claude Ruge.

Illustration af Stammåler:

Sensor til stregmåler

Stammåleren er fleksibel, den er et tyndt metalfoliemønster, der er klemt mellem to tynde plastark, og det skal fastgøres på en overflade med passende lim eller et hvilket som helst klæbemateriale.

Når vi anvender vægt eller kraft på overfladen, deformeres den, og spændingsmåleren deformeres også. Deformationen af ​​spændingsmåleren får metalfoliens elektriske modstand til at ændre sig.

Nu ændres belastningsmålerens modstand direkte i forhold til vægten eller den påtrykte kraft på overfladen.

I det virkelige liv er ændringen i modstandsdygtighed over for spændingsmåler meget ubetydelig at opdage. For at opdage små ændringer i modstanden bruger vi Wheatstone bridge.

Lad os undersøge, hvad Wheatstone bridge er i en nøddeskal.

Forståelse af en Wheatstone-bro:

En hvedestenbro er et kredsløb, der kan bruges til at bestemme ukendt modstand. Wheatstone-broen blev udtænkt af Samuel Hunter Christie, senere blev Wheatstone-broen forbedret og formidlet af Sir Charles

Wheatstone.

Illustration af Wheatstone bridge-kredsløb:

Wheatstone bro kredsløb

Vores moderne digitale multimetre kan aflæse modstandsværdien fra mega ohm, kilo ohm og ohm rækkevidde.

Ved hjælp af hvede stenbro kan vi måle modstand i intervallet milli ohm.

Hvedestenbroen består af 4 modstande, ud af de fire er 3 kendt modstand og en er ukendt modstand.

Potentialeforskellen (spænding) påføres punkterne “A” og “C”, og fra punkt “B” og “D” tilsluttes et voltmeter.

Hvis alle modstandene er ens, flyder der ingen strøm ved punkterne “B” og “D”, og voltmeteret vil læse nul. Dette kaldes afbalanceret bro.

Hvis en modstands modstand er forskellig fra andre tre modstande, vil der være spændingsflow mellem punkterne 'B' og 'D', og voltmeteret vil læse en værdi, der er proportional med den ukendte modstand. Dette kaldes ubalanceret bro.

Her er den ukendte modstand spændingsmåleren, når modstanden ændres, reflekteres den på voltmeteret.

Nu har vi konverteret en deformation eller vægt eller kraft til spændingssignal. Denne spænding skal forstærkes for at få nogle nyttige aflæsninger, som tilføres til en mikrocontroller for at få aflæsningerne i gram.

Lad os nu diskutere, hvordan temperaturen påvirker belastningsmålerens ydeevne.

Temperatureffekter på spændingsmåler:

Tøjmåleren er temperaturfølsom, og den kan ødelægge den faktiske vægt / kraftaflæsning. Når der er en ændring i omgivelsestemperatur, udsættes metalfolien for metaludvidelse, hvilket direkte påvirker modstanden.

Vi kan ophæve temperatureffekten ved hjælp af Wheatstone bridge. Lad os se, hvordan vi kan kompensere temperaturen ved hjælp af Wheatstone-broen.

Temperaturkompensation:

Vi kan let neutralisere temperatureffekten ved at udskifte alle modstande med stregmåler. Nu vil al belastningsmålerens modstand blive påvirket af temperaturen lige meget, og uønsket støj vil blive ophævet af Wheatstone-broens karakter.

Hvad er en vejecelle?

En vejecelle er en aluminiumsprofil med spændingsmåler fastgjort til 4 sider i Wheatstone-brokonfiguration.

Illustration af vejecelle:

Indlæs celleenhed

Denne type vejecelle er stiv og bruges ofte i industrier. Der er 4 skruemonteringer, den ene side er boltet til en stationær overflade, og den anden ende er boltet til en holder (f.eks. Kurv) for at holde objektet, der skal måles.

Den har den maksimale vægt, der er angivet på databladet eller på dets krop, hvis overskridelse af specifikationen kan beskadige vejecellen.

En fuld brocelle består af 4 terminaler, nemlig E +, E-, som er excitationsledninger, gennem hvilke forsyningsspændingen påføres. De to andre ledninger er S + og S-, som er signaltråde, hvorfra spændingen måles.

Nu er disse spændinger i millivoltområdet ikke stærke nok til, at en mikrocontroller kan læse og behandle. Vi har brug for forstærkning, og små ændringer skal være synlige for mikrokontrolleren. For at gøre dette er der dedikerede moduler kaldet vejecelleforstærkere, lad os tage et overblik over det.

Vejecelleforstærker HX711:

Illustration af HX711 Load cell forstærker modul:

Vejecelleforstærker HX711

Vejecelleforstærkeren er baseret på IC HX711, som er 24-bit analog til digital konverter specielt designet til vægtmål. Det har forskellige valgbare gevinster 32, 64 og 128, og det fungerer på 2,6 til 5,5 V.
Dette breakout board hjælper med at opdage lille variation på vejecellen. Dette modul kræver HX711.h-bibliotek til at fungere med

Arduino eller andre mikrokontrollere.

Vejecellen tilsluttes HX711-modulet, og modulet forbindes med Arduino. Vægtmålekredsløbet skal udvikles på denne måde.

Afslutningsvis ved du nu, hvad belastningsmåler er, hvad Wheatstone-bro er, temperatureffekter på belastningsmåler, temperaturkompensation, og hvad vejecelleforstærker er.

Vi har grundigt forstået den teoretiske del af et vægtskala design fra ovenstående diskussion, lad os nu se, hvordan en loacelle kan bruges til at fremstille en pratisk vægtskala maskine ved hjælp af Arduino

Design af en digital vægte med maskine ved hjælp af Arduino

I de følgende diskussioner lærer vi, hvordan man konstruerer en digital vægtskala maskine ved hjælp af Arduino, der kan måle vægte fra få gram til 40 kg (afhængigt af specifikationerne for din vejecelle) med rimelig nøjagtighed. Vi lærer om klassificering af præcisionsklasse-vejeceller, og vi kalibrerer det foreslåede kredsløb og færdiggør vægtskalaen.

Bemærk: Dette kredsløb er muligvis ikke i overensstemmelse med de standarder, der kræves til kommerciel implementering.

Vægt skala maskiner anvendes i forskellige varianter af brancher og forskning spænder fra milligram til flere tons. Den foreslåede vægtskala maskines maksimale skala afhænger af din vejecells specifikation. Der er intervaller fra 500 gram, 1 kg, 5 kg, 10 kg, 20 kg og 40 kg osv.

Der er forskellige belastningsceller, de tilbyder forskellige nøjagtighedsområder, og du skal vælge den passende til dit projekt.

Klassificering af belastningscellepræcisionsklasse:

De forskellige nøjagtighedsklasser er defineret til forskellige typer applikationer. Nedenstående klassifikation er fra laveste nøjagtighed til højeste nøjagtighedsområde.

Vejecellerne med lavere nøjagtighed (men med rimelighed nøjagtige) er klassificeret som D1, C1 og C2. Dette er nok til dette projekt. Disse vejeceller bruges til at måle vægten af ​​sand, cement eller vand.

C3 klasse vejecelle bruges til kvalitetssikring såsom kontrol af kuglelejers vægt, maskinkonstruktionsdele osv.

C4, C5, C6 er de bedste i klassens nøjagtighed, disse kvaliteter af vejeceller bruges til at måle i gram til mikrogram. Disse klasseklasser bruges i butiksskalaer, storskala produktionsovervågning, madpakning og laboratoriebrug mv.

Lad os nu dykke ned i tekniske detaljer om projektet.

Kredsløbsdiagram:

Indlæs celleforbindelse HX711 til Arduino og indlæs celle.

Indlæs celleforbindelse HX711 til Arduino og indlæs celle.

Projektet består af Arduino, vejecelle og HX711 vejecelleforstærkerkort og en computer. Outputtet kan overvåges på den serielle skærm på Arduino IDE.

Projektets hjerne er som altid arduino, du kan bruge enhver Arduino-kortmodel. HX711 er 24 bit ADC, som kan finde mindste flex på grund af vægt på vejecellen. Den kan fungere fra 2,7 V til 5 V. Strømmen leveres fra Arduino-kortet.

Vejecellen har generelt fire ledninger, hvilket er output fra den Wheatstone-brokonfigurerede spændingsmåler.

Den røde ledning er E +, den sorte ledning er E-, den grønne ledning er A- og den hvide ledning er A +. Nogle HX711-moduler angiver navnet på terminalerne på vejecellen, og nogle HX711-moduler angiver ledningernes farver. En sådan model er illustreret i kredsløbsdiagrammet.

DATA-stiften på HX711 er tilsluttet pin nr. 3 i Arduino, og urstiften på HX711 er forbundet til pin nr. 2 i Arduino.

Sådan monteres vejecellen:

hvordan man installerer en vejecelle med Arduino

Vejecellen har fire skruehuller, to på begge sider. En hvilken som helst side skal være stationær for at opnå den bedste nøjagtighed, den kan blive hævet til et træ med rimelig vægt.

Et tyndt træ eller en tynd plade kan bruges til at holde målevægten som illustreret ovenfor.

Så når du lægger en vægt, bøjes vejecellen det også, gør spændingsmåleren og ændrer dens modstand, som måles med HX711-modulet og føres til Arduino.

Når hardwareopsætningen er afsluttet, lad os uploade koden og kalibrere.

Kalibrering af kredsløbet:

Der er to programmer, det ene er kalibreringsprogrammet (finde kalibreringsfaktoren). En anden kode er vægtmålingsprogram. Kalibreringsfaktoren, der findes fra kalibreringsprogrammets kode, skal indtastes i vægtmålingsprogrammet.

Kalibreringsfaktoren bestemmer nøjagtigheden af ​​vægtmålingen.

Download HX711-biblioteket her: github.com/bogde/HX711

Kalibreringer Programkode:

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

Sådan kalibreres:

  • Upload den ovenstående kode med afsluttet hardwareopsætning.
  • Fjern den tynde plade eller det træ, der bruges til at holde vægten inklusive de to skruer (anden side af vejecellen skal fastgøres til en base)
  • Åbn den serielle skærm.
  • Anbring en kendt vægt på vejecellen direkte, 100 gram (siger).
  • Trykke Q, W, E, R for at øge kalibreringsfaktoren med henholdsvis 10.100.1000.10000.
  • Trykke A, S, D, F for at nedsætte kalibreringsfaktoren med henholdsvis 10.100.1000.10000.
  • Tryk på 'Enter' efter hver forøgelse eller reduktion af kalibreringsfaktoren.
  • Forøg eller formindsk kalibreringsfaktoren, indtil den korrekte vægt af kendt vægtmateriale vises.
  • Tara-funktionen er at indstille vægtskalaen til nul, dette er nyttigt, når du vil måle vægten af ​​vand (f.eks.) Uden vægten af ​​skålen. Anbring skålen først, tryk på tara og hæld vandet.
  • Bemærk kalibreringsfaktoren, og skriv den ned, når den kendte vægt vises.

Nu kan den måle ukendte vægte.

Vægtmålingsprogramkode:

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

Udskift -12000 med den kalibreringsfaktor, du fandt. Det kan være et negativt eller et positivt tal.

Upload ovenstående kode med din fulde hardwareopsætning, og din vægtskala maskine er klar.

Vægtskala maskine ved hjælp af LCD-skærm

Ovenstående artikel forklarede et Arduino-baseret vægtsystem ved hjælp af din pc, i det følgende afsnit vil vi forsøge at opbygge en praktisk version af vægtskalaen ved at tilføje 16 x 2 LCD-skærm, så vi ikke er afhængige af en pc, mens vi måler vægte. I dette indlæg foreslås to versioner, en med “I2C” 16 x 2 LCD og en uden “I2C” 16 x 2 LCD-skærm.

Her gives to valg, så læserne kan vælge designet efter deres bekvemme. Hovedforskellen mellem de to er ledningsforbindelser med I2C-adaptermodul, kun 4 ledninger (Vcc, GND, SCL og SDA) er nødvendige for at fungere på LCD-skærmen, mens du uden I2C-adapter har brug for flere ledninger for at forbinde mellem Arduino og LCD-skærmen.

Imidlertid fungerer begge funktioner nøjagtigt de samme, nogle foretrækker I2C frem for konventionelle, og nogle foretrækker omvendt, så her er begge design.

Lad os se på det konventionelle LCD-design:

Kredsløbsdiagram:

arduino, 16 x 2 LCD display og 10K potentiometer til justering af LCD display kontrast

I ovenstående skema har vi arduino, 16 x 2 LCD-skærm og 10K potentiometer til justering af LCD-skærmkontrast.

3,3 V kan tilføres fra Arduino til LCD-skærm til baggrundsbelysning. Der er tilvejebragt en trykknap for at bringe vægttællingen til nul, denne funktion forklares detaljeret i slutningen.

Dette er bare forbindelse mellem LCD og Arduino, forbindelsen mellem vejecelle og vejecelleforstærker til Arduino er vist i det foregående afsnit.

Kode til LCD vægtskala maskine:

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

Lad os nu se, hvordan du bruger denne vægtskala med I2C-adapterbaseret LCD-skærm.

Kredsløbsdiagram Arduino og LCD-skærm med I2C-adapter:

Arduino og LCD display med I2C adapter

Her har vi bare en Arduino og LCD-skærm med I2C-adapter på bagsiden. Nu er ledningstilslutningerne forenklet og ligetil.

Illustration af I2C-modul:

I2C-modul

Dette modul kan loddes direkte på bagsiden af ​​et normalt 16 x 2 eller endda 20 x 4 LCD-display og følg skematisk diagram.

Og igen henvises til det foregående afsnit for tilslutning af vejecelle, vejecelleforstærker og Arduino.

Download følgende bibliotek til I2C-baseret:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

Kode for I2C-baseret vægtskala:

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

BEMÆRK:

Du skal indtaste kalibreringsfaktoren i koden, før du uploader en af ​​koden til Arduino.

float CalibrationFactor = -12000

Opnåelse af kalibreringsfaktor forklares i det foregående afsnit ovenfor.

Tarafunktion:

Tara-funktion i en vægtskala er at bringe målingerne til nul. For eksempel hvis vi har en kurv, hvor varerne læsses, vil nettovægten være vægten af ​​kurven + varens vægt.

Hvis vi trykker på taraknappen med kurv på vejecellen inden lastning af varer, bliver kurvens vægt forsømt, og vi kan måle varens vægt alene.

Hvis du har spørgsmål angående dette Arduino-baserede praktiske LCD-vægte-maskinkredsløb, bedes du udtrykke i kommentarsektionen, du kan få et hurtigt svar.




Forrige: Solid State-kontaktorkredsløb til motorpumper Næste: Hvordan man laver Step Down Transformers