งานที่ 9 เครื่องตรวจจับปริมาณแอลกอฮอล์
โดย นาย ประมุข แก้วภักดี (holl_007@hotmail.com) สาขาวิศวกรรมแมคคาทรอนิกส์ ภาควิชาครุศาสตร์เครื่องกล มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ Download Simulink Model File (proj06_alcohol_tester.7z) หลักการและเหตุผล การตายและการบาดเจ็บของประชาชนในช่วงเทศกาลอันเนื่องมาจากการขาดสติจากการดื่มสุราแล้วมาขับรถซึ่งส่งผลให้เกิดความเสียหายอย่างมากมายโดยคนที่เดือดร้อนมักเป็นคนที่ไม่ได้เกี่ยวข้องซึ่งทำให้เกิดการสูญเสียต่างๆเช่น ทรัพย์สิน เสียชีวิต เป็นคนพิการเป็นต้นโดยมีสาเหตุจากการเมาสุราแล้วขับรถยนต์ จากเหตุนี้ทางผู้จัดทำจึงเห็นความเสียหายจากการเมาแล้วขับจึงได้ทำการประดิษฐ์เครื่องตรวจจับปริมาณแอลกอฮอล์เพื่อให้สามารถตรวจวัดปริมาณของแอลกอฮอล์ของผู้ขับได้โดยยึดตามปริมาณแอลกอฮอล์ที่กฎหมายกำหนดคือ 50 มิลลิกรัมซึ่งเครื่องนี้จะสามารถลดจำนวนของผู้ที่เมาแล้วขับรถยนต์ได้จำนวนหนึ่งได้แล้วสามารถลดอุบัติเหตุจากการเมาแล้วขับได้ คุณสมบัติของเครื่องตรวจจับปริมาณแอลกอฮอล์ สามารถตรวจจับปริมาณแอลกอฮอล์ได้ มีสัญญาณเตือนเมื่อปริมาณแอลกอฮอล์เกิน50มิลลิกรัม แสดงปริมาณแอลกอฮอล์ผ่านทางหน้าจอLCD การต่อวงจรสำหรับเครื่องตรวจจับปริมาณแอลกอฮอล์ ส่วนประกอบของวงจรประกอบไปด้วย บอร์ดMicrocontroller STM32F4 ชุดเซนเซอร์วัดปริมาณแอลกอฮอล์…
หลักการและเหตุผล
การตายและการบาดเจ็บของประชาชนในช่วงเทศกาลอันเนื่องมาจากการขาดสติจากการดื่มสุราแล้วมาขับรถซึ่งส่งผลให้เกิดความเสียหายอย่างมากมายโดยคนที่เดือดร้อนมักเป็นคนที่ไม่ได้เกี่ยวข้องซึ่งทำให้เกิดการสูญเสียต่างๆเช่น ทรัพย์สิน เสียชีวิต เป็นคนพิการเป็นต้นโดยมีสาเหตุจากการเมาสุราแล้วขับรถยนต์
จากเหตุนี้ทางผู้จัดทำจึงเห็นความเสียหายจากการเมาแล้วขับจึงได้ทำการประดิษฐ์เครื่องตรวจจับปริมาณแอลกอฮอล์เพื่อให้สามารถตรวจวัดปริมาณของแอลกอฮอล์ของผู้ขับได้โดยยึดตามปริมาณแอลกอฮอล์ที่กฎหมายกำหนดคือ 50 มิลลิกรัมซึ่งเครื่องนี้จะสามารถลดจำนวนของผู้ที่เมาแล้วขับรถยนต์ได้จำนวนหนึ่งได้แล้วสามารถลดอุบัติเหตุจากการเมาแล้วขับได้
คุณสมบัติของเครื่องตรวจจับปริมาณแอลกอฮอล์
- สามารถตรวจจับปริมาณแอลกอฮอล์ได้
- มีสัญญาณเตือนเมื่อปริมาณแอลกอฮอล์เกิน50มิลลิกรัม
- แสดงปริมาณแอลกอฮอล์ผ่านทางหน้าจอLCD
การต่อวงจรสำหรับเครื่องตรวจจับปริมาณแอลกอฮอล์
ส่วนประกอบของวงจรประกอบไปด้วย
- บอร์ดMicrocontroller STM32F4
- ชุดเซนเซอร์วัดปริมาณแอลกอฮอล์
- ชุดเสียงสัญญาณเตือน
- ชุดสวิตซ์Resetค่า(อยู่ภายในบอร์ดSTM32F4)
- ชุดวงจรจอ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ให้ทำงานได้
หลักการทำงาน
การต่อสวิตซ์แบบนี้จะเป็นการต่อแบบ Push Down คือ เมื่อยังไม่กดสวิตซ์ก็จะยังไม่มีแรงดัน 3.3V เข้าบอร์ดหรือเป็น 0 แต่เมื่อทำการกดสวิตซ์จะทำให้มีค่าแรงดัน 3.3V เข้าบอร์ดหรือมีค่าเท่ากับ 1ซึ่งoutputจะต่อกับขาPA0
หลักการทำงาน
ขาที่1จะต่อกับกราวด์ขาที่2จะต่อกับไฟ 5V ขาที่3จะต่อกับ VR เพื่อปรับความเข้มของตัวอักษรและขา4,5,6จะต่อเข้ากับขา PE7,PE8,PE9 ตามลำดับดังรูปและขา 11,12,13,14 จะต่อเข้ากับขาPE12,PE13,PE14,PE15 ตามลำดับดังรูปและขา15จะต่อกับไฟเลี้ยง 5V และ ขา16 จะต่อกับกราวด์
โปรแกรม 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
2.Regular ADC การใช้บล็อกADC เพื่อเป็นการนำข้อมูลออกในบล็อกนี้เราใช้ขา PA2 ไปใช้งาน
3.Digital input เป็นบล็อกสำหรับรับค่าดิจิตอลเข้ามายังบอร์ดโดยใช้ขา PA0 มาใช้งาน
4.Gain เป็นอัตราการขยายเพื่อขยายinputที่เข้ามายังขาของADCเพื่อขยายสัญญาณโดยเราตั้งค่าไว้ที่3.3/4095
5.Discrete Transfer Fcn เป็นบล็อกของLowpass fitter ในรูปของC2Dโดยไว้สำหรับกรองสัญญาณรบกวนของสัญญาณinputโดยตั้งความถี่cutoffไว้ที่10Hz
6.Character LCD Setup เป็นบล็อกสำหรับการตั้งค่าสำหรับเชื่อมต่อกับจอLCD
7.Volatile Data Storage เป็นบล็อกสำหรับการตั้งชื่อและประเภทของชุดข้อมูลที่จะแสดงบนLCDโดยชื่อข้อมูลชุดนี้คือ line1 ประเภทstring
8.Volatile Data Storage1 เป็นบล็อกสำหรับการตั้งชื่อและประเภทของชุดข้อมูลที่จะแสดงบนLCDโดยชื่อข้อมูลชุดนี้คือ line2ประเภทstring
9.Digital output เป็นบล็อกที่กำหนดให้outputเป็นดิจิตอลโดยใช้ค่า PA9 ไปใช้งาน
10.Printf1 เป็นบล็อกที่กำหนดชนิดของตัวเลขของข้อมูลline2ให้แสดงค่าเป็น%f
11.Character LCD Write เป็นบล็อกที่ตั้งค่าหน้าจอของLCD
12.Character LCD Write1 เป็นบล็อกที่ตั้งค่าหน้าจอของLCD
การเขียนโค๊ดM-file
อธิบายโค๊ดในM-file
กราฟที่ใช้ในการcaribrateค่า
1.ทำการหาค่าRS/RLจาสมการแบ่งแรงดัน
2.นำค่าRs/RLมาหาค่าปริมาณแอลกอฮอล์จากสมการเส้นตรง
3.ทำการแปลงหน่วยจากmg/Lเป็นmg/100CCโดยนำค่า Xคูณ10
ตัวอย่างการวัด
เมื่อวัดค่าแรงดันที่ออกจากเซนเซอร์ได้ 4V
1.หาค่าอัตราส่วนRS/RLจากสูตรข้างบน
2.หาค่าความชันกราฟจากสมการ
3.หาค่าปริมาณแอลกอฮอล์
4.ทำการแปลงหน่วยจากmg/Lเป็นmg/100CCโดยนำค่า Xคูณ10
กราฟที่ได้จากการวัดที่แรงดัน 4V
****ค่าความผิดพลาดของเซนเซอร์มีเท่ากับ10-15%
การเขียนบล็อก State-flow ที่1
อธิบายโค๊ดใน State-flow ที่1
Stateแรกจะเป็นการกำหนดoutputให้มีค่าเริ่มต้นเท่ากับศูนย์จากนั้นเมื่อมีการรับค่าก็ให้โปรแกรมทำการหน่วงเวลาในการรับค่าเป็นเวลา5วินาทีเมื่อครบเวลา5วินาทีแล้วก็ให้โปรแกรมไปทำงานในStateทีสองโดยให้แสดงค่าที่รับค่าได้จากเซนเซอร์แล้วทำการโชว์ค่าที่รับได้ผ่านทางจอLCDจากนั้นถ้ามีสัญญาณdata1 เท่ากับ1คือสัญญาณจากการกดสวิตซ์กดติดปล่อยดับก็จากทำการResetหน้าจอให้เท่ากับ 0 จากนั้นก็จะวนไปทำงานที่Stateแรกต่อไป
การเขียนบล็อก State-flow ที่2
อธิบายโค๊ดใน State-flow ที่2
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แรกต่อไป
โครงงานที่เสร็จสมบูรณ์
สรุปผลการทำโครงงาน
จากการที่ทำเครื่องวัดปริมาณแอลกอฮอล์ก็สำเร็จลุล่วงไปด้วยนี้และทำให้ได้ศึกษากับการเขียนโปรแกรมของบอร์ดMicrocontroller STM32F4ได้ดียิ่งขึ้นอุปสรรคที่เกิดขึ้นส่วนใหญ่ที่เกิดขึ้นในการเขียนโปรแกรมคือค่าแรงดันของเซนเซอร์ที่ทำการวัดเมื่อทำการวัดไปแล้วค่าแรงดันของเซนเซอร์จะไม่ลดลงแบบทันทีทันใดโดยค่าแรงดันจะค่อยๆลดลงจึงทำให้ค่าแรงดันไม่นิ่งขณะทำการวัดจึงทำให้การเขียนโปรแกรมเป็นไปได้ยากขึ้น
โครงงานนี้เป็นผลงานของนักศึกษา สาขาวิศวกรรมแมคคาทรอนิกส์ ภาควิชาครุศาสตร์เครื่องกล มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ เนื้อหาในบทความเป็นการออกแบบและความเห็นส่วนตัวของผู้ทำโครงงาน บริษัท เอมเมจิน จำกัด อาจไม่เห็นด้วยเสมอไป
ความคิดเห็น
แสดงความคิดเห็น