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

โครงงานเครื่องตรวจจับปริมาณแอลกอฮอล์ (งานที่ 8 )


โครงงานเครื่องตรวจจับปริมาณแอลกอฮอล์


Contents [show]

หลักการและเหตุผล

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

คุณสมบัติของเครื่องตรวจจับปริมาณแอลกอฮอล์

  1. สามารถตรวจจับปริมาณแอลกอฮอล์ได้
  2. มีสัญญาณเตือนเมื่อปริมาณแอลกอฮอล์เกิน50มิลลิกรัม
  3. แสดงปริมาณแอลกอฮอล์ผ่านทางหน้าจอLCD

การต่อวงจรสำหรับเครื่องตรวจจับปริมาณแอลกอฮอล์

วงจรรวมของเครื่องตรวจจับปริมาณแอลกอฮอล์
วงจรรวมของเครื่องตรวจจับปริมาณแอลกอฮอล์

ส่วนประกอบของวงจรประกอบไปด้วย

  1. บอร์ดMicrocontroller STM32F4
  2. ชุดเซนเซอร์วัดปริมาณแอลกอฮอล์
  3. ชุดเสียงสัญญาณเตือน
  4. ชุดสวิตซ์Resetค่า(อยู่ภายในบอร์ดSTM32F4)
  5. ชุดวงจรจอLCD
การต่อใช้งานของวงจรนี้จะประกอบไปด้วยชุดตัวตรวจจับปริมาณแอลกอฮอล์และชุดส่งสัญญาณเสียงโดยจะต่อชุดตัวตรวจจับปริมาณแอลกอฮอล์เข้าที่บอร์ดSTM32โดยจะนำOutputของชุดตรวจจับปริมาณแอลกอฮอล์เข้าที่ขาPA9ของบอร์ดSTM32และจะนำชุดส่งสัญญาณต่อกับขาPA9ของบอร์ดSTM32เพื่อเป็นInputให้แก่วงจร
วงจรชุดเซนเซอร์ตรวจจับปริมาณแอลกอฮอล์
วงจรชุดเซนเซอร์ตรวจจับปริมาณแอลกอฮอล์
หลักการทำงาน
วงจรจะทำงานได้โดยต้องจ่ายไฟ 5V เข้าไปที่ขา1และขา2ดังรูปในวงจรเพื่อเลี้ยงเซนเซอร์โดยเซนเซอร์จะสามารถจับปริมาณแอลกอฮอล์ได้ตั้งแต่0.1 – 10 mg/Lโดยค่าOutputที่ได้จะเป็นค่าแรงดันตั้งแต่0 – 5Vและขา4และขา5จะเป็นOutputซึ่งจะต่อเข้ากับบอร์ดSTM32F4เข้าที่ขาPA2ดังรูป
วงจรชุดสัญญาณเสียงเตือน
วงจรชุดสัญญาณเสียงเตือน
หลักการทำงาน
วงจรจะทำงานได้เมื่อบอร์ด STM32F4 จ่ายสัญญาณดิจิตอลจากขา PA9 โดยใช้ไป3.3Vไปทำการไบอัสทรานซิสเตอร์โดยการจ่ายไฟเข้าขาbaseทำให้ไฟ 5V ไหลไปยังลำโพงBuzzerให้ทำงานได้
ชุดวงจรสวิตซ์Resetค่า
ชุดวงจรสวิตซ์Resetค่า
หลักการทำงาน
การต่อสวิตซ์แบบนี้จะเป็นการต่อแบบ Push Down คือ เมื่อยังไม่กดสวิตซ์ก็จะยังไม่มีแรงดัน 3.3V เข้าบอร์ดหรือเป็น 0 แต่เมื่อทำการกดสวิตซ์จะทำให้มีค่าแรงดัน 3.3V เข้าบอร์ดหรือมีค่าเท่ากับ 1ซึ่งoutputจะต่อกับขาPA0
วงจรจอLCD
วงจรจอLCD
หลักการทำงาน
ขาที่1จะต่อกับกราวด์ขาที่2จะต่อกับไฟ 5V ขาที่3จะต่อกับ VR เพื่อปรับความเข้มของตัวอักษรและขา4,5,6จะต่อเข้ากับขา PE7,PE8,PE9 ตามลำดับดังรูปและขา 11,12,13,14 จะต่อเข้ากับขาPE12,PE13,PE14,PE15 ตามลำดับดังรูปและขา15จะต่อกับไฟเลี้ยง 5V และ ขา16 จะต่อกับกราวด์

