Digitaalinen punnitusasteikko punnituskennon ja Arduinon avulla

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä viestissä aiomme oppia venymäliuskiin perustuvasta kuormituskennosta. Tutkimme mikä on venymäliuska, mikä on kuormituskenno, lämpötilavaikutus venymäliuskaan, lämpötilan kompensointi Wheatstone-sillan ja kuormituskennovahvistimen HX711 avulla ja lopuksi opimme rakentamaan Arduino-pohjaisen vaakakoneen toteuttamalla kuormasolu painoanturi.

Tämä viesti käsittelee painonmittausta ja mittausmenetelmiä sekä menetelmien toteuttamista Arduino-pohjaisessa punnituspiirissä.



Me kaikki rakastamme nähdä painomme iästä riippumatta, pieni lapsi voi rakastaa nähdä painonnousunsa ja aikuiset rakastavat nähdä hänen painonlaskunsa. Paino on ollut tärkeä käsite muinaisista ajoista lähtien. Se on auttanut tavaroiden kaupassa, tieteellisten laitteiden ja kaupallisten tuotteiden kehittämisessä.

Nykyaikana mitataan painot kilogrammoina, milligrammoina jopa mikrogrammoina laboratoriotarkoituksiin. Yksi gramma on sama ympäri maailmaa, kaikkien painomittareiden on mitattava sama. Pillerituotteiden massatuotanto, jossa on pieni muutaman milligramman annosero, riittää tekemään hengenpelastava pilleri itsemurhapillereiksi.



Mikä on paino?

Paino on tasolle kohdistettu voima. Käytetyn voiman määrä on suoraan verrannollinen kohteen massaan, mikä tarkoittaa sitä, että suurempi kohteen massa on, sitä suurempi voima kohdistuu.

Massa on esineessä olevan fyysisen aineen määrä.

Paino riippuu vielä yhdestä tekijästä: Painovoimasta.

Painovoima on vakio ympäri maapalloa (Painovoimassa on pieniä vaihteluja maan epätasaisen pallomaisen muodon vuoksi, mutta se on hyvin pieni). 1 kg: n paino maan päällä painaa 160 grammaa kuussa täsmälleen samalla massalla, koska kuulla on paljon heikompi painovoima.

Nyt tiedät mikä on paino ja mitkä tekijät tekevät esineestä painavan.

Mikä on venymäliuska:

Venymäliuska on anturi tai anturi, joka mittaa kohteen venymistä (muodonmuutosta). Tämän keksivät sähköinsinööri Edward E.Simmons ja mekaanikkoinsinööri Arthur Claude Ruge.

Kuva venymäliusasta:

Venymäliuska-anturi

Venymäliuska on joustava, se on ohut metallikalvomalli, joka on sijoitettu kahden ohuen muovilevyn väliin, ja se on kiinnitettävä pinnalle sopivalla liimalla tai millä tahansa liimamateriaalilla.

Kun kohdistamme painoa tai voimaa pintaan, se taipuu ja venymäliuska myös. Venymäliuskan muodonmuutos aiheuttaa metallikalvon sähköisen vastuksen muutoksen.

Nyt venymän mittarin muutos vastuksessa on suoraan verrannollinen painoon tai pintaan kohdistettuun voimaan.

Tosielämässä venymäliuskan resistanssin muutos on hyvin merkityksetön havaita. Pienien muutosten havaitsemiseksi resistanssissa käytämme Wheatstonen siltaa.

Tutkitaan, mikä Wheatstonen silta on pähkinänkuoressa.

Ymmärtäminen Wheatstonen silta:

Vehnäkivisilta on piiri, jota voidaan käyttää tuntemattoman vastuksen määrittämiseen. Wheatstonen sillan suunnitteli Samuel Hunter Christie, myöhemmin Wheatstonen siltaa parannettiin ja levitti Sir Charles

Wheatstone.

Kuva Wheatstonen sillan piiristä:

Wheatstonen silta

