เครื่องชั่งน้ำหนักดิจิตอลโดยใช้ Load Cell และ Arduino

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราจะเรียนรู้เกี่ยวกับโหลดเซลล์ตามมาตรวัดความเครียด เราจะมาสำรวจว่า Strain Gauge คืออะไร Load Cell คืออะไรผลของอุณหภูมิบนเครื่องวัดความเครียดการชดเชยอุณหภูมิด้วย Wheatstone bridge และ Load cell amplifier HX711 และในที่สุดเราจะเรียนรู้วิธีการสร้างเครื่องชั่งน้ำหนักที่ใช้ Arduino โดยใช้โหลดเซลล์เป็น เซ็นเซอร์น้ำหนัก

โพสต์นี้เกี่ยวข้องกับการวัดน้ำหนักและวิธีการวัดและการใช้วิธีการในวงจรชั่งน้ำหนักที่ใช้ Arduino



เราทุกคนชอบที่จะเห็นน้ำหนักของเราโดยไม่คำนึงถึงอายุของเราเด็กตัวเล็ก ๆ อาจชอบที่จะเห็นน้ำหนักตัวเพิ่มขึ้นและผู้ใหญ่อาจชอบที่จะเห็นน้ำหนักตัวเองลดลง น้ำหนักเป็นแนวคิดที่สำคัญมาตั้งแต่สมัยโบราณซึ่งช่วยในการซื้อขายสินค้าการพัฒนาอุปกรณ์วิทยาศาสตร์และผลิตภัณฑ์เชิงพาณิชย์

ในยุคปัจจุบันเราวัดน้ำหนักเป็นกิโลกรัมมิลลิกรัมแม้กระทั่งไมโครกรัมเพื่อวัตถุประสงค์ในห้องปฏิบัติการ หนึ่งกรัมเหมือนกันทั่วโลกอุปกรณ์วัดน้ำหนักทั้งหมดต้องวัดเหมือนกัน การผลิตยาเม็ดจำนวนมากที่มีขนาดยาไม่กี่มิลลิกรัมก็เพียงพอที่จะทำให้ยาช่วยชีวิตเป็นยาฆ่าตัวตายได้



น้ำหนักคืออะไร?

น้ำหนักคือแรงที่กระทำบนเครื่องบิน ปริมาณของแรงที่กระทำเป็นสัดส่วนโดยตรงกับมวลของวัตถุซึ่งหมายถึงมวลของวัตถุที่สูงขึ้นแรงที่กระทำก็จะยิ่งสูงขึ้น

มวลคือปริมาณของสสารทางกายภาพที่มีอยู่ในวัตถุ

น้ำหนักขึ้นอยู่กับอีกปัจจัยหนึ่ง: แรงโน้มถ่วง

แรงโน้มถ่วงมีค่าคงที่ทั่วโลก (แรงโน้มถ่วงมีการเปลี่ยนแปลงเล็กน้อยเนื่องจากรูปทรงกลมที่ไม่สม่ำเสมอของโลก แต่มีขนาดเล็กมาก) น้ำหนัก 1Kg บนโลกจะมีน้ำหนัก 160 กรัมบนดวงจันทร์ที่มีมวลเท่ากันเนื่องจากดวงจันทร์มีแรงดึงดูดที่อ่อนแอกว่ามาก

ตอนนี้คุณรู้แล้วว่าน้ำหนักคืออะไรและอะไรคือปัจจัยที่ทำให้วัตถุหนัก

Strain gauge คืออะไร:

สเตรนเกจเป็นตัวแปลงสัญญาณหรือเซ็นเซอร์ที่ใช้วัดความเครียด (การเสียรูป) บนวัตถุ สิ่งนี้คิดค้นโดยวิศวกรไฟฟ้า Edward E. Simmons และวิศวกรเครื่องกล Arthur Claude Ruge

ภาพประกอบของ Strain Gauge:

เซ็นเซอร์วัดความเครียด

