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

โครงงานเครื่องควบคุมระดับน้ำ (งานที่ 11 )


โครงงานเครื่องควบคุมระดับน้ำ


Image 012
Contents [show]

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

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

แนวคิดในการออกแบบ

เราเลือกขนาดถังบรรจุน้ำที่เราต้องการและเลือกใช้เซ็นเซอร์ จากหลักการของน้ำคือ ยิ่งน้ำมีมากความดันในน้ำนั้นย่อมสูงตาม จึงเลือกใช้เซ็นเซอร์ความดัน ซึ่งจะติดไว้ใต้ถังน้ำ และนำวาล์วเปิดน้ำมาต่อใต้ถังเช่นกัน มอเตอร์ปั๊มน้ำนั้นจะปั๊มน้ำจากถังสำรองเข้าทางด้านบนของถัง การควบคุมมอเตอร์นั้นเราจะใช้สัญญาณ PWM ในการควบคุม การเขียนโปรแกรมนั้นเราจะนำค่าจะเซ็นเซอร์ มาเทียบกับแรงดันไฟฟ้า และเทียบค่าให้เป็นเซนติเมตร เมื่อค่าของเซ็นเซอร์มีค่าน้อยจะทำให้ สัญญาณ PWM สั่งมอเตอร์ทำงาน ถ้าค่าเซ็นเซอร์มีค่าเกินกว่าแรงดันไฟฟ้าที่เราตั้งไว้ จะทำให้หยุดจ่ายสัญญาณ PWM

คุณสมบัติของเครื่องควบคุมระดับน้ำ

  1. สามารถควบคุมระดับน้ำให้อยู่ในปริมาณที่ต้องการได้
  2. เมื่อมีน้ำเกินระดับที่เราต้องการจะมีเสียงเตือนและหลอดไฟเตือน
  3. สามารถควบคุมสัญญาณที่จ่ายเข้ามอเตอร์ได้
  4. แสดงปริมาณน้ำในถังผ่านทางหน้าจอ LCD

การต่อวงจรสำหรับวงจรควบคุมระดับน้ำ

Image 001
ภาพที่ 1 วงจรเครื่องควบคุมระดับน้ำ

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

  1. บอร์ด STM32F407VG
  2. Pressure Sensor
  3. มอเตอร์ปั้มน้ำ
  4. สวิตซ์ตัดต่อสัญญาณ PWM
  5. สายไฟโยง
การต่อใช้งานของวงจรนี้จะประกอบเข้าไปกับชุดควบคุมระดับน้ำ โดยการโยงสายนั้นจะนำสัญญาณเซ็นเซอร์ เข้าตัวต้านทานประค่าได้ เพื่อค่าลดแรงดันเซ็นเซอร์สูงสุดไม่ให้เกิน 3.3V ก่อนต่อเข้าที่บอร์ด STM32 ขา PA1 และนำสัญญาณ PWM จากบอร์ด STM32 ขา PB15 เข้าชุดควบคุมระดับน้ำ เพื่อควบคุมมอเตอร์ปั๊มน้ำ

โปรแกรม Simulink ของเครื่องควบคุมระดับน้ำ

ภาพที่ 2 โปรแกรม Simulink ของเครื่องควบคุมระดับน้า หมา
ภาพที่ 2 โปรแกรม Simulink ของเครื่องควบคุมระดับน้า
หมา
  • หมายเลข 1 เป็นการประกาศว่าโปรแกรมนี้ใช้กับ บอร์ด STM32F4-DISCOVERY
  • หมายเลข 2 การประกาศว่าใช้ฟังก์ชั่นการแสดงผลทางจอ LCD
  • หมายเลข 3 การประกาศตัวแปล Line1 (บรรทัดที่ 1 ของจอ LCD)
  • หมายเลข 4 การประกาศตัวแปล Line2 (บรรทัดที่ 2 ของจอ LCD)
  • หมายเลข 5 การรับค่าดิจิตอลเข้ามายังบอร์ดโดยใช้ค่า PA1,PA3
  • หมายเลข 6 การรับค่าเพื่อไปแสดงขอมูลบรรทัดที่1
  • หมายเลข 7 การรับค่าเพื่อไปแสดงขอมูลบรรทัดที่2
  • หมายเลข 8 การส่งสัญญาณดิจิตอลออกไปให้หลอดไฟที่ขา PB1
  • หมายเลข 9 การส่งสัญญาณดิจิตอลออกไปให้ลำโพงที่ขา PE5
  • หมายเลข 10 การส่งสัญญาณดิจิตอลออกไปให้มอเตอร์ที่ขาPB15

การทำงานของโปรแกรม

