วันเสาร์ที่ 21 กรกฎาคม พ.ศ. 2561

โปรเจค โครงงานแสดงระดับน้ำผ่านโทรศัพท์มือถือ Android 08

1

โครงงานแสดงระดับน้ำผ่านโทรศัพท์มือถือ Android

1
22
ที่มาและความเป็นมาของโครงงานแสดงระดับน้ำผ่านโทรศัพท์มือถือ Android
ปัจจุบันเทคโนโลยีและนวัตกรรมต่างๆมีมากมายให้ได้ใช้งาน ไม่ว่าจะเป็นด้านเทคโนโลยีการสื่อสารที่มีผู้คนใช้งานเป็นจำนวณมากซึ่งก็คือโทรศัพท์มือถือ ระบบปฎิบัติการในการใช้งานของโทรศัพท์มือถือส่วนใหญ่ที่นำมาใช้นั้นก็คือ ระบบปฏิบัติการ Android จึงทำให้โทรศัพท์มือถือมีความสำคัญและทำให้การติดต่อสื่อสารนั้นง่ายและสะดวกยิ่งขึ้นและยังเป็นที่นิยมในการนำมาพัฒนาในรูปแบบของแอปพลิเคชั่นต่างๆ เพื่อให้ผู้ใช้สามารถนำไปใช้ให้ตรงกับความต้องการของตนเอง ดังนั้นจึงมีแนวคิดที่ว่าจะนำมาใช้กับสิ่งประดิษฐ์ที่รวมกับโทรศัพท์มือถือมาใช้ในการควบคุมการทำงานต่างๆ
จากแนวความคิดเหล่านี้รวมไปถึงนำโครงงานของรุ่นพี่มาพัฒนาต่อยอดเพิ่มขึ้นจากโครงงานควบคุมระดับน้ำให้กลายเป็นโครงงานแสดงระดับน้ำผ่านโทรศัพท์มือถือ Android  โดยหลักการทำงานคือให้โทรศัพท์มือถือ Android นั้นดูค่าระดับน้ำที่เราต้องการ พร้อมทั้งจะส่งสัญญาณเตือนเมื่อเกณฑ์ของระดับน้ำเกินค่าที่เรากำหนดโดยเป็นสัญญาณเสียงออกมา
คุณสมบัติการทำงานของโครงงาน
–  สามารถแสดงระดับน้ำผ่านโทรศัพท์มือถือในระบบปฏิบัติการ Android
–  การรับข้อมูลของระดับน้ำผ่านระบบไร้สายแบบ Bluetooth
–  แสดงผลบนมือถือและหน้าจอ LCD
–  ใส่ค่าระดับน้ำได้สูงสุด 25 เซนติเมตร
 
วงจรโดยรวมของโครงงานแสดงระดับน้ำผ่านโทรศัพท์มือถือ Android
3

4

ส่วนประกอบสาคัญภายในวงจร
5
ส่วนที่ 1 ขาที่ใช้ของบอร์ดSTM32F4 Discoveryนำอุปกรณ์มาต่อตามหมายเลขขาที่เราใช้งานโดยมีขาที่ใช้งานคือ PA3,PA5,PB1,PB15,PD8,PD9,PE5
ส่วนที่ 2 อุปกรณ์ในการแสดงสถานะ โดยจะใช้บัสเซอร์ บัสเซอร์จะเป็นตัวส่งสัญญาณเตือนเมื่อมีระดับน้ำที่เกิน
ลิมิตที่ตั้งไว้
ส่วนที่ 3 อุปกรณ์รับ-ส่งข้อมูลผ่านบลูทูธ โดยจะเป็นตัวรับข้อมูลจาก STM32F4 Discovery มาแสดงผลบนโทรศัพท์มือถือในระบบปฎิบัติการ Android โดยจะแสดงเป็นระดับที่ตั้งไว้และระดับที่วัดได้
ส่วนที่ 4 ตัวต้านทานปรับค่าได้ จะมีทั้งหมด 2 ตัวคือ
1.ตัวต้านทานสำหรับปรับแรงดันของ Sensor โดยการนำสัญญาณเซนเซอร์เข้าตัวต้านทานปรับค่าได้เพื่อลดแรงดันของเซนเซอร์สูงสุดไม่ให้เกิน 3.3V ก่อนต่อเข้าที่บอร์ดที่ขาPA3และนำสัญญาณ PWM จากขาPB15 เข้าชุดควบคุมระดับน้ำเพื่อควบคุมมอเตอร์ปั๊มน้ำในถัง
2.ตัวต้านทานสำหรับปรับระดับของน้ำโดยการนำสัญญาณจากขา PA5เข้าตัวต้านทานปรับค่าได้เพื่อ-ลดระดับน้ำตามความต้องการของผู้ใช้งาน
ส่วนประกอบวงจรประกอบไปด้วย
  1. บอร์ด STM32F4 DISCOVERY
  2. บอร์ดบลูทูธ HC-06
  3. บอร์ดแหล่งจ่าย 5VDC
  4. บอร์ด Buzzer
  5. Pressure Sensor
  6. มอเตอร์ปั๊มน้ำ
  7. จอ LCD 16X4