มาตรวัดความเครียดมีความยืดหยุ่นเป็นรูปแบบฟอยล์โลหะบาง ๆ ที่คั่นกลางระหว่างแผ่นพลาสติกบาง ๆ สองแผ่นและต้องติดบนพื้นผิวโดยใช้กาวที่เหมาะสมหรือวัสดุยึดติดใด ๆ

เมื่อเราใช้น้ำหนักหรือแรงบนพื้นผิวมันจะทำให้เสียรูปและมาตรวัดความเครียดก็เปลี่ยนรูปเช่นกัน การเปลี่ยนรูปของสเตรนเกจทำให้ความต้านทานไฟฟ้าของฟอยล์โลหะเปลี่ยนไป

ตอนนี้การเปลี่ยนแปลงความต้านทานของมาตรวัดความเครียดเป็นสัดส่วนโดยตรงกับน้ำหนักหรือแรงที่กระทำบนพื้นผิว

ในชีวิตจริงการเปลี่ยนแปลงความต้านทานของสเตรนเกจนั้นไม่มีนัยสำคัญที่จะตรวจจับได้ ในการตรวจจับการเปลี่ยนแปลงเล็กน้อยในความต้านทานเราใช้ Wheatstone bridge

มาสำรวจกันโดยย่อว่า Wheatstone Bridge มีอะไรบ้าง

ทำความเข้าใจเกี่ยวกับสะพานวีทสโตน:

สะพานหินข้าวสาลีเป็นวงจรที่สามารถใช้เพื่อกำหนดความต้านทานที่ไม่รู้จัก สะพาน Wheatstone ได้รับการออกแบบโดย Samuel Hunter Christie ต่อมาสะพาน Wheatstone ได้รับการปรับปรุงและเผยแพร่โดย Sir Charles

วีทสโตน.

ภาพประกอบของวงจรสะพานวีทสโตน:

วงจรสะพานวีทสโตน

ดิจิตอลมัลติมิเตอร์ที่ทันสมัยของเราสามารถอ่านค่าความต้านทานได้ตั้งแต่ช่วงเมกะโอห์มกิโลโอห์มและช่วงโอห์ม

การใช้ Wheat stone bridge เราสามารถวัดความต้านทานได้ในช่วงมิลลิโอห์ม

สะพานหินข้าวสาลีประกอบด้วยตัวต้านทาน 4 ตัวจากสี่ตัว 3 ตัวเป็นที่รู้จักความต้านทานและตัวต้านทานที่ไม่รู้จัก

ความต่างศักย์ (แรงดันไฟฟ้า) จะใช้กับจุด“ A” และ“ C” และจากจุด“ B” และ“ D” จะมีการเชื่อมต่อโวลต์มิเตอร์

หากตัวต้านทานทั้งหมดเท่ากันจะไม่มีกระแสไหลที่จุด“ B” และ“ D” และโวลต์มิเตอร์จะอ่านค่าเป็นศูนย์ นี่เรียกว่าสะพานสมดุล

หากความต้านทานของตัวต้านทานแตกต่างจากตัวต้านทานอื่น ๆ อีกสามตัวจะมีการไหลของแรงดันไฟฟ้าระหว่างจุด“ B” และ“ D” และโวลต์มิเตอร์จะอ่านค่าบางส่วนตามสัดส่วนกับความต้านทานที่ไม่รู้จัก สิ่งนี้เรียกว่าสะพานที่ไม่สมดุล

ที่นี่ความต้านทานที่ไม่รู้จักคือมาตรวัดความเครียดเมื่อความต้านทานเปลี่ยนไปจะสะท้อนกับโวลต์มิเตอร์

ตอนนี้เราได้แปลงการเสียรูปหรือน้ำหนักหรือแรงเป็นสัญญาณแรงดันไฟฟ้า แรงดันไฟฟ้านี้จำเป็นต้องได้รับการขยายเพื่อให้ได้การอ่านที่เป็นประโยชน์ซึ่งจะถูกป้อนไปยังไมโครคอนโทรลเลอร์เพื่อให้ได้ค่าที่อ่านเป็นกรัม

