Digital vägningsskala med hjälp av lastcell och Arduino

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget kommer vi att lära oss om belastningscellbaserad belastningscell. Vi kommer att utforska vad Strain Gauge är, vad Load Cell är, temperatureffekt på töjningsmätare, temperaturkompensation med Wheatstone bridge och Load cell förstärkare HX711, och slutligen kommer vi att lära oss hur man bygger en Arduino-baserad vägningsmaskin genom att implementera lastcell viktsensorn.

Det här inlägget handlar om viktmätning och mätmetoder och implementering av metoderna i en Arduino-baserad vägningsskala.



Vi älskar alla att se vår vikt oavsett ålder, ett litet barn kanske älskar att se sin viktökning och vuxna kanske älskar att se hans / hennes viktminskning. Vikt är ett viktigt begrepp sedan urminnes tider hjälpte det till handel med varor, utveckling av vetenskaplig utrustning och kommersiella produkter.

I modern tid mäter vi vikter i kg, milligram till och med mikrogram för laboratorieändamål. Ett gram är detsamma över hela världen, alla viktmätare måste mäta samma. Massproduktionen av ett piller med liten skillnad på några milligram dos är tillräckligt för att göra ett livräddande piller till ett självmordspiller.



Vad är vikt?

Vikt är den kraft som utövas på ett plan. Mängden kraft som utövas är direkt proportionell mot massan av ett objekt, vilket betyder att högre objektets massa, desto högre kraft utövas.

Massa är mängden fysisk materia som finns i ett objekt.

Vikten beror på ytterligare en faktor: Gravitation.

Gravitationen är konstant över hela världen (Det finns mindre variation i gravitationen på grund av icke-enhetlig sfärisk form på jorden, men den är väldigt liten). Vikten av 1 kg på jorden kommer att väga 160 gram på månen med exakt samma massa, eftersom månen har mycket svagare gravitation.

Nu vet du vad som är vikt och vilka faktorer som gör ett föremål tungt.

Vad är stammätare:

Töjningsmätaren är en omvandlare eller en sensor som mäter töjningen (deformation) på ett föremål. Detta uppfanns av elektroingenjören Edward E. Simmons och maskiningenjören Arthur Claude Ruge.

Illustration av stammätare:

Sensor för töjningsmätare

Töjningsmätaren är flexibel, den är ett tunt metallfoliemönster klämt mellan två tunna plastark och måste fästas på en yta med lämpligt lim eller något självhäftande material.

När vi applicerar vikt eller kraft på ytan deformeras den och töjningsmätaren deformeras också. Deformationen av töjningsmätaren gör att metallfoliens elektriska motstånd förändras.

Nu är spänningsmätarens förändring i motstånd direkt proportionell mot vikt eller applicerad kraft på ytan.

I verkligheten är förändringen i motstånd hos töjningsmått mycket obetydlig att upptäcka. För att upptäcka små förändringar i motståndet använder vi Wheatstone bridge.

Låt oss utforska vad Wheatstone bridge är i ett nötskal.

Förstå en Wheatstone-bro:

En vetestensbro är en krets som kan användas för att bestämma okänt motstånd. Wheatstone-bron utformades av Samuel Hunter Christie, senare förbättrades och spriddes Wheatstone-bron av Sir Charles

Wheatstone.

Illustration av Wheatstone Bridge Circuit:

Wheatstone bridge-krets

Våra moderna digitala multimetrar kan läsa motståndsvärdet från mega ohm, kilo ohm och ohm intervall.

Med hjälp av Wheat stone bridge kan vi mäta motstånd i intervallet milli ohm.

Vetestenbroen består av fyra motstånd, av de fyra är 3 kända motstånd och ett är okänt motstånd.

Potentialskillnaden (spänning) appliceras på punkterna 'A' och 'C' och från punkterna 'B' och 'D' är en voltmeter ansluten.

Om alla motstånden är lika kommer ingen ström att strömma vid punkterna “B” och “D” och voltmätaren läser noll. Detta kallas balanserad bro.

Om ett motstånds motstånd skiljer sig från andra tre motstånd kommer det att finnas spänningsflöde mellan punkterna 'B' och 'D' och voltmätaren kommer att läsa av något värde som är proportionellt mot okänt motstånd. Detta kallas obalanserad bro.

