- เครื่องชั่ง Arduino ทำงาน
- ส่วนประกอบที่จำเป็นสำหรับเครื่องชั่งน้ำหนักที่ใช้ Arduino
- เครื่องชั่งที่ใช้ Arduino - แผนภาพวงจร
- สร้างวงจรบน Perfboard แบบจุด
- การสร้างสิ่งที่แนบมาสำหรับเครื่องชั่งที่ใช้ Arduino
- เครื่องชั่ง Arduino - รหัส
เครื่องชั่งน้ำหนักดิจิตอลเป็นอีกหนึ่งความมหัศจรรย์ของวิศวกรรมและการออกแบบสมัยใหม่ ใช่เรากำลังพูดถึงเครื่องชั่งน้ำหนักที่เรามักเห็นในร้านขายของชำและสถานที่อื่น ๆ ส่วนใหญ่ แต่คุณเคยสงสัยหรือไม่ว่าเครื่องชั่งน้ำหนักทำงานอย่างไร? เพื่อตอบคำถามนั้นในโครงการนี้เราจะดูที่โหลดเซลล์และการทำงาน ในที่สุดเราจะสร้างเครื่องชั่งน้ำหนักที่ใช้ Arduino แบบพกพาด้วยเซ็นเซอร์น้ำหนัก HX711ซึ่งสามารถวัดน้ำหนักได้ถึง 10 กก.
นี้เครื่องชั่งน้ำหนักเหมาะสำหรับร้านค้าในท้องถิ่นที่พวกเขาแพ็ครายการในปริมาณจำนวนมาก เช่นเดียวกับผลิตภัณฑ์เชิงพาณิชย์เครื่องชั่งน้ำหนักของเราจะมีปุ่มศูนย์ที่ทำให้เครื่องชั่งเป็นศูนย์ นอกจากนี้ยังมีตัวเลือกในการตั้งค่าน้ำหนักสำหรับการวัดเมื่อน้ำหนักที่วัดถึงน้ำหนักที่ตั้งไว้เสียงกริ่งจะดังขึ้นอย่างรวดเร็วและหยุดเมื่อน้ำหนักที่ตั้งไว้เท่ากับน้ำหนักที่วัดได้ วิธีนี้ผู้ใช้สามารถบรรจุได้เพียงแค่ได้ยินเสียงและไม่ต้องมองไปที่จอแสดงผล เนื่องจากนี่เป็นโครงการที่ง่ายมากเราจะสร้างสิ่งนี้ได้อย่างง่ายดายโดยใช้ส่วนประกอบเช่น Arduino และโหลดเซลล์แบบวัดความเครียด ดังนั้นโดยไม่รอช้าเรามาดูกันดีกว่า
ในบทความก่อนหน้านี้เราได้ทำโครงการต่างๆเช่น Raspberry Pi Based Weight Sensor และ IoT Smart Container พร้อม Email Alert และ Web Monitoring โดยใช้โมดูลแอมพลิฟายเออร์โหลดเซลล์ HX711 ยอดนิยม ดังนั้นตรวจสอบว่าเป็นความต้องการของคุณหรือไม่
เครื่องชั่ง Arduino ทำงาน
องค์ประกอบหลักของโครงการนี้คือการโหลดเซลล์และHX711 โหลดโมดูลเซลล์เครื่องขยายเสียง อย่างที่คุณเห็นด้านหนึ่งมีเครื่องหมายสิบกิโลกรัม นอกจากนี้คุณสามารถสังเกตเห็นกาวป้องกันสีขาวบางประเภทบนโหลดเซลล์และมีสายไฟสี่สีที่แตกต่างกันออกมาโดยจะเปิดเผยความลับภายใต้กาวป้องกันสีขาวและการทำงานของสายไฟสี่สีเหล่านี้ในบทความต่อไป
โหลดเซลล์เป็นตัวแปลงสัญญาณที่เปลี่ยนแรงหรือความดันเป็นเอาต์พุตไฟฟ้ามันมีสองด้านสมมติว่าด้านขวาและด้านซ้ายและมันทำจากบล็อกอลูมิเนียม อย่างที่คุณเห็นตรงกลางของวัสดุนั้นถูกทำให้บางลงโดยการใส่รูขนาดใหญ่ นั่นคือสาเหตุที่ทำให้เกิดการเสียรูปเมื่อวางโหลดที่ด้านยึด ตอนนี้ลองนึกภาพว่าเซลล์ด้านขวาติดตั้งอยู่ที่ฐานและด้านซ้ายเป็นที่วางโหลดการกำหนดค่านี้จะทำให้โหลดเซลล์ของสเตรนเกจเสียรูปเนื่องจากมีรูขนาดใหญ่ตรงกลาง
เมื่อวางโหลดที่ด้านโหลดของโหลดเซลล์ส่วนบนสุดจะรับแรงดึงและส่วนล่างจะรับแรงอัด นั่นคือสาเหตุที่แท่งอลูมิเนียมโค้งลงทางด้านซ้าย ถ้าเราวัดการเสียรูปนี้เราสามารถวัดแรงที่กระทำกับบล็อกอลูมิเนียมและนั่นคือสิ่งที่เราจะทำ
ตอนนี้คำถามยังคงมีอะไรอยู่ข้างในกาวป้องกันสีขาว? ภายในกาวป้องกันนี้เราจะพบส่วนประกอบที่ยืดหยุ่นบางมากซึ่งเรียกว่าสเตรนเกจ. สเตรนเกจเป็นส่วนประกอบที่ใช้ในการวัดความเครียด หากเราดูส่วนประกอบนี้ให้ละเอียดขึ้นเราจะเห็นแผ่นเชื่อมต่อสองแผ่นจากนั้นเราจะมีรูปแบบลวดนำไฟฟ้าที่มีการเบี่ยงเบนซ้ำ ๆ ลวดนำไฟฟ้านี้มีความต้านทานที่กำหนดไว้ เมื่อเรางอมันค่าความต้านทานจะเปลี่ยนไป? ดังนั้นด้านหนึ่งของสเตรนเกจจึงถูกติดตั้งและยึดไว้ในสถานที่หากเราวางน้ำหนักไว้ที่อีกด้านหนึ่งของแท่งอะลูมิเนียมสิ่งนี้จะบังคับให้สเตรนเกจโค้งงอซึ่งจะทำให้ความต้านทานเปลี่ยนไป สิ่งนี้เกิดขึ้นจริงได้อย่างไร? รูปแบบการนำไฟฟ้าของมาตรวัดความเครียดทำจากทองแดงลวดนี้จะมีพื้นที่และความยาวที่แน่นอนดังนั้นทั้งสองหน่วยนี้จะให้ความต้านทานของเส้นลวด ความต้านทานของลวดต่อต้านการไหลของกระแส ตอนนี้เห็นได้ชัดว่าถ้าพื้นที่ของเส้นลวดนี้เล็กลงอิเล็กตรอนน้อยลงอาจส่งผ่านได้หมายถึงกระแสไฟฟ้าที่ต่ำกว่า ทีนี้ถ้าเราเพิ่มพื้นที่มันจะเพิ่มความต้านทานของตัวนำ หากใช้แรงบางอย่างกับลวดนี้จะทำให้พื้นที่ยืดออกและจะมีขนาดเล็กลงในเวลาเดียวกันความต้านทานจะเพิ่มขึ้น แต่รูปแบบความต้านทานนี้ต่ำมาก ถ้าเรายืดมาตรวัดความเครียดความต้านทานจะเพิ่มขึ้นและถ้าเราบีบอัดความต้านทานก็จะลดลง ในการวัดแรงเราต้องวัดความต้านทาน การวัดความต้านทานโดยตรงไม่สามารถทำได้จริงเสมอไปเนื่องจากการเปลี่ยนแปลงนั้นน้อยมาก ดังนั้นแทนที่จะวัดความต้านทานเราสามารถวัดแรงดันไฟฟ้าได้อย่างง่ายดาย ดังนั้นในกรณีนี้เราจำเป็นต้องแปลงเอาต์พุตเกจจากค่าความต้านทานเป็นค่าแรงดันไฟฟ้าหากใช้แรงบางอย่างกับลวดนี้จะทำให้พื้นที่ยืดออกและจะมีขนาดเล็กลงในเวลาเดียวกันความต้านทานจะเพิ่มขึ้น แต่รูปแบบความต้านทานนี้ต่ำมาก ถ้าเรายืดมาตรวัดความเครียดความต้านทานจะเพิ่มขึ้นและถ้าเราบีบอัดความต้านทานก็จะลดลง ในการวัดแรงเราต้องวัดความต้านทาน การวัดความต้านทานโดยตรงไม่สามารถทำได้จริงเสมอไปเนื่องจากการเปลี่ยนแปลงนั้นน้อยมาก ดังนั้นแทนที่จะวัดความต้านทานเราสามารถวัดแรงดันไฟฟ้าได้อย่างง่ายดาย ดังนั้นในกรณีนี้เราจำเป็นต้องแปลงเอาต์พุตเกจจากค่าความต้านทานเป็นค่าแรงดันไฟฟ้าหากใช้แรงบางอย่างกับลวดนี้จะทำให้พื้นที่ยืดออกและจะมีขนาดเล็กลงในเวลาเดียวกันความต้านทานจะเพิ่มขึ้น แต่รูปแบบความต้านทานนี้ต่ำมาก ถ้าเรายืดมาตรวัดความเครียดความต้านทานจะเพิ่มขึ้นและถ้าเราบีบอัดความต้านทานก็จะลดลง ในการวัดแรงเราต้องวัดความต้านทาน การวัดความต้านทานโดยตรงไม่สามารถทำได้จริงเสมอไปเนื่องจากการเปลี่ยนแปลงนั้นน้อยมาก ดังนั้นแทนที่จะวัดความต้านทานเราสามารถวัดแรงดันไฟฟ้าได้อย่างง่ายดาย ดังนั้นในกรณีนี้เราจำเป็นต้องแปลงเอาต์พุตเกจจากค่าความต้านทานเป็นค่าแรงดันไฟฟ้าความต้านทานจะลดลง ในการวัดแรงเราต้องวัดความต้านทาน การวัดความต้านทานโดยตรงไม่สามารถทำได้จริงเสมอไปเนื่องจากการเปลี่ยนแปลงนั้นน้อยมาก ดังนั้นแทนที่จะวัดความต้านทานเราสามารถวัดแรงดันไฟฟ้าได้อย่างง่ายดาย ดังนั้นในกรณีนี้เราจำเป็นต้องแปลงเอาต์พุตเกจจากค่าความต้านทานเป็นค่าแรงดันไฟฟ้าความต้านทานจะลดลง ในการวัดแรงเราต้องวัดความต้านทาน การวัดความต้านทานโดยตรงไม่สามารถทำได้จริงเสมอไปเพราะการเปลี่ยนแปลงนั้นน้อยมาก ดังนั้นแทนที่จะวัดความต้านทานเราสามารถวัดแรงดันไฟฟ้าได้อย่างง่ายดาย ดังนั้นในกรณีนี้เราจำเป็นต้องแปลงเอาต์พุตเกจจากค่าความต้านทานเป็นค่าแรงดันไฟฟ้า
เราสามารถทำเช่นนี้ด้วยความช่วยเหลือของสะพาน Wheatstone เราวางมาตรวัดความเครียดในสะพานวีทสโตนหากสะพานสมดุลแรงดันไฟฟ้าที่จุดกลางควรเป็นศูนย์ (ก่อนหน้านี้เราได้สร้างโครงการที่เราได้อธิบายวิธีการทำงานของสะพานวีทสโตนคุณสามารถตรวจสอบได้ว่าต้องการหรือไม่ ทราบข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้) เมื่อมาตรวัดความเครียดเปลี่ยนความต้านทานมันจะทำให้สะพานไม่สมดุลและแรงดันไฟฟ้าก็จะเปลี่ยนไปด้วย นี่คือวิธีที่สะพานวีทสโตนแปลงรูปแบบความต้านทานเป็นค่าแรงดันไฟฟ้า
แต่การเปลี่ยนแปลงแรงดันนี้ยังคงมีขนาดเล็กมากดังนั้นเพื่อเพิ่มที่เราจำเป็นต้องใช้โมดูล HX711 HX711 เป็น ADC แบบดิฟเฟอเรนเชียล 24 บิตด้วยวิธีนี้เราสามารถวัดการเปลี่ยนแปลงของแรงดันไฟฟ้าได้เล็กน้อย จะให้ค่าตั้งแต่ 0 ถึง 2 เลขชี้กำลัง 24
ส่วนประกอบที่จำเป็นสำหรับเครื่องชั่งน้ำหนักที่ใช้ Arduino
เพื่อให้โครงการนี้ง่ายที่สุดเราได้ใช้ส่วนประกอบทั่วไปที่คุณสามารถหาได้จากร้านขายอุปกรณ์งานอดิเรกในพื้นที่ ภาพด้านล่างจะให้แนวคิดเกี่ยวกับส่วนประกอบต่างๆ นอกจากนี้เรายังมีรายการวัสดุ (BOM) ตามรายการด้านล่าง
- โหลดเซลล์ (เราใช้โหลดเซลล์ 10 กก.)
- โมดูลเครื่องขยายเสียง HX 711
- Arduino นาโน
- I2C LCD 16X2 - รองรับ I2C
- ตัวต้านทาน 1k -2 Nos
- ไฟ LED -2Nos
- Buzzer
- PCB ทั่วไป
- แบตเตอรี่ 7.4V (หากคุณต้องการพกพา)
- ตัวควบคุมแรงดันไฟฟ้า LM7805
เครื่องชั่งที่ใช้ Arduino - แผนภาพวงจร
โหลดเซลล์มีสายไฟสี่สายซึ่งมีสีแดงดำเขียวและขาว สีนี้อาจแตกต่างกันไปตามผู้ผลิตดังนั้นจึงควรอ้างอิงจากแผ่นข้อมูล เชื่อมต่อสีแดงกับ E + ของบอร์ด HX711 เชื่อมต่อสีดำกับ E- เชื่อมต่อสีขาวกับ A + และเชื่อมต่อสีเขียวกับ A-, Dout และนาฬิกาของบอร์ดเชื่อมต่อกับ D4 และ D5 ตามลำดับ ต่อปลายด้านหนึ่งของปุ่มกดเข้ากับ D3, D8, D9 และปลายอีกด้านหนึ่งกับพื้น เรามี I2C LCD ดังนั้นให้เชื่อมต่อ SDA เป็น A4 และ SCL ถึง A5 เชื่อมล่างของจอแอลซีดี HX711 และ Arduino กับพื้นยัง VCCs เชื่อมต่อกับ 5Vpin ของArduinoทุกโมดูลทำงานใน 5V ดังนั้นเราจึงได้เพิ่มควบคุมแรงดันไฟฟ้า LM7805 หากคุณไม่ต้องการให้เป็นแบบพกพาคุณสามารถจ่ายไฟให้กับ Arduino ได้โดยตรงโดยใช้สาย USB
สร้างวงจรบน Perfboard แบบจุด
เราได้บัดกรีส่วนประกอบทั้งหมดบนเพอร์บอร์ดแบบจุดทั่วไป เราใช้ส่วนหัวตัวเมียในการประสาน Arduino และ ADC กับแผงวงจรนอกจากนี้เรายังใช้สายไฟเพื่อเชื่อมต่อปุ่มกดและ LED ทั้งหมด หลังจากกระบวนการบัดกรีทั้งหมดเสร็จสิ้นเราได้ตรวจสอบให้แน่ใจว่า 5V ที่เหมาะสมนั้นออกมาจาก LM7805 ในที่สุดเราได้ใส่สวิตช์เพื่อเปิด / ปิดวงจร เมื่อเราทำเสร็จแล้วก็ดูเหมือนภาพด้านล่าง
การสร้างสิ่งที่แนบมาสำหรับเครื่องชั่งที่ใช้ Arduino
อย่างที่คุณเห็นโหลดเซลล์มีเกลียวบางส่วนดังนั้นเราจึงสามารถยึดเข้ากับแผ่นฐานได้ เราจะใช้แผ่นพีวีซีเป็นฐานของเครื่องชั่งของเราในการนั้นเราจะตัดสี่เหลี่ยมขนาด 20 * 20 ซม. และสี่เหลี่ยม 20 * 5 สี่อันจากกระดานพีวีซี จากนั้นใช้กาวแข็งเราติดกาวทุกชิ้นและทำกรงเล็ก ๆ
จำไว้ว่าเราไม่ได้แก้ไขด้านใดด้านหนึ่งเพราะเราต้องวางปุ่มกดไฟ LED และ LCD ไว้ จากนั้นเราใช้กระดานพลาสติกสำหรับด้านบนของเครื่องชั่ง ก่อนที่จะทำการตั้งค่านี้อย่างถาวรเราต้องตรวจสอบให้แน่ใจว่าเรามีพื้นที่เพียงพอจากพื้นถึงโหลดเซลล์ดังนั้นจึงสามารถโค้งงอได้ดังนั้นเราจึงวางสกรูและน็อตไว้ระหว่างโหลดเซลล์และฐานด้วย ตัวเว้นวรรคพลาสติกบางส่วนระหว่างโหลดเซลล์และส่วนบน เราใช้แผ่นพลาสติกทรงกลมเป็นยอดอัจฉริยะ
จากนั้นเราก็วางLCD, LEDและปุ่มกดที่แผงด้านหน้าและทุกอย่างที่เชื่อมต่อด้วยสายไฟที่มีฉนวนยาว หลังจากเสร็จสิ้นขั้นตอนการเดินสายไฟแล้วเราก็ติดแผงด้านหน้าเข้ากับฐานหลักด้วยความเอียงบางส่วนเพื่อให้เราอ่านค่าจาก LCD ได้อย่างง่ายดาย ในที่สุดเราก็แนบสวิตช์หลักที่ด้านข้างของเครื่องชั่งและนั่นคือมัน นี่คือวิธีที่เราสร้างร่างกายสำหรับเครื่องชั่งน้ำหนักของเรา
คุณสามารถออกแบบด้วยไอเดียของคุณได้ แต่อย่าลืมวางโหลดเซลล์ให้เหมือนในภาพ
เครื่องชั่ง Arduino - รหัส
เมื่อเราเสร็จสิ้นขั้นตอนการสร้างสำหรับเครื่องชั่งดิจิทัลแล้วเราจึงสามารถเข้าสู่ส่วนการเขียนโปรแกรมได้ สำหรับการเขียนโปรแกรมอย่างง่ายเราจะใช้ไลบรารี HX711 ไลบรารี EEPROM และไลบรารี LiquidCrystal คุณสามารถดาวน์โหลดไลบรารี HX711 จากที่เก็บ GitHub อย่างเป็นทางการหรือไปที่ เครื่องมือ > รวม ไลบรารี > จัดการ ไลบรารี จากนั้นค้นหาไลบรารีโดยใช้คีย์เวิร์ดHX711หลังจากดาวน์โหลดไลบรารีแล้วให้ติดตั้งลงใน Arduino ide
อันดับแรกเราต้องในการสอบเทียบโหลดเซลล์และร้านค้าที่คุ้มค่าใน EEPROM, ว่าให้ไปที่ ไฟล์> ตัวอย่าง> HX 711_ADC, จากนั้นเลือกรหัสการสอบเทียบก่อนอัปโหลดรหัสให้วางเครื่องชั่งบนพื้นผิวระนาบที่มั่นคง จากนั้นอัปโหลดรหัสไปยัง Arduino และเปิดจอภาพแบบอนุกรม จากนั้นเปลี่ยนอัตราการส่งข้อมูลเป็น 572600 ตอนนี้มอนิเตอร์ขอให้รับน้ำหนักเพื่อที่เราต้องกด t และป้อน
ตอนนี้เราต้องวางน้ำหนักที่ทราบไว้บนเครื่องชั่งในกรณีของฉันนั่นคือ 194gm หลังจากวางน้ำหนักที่ทราบแล้วให้พิมพ์น้ำหนักบนจอภาพอนุกรมแล้วกด Enter
ตอนนี้มอนิเตอร์แบบอนุกรมจะถามคุณว่าคุณต้องการบันทึกค่าใน EEPROM หรือไม่ดังนั้นให้พิมพ์ Y เพื่อเลือกใช่ ตอนนี้เราสามารถดูน้ำหนักบนจอภาพอนุกรม
โค้ดหลักของโปรเจ็กต์นี้ซึ่งเราพัฒนาจากร่างตัวอย่างของไลบรารี HX711 คุณสามารถดาวน์โหลดรหัสของโครงการนี้ได้จากด้านล่าง
ในส่วนการเข้ารหัสก่อนอื่นเราได้เพิ่มทั้งสามไลบรารี ไลบรารี HX711 ใช้สำหรับรับค่าโหลดเซลล์ EEPROM เป็นไลบรารีในตัวของ Arduino ide ซึ่งใช้ในการจัดเก็บค่าใน EEPROM และไลบรารี LiquidCrystal สำหรับโมดูล LCD l2C
# รวม
จากนั้นกำหนดจำนวนเต็มสำหรับพินต่างๆและค่าที่กำหนด ฟังก์ชัน โหลดเซลล์ HX711_ADC ใช้สำหรับตั้งค่า Dout และเข็มนาฬิกา
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; เสื้อยาว; const int Up_buttonPin = 9; const int Down_buttonPin = 8; ลอย buttonPushCounter = 0; ลอย up_buttonState = 0; ลอย up_lastButtonState = 0; ลอย down_buttonState = 0; ลอย down_lastButtonState = 0;
ในส่วนการตั้งค่าก่อนอื่นเราเริ่มต้นมอนิเตอร์แบบอนุกรมนี่เป็นเพียงการดีบักเท่านั้น จากนั้นเรากำหนดโหมดพินปุ่มกดทั้งหมดจะถูกกำหนดเป็นอินพุต ด้วยความช่วยเหลือของฟังก์ชัน Arduino PULL UP เราตั้งค่าพินให้มีค่าตรรกะสูงตามปกติ ดังนั้นเราจึงไม่ต้องการใช้ตัวต้านทานภายนอกใด ๆ สำหรับสิ่งนั้น
pinMode (tpin, INPUT_PULLUP); PinMode (6, เอาท์พุท); PinMode (12, เอาท์พุท); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
โค้ดบรรทัดต่อไปนี้ใช้สำหรับการตั้งค่า I2C LCD ครั้งแรกที่เราแสดงข้อความต้อนรับใช้ LCD.print () ฟังก์ชั่นหลังจากสองวินาทีเราล้างการแสดงผลโดยใช้ lcd.clear () นั่นคือในตอนแรกหน้าจอจะแสดงARDUINO BALANCEเป็นข้อความต้อนรับและหลังจากนั้นสองวินาทีระบบจะล้างและแสดงน้ำหนัก
lcd.init (); LCD.backlight (); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("มาวัดกัน"); ล่าช้า (2000); lcd.clear ();
จากนั้นก็เริ่มที่จะอ่านค่าจากโหลดเซลล์โดยใช้ loadCell.begin () ฟังก์ชั่นหลังจากนั้นเราอ่าน EEPROM สำหรับค่าปรับเทียบที่เราทำอย่างนั้นโดยใช้ EEPROM.get () ฟังก์ชั่น นั่นคือเราเก็บค่าไว้แล้วโดยใช้แบบร่างการปรับเทียบในที่ อยู่EEPROMเราก็เอาค่านั้นกลับคืน
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
ในส่วนวงแรกที่เราตรวจสอบว่าข้อมูลใด ๆ จากโหลดเซลล์ที่มีอยู่ใช้ LoadCell.update ()ถ้ามีเราอ่านและเก็บข้อมูลนั้นการที่เราจะใช้ LoadCell.getData () ต่อไปเราต้องแสดงค่าที่เก็บไว้ใน LCD จะทำอย่างไรที่เราใช้ LCD.print () ฟังก์ชั่น นอกจากนี้เรายังพิมพ์น้ำหนักชุดชุดน้ำหนักคือการตั้งค่าด้วยความช่วยเหลือของเคาน์เตอร์ปุ่มกดที่อธิบายในส่วนสุดท้าย
ถ้า (LoadCell.update ()) newDataReady = true; ถ้า (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("ตั้งค่า wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("น้ำหนัก:"); lcd.setCursor (9, 1); lcd.print (ผม); lcd.setCursor (14, 1); lcd.print ("GM");
ต่อไปเราจะตั้งค่า tare ก่อนอื่นเราอ่านสถานะของปุ่มกดน้ำหนักโดยใช้ ฟังก์ชัน digitalRead () ถ้าสถานะต่ำเราจะลดน้ำหนักนั้นให้เป็นศูนย์ ฟังก์ชัน Tareของเครื่องชั่งน้ำหนักนี้คือทำให้การอ่านค่าเป็นศูนย์ ตัวอย่างเช่นถ้าเรามีชามที่ใส่ของแล้วน้ำหนักสุทธิจะเป็นน้ำหนักของชาม + น้ำหนักของสิ่งของ ถ้าเรากดปุ่มภาชนะกับชามบนโหลดเซลล์ก่อนที่จะโหลดสิ่งของน้ำหนักของตะกร้าจะถูกลบล้างและเราสามารถวัดน้ำหนักของสิ่งของเพียงอย่างเดียวได้
ถ้า (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
ตอนนี้เราจำเป็นต้องตั้งเงื่อนไขสำหรับการบ่งชี้ต่างๆเช่นการตั้งค่าความล่าช้าของเสียงกริ่งและสถานะไฟ led เราทำโดยใช้ if เงื่อนไขเรามีทั้งหมดสามเงื่อนไข ขั้นแรกให้คำนวณความแตกต่างระหว่างน้ำหนักที่ตั้งไว้และน้ำหนักที่วัดได้จากนั้นเก็บค่านั้นไว้ในตัวแปร k
ลอย k = buttonPushCounter-i;
1.หากความแตกต่างระหว่างน้ำหนักที่ตั้งไว้และน้ำหนักที่วัดได้มากกว่าหรือเท่ากับ 50gms เสียงกริ่งจะส่งเสียงบี๊บด้วยความล่าช้า 200 มิลลิวินาที (ช้าๆ)
ถ้า (k> = 50) { digitalWrite (6, HIGH); ล่าช้า (200); digitalWrite (6, ต่ำ); ล่าช้า (200); }
2.หากความแตกต่างระหว่างน้ำหนักที่ตั้งไว้และน้ำหนักที่วัดได้ต่ำกว่า 50 และมากกว่า 1 กรัมเสียงกริ่งจะดังขึ้นพร้อมกับหน่วงเวลา 50 มิลลิวินาที (เร็วกว่า)
ถ้า (k <50 && k> 1) { digitalWrite (6, HIGH); ล่าช้า (50); digitalWrite (6, ต่ำ); ล่าช้า (50); }
3.เมื่อน้ำหนักที่วัดได้เท่ากับหรือมากกว่าค่าที่ตั้งไว้สิ่งนี้จะเปิดไฟ LED สีเขียวและปิดเสียงกริ่งและไฟ LED สีแดง
ถ้า (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, สูง); }
เรามีฟังก์ชันโมฆะอีกสองฟังก์ชัน () สำหรับกำหนดน้ำหนักที่ตั้งไว้ (สำหรับการนับการกดปุ่ม)
ฟังก์ชั่นเพิ่มค่าที่ตั้งไว้ 10gms สำหรับการกดแต่ละครั้ง ทำได้โดยใช้ฟังก์ชัน digitalRead ของ Arduino หากพินอยู่ในระดับต่ำนั่นหมายถึงกดปุ่มและจะเพิ่มค่าขึ้น 10gms
up_buttonState = digitalRead (Up_buttonPin); ถ้า (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter + 10; }
ในทำนองเดียวกัน
checkdown คือการลดค่าที่ตั้งไว้ 10gms สำหรับการกดแต่ละครั้ง
down_buttonState = digitalRead (Down_buttonPin); ถ้า (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = buttonPushCounter - 10; }
นี่คือจุดสิ้นสุดของส่วนการเขียนโปรแกรม
เครื่องชั่งอิเล็กทรอนิกส์ที่ใช้ Arduino นี้เหมาะสำหรับการวัดน้ำหนักสูงสุด 10 กก. (เราสามารถเพิ่มขีด จำกัด นี้ได้โดยใช้โหลดเซลล์ที่ได้รับการจัดอันดับที่สูงขึ้น) แม่นยำ 99% สำหรับการวัดดั้งเดิม
หากคุณมีคำถามใด ๆ เกี่ยวกับวงจรเครื่องชั่งน้ำหนัก LCD ที่ใช้ Arduino โปรดโพสต์ไว้ในส่วนความคิดเห็นขอบคุณ!