โครงงานเครื่องควบคุมระดับน้ำ (งานที่ 11 )
โครงงานเครื่องควบคุมระดับน้ำ
Contents [show]
หลักการและเหตุผล
เนื่องจากน้ำนั้นเป็นสิ่งสำคัญอย่างยิ่งในการดำรงชีวิตเพื่ออุปโภค บริโภค ทั้งมนุษย์ พืช สัตว์และงานทางด้านอุตสาหกรรม โดยในงานด้านอุตสาหกรรมนั้นส่วนใหญ่จำเป็นต้องใช้น้ำเป็นหลักในการผลิต โดยเฉพาะในเรื่องการควบคุมระดับของน้ำ ซึ่งถ้าเกิดเราไม่สามารถควบคุมระดับน้ำตามที่เราต้องการใช้หรือจำเป็นต้องใช้ได้นั้นอาจทำให้เกิดการสิ้นเปลืองทรัพยากรธรรมชาติอย่างไร้ประโยชน์
จากเหตุข้างต้นนี้ทางผู้จัดทำจึงได้มีแนวคิดริเริ่มทำ เครื่องควบคุมระดับ เพื่อควบคุมระดับน้ำให้ใช้ในปริมาณตามจุดประสงค์ที่เราต้องการ นอกจากนี้ยังสามารถแสดงผลการวัดเกณฑ์ของระดับน้ำและเตือนเมื่อมีเกณฑ์ของระดับน้ำเกินค่าจากที่เรากำหนด
จากเหตุข้างต้นนี้ทางผู้จัดทำจึงได้มีแนวคิดริเริ่มทำ เครื่องควบคุมระดับ เพื่อควบคุมระดับน้ำให้ใช้ในปริมาณตามจุดประสงค์ที่เราต้องการ นอกจากนี้ยังสามารถแสดงผลการวัดเกณฑ์ของระดับน้ำและเตือนเมื่อมีเกณฑ์ของระดับน้ำเกินค่าจากที่เรากำหนด
แนวคิดในการออกแบบ
เราเลือกขนาดถังบรรจุน้ำที่เราต้องการและเลือกใช้เซ็นเซอร์ จากหลักการของน้ำคือ ยิ่งน้ำมีมากความดันในน้ำนั้นย่อมสูงตาม จึงเลือกใช้เซ็นเซอร์ความดัน ซึ่งจะติดไว้ใต้ถังน้ำ และนำวาล์วเปิดน้ำมาต่อใต้ถังเช่นกัน มอเตอร์ปั๊มน้ำนั้นจะปั๊มน้ำจากถังสำรองเข้าทางด้านบนของถัง การควบคุมมอเตอร์นั้นเราจะใช้สัญญาณ PWM ในการควบคุม การเขียนโปรแกรมนั้นเราจะนำค่าจะเซ็นเซอร์ มาเทียบกับแรงดันไฟฟ้า และเทียบค่าให้เป็นเซนติเมตร เมื่อค่าของเซ็นเซอร์มีค่าน้อยจะทำให้ สัญญาณ PWM สั่งมอเตอร์ทำงาน ถ้าค่าเซ็นเซอร์มีค่าเกินกว่าแรงดันไฟฟ้าที่เราตั้งไว้ จะทำให้หยุดจ่ายสัญญาณ PWM
คุณสมบัติของเครื่องควบคุมระดับน้ำ
- สามารถควบคุมระดับน้ำให้อยู่ในปริมาณที่ต้องการได้
- เมื่อมีน้ำเกินระดับที่เราต้องการจะมีเสียงเตือนและหลอดไฟเตือน
- สามารถควบคุมสัญญาณที่จ่ายเข้ามอเตอร์ได้
- แสดงปริมาณน้ำในถังผ่านทางหน้าจอ LCD
การต่อวงจรสำหรับวงจรควบคุมระดับน้ำ
ส่วนประกอบของวงจรประกอบไปด้วย
- บอร์ด STM32F407VG
- Pressure Sensor
- มอเตอร์ปั้มน้ำ
- สวิตซ์ตัดต่อสัญญาณ PWM
- สายไฟโยง
การต่อใช้งานของวงจรนี้จะประกอบเข้าไปกับชุดควบคุมระดับน้ำ โดยการโยงสายนั้นจะนำสัญญาณเซ็นเซอร์ เข้าตัวต้านทานประค่าได้ เพื่อค่าลดแรงดันเซ็นเซอร์สูงสุดไม่ให้เกิน 3.3V ก่อนต่อเข้าที่บอร์ด STM32 ขา PA1 และนำสัญญาณ PWM จากบอร์ด STM32 ขา PB15 เข้าชุดควบคุมระดับน้ำ เพื่อควบคุมมอเตอร์ปั๊มน้ำ
โปรแกรม 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
อธิบายโค๊ด
function y = fcn(u) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u เป็น input
y = (u-35)*1.538461538; เป็นการเทียบบัญญัติไตรยางศ์ ให้เซ็นเซอร์มีค่าตั้งแต่ 0-100
end
function y = fcn(u) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u เป็น input
y = (u-35)*1.538461538; เป็นการเทียบบัญญัติไตรยางศ์ ให้เซ็นเซอร์มีค่าตั้งแต่ 0-100
end
อธิบายโค๊ด
function y = fcn(u) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u เป็น input
y = u/4 เป็นการนำค่าที่ได้มาหาร 4 เพื่อให้มีค่าตั้งแต่ 0-25 cm
end
function y = fcn(u) เป็นการประกาศให้ฟังค์ชัน y เป็น output และ u เป็น input
y = u/4 เป็นการนำค่าที่ได้มาหาร 4 เพื่อให้มีค่าตั้งแต่ 0-25 cm
end
อธิบายโค๊ด
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
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
อธิบายโค๊ด
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
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
อธิบายโค๊ด
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
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
หลักการทำงาน
นำสัญญาณเซ็นเซอร์ ออกจากชุดควบคุมเข้าตัวต้านทานปรับค่าได้เพื่อให้แรงกันไฟฟ้าไม่เกิน และนำสัญญาณเข้าบอร์ด STM32 ขา PA1 และนำสัญญาณ PWM ออกจากบอร์ด STM32 ขา PB15 และกดปุ่มเพื่อทำการเปิดปิดสัญญาณ
การควบคุมระดับน้ำนั้นเราจะควบคุมแรงดันไฟฟ้าโดยการแบ่งแรงดันและเราค่าแรงดันเข้าบอร์ด STM32 ขา PA3
เมื่อเราทำการตั้งค่าแรงดันไฟฟ้าและกดปุ่มจ่ายสัญญาณเข้ามอเตอร์ จะทำให้น้ำไหลเข้าปั๊มน้ำจะไหลเข้าทางด้านบนของถังน้ำ และมีวาล์วระบายน้ำออก
ตัวอย่างการควบคุมระดับน้ำที่ 5,15,25 cm
ความคิดเห็น
แสดงความคิดเห็น