Här är det okända motståndet töjningsmätaren, när motståndet ändras reflekteras det på voltmätaren.

Nu har vi konverterat en deformation eller vikt eller kraft till spänningssignal. Denna spänning måste förstärkas för att få några användbara avläsningar, som matas till en mikrokontroller för att få avläsningarna i gram.

Låt oss nu diskutera hur temperaturen påverkar töjningsmätarens prestanda.

Temperatureffekter på töjningsmätare:

Töjningsmätaren är temperaturkänslig och kan klara sig med den faktiska vikt / kraftavläsningen. När det sker en förändring av omgivningstemperaturen utsätts metallfolien för metallutvidgning, vilket direkt påverkar motståndet.

Vi kan upphäva temperatureffekten med hjälp av Wheatstone bridge. Låt oss se hur vi kan kompensera temperaturen med hjälp av Wheatstone-bron.

Temperaturkompensation:

Vi kan enkelt neutralisera temperatureffekten genom att ersätta alla motstånd med töjningsmätare. Nu kommer all belastningsmätares motstånd att påverkas av temperaturen lika och oönskat buller kommer att upphävas av Wheatstone-broens karaktär.

Vad är en lastcell?

En lastcell är en aluminiumprofil med spännvidd fäst på fyra sidor i Wheatstone-bryggkonfiguration.

Illustration av lastcell:

Ladda cellenhet

Denna typ av lastcell är stel och används ofta i industrier. Det finns fyra skruvfästen, ena sidan är bultad till en stationär yta och den andra änden är bultad i en hållare (säg korg) för att hålla föremålet som ska mätas.

Den har den maximala vikt som anges i databladet eller på dess kropp, som överskrider specifikationen kan skada lastcellen.

Hela bryggceller består av fyra terminaler, nämligen E +, E-, vilka är excitationsledningar genom vilka matningsspänningen appliceras. De andra två ledningarna är S + och S-, som är signaltrådar, från vilka spänningen mäts.

Nu är dessa spänningar i millivoltområdet inte tillräckligt starka för att en mikrokontroller ska kunna läsa och bearbeta. Vi behöver förstärkning och små förändringar ska vara synliga för mikrokontrollern. För att göra detta finns dedikerade moduler som kallas lastcellförstärkare, låt oss ta en översikt över det.

Lastcellsförstärkare HX711:

Illustration av HX711 förstärkarmodul för lastceller:

Lastcellsförstärkare HX711

Lastcellförstärkaren är baserad på IC HX711 som är 24-bitars analog / digital-omvandlare speciellt utformad för viktmått. Den har olika valbara vinster 32, 64 och 128 och fungerar på 2,6 till 5,5 V.
Detta brytbräda hjälper till att upptäcka liten variation på lastceller. Denna modul kräver HX711.h-bibliotek för att fungera med

Arduino eller andra mikrokontroller.

Lastcellen kommer att anslutas till HX711-modulen och modulen kommer att anslutas till Arduino. Viktmätningskretsen måste utvecklas på detta sätt.

Sammanfattningsvis, nu vet du vad töjningsmätare är, vad Wheatstone bridge är, temperatureffekter på töjningsmätare, temperaturkompensation och vad belastningscellförstärkare är.

Vi har helt förstått den teoretiska delen av en vägningsskaledesign från ovanstående diskussion, låt oss nu se hur en loacell kan användas för att göra en pratisk vägningsskala med Arduino

Designa en digital vägningsvågsmaskin med Arduino

I följande diskussioner lär vi oss hur man konstruerar en digital viktmaskin med Arduino som kan mäta vikter från några gram till 40 kg (beroende på specifikationerna för din lastcell) med rimlig noggrannhet. Vi kommer att lära oss om klassificering av precisionsbelastningsceller och vi kommer att kalibrera den föreslagna kretsen och slutföra viktsmaskinen.

Obs! Den här kretsen kanske inte överensstämmer med de standarder som krävs för kommersiell implementering.