Moderneilla digitaalisilla yleismittareillamme voidaan lukea vastusarvo megaohmoista, kiloohmeista ja ohmialueista.

Vehnäkivisillalla voimme mitata vastuksen millio-ohmialueella.

Vehnäkivisilta koostuu 4 vastuksesta, neljästä tunnetaan 3 vastusta ja yksi tuntematon vastus.

Potentiaaliero (jännite) kohdistetaan pisteisiin 'A' ja 'C' ja pisteistä 'B' ja 'D' on kytketty volttimittari.

Jos kaikki vastukset ovat yhtä suuret, virtaa ei virtaa pisteissä “B” ja “D” ja volttimittari lukee nollan. Tätä kutsutaan tasapainotetuksi sillaksi.

Jos vastuksen vastus eroaa muista kolmesta vastuksesta, pisteiden 'B' ja 'D' välillä on jännitevirta ja volttimittari lukee jonkin verran arvoa, joka on verrannollinen tuntemattomaan vastukseen. Tätä kutsutaan epätasapainoksi sillaksi.

Tässä tuntematon vastus on venymämittari, kun vastusta muutetaan, se heijastuu voltimittariin.

Nyt olemme muuttaneet muodonmuutoksen, painon tai voiman jännitesignaaliksi. Tätä jännitettä on vahvistettava, jotta saadaan hyödyllisiä lukemia, jotka syötetään mikro-ohjaimelle lukemien saamiseksi grammoina.

Keskustellaan nyt siitä, kuinka lämpötila vaikuttaa venymän mittarin suorituskykyyn.

Lämpötilavaikutukset venymäliuskaan:

Venymäliuska on lämpötilaherkkä ja se voi sekoittaa todellisen painon / voiman lukemat. Kun ympäristön lämpötila muuttuu, metallikalvolle tapahtuu metallin laajeneminen, mikä vaikuttaa suoraan vastukseen.

Voimme mitätöidä lämpötilavaikutuksen käyttämällä Wheatstone-siltaa. Katsotaanpa, kuinka voimme kompensoida lämpötilan Wheatstone-sillan avulla.

Lämpötilakorvaus:

Voimme helposti neutraloida lämpötilavaikutuksen korvaamalla kaikki vastukset venymäliuskalla. Lämpötila vaikuttaa nyt kaikkiin venymäliuskan kestävyyteen, ja Wheatstone-sillan luonne mitätöi ei-toivotun melun.

Mikä on punnituskenno?

Punnituskenno on alumiiniprofiili, jossa venymämittari on kiinnitetty 4 sivulle Wheatstonen sillan kokoonpanossa.

Kuva punnituskennosta:

Lataa kennolaite

Tämän tyyppinen punnituskenno on jäykkä ja sitä käytetään yleisesti teollisuudessa. Ruuvikiinnikkeitä on 4, toinen puoli ruuvataan paikallaan olevaan pintaan ja toinen pää kiinnitetään pidikkeeseen (esimerkiksi koriin) mitattavan kohteen pitämiseksi.

Sen enimmäispaino on ilmoitettu tuotetietolomakkeessa tai sen rungossa, teknisten tietojen ylittäminen saattaa vahingoittaa punnituskennoa.

Täyssiltakennot koostuvat 4 liittimestä, nimittäin E +, E-, jotka ovat viritysjohtoja, joiden kautta syötetään syöttöjännite. Kaksi muuta johtoa ovat S + ja S-, jotka ovat signaalijohtoja, joista jännite mitataan.

Nyt nämä jännitteet ovat millivoltialueella, eivät ole riittävän vahvoja mikro-ohjaimen lukemiseen ja prosessointiin. Tarvitsemme vahvistuksen, ja pienien muutosten tulisi näkyä mikro-ohjaimelle. Tätä varten on olemassa erillinen moduuli, jota kutsutaan kuormakennovahvistimiksi, katsotaanpa siitä yleiskatsaus.

