Цифрова везна за претегляне с използване на товарната клетка и Arduino

Цифрова везна за претегляне с използване на товарната клетка и Arduino

В този пост ще научим за тензодатчика, базиран на тензодатчик. Ще проучим какво представлява тензодатчикът, какво представлява товарната клетка, температурния ефект върху деформационния датчик, температурната компенсация с мост на Уитстоун и усилвател на товарната клетка HX711 и накрая ще научим как да изградим базирана на Arduino машина за претегляне чрез внедряване на товарната клетка сензора за тегло.



Тази публикация се занимава с измерване на теглото и методи за измерване и прилагане на методите в базирана на Arduino верига за претегляне.

Всички обичаме да виждаме теглото си, независимо от възрастта си, малко дете може да обича да вижда неговото / нейното наддаване, а възрастните може да обичат да виждат неговото / нейното отслабване. Теглото е жизненоважно понятие от древни времена, което е помогнало при търговията със стоки, разработването на научно оборудване и търговски продукти.



В съвремието измерваме теглото в килограми, милиграми дори микрограми за лабораторни цели. Един грам е еднакъв по целия свят, всички устройства за измерване на теглото трябва да измерват еднакво. Масовото производство на хапче с малка разлика от няколко милиграма в дозата е достатъчно, за да се превърне животоспасяващо хапче в самоубийствено хапче.

Какво е теглото?

Теглото е силата, упражнявана върху равнина. Количеството на приложената сила е пряко пропорционално на масата на даден обект, което означава, че колкото по-голяма е масата на обекта, толкова по-голяма е приложената сила.



Масата е количеството физическа материя, присъстваща в даден обект.

Теглото зависи от още един фактор: гравитацията.

Гравитацията е постоянна по целия свят (има малки вариации в гравитацията поради неравномерната сферична форма на земята, но тя е много малка). Теглото от 1 кг на земята ще тежи 160 грама на Луната с точно същата маса, тъй като луната има много по-слабо гравитационно привличане.

Сега знаете какво е теглото и кои са факторите, които правят обекта тежък.

Какво е тензодатчик:

Деформаторът е преобразувател или сензор, който измерва деформацията (деформацията) върху обект. Това е изобретено от електроинженера Едуард Е. Симънс и машинния инженер Артър Клод Рудж.

Илюстрация на тензодатчика:

Сензор за деформация

Деформаторът е гъвкав, представлява тънък модел метално фолио, поставен между два тънки пластмасови листа и трябва да бъде прикрепен към повърхността с подходящо лепило или какъвто и да е адхезивен материал.

Когато приложим тежест или сила върху повърхността, тя се деформира, а деформацията също се деформира. Деформацията на деформатора води до промяна на електрическото съпротивление на металното фолио.

Сега промяната на деформацията в съпротивлението е право пропорционална на теглото или приложената сила върху повърхността.

В реалния живот промяната в съпротивлението на тензодатчика е много незначителна за откриване. За да открием малки промени в съпротивлението, използваме моста Wheatstone.

Нека разгледаме накратко какво представлява мостът Уитстоун.

Разбиране на моста на Уитстоун:

Мостът от пшеничен камък е верига, която може да се използва за определяне на неизвестно съпротивление. Мостът Уитстоун е измислен от Самюъл Хънтър Кристи, по-късно мостът Уитстоун е подобрен и разпространен от сър Чарлз

Пшеничен камък.

Илюстрация на мостовата верига на Уитстоун:

Уийтстоун мост верига

Нашите съвременни цифрови мултиметри могат да отчитат стойността на съпротивлението, варираща от мега ома, кило ома и обхвата на ома.

Използвайки мост от пшеничен камък, можем да измерим съпротивлението в диапазон от мили ома.

Мостът от пшеничен камък се състои от 4 резистора, от четирите, 3 са известни съпротивления и един неизвестен съпротивление.

Потенциалната разлика (напрежение) се прилага върху точките „А“ и „С“, а от точки „В“ и „D“ се свързва волтметър.

Ако всички резистори са равни, в точките „B“ и „D“ няма да тече ток и волтметърът ще отчете нула. Това се нарича балансиран мост.

Ако съпротивлението на резистора се различава от останалите три резистора, между точките 'B' и 'D' ще има напрежение и волтметърът ще отчете някаква стойност, пропорционална на неизвестното съпротивление. Това се нарича небалансиран мост.

Тук неизвестното съпротивление е деформацията, когато съпротивлението се променя, то се отразява на волтметъра.

Сега сме преобразували деформация, тегло или сила в сигнал на напрежение. Това напрежение трябва да бъде усилено, за да се получат някои полезни показания, които ще бъдат подадени към микроконтролер, за да получат показанията в грамове.

Сега нека обсъдим как температурата влияе върху производителността на тензодатчика.

Температурни ефекти върху деформацията:

Манометърът е чувствителен към температура и може да обърка действителните показания за тегло / сила. Когато има промяна в температурата на околната среда, металното фолио се подлага на метално разширение, което пряко влияе на устойчивостта.

