ข้ามไปที่เนื้อหาหลัก

โครงงานเครื่องวัดส่วนสูงแบบดิจิตอล ( งานที่ 4)


โครงงานเครื่องวัดส่วนสูงแบบดิจิตอล

รูปที่ 1 รูปภาพงานจริง
รูปที่ 1 รูปภาพงานจริง
หมายเลข 1 เซ็นเซอร์วัดระยะทางอัลตราโซนิค HC-sr04
หมายเลข 2 จอ LCD 16 ตัวอักษร 2 บรรทัด
หมายเลข 3 บอร์ด STM32F401VG
หมายเลข 4 บอร์ดแปลงไฟ 220 V ให้เป็น +5 และ GND
หมายเลข 5 USB ต่อบอร์ด STM32F401VG กับ คอมพิวเตอร์
หมายเลข 6 12 V dc Adapter
หมายเลข 7 เสาใช้ติดเซ็นเซอร์สูง 180 Cm
หมายเลข 8 หมวก เพื่อสร้างพื้นที่เรียบให้เซนเซอร์เกิดการสะท้อน
Contents [show]

ที่มาและความเป็นมาของโครงงาน เครื่องวัดส่วนสูงแบบดิจิตอล

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

คุณสมบัติการทำงานของโครงงาน เครื่องวัดส่วนสูงแบบดิจิตอล

  1. สามารถวัดส่วนสูงตั้งแต่ 50 Cm – 178 Cm
  2. แสดงผลผ่านจอ LCD 16 ตัวอักษร 2 บรรทัด

หลักการทำงานของเซ็นเซอร์วัดระยะทางอัลตราโซนิค HC-sr04

การทำงานของ Ultrasonic sensor อุปกรณ์นี้เริ่มต้นทำงานโดยการส่งสัญญาณเริ่มต้นยาว 10 ไมโครวินาที ไปสั่งให้แหล่งกำเนิดเสียงทำงาน จากนั้นจะส่งคลื่นเสียงความถี่ 40 kHz ออกไป 8 พัสส์ แล้วรอฟังเสียงสะท้อนครับ ตัวซ้ายจะเป็นตัวส่งคลื่นเสียงออกไป ส่วนตัวขวาในรูปจะเป็นตัวรับความถี่ที่สะท้อนกลับมา
KMUTNBProj014_002
 เนื่องจากเสียงที่ส่งออกไปถึงแม้จะไม่ได้ยินเพราะเกิน 20 kHZ ที่หูมนุษย์จะรับฟังได้ แต่เนื่องจากยังคงเป็นคลื่นเสียง ดังนั้นความเร็วของเสียงจึงแปรผันตามอุณหภูมิด้วยตามสูตรนี้
C ≈ 331.5 + 0.61 θ (m/s)
ดังนั้นเวลาผู้ผลิตเขียนโปรแกรมออกแบบไว้ก็อยู่ที่อุณภูมิทำงานที่อาจจะแตกต่างจากบ้านเรา ก็ทำให้ค่าที่วัดได้มีความผิดพลาดไปบ้าง
อีกส่วนที่จะต้องรู้ก็คือช่วงวัด และมุมที่สามารถวัดได้ และเนื่องจากคุณสมบัติของอุปกรณ์ที่ใช้ในการกำเนิดเสียง และรูปร่างของตัวลำโพง (Horn) ก็ทำให้อุปกรณ์ตัวนี้มีมุมวัด 15 องศา (Measuring Angle)โดยสามารถวัดระยะห่างได้ตั้งแต่ 2 ซม. จนถึง 4 เมตร
KMUTNBProj014_003

วิธีการใช้งานของเซ็นเซอร์วัดระยะทางอัลตราโซนิค HC-sr04

ตัว Ultrasonic sensor มีอยู่ด้วยกัน 4 pin คือ VCC GND Trig และ Echo
  • VCC ต่อที่ขา 4
  • GND ต่อที่ขา 7
  • Trig ต่อที่ขา 5
  • Echo ต่อที่ขา 6
ตัว VCC จะถูกใช้เป็นตัวควบคุมการเริ่มทำงาน หรือ หยุดทำงานของอุปกรณ์ จากนั้นสัญญาณเริ่มต้นในการปล่อยพัลส์จะถูกส่งไปที่ ขา Trig และ สัญญาณ Echo จะถูกส่งกลับไปที่ตัว บอร์ด STM32F401VG เพื่อคำนวณระยะทางต่อไป