ตอนนี้เรามาดูกันว่าอุณหภูมิมีผลต่อประสิทธิภาพของสเตรนเกจอย่างไร

ผลกระทบของอุณหภูมิใน Strain Gauge:

มาตรวัดความเครียดมีความไวต่ออุณหภูมิและอาจทำให้การอ่านน้ำหนัก / แรงจริงไม่สมบูรณ์ เมื่อมีการเปลี่ยนแปลงของอุณหภูมิโดยรอบฟอยล์โลหะจะอยู่ภายใต้การขยายตัวของโลหะซึ่งส่งผลโดยตรงต่อความต้านทาน

เราสามารถทำให้ผลของอุณหภูมิเป็นโมฆะได้โดยใช้ Wheatstone bridge มาดูกันว่าเราจะชดเชยอุณหภูมิโดยใช้ Wheatstone bridge ได้อย่างไร

การชดเชยอุณหภูมิ:

เราสามารถทำให้ผลของอุณหภูมิเป็นกลางได้อย่างง่ายดายโดยการเปลี่ยนตัวต้านทานทั้งหมดด้วยสเตรนเกจ ตอนนี้ความต้านทานของมาตรวัดความเครียดทั้งหมดจะได้รับผลกระทบจากอุณหภูมิเท่า ๆ กันและเสียงที่ไม่ต้องการจะถูกลบล้างโดยลักษณะของสะพานวีทสโตน

โหลดเซลล์คืออะไร?

โหลดเซลล์เป็นโปรไฟล์อลูมิเนียมที่มีสเตรนเกจติดอยู่ทั้ง 4 ด้านในโครงแบบวีทสโตนบริดจ์

ภาพประกอบของโหลดเซลล์:

โหลดอุปกรณ์เซลล์

โหลดเซลล์ประเภทนี้มีความแข็งและนิยมใช้ในอุตสาหกรรม มีที่ยึดสกรู 4 ตัวด้านหนึ่งยึดเข้ากับพื้นผิวที่หยุดนิ่งและปลายอีกด้านหนึ่งยึดเข้ากับตัวยึด (ตะกร้าพูด) เพื่อยึดวัตถุที่จะวัด

มีน้ำหนักสูงสุดที่ระบุไว้ในแผ่นข้อมูลหรือบนตัวถังเกินข้อกำหนดอาจทำให้โหลดเซลล์เสียหายได้

เซลล์สะพานแบบเต็มประกอบด้วยขั้ว 4 ขั้วคือ E +, E- ซึ่งเป็นสายกระตุ้นที่ใช้แรงดันไฟฟ้า อีกสองสายคือ S + และ S- ซึ่งเป็นสายสัญญาณที่วัดแรงดันไฟฟ้า

ตอนนี้แรงดันไฟฟ้าเหล่านี้อยู่ในช่วงมิลลิโวลต์ไม่แรงพอที่ไมโครคอนโทรลเลอร์จะอ่านและประมวลผลได้ เราจำเป็นต้องมีการขยายและไมโครคอนโทรลเลอร์ควรมองเห็นการเปลี่ยนแปลงเล็กน้อย ในการดำเนินการนี้มีโมดูลเฉพาะที่เรียกว่าแอมพลิฟายเออร์โหลดเซลล์เรามาดูภาพรวมกัน

โหลดเซลล์ Amplifier HX711:

ภาพประกอบของโมดูลแอมพลิฟายเออร์โหลดเซลล์ HX711:

โหลดเซลล์ Amplifier HX711

แอมพลิฟายเออร์โหลดเซลล์ใช้ IC HX711 ซึ่งเป็นตัวแปลงอนาล็อกเป็นดิจิตอล 24 บิตที่ออกแบบมาโดยเฉพาะสำหรับการวัดน้ำหนัก มีกำไรที่เลือกได้แตกต่างกัน 32, 64 และ 128 และทำงานบน 2.6 ถึง 5.5 V.
บอร์ดฝ่าวงล้อมนี้ช่วยในการตรวจจับการเปลี่ยนแปลงเล็ก ๆ บนโหลดเซลล์ โมดูลนี้ต้องการไลบรารี HX711.h เพื่อใช้งาน