Можем да анулираме температурния ефект с помощта на моста Уитстоун. Нека да видим как можем да компенсираме температурата с помощта на моста Wheatstone.

Температурна компенсация:

Лесно можем да неутрализираме температурния ефект, като заменим всички резистори с тензодатчик. Сега цялата устойчивост на тензорезистора ще бъде повлияна от температурата еднакво и нежеланият шум ще бъде обезсилен от характера на моста Уитстоун.

Какво представлява товарната клетка?

Товарна клетка е алуминиев профил с тензодатчик, прикрепен към 4 страни в конфигурация на мост Уитстоун.

Илюстрация на товарната клетка:

Устройство за товарна клетка

Този тип натоварваща клетка е твърда и се използва често в промишлеността. Има 4 винтови стойки, едната страна е закрепена с болтове към неподвижна повърхност, а другият край е закрепен с държач (да речем кошницата), за да държи обекта, който трябва да бъде измерен.

Той има максимално тегло, посочено в листа с данни или върху тялото му, като надвишаването на спецификацията може да повреди товарната клетка.

Пълномостовите клетки се състоят от 4 клеми, а именно E +, E-, които са възбуждащи проводници, през които се подава захранващото напрежение. Другите два проводника са S + и S-, които са сигнални проводници, от които се измерва напрежението.

Сега тези напрежения са в миливолтови граници, които не са достатъчно силни, за да може микроконтролерът да чете и обработва. Имаме нужда от усилване и малките промени трябва да бъдат видими за микроконтролера. За да направите това, има специален модул, наречен усилватели на товарните клетки, нека направим преглед на това.

Усилвател на товарната клетка HX711:

Илюстрация на HX711 усилвател модул на товарната клетка:

Усилвател на товарната клетка HX711

Усилвателят на товарната клетка е базиран на IC HX711, който е 24-битов аналогово-цифров преобразувател, специално проектиран за измерване на теглото. Той има различни избираеми печалби 32, 64 и 128 и работи на 2.6 до 5.5 V.
Тази платка за разбиване помага да се открият малки вариации на товарната клетка. Този модул изисква библиотека HX711.h за работа

Arduino или други микроконтролери.

Товарната клетка ще бъде свързана към модула HX711 и модулът ще бъде свързан с Arduino. Веригата за измерване на теглото трябва да бъде разработена по този начин.

В заключение, сега знаете какво е тензодатчик, какво представлява мостът на Уитстоун, температурни ефекти върху тензорезистора, температурна компенсация и какво е усилвател на товарната клетка.

Разбрахме изчерпателно теоретичната част на дизайна на везната от горната дискусия, сега нека видим как клетка с лоас може да се използва за направата на практична машина за претегляне с помощта на Arduino

Проектиране на машина за цифрово претегляне с помощта на Arduino

В следващите дискусии ще научим как да конструираме машина за цифрови везни с помощта на Arduino, която може да измерва тежести от няколко грама до 40 Kg (в зависимост от спецификациите на вашата товарна клетка) с разумна точност. Ще научим за класификацията на прецизните натоварващи клетки и ще калибрираме предложената схема и ще финализираме машината за везна.

Забележка: Тази схема може да не е в съответствие със стандартите, необходими за търговско изпълнение.

Машините за тегло се използват в различни разновидности на занаяти и изследвания, вариращи от милиграми до няколко тона. Предложеният максимален мащаб на машината за тегло зависи от спецификацията на вашата товарна клетка. Има диапазони от 500 грама, 1 кг, 5 кг, 10 кг, 20 кг и 40 кг и т.н.

Има различни степени на товарната клетка, те предлагат различен диапазон на точност и трябва да изберете подходящия за вашия проект.

Класификация на клас на точност на товарните клетки:

Различните класове на точност са дефинирани за различните видове приложения. Класификацията по-долу е от най-ниска до най-висока степен на точност.

Натоварващите клетки с по-ниска точност (но сравнително точни) се класифицират като D1, C1 и C2. Това е достатъчно за този проект. Тези товарни клетки се използват за измерване на теглото на пясък, цимент или вода.

Натоварващата клетка клас С3 се използва за осигуряване на качеството като проверка на теглото на сачмените лагери, частите на машинните конструкции и др.

C4, C5, C6 са най-добрите в клас точност, тези степени на товарните клетки се използват за измерване в грамове до микрограми. Тези класове класове се използват в търговски везни, мониторинг на мащабно производство, опаковане на храни и лабораторна употреба и т.н.

Сега нека се потопим в техническите подробности за проекта.

Електрическа схема:

Връзка на товарната клетка HX711 към Arduino и товарната клетка.

Връзка на товарната клетка HX711 към Arduino и товарната клетка.

Проектът се състои от Arduino, Load cell и HX711 усилвателна платка с натоварващи клетки и компютър. Изходът може да се наблюдава на серийния монитор на Arduino IDE.

Мозъкът на проекта е както винаги arduino, можете да използвате всеки модел дъска Arduino. HX711 е 24 битов ADC, който може да намери най-малката гъвкавост поради теглото на товарната клетка. Може да работи от 2,7 V до 5 V. Захранването се осигурява от платката Arduino.