Punnituskennovahvistin HX711:

Kuva HX711-punnituskennovahvistimesta:

Punnituskennovahvistin HX711

Punnituskennovahvistin perustuu IC HX711: een, joka on 24-bittinen analogia-digitaalimuunnin, joka on erityisesti suunniteltu painomittauksiin. Sillä on erilaiset valittavat vahvistukset 32, 64 ja 128, ja se toimii 2,6 - 5,5 V.
Tämä aloituslevy auttaa havaitsemaan pienet vaihtelut punnituskennossa. Tämä moduuli vaatii HX711.h-kirjaston toimiakseen

Arduino tai mikä tahansa muu mikro-ohjain.

Punnituskenno kytketään HX711-moduuliin ja moduuli liitetään Arduinoon. Painonmittauspiiri on kehitettävä tällä tavalla.

Yhteenvetona voidaan todeta, että nyt tiedät mikä on venymäliuska, mikä on Wheatstonen silta, lämpötilavaikutukset venymäliuskaan, lämpötilakompensointi ja mikä kuormituskennovahvistin on.

Olemme ymmärtäneet kattavasti punnitusasteikon teoreettisen osan edellisestä keskustelusta, nyt katsotaan miten loas-solua voidaan käyttää käytännön vaakakoneen valmistamiseen Arduinolla

Digitaalisen vaakakoneen suunnittelu Arduinolla

Seuraavissa keskusteluissa opimme rakentamaan digitaalisen painovaakakoneen Arduinolla, joka pystyy mittaamaan painot muutamasta grammasta 40 kg: iin (punnituskennon ominaisuuksista riippuen) kohtuullisella tarkkuudella. Opimme tarkkuusluokan punnituskennojen luokittelusta ja kalibroimme ehdotetun piirin ja viimeistelemme punnituslaitteen.

Huomaa: Tämä piiri ei välttämättä ole kaupallisen toteutuksen edellyttämien standardien mukainen.

Painoasteikon koneita käytetään erilaisissa kaupoissa ja tutkimuksissa aina milligrammoista useisiin tonneihin. Ehdotetun painovaakakoneen suurin asteikko riippuu punnituskennon määrityksistä. Vaihteluväli on 500 grammaa, 1 kg, 5 kg, 10 kg, 20 kg ja 40 kg jne.

Punnituskennoja on erilaisia, ne tarjoavat erilaisen tarkkuusalueen ja sinun tulisi valita sopiva projektiisi.

Punnituskennon tarkkuusluokan luokitus:

Eri tarkkuusluokat on määritelty erityyppisille sovelluksille. Alla oleva luokitus on alhaisimmasta tarkkuudesta korkeimpaan tarkkuusalueeseen.

Pienemmällä tarkkuudella (mutta kohtuullisen tarkkuudella) olevat punnituskennot luokitellaan luokkiin D1, C1 ja C2. Tämä riittää tähän projektiin. Näitä punnituskennoja käytetään hiekan, sementin tai veden painon mittaamiseen.

C3-luokan punnituskennoja käytetään laadunvarmistuksessa, kuten kuulalaakereiden, koneenrakenteiden osien jne. Painon tarkistamisessa.

C4, C5, C6 ovat luokkansa parhaita, näitä punnituskennoja käytetään mittaamaan grammoina mikrogrammoina. Näitä luokkaluokkia käytetään myymälävaa'oissa, suuren mittakaavan tuotannonseurannassa, elintarvikepakkauksissa ja laboratorioissa jne.

Sukelletaan nyt projektin teknisiin yksityiskohtiin.

Piirikaavio:

Lataa kennoyhteys HX711 Arduinoon ja punnituskenno.

Lataa kennoyhteys HX711 Arduinoon ja punnituskenno.

Projekti koostuu Arduino-, Load cell- ja HX711-punnituskennovahvistinkortista sekä tietokoneesta. Lähtöä voidaan seurata Arduino IDE -sarjan näytöllä.