โปรแกรม Simulink ที่สมบูรณ์ของโครงงานแสดงระดับน้ำผ่านโทรศัพท์มือถือ Android
6
ส่วนที่ 1
7
ประกอบด้วย
       – Target Setup ;เป็นการเรียกใช้เพื่อรองรับการใช้บอร์ด STM32F4 Discovery
– Character LCD Setup ;ใช้ในการตั้งค่าสำหรับจอแสดงผล LCD
– Volatile Data Storage ;เป็นการประกาศตัวแปรโดยเก็บไว้เป็นตัวแปร Line1 และ Line2
– UART Setup ;ใช้ในการตั้งค่า Port ในการสื่อสารโดยเป็นการรับ – ส่งข้อมูล
ส่วนที่ 2
8
ประกอบด้วย
       -Regular  ADC ; ใช้ในการรับค่าเซนเซอร์เข้ามาที่ขา PA3 และตัวต้านทานสำหรับเพิ่ม-ลดระดับน้ำต่อไปที่ขา PA5 ซึ่งเป็นสัญญาณAnalog
– Gain ; เป็นตัวแปลงค่าเป็นดิจิตอลโดยนำไปเทียบ100/4095แล้วนำเข้าMatlab functionเพื่อทำให้ค่าเซนเซอร์นั้นสูงสุดคือ100และต่ำสุดคือ0ซึ่งเนื่องจากเซนเซอร์มีค่าเริ่มต้นที่ไม่ใช่ 0จึงนำไปเทียบบัญญัติไตรยางศ์ให้ค่าสูงสุดที่ 100 และต่ำสุดที่0 แล้วนำทั้งสองค่าไปหารด้วย 4 เพื่อให้ได้ค่าสูงสุดคือ 25 และต่ำสุดที่ 0 จากนั้นนำค่าทั้งสองเปรียบเทียบกันโดยตั้งเงื่อนไขว่าถ้าค่าเซนเซอร์น้อยกว่าค่าระดับน้ำที่กำหนดให้ส่งสัญญาณ PWM ออกไป 100% และเมื่อน้ำเข้าในถังจนมีระดับที่ต้องการจะหยุดจ่ายสัญญาณ PWM
ส่วนที่ 3,4
9
ประกอบด้วย
       – String Buffer Progress ;เป็นการรับข้อมูลมาเก็บไว้ในตัวแปร Line1 และ Line2 เพื่อนำไปใช้แสดงผลบนจอ LCD
 ส่วนที่ 5
10
ประกอบด้วย
       – Volatile Data Storage Read ;เป็นตัวอ่านข้อมูลที่เก็บไว้ใน Line1 และ Line2
       – Character LCD Write ;เป็นตัวนำข้อมูลไปเขียนบนจอ LCD ในแต่ละบรรทัด
       – Constant ;เป็นการกำหนดในตัวอักษรหรือตัวเลขต่างๆโดย xpos,yposแสดงในตำแหน่งตามต้องการและcmdเป็นตัวกำหนดการนำค่านั้นค้างไว้หรือไม่
ส่วนที่ 6
 12