หลักการทำงานของเครื่องวัดส่วนสูงแบบดิจิตอล

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

การนำไปใช้งานของเครื่องวัดส่วนสูงแบบดิจิตอล

1. เสียบ 12 V DC Adapter
KMUTNBProj014_004
2. ไปยืนในช่องของท่อ ( ช่องพื้นที่เป็นรูปสี่เหลียมผืนผ้าให้อยู่ใต้เซนเซอร์ ) ยืนตรง
KMUTNBProj014_005
3. สวมหมวกที่ให้มา ( เพื่อสร้างพื้นที่เรียบให้เซนเซอร์เกิดการสะท้อน )
KMUTNBProj014_006
4. ส่วนสูงจะแสดงออกที่จอ LCD
KMUTNBProj014_007
5. หากส่วนสูงไม่แสดงให้กดปุ่ม Reset หนึ่งครั้ง
KMUTNBProj014_008

วงจรการต่อวงจรที่สมบูรณ์ของโครงงาน เครื่องวัดส่วนสูงแบบดิจิตอล

รูปที่ 2 วงจรสมบูรณ์
รูปที่ 2 วงจรสมบูรณ์

วงจรการต่อวงจรที่สมบูรณ์ของโครงงาน เครื่องวัดส่วนสูงแบบดิจิตอล

จากวงจรข้างต้นนั้นจากบอร์ด STM32F407VG จะจ่าย Trig จากขา PD12 ให้เซ็นเซอร์ และรับค่าที่วัดได้จากเซ็นเซอร์เข้าที่ขา PB1 และนำมาเจนเนอเรทค่าผ่านโปรแกรม MATLAB และแสดงผลออกทางจอ LCD
และส่วนประกอบวงจรประกอบไปด้วย
  1. บอร์ด STM32F401VG
  2. จอ LCD 16 ตัวอักษร 2 บรรทัด
  3. เซ็นเซอร์วัดระยะทาง อัลตราโซนิค HC-sr04

โปรแกรม MATLAB ที่สมบูรณ์ของ เครื่องวัดส่วนสูงแบบดิจิตอล

รูปที่ 3 โปรแกรม MATLAB ของโครงงานเครื่องวัดส่วนสูงแบบดิจิตอล
รูปที่ 3 โปรแกรม MATLAB ของโครงงานเครื่องวัดส่วนสูงแบบดิจิตอล

โปรแกรม MATLAB ที่ใช้ทั้งหมดในโครงงาน เครื่องวัดส่วนสูงแบบดิจิตอล