Arduino หรือไมโครคอนโทรลเลอร์อื่น ๆ

โหลดเซลล์จะเชื่อมต่อกับโมดูล HX711 และโมดูลจะเชื่อมต่อกับ Arduino วงจรการวัดน้ำหนักจำเป็นต้องได้รับการพัฒนาในลักษณะนี้

สรุปตอนนี้คุณรู้แล้วว่าสเตรนเกจคืออะไรสะพานวีทสโตนคืออะไรผลกระทบของอุณหภูมิที่มีต่อมาตรวัดความเครียดการชดเชยอุณหภูมิและแอมพลิฟายเออร์โหลดเซลล์คืออะไร

เราได้ทำความเข้าใจอย่างถ่องแท้ถึงส่วนทางทฤษฎีของการออกแบบเครื่องชั่งน้ำหนักจากการอภิปรายข้างต้นแล้วตอนนี้เรามาดูกันว่าเซลล์ Loas สามารถใช้ทำเครื่องชั่งน้ำหนักเชิงปฏิบัติโดยใช้ Arduino ได้อย่างไร

การออกแบบเครื่องชั่งน้ำหนักดิจิตอลโดยใช้ Arduino

ในการอภิปรายต่อไปนี้เราจะเรียนรู้วิธีสร้างเครื่องชั่งน้ำหนักดิจิตอลโดยใช้ Arduino ซึ่งสามารถวัดน้ำหนักได้ตั้งแต่ไม่กี่กรัมถึง 40 Kg (ขึ้นอยู่กับข้อกำหนดของโหลดเซลล์ของคุณ) ด้วยความแม่นยำที่สมเหตุสมผล เราจะเรียนรู้เกี่ยวกับการจำแนกประเภทของโหลดเซลล์เกรดที่มีความแม่นยำและเราจะทำการปรับเทียบวงจรที่เสนอและสรุปเครื่องชั่งน้ำหนัก

หมายเหตุ: วงจรนี้อาจไม่สอดคล้องกับมาตรฐานที่จำเป็นสำหรับการนำไปใช้ในเชิงพาณิชย์

เครื่องชั่งน้ำหนักถูกใช้ในการค้าและการวิจัยที่แตกต่างกันตั้งแต่มิลลิกรัมไปจนถึงหลายตัน เครื่องชั่งน้ำหนักที่เสนอจะขึ้นอยู่กับข้อกำหนดของโหลดเซลล์ของคุณ มีตั้งแต่ 500 กรัม 1 Kg 5Kg 10 Kg 20 Kg และ 40 Kg เป็นต้น

โหลดเซลล์มีหลายเกรดมีช่วงความแม่นยำที่แตกต่างกันและคุณควรเลือกรุ่นที่เหมาะสมกับโครงการของคุณ

การจำแนกประเภทความแม่นยำของโหลดเซลล์:

คลาสความแม่นยำที่แตกต่างกันถูกกำหนดไว้สำหรับการใช้งานประเภทต่างๆ การจัดประเภทด้านล่างนี้มาจากช่วงความแม่นยำต่ำสุดไปจนถึงช่วงความแม่นยำสูงสุด

โหลดเซลล์ที่มีความแม่นยำต่ำกว่า (แต่มีความแม่นยำพอสมควร) จัดเป็น D1, C1 และ C2 เท่านี้ก็เพียงพอแล้วสำหรับโครงการนี้ โหลดเซลล์เหล่านี้ใช้สำหรับวัดน้ำหนักของทรายซีเมนต์หรือน้ำ

โหลดเซลล์เกรด C3 ใช้ในการประกันคุณภาพเช่นการตรวจสอบน้ำหนักของลูกปืนชิ้นส่วนโครงสร้างเครื่องจักรเป็นต้น