ประกอบด้วย
       – Data type Conversion; เป็นการแปลงข้อมูล โดยข้อมูลที่รับมาจะเป็น double จึงต้องผ่านการแปลงให้เป็น Single เพื่อที่จะทำให้ชนิดข้อมูลให้เหมือนกันจึงสามารถใช้งานได้ในการแสดงผลบนโทรศัพท์มือถือ Android จะนำข้อมูลที่อยู่ในวงกลมสีแดงตามภาพ

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

14
อธิบายโค๊ด
function y = fcn(u)   //เป็นการประกาศให้ฟังค์ชั่น y เป็น output และ u เป็น input
y = u/4;                 //นำค่า u ไปหาร 4 เพื่อให้ได้ค่าตั้งแต่ 0-25 Cm
15
อธิบายโค๊ด
function y = fcn(u))   //เป็นการประกาศให้ฟังค์ชั่น y เป็น output และ u เป็น input
y = u/4;                    //นำค่า u ไปหาร 4 เพื่อให้ได้ค่าตั้งแต่ 0-25 Cm
16
อธิบายโค๊ด
function y = fcn(u,x)  //เป็นการประกาศให้ฟังค์ชั่น y เป็น output และ u,xเป็น input
if (u>x)                    //เงื่อนไขถ้าค่า u (Sensor) มีค่าน้อยกว่ำ x (ค่าระดับน้ำที่กำหนด)
y = 100;              //ให้ y= 100
else                       //ถ้าไม่จริง
y = 0;                // ให้ y =0
17
อธิบายโค๊ด
function y = fcn(u,x)  //เป็นการประกาศให้ฟังค์ชั่น y เป็น output และ u.xเป็น input
if (u>x)                    //เงื่อนไขถ้าค่ำ u (Sensor) มีค่าน้อยกว่ำ x (ค่าระดับน้ำที่กำหนด)
y = 1;                 //ให้ y= 100
else                       //ถ้าไม่จริง
y = 0;                // ให้ y =0
18
อธิบายโค๊ด
function y = fcn(u,x)  //เป็นการประกาศให้ฟังค์ชั่น y เป็น output และ u,xเป็น input
if (u<x)                    //เงื่อนไขถ้าค่า u (Sensor) มีค่าน้อยกว่ำ x (ค่าระดับน้ำที่กำหนด)
y = 100;               //ให้ y= 100
else                       //ถ้าไม่จริง
y = 0;                // ให้ y =0

หลักการทำงานของโครงงาน
     1.นำแหล่งจ่าย 12VDC ต่อเข้าบอร์ดแปลงแหล่งจ่าย โดยจะแปลงแหล่งจ่ายจาก 12VDC เป็น 5VDC แล้วทำการเปิด Switch เพื่อทำการเปิดใช้งาน
19
     2.นำบลูทูธและBuzzer มาต่อเข้า Socket ในการนำไปใช้งาน
20
      3.นำเซนเซอร์ มาต่อเข้าที่ช่อง Sensor แล้วทำการ Calibrate Sensor แรงดันที่ทำให้วัดระดับน้ำได้สูงสุด 25 Cm และนำสัญญาณ PWM ไปใช้งานในการขับมอเตอร์ปั๊มน้ำ
21
     4.ทำการเชื่อมต่อบลูทูธในการดูค่าระดับน้ำบนมือถือ
23

     5.ปรับตัวต้านทานปรับค่าได้ให้ได้ระดับน้ำตามที่เราต้องการ
24
     6.จากนั้นทำการกด Switch เพื่อทำการจ่ายสัญญาณให้กับมอเตอร์เพื่อให้มอเตอร์ปั๊มน้ำทำงาน
25

ผลจากการทดลองปรับค่าระดับน้ำ

26
27
สรุปผลการทดลอง
เมื่อทำการปรับตัวต้านทานปรับค่าได้ที่ใช้ในการปรับค่าระดับน้ำนั้นแล้ว ทำการกดปุ่มเพื่อทำการจ่ายสัญญาณ PWM เพื่อให้มอเตอร์ทำการปั๊มน้ำขึ้นมา จากนั้นระดับน้ำก็จะนำน้ำเข้ามาและรักษาระดับให้มีค่าให้มีค่าใกล้เคียงกันกับระดับน้ำที่ตั้งเอาไว้ และนำค่าที่ได้นำมาแสดงบนโทรศัพท์มือถือว่ามีระดับน้ำที่เท่าใด และเมื่อทำการลดระดับน้ำลง น้ำก็จะรักษาระดับให้ได้ตามที่ลดค่าลงมาพร้อมทั้งแสดงผลบนโทรศัพท์มือถือด้วยเช่นกัน
 http://aimagin.com/