1.เป็นการกำหนดการใช้บอร์ดว่าเราจะใช้บอร์ด Waijung 13.06
KMUTNBProj014_011
2.เป็นการกำหนดการจ่าย Pulse ให้ขา PD12 เพื่อไปจ่าย Trigger ให้เซนเซอร์
KMUTNBProj014_012
3.กำหนดว่าบรรทัดที่ 1 ให้แสดงอะไรและในที่นี้ให้แสดงคำว่า “Altitude”
KMUTNBProj014_013
4.เป็น output จาก Function – call
KMUTNBProj014_014
5.กำหนดว่าบรรทัดที่2 ให้แสดงอะไรและในที่นี้ให้แสดงค่าของ mycount ( เป็นประเภท int32 )
KMUTNBProj014_015
6.เขียนข้อมูลของ Line1 และ Line2 ลงจอ LCD เพื่อแสดงผล
KMUTNBProj014_016
7.ประกาศว่าจะใช้จอ LCD และประกาศ Line 1 (แสดงบรรทัดที่ 1) , Line 2 (แสดงบรรทัดที่ 2)
KMUTNBProj014_017
8.บล็อกนี้ใช้เพื่อสร้างการขัดจังหวะเวลาที่ไม่ตรงกัน โดยใช้ Function – call
KMUTNBProj014_0189.
KMUTNBProj014_019
ใน Function – call ดังนี้
9.1 รับค่าจากเซ็นเซอร์เข้าขา PB1 เพื่อเป็น Input ให้ฟังชันก์ M-file
KMUTNBProj014_020
9.2 กำหนดค่าเพื่อเป็น Input ให้ฟังชันก์ M-file
KMUTNBProj014_021
9.3 Output ฟังชันก์ M-file กำหนดให้ชื่อว่า mycount
KMUTNBProj014_0229.4  KMUTNBProj014_023 ฟังก์ชัน  M-file ดังนี้
function y = fcn(u,con)       บรรทัดที่ 1 กำหนด Output เป็น y และ Input เป็น u และ con
persistent cn1;                        บรรทัดที่ 2 ประกาศตัวแปล cn1
persistent cn2;                        บรรทัดที่ 3 ประกาศตัวแปล cn2
persistent flag;                        บรรทัดที่ 4 ประกาศตัวแปล flag
persistent wi;                           บรรทัดที่ 5 ประกาดตัวแปล wi
if isempty(cn1)                       บรรทัดที่ 6 เงื่อนไขที่ 1ตรวจว่า cn1 ว่ามีค่าใดๆหรือไม่
cn1 = 0;                                      บรรทัดที่ 7 กำหนดค่า cn1 ให้เท่ากับ 0
cn2 = 0;                                      บรรทัดที่ 8 กำหนดค่า cn2 ให้เท่ากับ 0
wi = 180;                                    บรรทัดที่ 9 กำหนดค่า wi ให้เท่ากับ 180
end                                               บรรทัดที่ 10 จบเงื่อนไขที่ 1
if isempty (flag)                      บรรทัดที่ 11 เงื่อนไขที่ 2 ตรวจว่า flag ว่ามีค่าใดๆหรือไม่
flag = 0;                                      บรรทัดที่ 12กำหนดค่า flag ให้เท่ากับ 0
end                                                บรรทัดที่ 13 จบเงื่อนไขที่ 2
if (u==1)                                     บรรทัดที่ 14 เงื่อนไขที่ 3 เริ่มนับเมื่อ u=1
cn1 = cn1 + 1;                          บรรทัดที่ 15 cn1 มีค่าเท่ากับ cn1 นับเพิ่มขึ้นที่ละหนึ่ง
if (cn1>=10000)                       บรรทัดที่ 16 ถ้า cn1 มีค่ามากกว่า10000
cn1 = 10000;                        บรรทัดที่ 17 ให้ cn1 มีค่าเท่ากับ 10000
end                                                 บรรทัดที่ 18 จบเงื่อนไขที่ 3
flag = 1;                                       บรรทัดที่ 19 ให้ flag เท่ากับ 1
else                                                   บรรทัดที่ 20 เงื่อนไขที่ 4
if(flag == 1)                                 บรรทัดที่ 21 ถ้า flag มีค่าเท่ากับ 1
cn2 = cn1;                                 บรรทัดที่ 22 ให้ cn2 เท่ากับ cn1
cn1 = 0;                                     บรรทัดที่ 23 กำหนด cn1 เท่ากับ 0 เพื่อ Reset Counter
flag = 0;                                     บรรทัดที่ 24 กำหนดให้
end                                                บรรทัดที่ 25 จบเงื่อนไขถ้า flag เท่ากับ 1
end                                                    บรรทัดที่ 26 จบเงื่อนไขที่ 4
y=int32(wi-a) ;       บรรทัดที่27 บอกว่า y มีค่าเท่ากับ 180 – ( cn2 * ( 100 / 572 ) )

สรุปผลการทำงานของโครงงาน เครื่องวัดส่วนสูงแบบดิจิตอล

เครื่องวัดส่วนสูงแบบดิจิตอลนี้ สามารถวัดส่วนสูงของคนที่สูงตั้งแต่ 50 cm ถึง 178 cm แสดงผลเป็นดิจิตอลผ่านจอ LCD ดังนั้นจึงทำให้ไม่เสียวเวลามากในการวัดส่วนสูง แต่โครงงานนี้สีข้อเสียคือเมื่อเมื่ออากาศเปลี่ยนแปลงค่าของเซนเซอร์ที่วัดได้อาจคาดเคลื่อนเล็กน้อย

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเขียนผังงาน (Flowchart)

(บล็อกที่ 6) การควบคุมหลอดแสดงผล LED 7-Segment