Тензорната клетка обикновено има четири проводника, което е изходът от конфигурирания тензодатчик на моста на Уитстоун.

Червеният проводник е E +, черният проводник е E-, зеленият проводник е A-, а белият проводник е A +. Някои модули HX711 указват името на клемите на товарната клетка, а някои модули HX711 определят цветовете на проводниците, такъв модел е илюстриран в схемата.

ПИН за DATA на HX711 е свързан с пин # 3 на Arduino, а щифтът Clock на HX711 е свързан с пин # 2 на Arduino.

Как да монтирате товарната клетка:

как да инсталирам loadcell с Arduino

Товарната клетка има четири отвора за винт, два от двете страни. Всяка една страна трябва да е неподвижна за най-добра точност, тя може да бъде нанесена върху дърво с разумно тегло.

Тънко дърво или тънка плоча могат да се използват за задържане на измервателното тегло, както е показано по-горе.

Така че, когато поставите тежест, товарната клетка се огъва, както и тензодатчикът и променя съпротивлението си, което се измерва от модула 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()
}
}
}
//-------------------- --------------------//

Как да калибрирам:

  • След завършена хардуерна настройка качете горния код.
  • Отстранете тънката плоча или дървото, което се използва за задържане на тежестта, включително двата винта (другата страна на товарната клетка трябва да бъде фиксирана към основа)
  • Отворете серийния монитор.
  • Поставете известно тегло директно върху товарната клетка, 100 грама (да речем).
  • Натиснете Q, W, E, R да се увеличи коефициентът на калибриране съответно с 10 100 000 000 000.
  • Натиснете A, S, D, F да се намали коефициентът на калибриране съответно с 10 100 000 000 000.
  • Натискайте “Enter” след всяко увеличаване или намаляване на калибриращия фактор.
  • Увеличете или намалете калибриращия коефициент, докато се появи правилното тегло на известния материал с тегло.
  • Функцията тара е да настроите скалата на теглото на нула, това е полезно, когато искате да измерите теглото на водата (да речем) без теглото на купата. Първо поставете купата, натиснете тара и налейте водата.
  • Обърнете внимание на калибриращия фактор и го запишете, след като се появи известното тегло.

Сега той може да измерва неизвестни тегла.

Код на програмата за измерване на теглото:

//---------------- ----------------//
#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 дисплей

Горната статия обяснява базирана на Arduino система за претегляне с помощта на вашия компютър, в следващия раздел ще се опитаме да изградим практична версия на машина за претегляне, като добавим 16 x 2 LCD дисплей, така че да не зависим от компютър, докато измерваме тежести. В тази публикация се предлагат две версии, една с “I2C” 16 x 2 LCD и една без “I2C” 16 x 2 LCD дисплей.

Тук са дадени два избора, така че читателите да могат да изберат дизайна според удобството си. Основната разлика между двете е кабелните връзки с I2C адаптерния модул са необходими само 4 проводника (Vcc, GND, SCL и SDA) за функциониране на LCD дисплея, докато без I2C адаптер са ви необходими няколко проводника за свързване между Arduino и LCD дисплея.

Въпреки това и двете функции са еднакви, някои предпочитат I2C пред конвенционалната, а други предпочитат обратното, така че ето и двата дизайна.

Нека да разгледаме конвенционалния LCD дизайн:

Електрическа схема:

arduino, 16 x 2 LCD дисплей и 10K потенциометър за регулиране на контраста на LCD дисплея

В горната схема имаме arduino, 16 x 2 LCD дисплей и 10K потенциометър за регулиране на контраста на LCD дисплея.

3.3 V може да се подава от Arduino към LCD дисплей за подсветка. Предвиден е бутон, за да доведе до нула отчитането на теглото, тази функция ще бъде обяснена подробно в края.

Това е просто връзка между 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 -------//

Сега нека видим как да използваме тази машина за тегло с LCD дисплей, базиран на I2C адаптер.

Електрическа схема Arduino и LCD дисплей с I2C адаптер:

Arduino и LCD дисплей с I2C адаптер

Тук просто имаме Arduino и LCD дисплей с I2C адаптер на гърба. Сега кабелните връзки са опростени и прави напред.

Илюстрация на 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

Получаването на калибриращ фактор е обяснено в един от предишните раздели по-горе.

Тара функция:

Функцията тара в теглова скала е да доведе нулата до показанията. Например, ако имаме кошница, в която са натоварени стоките, тогава нетното тегло ще бъде тегло на кошницата + тегло на стоките.

Ако натиснем бутона за тара с кошница върху товарната клетка преди товаренето на стоки, теглото на кошницата ще бъде пренебрегнато и можем да измерим теглото на стоките сами.

Ако имате някакви въпроси по отношение на тази базирана на Arduino практична LCD теглителна машина, моля, изразете в раздела за коментари, може да получите бърз отговор.




Предишна: Твърдофазна верига на контактор за моторни помпи Напред: Как да направим трансформатори от стъпка надолу