โปรเจค โครงงาน ชุดเปลี่ยนสีหลอดไฟ LED RGB แสดงผลผ่าน LCD 07

KMUTNBProj16_015_aa

โครงงาน ชุดเปลี่ยนสีหลอดไฟ LED RGB แสดงผลผ่าน LCD

KMUTNBProj16_001

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

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

คุณสมบัติการทำงานของโครงงาน

  • สามารถเลือกใช้สีได้ 7 สี ตามต้องการ
  • สวิตซ์แต่ละตัวจะควบคุมสีแต่ละสี เช่น สีแดง,สีน้ำเงิน และ สีเขียว เป็นต้น
  • มีการบอกสถานะว่าสีอะไรที่ติดอยู่

การต่อวงจรสำหรับวงจรควบคุมหลอดไฟ LED RGB

รูปที่ 2 วงจรสมบูรณ์
รูปที่ 2 วงจรสมบูรณ์

การต่อหลอดไฟ LED RGB

รูปที่ 3 : วงจรการต่อหลอดไฟ LED RGB
รูปที่ 3  วงจรการต่อหลอดไฟ LED RGB
รูปที่ 4 สัญลักษณ์หลอดไฟ LED
รูปที่ 4 สัญลักษณ์หลอดไฟ LED
จากวงจรสมบูรณ์ ในรูปที่ 2 เมื่อดูเฉพาะในส่วนของการต่อหลอดไฟ LED RGB ดังรูปที่ 3 หลอดไฟชนิดนี้จะมีทั้งหมด 4 ขา ประกอบไปด้วย ขา R , ขาไฟ (+) , ขา G และ ขา B ดังรูปที่ 4 การต่อวงจรการใช้งานในส่วนของหลอด LED RGB ใช้หลอดไฟจานวน 16 หลอดโดยที่การต่อหลอดไฟเป็นการต่อแบบขนานเพื่อให้หลอดไฟมีความสว่างอย่างสม่ำเสมอ และที่ขาหลอดไฟ ขา (+) จะต่อเข้ากับไฟตรง +5V ส่วนอีก 3 ขาที่เหลือ ขา R (สีแดง) จะต่อเข้ากับพอร์ต PD5 ของบอร์ด STM32F4 , ขา G (สีเขียว) จะต่อเข้ากับพอร์ต PD3 ของบอร์ด STM32F4 และ ขา B (สีน้ำเงิน) จะต่อเข้ากับพอร์ต PD1ของบอร์ด STM32F4 โดยการจ่ายสัญญาณจากบอร์ด STM32F4 เพื่อมาเข้าที่หลอดไฟ จะเลือกเป็น Open Drain เพื่อจ่ายเป็น Ground ออกมาเนื่องจากหลอดไฟนี้เป็นแบบ Common Anode (+)

หลักการทำงานของ หลอดไฟ LED RGB

การทำงานของหลอดไฟ LED RGB ชนิดนี้เป็นแบบ Common Anode (+) คือหลอดไฟชนิดนี้จะมีไฟบวกรออยู่แล้วเหลือเพียงแต่มีกราวน์มาทริกส์มันเท่านั้นไฟก็จะติด โดยที่หลอดไฟชนิดนี้จะแตกต่างจากหลอดอื่น ๆ ตรงที่หลอดไฟชนิดนี้สามารถติดแล้วดับได้ในทันทีเมื่อทำการจ่ายไฟหรือจ่ายกราวน์ให้

การต่อสวิตซ์กดติด-ปล่อยดับ