C4, C5, C6 มีความแม่นยำที่ดีที่สุดในระดับเดียวกันโหลดเซลล์เกรดเหล่านี้ใช้ในการวัดเป็นกรัมถึงไมโครกรัม ชั้นเรียนเกรดเหล่านี้ใช้ในเครื่องชั่งที่เคาน์เตอร์ร้านค้าการตรวจสอบการผลิตขนาดใหญ่การบรรจุอาหารและการใช้ในห้องปฏิบัติการเป็นต้น

ตอนนี้เรามาดูรายละเอียดทางเทคนิคของโครงการกัน

แผนภูมิวงจรรวม:

โหลดการเชื่อมต่อเซลล์ HX711 กับ Arduino และโหลดเซลล์

โหลดการเชื่อมต่อเซลล์ HX711 กับ Arduino และโหลดเซลล์

โครงการประกอบด้วย Arduino, โหลดเซลล์และโหลดเซลล์บอร์ด HX711 และคอมพิวเตอร์ เอาต์พุตสามารถตรวจสอบได้บน Serial monitor ของ Arduino IDE

สมองของโครงการนั้นเหมือนกับ arduino เสมอคุณสามารถใช้บอร์ด Arduino รุ่นใดก็ได้ HX711 เป็น ADC 24 บิตซึ่งสามารถโค้งงอได้น้อยที่สุดเนื่องจากน้ำหนักของโหลดเซลล์ สามารถทำงานได้ตั้งแต่ 2.7 V ถึง 5 V โดยใช้พลังงานจากบอร์ด Arduino

โดยทั่วไปโหลดเซลล์มีสายไฟสี่สายซึ่งเป็นเอาต์พุตจากเกจวัดความเครียดที่กำหนดค่าสะพานวีทสโตน

สายสีแดงคือ E +, สายสีดำคือ E-, สายสีเขียวคือ A- และสายสีขาวคือ A + โมดูล HX711 บางโมดูลระบุชื่อของเทอร์มินัลของโหลดเซลล์และโมดูล HX711 บางโมดูลระบุสีของสายไฟแบบจำลองดังกล่าวแสดงอยู่ในแผนภาพวงจร

พิน DATA ของ HX711 เชื่อมต่อกับพิน # 3 ของ Arduino และพินนาฬิกาของ HX711 เชื่อมต่อกับพิน # 2 ของ Arduino

วิธีการติดตั้งโหลดเซลล์:

วิธีการติดตั้งโหลดเซลล์ด้วย 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()
}
}
}
//-------------------- --------------------//

วิธีสอบเทียบ:

  • เมื่อติดตั้งฮาร์ดแวร์เสร็จแล้วให้อัปโหลดโค้ดด้านบน
  • ถอดแผ่นบางหรือไม้ที่ใช้สำหรับรับน้ำหนักรวมทั้งสกรูสองตัว (ควรยึดด้านอื่น ๆ ของโหลดเซลล์เข้ากับฐาน)
  • เปิด Serial monitor
  • วางน้ำหนักที่ทราบไว้บนโหลดเซลล์โดยตรง 100 กรัม (พูด)
  • กด Q, W, E, R เพื่อเพิ่มปัจจัยการสอบเทียบ 10,100,1000,10000 ตามลำดับ
  • กด A, S, D, F เพื่อลดปัจจัยการสอบเทียบ 10,100,1000,10000 ตามลำดับ
  • กด“ Enter” ทุกครั้งที่เพิ่มหรือลดปัจจัยการสอบเทียบ
  • เพิ่มหรือลดปัจจัยการสอบเทียบจนกว่าน้ำหนักที่ถูกต้องของวัสดุน้ำหนักที่ทราบจะปรากฏขึ้น
  • ฟังก์ชัน Tare คือการตั้งค่ามาตราส่วนน้ำหนักให้เป็นศูนย์ซึ่งจะมีประโยชน์เมื่อคุณต้องการวัดน้ำหนักของน้ำ (พูด) โดยไม่ต้องชั่งน้ำหนักชาม วางชามก่อนกดภาชนะแล้วเทน้ำ
  • สังเกตปัจจัยการสอบเทียบและจดไว้หลังจากที่ทราบน้ำหนักปรากฏขึ้น