Viktmaskiner används i olika varianter av handel och forskning som sträcker sig från milligram till flera ton. Den föreslagna maskinens maximala skala beror på din lastcells specifikation. Det finns intervall från 500 gram, 1 kg, 5 kg, 10 kg, 20 kg och 40 kg etc.

Det finns olika grader av lastceller, de erbjuder olika noggrannhetsintervall och du bör välja lämplig för ditt projekt.

Klassificering av lastcellens noggrannhetsklass:

De olika noggrannhetsklasserna definieras för olika typer av applikationer. Nedanstående klassificering är från lägsta noggrannhet till högsta noggrannhetsområde.

Lastcellerna med lägre noggrannhet (men rimligt noggranna) klassificeras som D1, C1 och C2. Detta räcker för detta projekt. Dessa lastceller används för att mäta vikten av sand, cement eller vatten.

C3-klassad lastcell används för kvalitetssäkring som att kontrollera vikten på kullager, maskinkonstruktionsdelar etc.

C4, C5, C6 är de bästa i klassens noggrannhet, dessa grader av belastningsceller används för att mäta i gram till mikrogram. Dessa klassklasser används i butiksdiskar, storskalig produktionsövervakning, livsmedelsförpackning och laboratoriebruk etc.

Låt oss nu dyka in i tekniska detaljer i projektet.

Kretsschema:

Ladda cellanslutning HX711 till Arduino och ladda cell.

Ladda cellanslutning HX711 till Arduino och ladda cell.

Projektet består av Arduino, Load cell och HX711 lastcellsförstärkarkort och en dator. Utgången kan övervakas på den seriella bildskärmen på Arduino IDE.

Hjärnan i projektet är som alltid arduino, du kan använda vilken Arduino-kortmodell som helst. HX711 är 24 bitars ADC, vilket kan hitta minsta flex på grund av vikt på lastcellen. Den kan fungera från 2,7 V till 5 V. Strömmen tillhandahålls från Arduino-kortet.

Lastcellen har generellt fyra ledningar, vilket är utgången från den Wheatstone-bryggkonfigurerade töjningsmätaren.

Den röda ledningen är E +, den svarta ledningen är E-, den gröna ledningen är A- och den vita ledningen är A +. Vissa HX711-moduler anger namnet på belastningscellens terminaler och vissa HX711-moduler anger trådarnas färger, en sådan modell illustreras i kretsschemat.

DATA-stiftet på HX711 är anslutet till stift nr 3 i Arduino och klockstiften på HX711 är anslutet till stift nr 2 i Arduino.

Hur man monterar lastcellen:

hur man installerar en lastcell med Arduino

Lastcellen har fyra skruvhål, två på båda sidor. Vilken sida som helst måste vara stillastående för bästa noggrannhet, den kan höjas till ett trä med rimlig vikt.

Ett tunt trä eller en tunn platta kan användas för att hålla mätvikten som illustreras ovan.

Så när du lägger en vikt, böjer lastcellen det också spänningsmätaren och ändrar dess motstånd som mäts av HX711-modulen och matas till Arduino.

När hårdvarukonfigurationen är klar, låt oss ladda upp koden och kalibrera.

Kalibrera kretsen:

Det finns två program, det ena är kalibreringsprogrammet (hitta kalibreringsfaktorn). En annan kod är viktmätningsprogram, kalibreringsfaktorn som hittas från kalibreringsprogrammets kod måste anges i viktmätningsprogrammet.

Kalibreringsfaktorn bestämmer noggrannheten för viktmätningen.

Ladda ner HX711-biblioteket här: github.com/bogde/HX711

Kalibreringar Programkod:

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

Hur man kalibrerar:

  • Med slutförd hårdvarukonfiguration ladda upp koden ovan.
  • Ta bort den tunna plattan eller träet som används för att hålla vikten inklusive de två skruvarna (den andra sidan av lastcellen ska fästas på en bas)
  • Öppna den seriella bildskärmen.
  • Placera en känd vikt direkt på lastcellen, 100 gram (säg).
  • Tryck Q, W, E, R för att öka kalibreringsfaktorn med 10 100 000 100 000 respektive.
  • Tryck A, S, D, F för att minska kalibreringsfaktorn med 10 100 000 100 000 respektive.
  • Tryck på “Enter” efter varje ökning eller minskning av kalibreringsfaktorn.
  • Öka eller minska kalibreringsfaktorn tills korrekt vikt av känt viktmaterial visas.
  • Tara-funktionen är att ställa in viktskalan till noll, det här är användbart när du vill mäta vikten på vatten (säg) utan skålens vikt. Placera skålen först, tryck på tara och häll vattnet.
  • Notera kalibreringsfaktorn och skriv ner den efter att känd vikt visas.