Projektin aivot ovat kuten aina arduino, voit käyttää mitä tahansa Arduino-levymallia. HX711 on 24-bittinen ADC, joka löytää pienimmän joustavuuden punnituskennon painon vuoksi. Se voi toimia välillä 2,7 V - 5 V. Virta saadaan Arduino-kortilta.

Punnituskennossa on yleensä neljä johtoa, mikä on Wheatstone-sillan konfiguroidun venymälähdön lähtö.

Punainen johto on E +, musta johto on E-, vihreä johto on A- ja valkoinen johto on A +. Jotkut HX711-moduulit määrittävät kuormituskennon liittimien nimen ja jotkut HX711-moduulit johtojen värit, tällainen malli on esitetty piirikaaviossa.

HX711: n DATA-tappi on kytketty Arduinon tapaan # 3 ja HX711: n kellotappi on kytketty Arduinon tapaan # 2.

Kuinka punnituskenno asennetaan:

kuinka asentaa loadcell Arduinon kanssa

Punnituskennossa on neljä ruuvinreikää, kaksi molemmin puolin. Minkä tahansa toisen sivun on oltava paikallaan parhaan tarkkuuden saavuttamiseksi. Se voidaan kiinnittää kohtuullisen painoiseen puuhun.

Mittauspainon pitämiseen voidaan käyttää ohutta puuta tai ohutta levyä yllä esitetyllä tavalla.

Joten kun asetat painon, punnituskenno taipuu niin myös venymäliuska ja muuttaa sen vastusta, joka mitataan HX711-moduulilla ja syötetään Arduinoon.

Kun laitteiston asennus on valmis, lähetetään koodi ja kalibroidaan.

Piirin kalibrointi:

On olemassa kaksi ohjelmaa, joista toinen on kalibrointiohjelma (kalibrointikertoimen löytäminen). Toinen koodi on painonmittausohjelma, kalibrointiohjelmakoodista löydetty kalibrointikerroin on syötettävä painonmittausohjelmaan.

Kalibrointikerroin määrittää painomittauksen tarkkuuden.

Lataa HX711-kirjasto täältä: github.com/bogde/HX711

Kalibroinnit Ohjelmakoodi:

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

Kalibrointi:

  • Kun laitteiston asennus on valmis, lataa yllä oleva koodi.
  • Poista ohut levy tai puu, jota käytetään painon pitämiseen kahdella ruuvilla (punnituskennon toinen puoli tulee kiinnittää alustaan)
  • Avaa Serial Monitor.
  • Aseta tunnettu paino punnituskennoon suoraan, 100 grammaa (sanoa).
  • Lehdistö Q, W, E, R lisätä kalibrointikerrointa 10 100 100 000 10000 vastaavasti.
  • Lehdistö A, S, D, F vähentää kalibrointikerrointa 10 100 100 000 10000.
  • Paina Enter-näppäintä jokaisen kalibrointikertoimen lisäyksen tai vähennyksen jälkeen.
  • Lisää tai vähennä kalibrointikerrointa, kunnes tunnetun painomateriaalin oikea paino ilmestyy.
  • Taara-toiminto on asettaa asteikko nollaksi, tämä on hyödyllinen, kun haluat mitata veden painon (esimerkiksi) ilman kulhon painoa. Aseta kulho ensin, paina taaraa ja kaada vesi.
  • Merkitse kalibrointikerroin muistiin ja kirjoita se muistiin, kun tietopaino tulee näkyviin.

Nyt se voi mitata tuntemattomia painoja.

Painonmittausohjelman koodi:

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

Korvaa -12000 löytämällesi kalibrointikertoimella. Se voi olla negatiivinen luku tai positiivinen luku.

Lataa yllä oleva koodi täydellä laitteistoasetuksellasi, ja vaakakoneesi on valmis.

Painoasteikko kone, joka käyttää LCD-näyttöä