โปรแกรมจะทำการรับค่าแรงดันจากเซ็นเซอร์และเซ็ตพ่อยซึ่งเป็นสัญญาณ Analog ดังนั้นเราจึงต้องแปลงค่าเป็นดิจิตอลโดยเทียบ100/4095 จากนั้นจะเข้าโปรแกรมMathlab function เพื่อทำให้ค่าเซ็นเซอร์สูงสุด คือ 100 และต่ำสุดคือ 0 แต่เนื่องจากเซ็นเซอร์มีค่าเริ่มต้นไม่เท่ากับ 0 เราจึงจำเป็นต้องเทียบบัญญัติไตรยางศ์ เพื่อให้ค่าที่ได้มีค่าสูงสุด คือ 100 และต่ำสุดคือ 0 และนำค่าจากเซ็นเซอร์และเซ็ตพ่อยนำไปหาร 4 เพื่อให้ได้ค่าระดับน้ำสูงสุด 25 cm และต่ำสุด 0 จากนั้นเราค่าจากเซ็นเซอร์และเซ็ตพ่อยมาเปรียบเทียบกันโดยตั้งเงื่อนไขว่า ถ้าค่าเซ็นเซอร์มีค่าน้อยกว่าเซ็ตพ่อยให้ส่งสัญญาณ PWM ออกไป 100% และเมื่อน้ำเข้าในถังจนมีค่าระดับที่เราต้องการจะหยุดจ่ายสัญญาณ PWM

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

M-file 1 (ภาพที่ 3 การเทียบบัญญัติไตรยางศ์และลดค่าเซ็นเซอร์เริ่มต้น)
M-file 1 (ภาพที่ 3 การเทียบบัญญัติไตรยางศ์และลดค่าเซ็นเซอร์เริ่มต้น)
อธิบายโค๊ด
function y = fcn(u) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u เป็น input
y = (u-35)*1.538461538; เป็นการเทียบบัญญัติไตรยางศ์ ให้เซ็นเซอร์มีค่าตั้งแต่ 0-100
end

Image 004
M-file 2,3 (ภาพที่ 4 การหารค่าให้ได้ 0-25 cm เพื่อแสดงในหน้าจอ)
อธิบายโค๊ด
function y = fcn(u) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u เป็น input
y = u/4 เป็นการนำค่าที่ได้มาหาร 4 เพื่อให้มีค่าตั้งแต่ 0-25 cm
end

Image 005
M-file 4 (ภาพที่ 5 การเทียบค่าเพื่อควบคุมมอเตอร์)
อธิบายโค๊ด
function y = fcn(u,x) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u,x เป็น input
if (u<x) เงื่อนไขถ้าค่า u (ค่าเซ็นเซอร์) มีค่าน้อยกว่า x (ค่าเซ็ตพ่อย)
y = 100; ให้ y มีค่าเท่ากับ 100
else ถ้าไม่จริง
y = 0; ให้ y มีค่าเท่ากับ 0
end

M-file 5 (ภาพที่ 6 การเทียบค่าเพื่อควบคุมBuzzer)
M-file 5 (ภาพที่ 6 การเทียบค่าเพื่อควบคุมBuzzer)
อธิบายโค๊ด
function y = fcn(u,x) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u,x เป็น input
if (u>x) เงื่อนไขถ้าค่า u (ค่าเซ็นเซอร์) มีค่ามากกว่า x (ค่าเซ็ตพ่อย)
y = 1; ให้ y มีค่าเท่ากับ 1
else ถ้าไม่จริง
y = 0; ให้ y มีค่าเท่ากับ 0
end

M-file 6 (ภาพที่ 7 การเทียบค่าเพื่อควบคุมหลอด LED)
M-file 6 (ภาพที่ 7 การเทียบค่าเพื่อควบคุมหลอด LED)
อธิบายโค๊ด
function y = fcn(u,x) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u,x เป็น input
if (u>x) เงื่อนไขถ้าค่า u (ค่าเซ็นเซอร์) มีค่ามากกว่า x (ค่าเซ็ตพ่อย)
y = 100; ให้ y มีค่าเท่ากับ 100
else ถ้าไม่จริง
y = 0; ให้ y มีค่าเท่ากับ 0
end

หลักการทำงาน

Image 008
นำสัญญาณเซ็นเซอร์ ออกจากชุดควบคุมเข้าตัวต้านทานปรับค่าได้เพื่อให้แรงกันไฟฟ้าไม่เกิน และนำสัญญาณเข้าบอร์ด STM32 ขา PA1 และนำสัญญาณ PWM ออกจากบอร์ด STM32 ขา PB15 และกดปุ่มเพื่อทำการเปิดปิดสัญญาณ
Image 009
การควบคุมระดับน้ำนั้นเราจะควบคุมแรงดันไฟฟ้าโดยการแบ่งแรงดันและเราค่าแรงดันเข้าบอร์ด STM32 ขา PA3
Image 010
เมื่อเราทำการตั้งค่าแรงดันไฟฟ้าและกดปุ่มจ่ายสัญญาณเข้ามอเตอร์ จะทำให้น้ำไหลเข้าปั๊มน้ำจะไหลเข้าทางด้านบนของถังน้ำ และมีวาล์วระบายน้ำออก
ตัวอย่างการควบคุมระดับน้ำที่ 5,15,25 cm
Image 011

ความคิดเห็น

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

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

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

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