โปรแกรม Simulink ของเครื่องตรวจจับปริมาณแอลกอฮอล์

รูปโปรแกรมsimulinkของเครื่องตรวจจับปริมาณแอลกอฮอล์
รูปโปรแกรมsimulinkของเครื่องตรวจจับปริมาณแอลกอฮอล์

หลักการทำงานของโปรแกรมโดยรวม

โปรแกรมจะทำการรับค่าแรงดันจากเซนเซอร์ซึ่งเป็นสัญญาณ Analog ดังนั้นจึงต้องทำการแปลงค่า Analog เป็นดิจิตอลโดยเทียบจาก3.3/4095จากนั้นก็จะได้สัญญาณดิจิตอลก็จะเข้าไปยังส่วนบล็อกกรองสัญญาณความถี่ต่ำโดยทำการกรองสัญญาณรบกวนโดยตั้งความถี่cutoffไว้ที่10Hzถ้าความถี่ที่ต่ำกว่า10Hzจะสามารถผ่านได้จากนั้นก็จะเข้าไปยังบล็อกของcode M-file เพื่อทำการ calibrate ค่าของเซนเซอร์โดยเทียบจากกราฟใน data sheet ของเซนเซอร์และทำการ offset ค่าแรงดันของเซนเซอร์จากนั้นก็จะไปยังส่วน State-flowที่ 1 โดยการทำงานของบล็อกนี้คือจะทำการหน่วงเวลาในการรับค่าโดยจะหน่วงเวลาไว้ที่5วินาทีเมื่อครบ5วินาทีแล้วก็ทำการรับค่ามา1ค่าตามค่าที่เซนเซอร์วัดได้แล้วจะทำการค้างค่าแล้วจากนั้นก็จะนำค่าที่วัดได้นั้นไปแสดงบนจอLCDแล้วส่งค่าไปยังบล็อก State-flow ที่2เพื่อทำการเข้าเงื่อนไขโดยถ้าปริมาณแอลกอฮอล์อยู่ค่าระหว่าง 10.00-50.00มิลลิกรัมจะทำให้บอร์ดส่งสัญญาณดิจิตอลออกไปเป็นเวลา0.5วินาทีแล้วจึงหยุดจ่ายสัญญาณแต่ถ้ามีปริมาณแอลกอฮอล์มากกว่า50.00มิลลิกรัมบอร์ดก็จะส่งสัญญาณดิจิตอลออกไปเป็นเวลา5วินาทีจึงหยุดจึงทำให้มีสัญญาณเสียงเตือนออกเป็นสองเสียงจากนั้นเมื่อต้องการวัดค่าแอลกอฮอล์ใหม่อีกครั้งให้กดสวิตซ์resetเพื่อทำการresetค่าเก่าทิ้งเพื่อทำการวัดใหม่

ส่วนประกอบต่างๆภายในSimulink