ตอนนี้สามารถวัดน้ำหนักที่ไม่รู้จักได้แล้ว

รหัสโปรแกรมการวัดน้ำหนัก:

//---------------- ----------------//
#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 โดยใช้พีซีของคุณในส่วนต่อไปนี้เราจะพยายามสร้างเครื่องชั่งน้ำหนักรุ่นที่ใช้งานได้จริงโดยเพิ่มจอ LCD 16 x 2 เพื่อที่เราจะได้ไม่ต้องพึ่งพาพีซีขณะทำการวัด น้ำหนัก. ในโพสต์นี้มีการเสนอสองเวอร์ชันโดยรุ่นหนึ่งมี 'I2C' 16 x 2 LCD และอีกรุ่นหนึ่งไม่มีจอ LCD 'I2C' 16 x 2

ที่นี่มีให้เลือกสองทางเพื่อให้ผู้อ่านสามารถเลือกการออกแบบได้ตามความสะดวก ความแตกต่างหลักระหว่างทั้งสองคือการเชื่อมต่อสายกับโมดูลอะแดปเตอร์ I2C เพียง 4 สาย (Vcc, GND, SCL และ SDA) เป็นสิ่งจำเป็นสำหรับการทำงานของจอแสดงผล LCD ในขณะที่ไม่มีอะแดปเตอร์ I2C คุณต้องใช้สายไฟหลายเส้นเพื่อเชื่อมต่อระหว่าง Arduino และจอแสดงผล LCD

อย่างไรก็ตามทั้งสองฟังก์ชั่นเหมือนกันทุกประการบางคนชอบ I2C มากกว่าแบบเดิมและบางส่วนชอบในทางกลับกันดังนั้นนี่คือการออกแบบทั้งสองแบบ

มาดูการออกแบบ LCD แบบเดิม:

แผนภูมิวงจรรวม:

arduino, จอ LCD 16 x 2 และโพเทนชิออมิเตอร์ 10K สำหรับปรับความคมชัดของจอแสดงผล LCD

ในแผนผังข้างต้นเรามี arduino, จอ LCD 16 x 2 และโพเทนชิออมิเตอร์ 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

โมดูลนี้สามารถบัดกรีได้โดยตรงที่ด้านหลังของจอ LCD 16 x 2 หรือ 20 x 4 ตามปกติและทำตามแผนผัง

และอีกครั้งโปรดดูส่วนก่อนหน้าสำหรับการเชื่อมต่อโหลดเซลล์เครื่องขยายสัญญาณโหลดเซลล์และ 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

การได้รับปัจจัยการสอบเทียบได้อธิบายไว้ในส่วนก่อนหน้าข้างต้น

ฟังก์ชัน Tare:

ฟังก์ชัน Tare ในเครื่องชั่งน้ำหนักคือการนำการอ่านค่าเป็นศูนย์ ตัวอย่างเช่นถ้าเรามีตะกร้าสำหรับใส่สินค้าน้ำหนักสุทธิจะเป็นน้ำหนักของตะกร้า + น้ำหนักของสินค้า

ถ้าเรากดปุ่มภาชนะกับตะกร้าบนโหลดเซลล์ก่อนที่จะโหลดสินค้าน้ำหนักของตะกร้าจะถูกละเลยและเราสามารถวัดน้ำหนักของสินค้าเพียงอย่างเดียว

หากคุณมีคำถามใด ๆ เกี่ยวกับวงจรเครื่องชั่งน้ำหนัก LCD ที่ใช้ Arduino นี้โปรดแสดงความคิดเห็นในส่วนความคิดเห็นคุณอาจได้รับคำตอบอย่างรวดเร็ว




คู่ของ: วงจรโซลิดสเตตคอนแทคสำหรับปั๊มมอเตอร์ ถัดไป: วิธีสร้าง Step Down Transformers