Yllä olevassa artikkelissa selitettiin tietokoneellasi käytettävä Arduino-pohjainen vaakajärjestelmä, seuraavassa osassa yritämme rakentaa käytännön version Painoasteikosta lisäämällä 16 x 2 LCD-näytön, jotta emme ole riippuvaisia ​​tietokoneesta mittauksen aikana painot. Tässä viestissä ehdotetaan kahta versiota, toisessa “I2C” 16 x 2 LCD-näyttö ja toisessa ilman “I2C” 16 x 2 LCD-näyttöä.

Tässä annetaan kaksi vaihtoehtoa, jotta lukijat voivat valita suunnittelun sopivaksi. Suurin ero näiden kahden välillä on johdinliitännät I2C-sovitinmoduulilla. LCD-näytön toimintaan tarvitaan vain 4 johtoa (Vcc, GND, SCL ja SDA), kun taas ilman I2C-sovitinta tarvitset useita johtoja Arduinon ja LCD-näytön liittämiseen.

Molemmat toiminnot ovat kuitenkin täsmälleen samat, jotkut suosivat I2C: tä tavanomaiseen verrattuna ja toiset taas päinvastoin, joten tässä ovat molemmat mallit.

Tarkastellaan tavanomaista LCD-näyttöä:

Piirikaavio:

arduino, 16 x 2 LCD-näyttö ja 10K potentiometri LCD-näytön kontrastin säätämiseen

Yllä olevassa kaaviossa meillä on arduino, 16 x 2 LCD-näyttö ja 10K potentiometri LCD-näytön kontrastin säätämiseksi.

3,3 V voidaan syöttää Arduinosta LCD-näyttöön taustavaloa varten. Painonäppäin tuo painolukeman nollaan, tämä toiminto selitetään yksityiskohtaisesti lopussa.

Tämä on vain yhteys LCD: n ja Arduinon välillä, yhteys punnituskennon ja kuormituskennovahvistimen välillä Arduinoon on esitetty edellisessä osassa.

LCD-vaa'an koneen koodi:

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

Katsotaan nyt, miten tätä vaakakonetta käytetään I2C-sovittimeen perustuvan LCD-näytön kanssa.

Piirikaavio Arduino ja LCD-näyttö I2C-sovittimella:

Arduino ja LCD-näyttö I2C-sovittimella

Täällä meillä on vain Arduino- ja LCD-näyttö, jonka takana on I2C-sovitin. Nyt johdinliitännät ovat yksinkertaistettuja ja suoraviivaisia.

Kuva I2C-moduulista:

I2C-moduuli

Tämä moduuli voidaan juottaa suoraan normaalin 16 x 2 tai jopa 20 x 4 LCD-näytön takaosaan ja noudattaa kaaviota.

Ja vielä kerran, katso edellisestä osasta punnituskennon, punnituskennovahvistimen ja Arduinon kytkentä.

Lataa seuraava I2C-pohjainen kirjasto:

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

I2C-pohjaisen painokaaavapiirin koodi:

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

HUOMAUTUS:

Syötä kalibrointikerroin koodiin ennen kuin lataat jommankumman koodista Arduinoon.

float CalibrationFactor = -12000

Kalibrointikertoimen saaminen on selitetty edellisessä osassa.

Taara-toiminto:

Taaratoiminto painopistealueella on tuoda lukemat nollaan. Esimerkiksi jos meillä on kori, johon tavarat ladataan, nettopaino on korin paino + tavaroiden paino.

Jos painamme taaranappia korilla punnituskennossa ennen tavaroiden lastaamista, korin paino jätetään huomioimatta ja voimme mitata tavaroiden painon yksin.

Jos sinulla on kysyttävää tästä Arduino-pohjaisesta käytännön LCD-vaakakonepiiristä, ilmaise kommenttiosassa, saat vastauksen nopeasti.




Pari: Kiinteän kontaktorin piiri moottoripumpuille Seuraava: Kuinka tehdä asteittaiset muuntajat