1.Target Setup เป็นตัวบอกชนิดของmicrocontrollerเพื่อใช้ติดต่อกับMCU STM32F4
Image 007
2.Regular ADC การใช้บล็อกADC เพื่อเป็นการนำข้อมูลออกในบล็อกนี้เราใช้ขา PA2 ไปใช้งาน
Image 008
3.Digital input เป็นบล็อกสำหรับรับค่าดิจิตอลเข้ามายังบอร์ดโดยใช้ขา PA0 มาใช้งาน
Image 009
4.Gain เป็นอัตราการขยายเพื่อขยายinputที่เข้ามายังขาของADCเพื่อขยายสัญญาณโดยเราตั้งค่าไว้ที่3.3/4095
Image 010
5.Discrete Transfer Fcn เป็นบล็อกของLowpass fitter ในรูปของC2Dโดยไว้สำหรับกรองสัญญาณรบกวนของสัญญาณinputโดยตั้งความถี่cutoffไว้ที่10Hz
Image 011
6.Character LCD Setup เป็นบล็อกสำหรับการตั้งค่าสำหรับเชื่อมต่อกับจอLCD
Image 012
7.Volatile Data Storage เป็นบล็อกสำหรับการตั้งชื่อและประเภทของชุดข้อมูลที่จะแสดงบนLCDโดยชื่อข้อมูลชุดนี้คือ line1 ประเภทstring
Image 013
8.Volatile Data Storage1 เป็นบล็อกสำหรับการตั้งชื่อและประเภทของชุดข้อมูลที่จะแสดงบนLCDโดยชื่อข้อมูลชุดนี้คือ line2ประเภทstring
Image 014
9.Digital output เป็นบล็อกที่กำหนดให้outputเป็นดิจิตอลโดยใช้ค่า PA9 ไปใช้งาน
Image 015
10.Printf1 เป็นบล็อกที่กำหนดชนิดของตัวเลขของข้อมูลline2ให้แสดงค่าเป็น%f
Image 016
11.Character LCD Write เป็นบล็อกที่ตั้งค่าหน้าจอของLCD
Image 017
12.Character LCD Write1 เป็นบล็อกที่ตั้งค่าหน้าจอของLCD
Image 018

การเขียนโค๊ดM-file

รูปบล็อกของM-file
รูปบล็อกของM-file
อธิบายโค๊ดในM-file

Image 020
กราฟที่ใช้ในการcaribrateค่า
Image 021
1.ทำการหาค่าRS/RLจาสมการแบ่งแรงดัน
Image 022
2.นำค่าRs/RLมาหาค่าปริมาณแอลกอฮอล์จากสมการเส้นตรง
Image 023
3.ทำการแปลงหน่วยจากmg/Lเป็นmg/100CCโดยนำค่า Xคูณ10

ตัวอย่างการวัด

เมื่อวัดค่าแรงดันที่ออกจากเซนเซอร์ได้ 4V
1.หาค่าอัตราส่วนRS/RLจากสูตรข้างบน
Image 024
2.หาค่าความชันกราฟจากสมการ
Image 025
3.หาค่าปริมาณแอลกอฮอล์
Image 026
4.ทำการแปลงหน่วยจากmg/Lเป็นmg/100CCโดยนำค่า Xคูณ10
Image 027
กราฟที่ได้จากการวัดที่แรงดัน 4V
Image 028
****ค่าความผิดพลาดของเซนเซอร์มีเท่ากับ10-15%






การเขียนบล็อก State-flow ที่1

