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




โดย นาย ประมุข แก้วภักดี (holl_007@hotmail.com) สาขาวิศวกรรมแมคคาทรอนิกส์ ภาควิชาครุศาสตร์เครื่องกล มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ     Download Simulink Model File (proj06_alcohol_tester.7z)   หลักการและเหตุผล การตายและการบาดเจ็บของประชาชนในช่วงเทศกาลอันเนื่องมาจากการขาดสติจากการดื่มสุราแล้วมาขับรถซึ่งส่งผลให้เกิดความเสียหายอย่างมากมายโดยคนที่เดือดร้อนมักเป็นคนที่ไม่ได้เกี่ยวข้องซึ่งทำให้เกิดการสูญเสียต่างๆเช่น ทรัพย์สิน เสียชีวิต เป็นคนพิการเป็นต้นโดยมีสาเหตุจากการเมาสุราแล้วขับรถยนต์ จากเหตุนี้ทางผู้จัดทำจึงเห็นความเสียหายจากการเมาแล้วขับจึงได้ทำการประดิษฐ์เครื่องตรวจจับปริมาณแอลกอฮอล์เพื่อให้สามารถตรวจวัดปริมาณของแอลกอฮอล์ของผู้ขับได้โดยยึดตามปริมาณแอลกอฮอล์ที่กฎหมายกำหนดคือ 50 มิลลิกรัมซึ่งเครื่องนี้จะสามารถลดจำนวนของผู้ที่เมาแล้วขับรถยนต์ได้จำนวนหนึ่งได้แล้วสามารถลดอุบัติเหตุจากการเมาแล้วขับได้ คุณสมบัติของเครื่องตรวจจับปริมาณแอลกอฮอล์ สามารถตรวจจับปริมาณแอลกอฮอล์ได้ มีสัญญาณเตือนเมื่อปริมาณแอลกอฮอล์เกิน50มิลลิกรัม แสดงปริมาณแอลกอฮอล์ผ่านทางหน้าจอLCD การต่อวงจรสำหรับเครื่องตรวจจับปริมาณแอลกอฮอล์ ส่วนประกอบของวงจรประกอบไปด้วย บอร์ดMicrocontroller STM32F4 ชุดเซนเซอร์วัดปริมาณแอลกอฮอล์… 

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

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

 

 

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

ความคิดเห็น

บทความที่ได้รับความนิยม