รูปที่ 5 วงจรการต่อสวิตซ์
รูปที่ 5 วงจรการต่อสวิตซ์
จากวงจรสมบูรณ์ ในรูปที่ 2 เมื่อดูเฉพาะในส่วนของการต่อสวิตซ์ ตามรูปที่ 5 ของวงจรประกอบไปด้วยสวิตซ์กดติด-ปล่อยดับ 7 ตัว โดยสวิตซ์จะมีไฟเลี้ยง +3V จ่ายไฟทั้ง 7 ตัว และขาอีกด้านของสวิตซ์กดติด-ปล่อยดับ ทั้ง 7 ตัวนี้ จะต่อเข้ากับกับบอร์ด STM32F4 โดยขาที่ใช้สำหรับต่อสวิตซ์ประกอบไปด้วยขา PA14 , PC11 , PA13 , PE6 , PE5 , PC3 และ PA1 ตามลาดับ โดยการต่อสวิตซ์นี้จะเลือกการทำงานเป็นแบบ Pull Down คือเมื่อมีการกดสวิตซ์ก็จะมีสัญญาณมาทริกที่ขาที่กาหนดไว้ทั้ง 7 ขาเมื่อต่อแล้วจะได้ดังรูปที่ 6
รูปที่ 6 การต่อสวิตซ์กดติด – ปล่อยดับ ทั้ง 7 ตัว
รูปที่ 6 การต่อสวิตซ์กดติด – ปล่อยดับ ทั้ง 7 ตัว

หลักการทำงานของสวิตซ์กดติด-ปล่อยดับ

สวิตซ์กดติด-ปล่อยดับนี้มีหลักการคือเมื่อมีการกดสวิตซ์ลงก็จะมีแรงดันไฟออกมา แต่เมื่อไม่มีการกดสวิตซ์ก็จะไม่มีอะไรเกิดขึ้นไม่ว่าจะเป็นสัญญาณหรือแรงดันไฟ โดยในโครงงานชิ้นนี้เลือกใช้สวิตซ์ชนิดนี้เนื่องจากมีราคาไม่แพงและสามารถหาได้ง่าย โดยการนำมาใช้งานร่วมกับบอร์ด STM32 นี้ จะกำหนดเป็น Pull Down เนื่องจากเมื่อมีการกดสวิตซ์แล้วให้มีสัญญาณเป็น 0 และเมื่อไม่มีการกดจะกำหนดให้สัญญาณเป็น 1 ตามเงื่อนไขที่ได้กาหนดไว้ใน Function

การต่อจอแสดงผล LCD แบบ 20×4

รูปที่ 7 วงจรการต่อจอ LCD
รูปที่ 7 วงจรการต่อจอ LCD
จากวงจรสมบูรณ์ในรูปที่ 2 เมื่อดูเฉพาะในส่วนของการต่อจอแสดง LCD ตามรูปที่ 7 จอนี้เป็นแบบ 20×4 คือ มี 20 ตัวอักษร และมี 4 แถว การต่อคือจะเห็นว่ามีขาที่ต้องต่อทั้งหมด 16 ขา แต่จะต่อแค่ 12 ขา โดยใน 3 ขา แรกนั้นจะต่อเข้ากับตัว VR เพื่อใช้ปรับความสว่างของหน้าจอ LCD และจะต่อขา 4,5,6,11,12,13 และ 14 ของจอ เข้ากับ พอร์ต PE7 , PE8 , PE9 , PE12 , PE13 , PE14 และ PE15 ของบอร์ด STM32F4 เมื่อต่อเสร็จก็จะได้จอการแสดงผลตามรูปที่ 8
รูปที่ 8 จอ LCD แสดงการทางาน
รูปที่ 8 จอ LCD แสดงการทางาน

ส่วนประกอบของวงจร

ส่วนประกอบของวงจกร ประกอบไปด้วย
  1. บอร์ด STM32F4
  2. สวิตซ์กดติด -ปล่อยดับ 7 ตัว
  3. หลอด LED RGB 16 หลอด
  4. จอแสดง LCD แบบ 20×4
  5. ตัว VR สาหรับปรับความสว่างของจอ LCD

โปรแกรม Simulink ที่สมบูรณ์ของโครงงาน