รูปบล๊อก State-flow ที่1
รูปบล๊อก State-flow ที่1
อธิบายโค๊ดใน State-flow ที่1
Image 030
Stateแรกจะเป็นการกำหนดoutputให้มีค่าเริ่มต้นเท่ากับศูนย์จากนั้นเมื่อมีการรับค่าก็ให้โปรแกรมทำการหน่วงเวลาในการรับค่าเป็นเวลา5วินาทีเมื่อครบเวลา5วินาทีแล้วก็ให้โปรแกรมไปทำงานในStateทีสองโดยให้แสดงค่าที่รับค่าได้จากเซนเซอร์แล้วทำการโชว์ค่าที่รับได้ผ่านทางจอLCDจากนั้นถ้ามีสัญญาณdata1 เท่ากับ1คือสัญญาณจากการกดสวิตซ์กดติดปล่อยดับก็จากทำการResetหน้าจอให้เท่ากับ 0 จากนั้นก็จะวนไปทำงานที่Stateแรกต่อไป
การเขียนบล็อก State-flow ที่2
รูปบล็อก State-flow ที่2
รูปบล็อก State-flow ที่2
อธิบายโค๊ดใน State-flow ที่2
Image 032
Stateแรกจากตั้งค่าเริ่มต้นโดยให้Buzzerเป็น0คือไม่มีการทำงานจากนั้นเมื่อโปรแกรมรับค่าปริมาณแอลกอฮอล์เข้ามาก็จะทำการแยกเป็นสองเงื่อนไขโดยเงื่อนไขแรงถ้าปริมาณแอลกอฮอล์มีค่าอยู่ระหว่าง10-50มิลลิกรัมโปรแกรมก็จะสั่งให้Buzzer Onคือให้มีค่าเท่ากับ1โปรแกรมก็จะส่งสัญญาณดิจิตอลออกไปเป็นเวลา0.5วินาทีเมื่อครบเวลา0.5วินาทีแล้วก็จะสั่งให้Buzzer Offคือให้มีค่าเท่ากับ0นั้นเองแต่ถ้าเมื่อวัดปริมาณแอลกอฮอล์แล้วเข้าเงื่อนไงที่สองคือมีปริมาณแอลกอฮอล์มากกว่า50มิลลิกรัมโปรแกรมก็จะสั่งให้Buzzer Onคือให้มีค่าเท่ากับ1โปรแกรมก็จะส่งสัญญาณดิจิตอลออกไปขับลำโพงBuzzerเป็นเวลา5วินาทีแล้วเมื่อโปรแกรมทำงานครบ5วินาทีแล้วก็จะหยุดจ่ายสัญญาณดิจิตอลทำให้Buzzer Offหรือมีค่าเท่ากับ0จากนั้นถ้ากดสวิตซ์Resetก็จะส่งสัญญาณดิจิตอลเข้ามายังinput data1เมื่อdata1เท่ากับ1ก็ไปทำงานยังstate resetให้Buzzer Off จากนั้นก็จะวนไปยังstateแรกต่อไป
โครงงานที่เสร็จสมบูรณ์
ภาพรวมของโครงงาน
ภาพรวมของโครงงาน
หน้าจอLCDขณะยังไม่มีการวัดแอลกอฮอล์
หน้าจอLCDขณะยังไม่มีการวัดแอลกอฮอล์
แอลกอฮอล์ที่ใช้ในการทดลองวัดค่า
แอลกอฮอล์ที่ใช้ในการทดลองวัดค่า
รูปขณะทำการวัดแบบเจือจางในอากาศ
รูปขณะทำการวัดแบบเจือจางในอากาศ
ค่าที่วัดได้แบบเจือจางในอากาศ
ค่าที่วัดได้แบบเจือจางในอากาศ
รูปขณะทำการวัดแบบจ่อโดยตรง
รูปขณะทำการวัดแบบจ่อโดยตรง
ค่าที่ได้จากการจ่อวัดแบบโดยตรง
ค่าที่ได้จากการจ่อวัดแบบโดยตรง

สรุปผลการทำโครงงาน

จากการที่ทำเครื่องวัดปริมาณแอลกอฮอล์ก็สำเร็จลุล่วงไปด้วยนี้และทำให้ได้ศึกษากับการเขียนโปรแกรมของบอร์ดMicrocontroller STM32F4ได้ดียิ่งขึ้นอุปสรรคที่เกิดขึ้นส่วนใหญ่ที่เกิดขึ้นในการเขียนโปรแกรมคือค่าแรงดันของเซนเซอร์ที่ทำการวัดเมื่อทำการวัดไปแล้วค่าแรงดันของเซนเซอร์จะไม่ลดลงแบบทันทีทันใดโดยค่าแรงดันจะค่อยๆลดลงจึงทำให้ค่าแรงดันไม่นิ่งขณะทำการวัดจึงทำให้การเขียนโปรแกรมเป็นไปได้ยากขึ้น


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

ความคิดเห็น

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

(บล็อกที่ 9). code รถบังคับจากแผ่นซีดี ควบคุมด้วยแอพแอนดรอยด์

โครงงานเครื่องรดน้ำต้นไม้อัตโนมัติ (งานที่ 6)

( บล็อกที่ 2 )โปรเจค หุ่นยนต์เดินตามเส้น 4 เซ็นเซอร์ Arduino + L298P