Nu kan den mäta okända vikter.

Viktmätningsprogramkod:

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

Byt ut -12000 med den kalibreringsfaktor som du hittade. Det kan vara ett negativt eller ett positivt tal.

Ladda upp koden ovan med din fullständiga hårdvarukonfiguration och din viktmaskin är redo.

Viktvågsmaskin med LCD-skärm

Ovanstående artikel förklarade ett Arduino-baserat vågsystem med din dator, i följande avsnitt kommer vi att försöka bygga en praktisk version av tyngdmaskin genom att lägga till 16 x 2 LCD-skärm, så att vi inte är beroende av en dator när vi mäter vikter. I det här inlägget föreslås två versioner, en med “I2C” 16 x 2 LCD och en utan “I2C” 16 x 2 LCD-skärm.

Här ges två val så att läsarna kan välja design enligt deras lämpliga. Huvudskillnaden mellan de två är trådanslutningar med I2C-adaptermodul, bara 4 kablar (Vcc, GND, SCL och SDA) krävs för att LCD-skärmen ska fungera, medan utan I2C-adapter behöver du flera ledningar för att ansluta mellan Arduino och LCD-skärmen.

Båda funktionerna är dock exakt samma, vissa föredrar I2C framför konventionell och andra föredrar vice versa, så här är båda designerna.

Låt oss titta på den konventionella LCD-designen:

Kretsschema:

arduino, 16 x 2 LCD-display och 10K potentiometer för justering av LCD-displayens kontrast

I schemat ovan har vi arduino, 16 x 2 LCD-skärm och 10K potentiometer för justering av LCD-skärmkontrast.

3,3 V kan matas från Arduino till LCD-skärm för bakgrundsbelysning. En tryckknapp tillhandahålls för att nollställa viktavläsningen, denna funktion kommer att förklaras i detalj i slutet.

Detta är bara anslutning mellan LCD och Arduino, anslutningen mellan lastcell och lastcellsförstärkare till Arduino visas i föregående avsnitt.

Kod för LCD viktmaskin:

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

Låt oss nu se hur man använder denna viktmaskin med I2C-adapterbaserad LCD-skärm.

Kretsschema Arduino och LCD-skärm med I2C-adapter:

Arduino och LCD-skärm med I2C-adapter

Här har vi bara en Arduino- och LCD-skärm med I2C-adapter på baksidan. Nu är trådanslutningarna förenklade och rakt framåt.

Illustration av I2C-modulen:

I2C-modul

Denna modul kan lödas direkt på baksidan av en vanlig 16 x 2 eller till och med 20 x 4 LCD-skärm och följa schemat.

Och igen hänvisa till föregående avsnitt för anslutning av lastcell, lastcellsförstärkare och Arduino.

Ladda ner följande bibliotek för I2C-baserat:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

Kod för I2C-baserad viktskala:

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

NOTERA:

Du bör ange kalibreringsfaktorn i koden innan du laddar upp någon av koden till Arduino.

float CalibrationFactor = -12000

Att erhålla kalibreringsfaktor förklaras i föregående avsnitt ovan.

Tara-funktion:

Tara-funktionen i en viktskala är att sätta avläsningarna till noll. Till exempel om vi har en korg där varorna lastas, kommer nettovikten att vara vikten på korgen + vikten på varorna.

Om vi ​​trycker på taraknappen med korg på lastcellen innan vi laddar varor kommer vikten på korgen att försummas och vi kan bara mäta varans vikt.

Om du har några frågor angående denna Arduino-baserade praktiska LCD-vågmaskinkrets, vänligen uttryck i kommentarsektionen så kan du få ett snabbt svar.




Tidigare: Halvledarkontaktorkrets för motorpumpar Nästa: Hur man gör Step Down Transformers