รูปที่ 9 โครงสร้างการเขียนโปรแกรมของโครงงาน
รูปที่ 9 โครงสร้างการเขียนโปรแกรมของโครงงาน
การเขียนโปรแกรมจะเป็นการรับค่าจากสวิตซ์กดติด-ปล่อยดับ ทั้ง 7 ตัว คือ PA14, PC11, PA13, PE6, PE5, PC3 และ PA1 โดยสวิตซ์จะรับค่าเป็น 0 เนื่องจากว่าใช้เป็น Pull Down โดยเมื่อมีการกดสวิตซ์เกิดขึ้นก็จะส่งสัญญาณ ไปเข้าที่ Function 7 เพื่อเข้าเงื่อนไขที่ตั้งไว้ทั้ง 7 กรณี ถัดมาเมื่อมีการกดแล้วก็จะเข้าเงื่อนไขใดเงื่อนไขหนึ่ง ทางฝั่ง Output ทั้งสามก็คือ RGB ในที่นี้ได้กำหนดขาที่ใช้ คือ ขา PD5 , PD3 และ PD1 ตามลำดับ จนทำให้ไฟติดตามเงื่อนไขที่ตั้งไว้และในส่วนของจอแสดงผล LCD นั้นเมื่อมีการกดปุ่มใดปุ่มหนึ่งก็จะไปเข้า Function ทั้ง 7 บล็อกให้มีค่าเป็น 1 เนื่องจากรับค่าจากสวิตซ์เป็น 0 เพื่อที่จะนำไปเข้าบล็อก LCD จากนั้นก็จะไปโชว์ค่าตามที่ได้ตั้งไว้ คือ บรรทัดแรกจะเป็นสถานะ “STATUS” และบรรทัดที่ 3 ก็จะเป็นชื่อสีที่ติดอยู่ เช่น RED , GREEN , BLUE เป็นต้น ซึ่งทั้งนี้ค่าที่จะแสดงก็ขึ้นอยู่กับการเลือกกดปุ่มสวิตซ์ด้วย แต่ถ้าไม่มีการกดสวิตซ์เลยก็จะแสดงว่า “NOT COLOR”

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

โค๊ตในบล็อก Function 7
KMUTNBProj16_010

โค๊ดในบล็อก Function ถึง Function 6
KMUTNBProj16_011

การทำงานของโครงงาน

รูปที่ 10 แสดงการทำงานขณะยังไม่มีการกดสวิตซ์
รูปที่ 10 แสดงการทำงานขณะยังไม่มีการกดสวิตซ์
รูปที่ 11 แสดงการทำงานขณะกดสวิตซ์ตัวที่ 2
รูปที่ 11 แสดงการทำงานขณะกดสวิตซ์ตัวที่ 2
รูปที่ 12 แสดงการทางานขณะกดสวิตซ์ตัวที่ 3
รูปที่ 12 แสดงการทำงานขณะกดสวิตซ์ตัวที่ 3
รูปที่ 13 แสดงการทำงานขณะกดสวิตซ์ตัวที่ 4
รูปที่ 13 แสดงการทำงานขณะกดสวิตซ์ตัวที่ 4
เมื่อต่อไฟจาก USBเข้ากับบอร์ด และ จ่ายไฟเข้าที่แหล่งจ่ายไฟ 3.3V และ 5V แล้วเมื่อยังไม่มีการกดสวิตซ์ที่หน้าจอ LCD ก็จะแสดง STATUS ว่า NOT COLOR ดังรูปที่ 10 และเมื่อมีการกดสวิตซ์ปุ่มใดปุ่มหนึ่งเช่น กดสวิตซ์ตัวที่ 2 ซึ่งจะเข้าเงื่อนไขที่ตั้งไว้ทำให้หลอดไฟ LED ติดเป็นสีเขียว และที่จอ LCD ก็จะแสดงสถานะว่า “GREEN”ดังรูปที่ 11 เช่นเดียวกันเมื่อมีการกดสวิตซ์ตัวที่ 3 หลอด LED ก็จะติดเป็นสีแดง และที่หน้าจอ LCD ก็จะปรากฏสถานะว่า “RED” ขึ้นตามรูปที่ 12 และถ้ากดสวิตซ์ตัวที่ 4 ที่หลอด LED ก็จะติดเป็นสีฟ้าและที่หน้าจอ LCD ก็จะแสดงว่า “BLUE” ตามรูปที่ 13โดยการกดสวิตซ์นั้นจะสามารถกดได้ทีละ 1 ตัวเท่านั้น ไม่สามารถกดครั้งเดียวได้หลายสวิตซ์

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

Image 011

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



Image 012

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

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

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

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

 http://aimagin.com/