[1/2569] ใบงานรายวิชา เซนเซอร์และแอคทูเอเตอร์ (เพิ่มเติมเซนเซอร์ Gas mq-02)

ใบงานประจำสัปดาห์ รายวิชาเซนเซอร์และแอคทูเอเตอร์


รายวิชาเซนเซอร์และแอคชูเอเตอร์

จงเขียนไมโครคอนโทรลเลอร์เชื่อมต่อกับเซนเซอร์และแอคูเอเตอร์ โดยกำหนดให้เชื่อมต่อกับ led, switch โดยใช้งานคำสั่งที่รับเป็นสัญญาณ analog เพื่อควบคุมให้ได้ตามโจทย์ที่กำหนด. โดยใช้ความรู้ในการเขียนโปรแกรมพื้นฐานที่เรียนในสัปดาห์ที่ผ่านมา นำมาประยุกต์ใช้งานด้วยคำสั่งที่ใช้เขีนยโปรแกรม if , if else ฝึกกระบวนการคิด การลำดับขั้นตอนตามข้อย่อยที่กำหนด

กำหนดให้นักเรียนนักศึกษา ทำการต่อ arduino uno r3 กับ LCD1602 , Gas MQ-2 และปุ่มกดสองปุ่ม ดังรูป




โครงสร้างภายในของเซ็นเซอร์ก๊าซ MQ2

1. ตะแกรงป้องกันชั้นนอก (ตะแกรงสแตนเลสกันระเบิด)ด้านนอกสุดของเซ็นเซอร์ที่เราเห็นเป็นหมวกโลหะ นั่นคือ ตะแกรงตาข่ายสแตนเลสสองชั้น (Anti-Explosion Mesh) ทำหน้าที่เป็นเกราะป้องกันสิ่งสกปรกและฝุ่นละอองไม่ให้เข้าไปไม่อุดตันชิ้นส่วนข้างใน และที่สำคัญที่สุดคือทำหน้าที่เป็น "เกราะกันระเบิด" เนื่องจากภายในเซ็นเซอร์มีความร้อนสูง หากมีก๊าซไวไฟลอยเข้ามา ตะแกรงนี้จะช่วยกักเก็บความร้อนไว้ด้านใน ไม่ให้ประกายไฟเล็ดลอดออกไปจุดติดก๊าซไวไฟภายนอกจนเกิดระเบิด

2. แกนทำความร้อน (ขดลวดความร้อนและท่อเซรามิก)เมื่อมองลึกลงไปภายในตะแกรง จะเจอแกนทรงกระบอกเล็กๆ ทำจาก เซรามิกอะลูมินา (Aluminum Oxide) ซึ่งทนความร้อนได้สูงมาก โดยมี ขดลวดนิเกิล-โครเมียม (Ni-Cr Coil) ร้อยอยู่ตรงแกนกลาง ขดลวดนี้จะทำหน้าที่อุ่นเซ็นเซอร์ให้อยู่ในอุณหภูมิประมาณ 200–400 องศาเซลเซียส เหมือนเป็นการ "วอร์มอัพ" ให้พื้นผิวของเซ็นเซอร์มีความร้อนพอที่จะทำปฏิกิริยากับโมเลกุลของก๊าซได้อย่างมีประสิทธิภาพ

3. ชั้นสารเคมีตรวจจับก๊าซ (ดีบุกไดออกไซด์)บนพื้นผิวภายนอกของท่อเซรามิก จะถูกเคลือบด้วยสารกึ่งตัวนำที่ชื่อว่า ดีบุกไดออกไซด์ (Tin Dioxide - $SnO_2$) ซึ่งเป็นหัวใจสำคัญในการตรวจจับก๊าซ ในสภาวะอากาศสะอาด สารนี้จะยึดจับกับออกซิเจนในอากาศ ทำให้กระแสไฟฟ้าไหลผ่านได้ยาก (ค่าความต้านทานสูง) แต่เมื่อมีก๊าซไวไฟหรือควัน (เช่น LPG, มีเทน, คาร์บอนมอนอกไซด์) ลอยเข้ามา ก๊าซเหล่านี้จะเข้ามาทำปฏิกิริยากับออกซิเจน ทำให้ความต้านทานลดลงทันที และปล่อยให้กระแสไฟฟ้าไหลผ่านได้มากขึ้น

4. ระบบส่งสัญญาณและขาเชื่อมต่อ (ลวดแพลทินัมและหมุด 6 ขา)ส่วนล่างสุดของตัวเซ็นเซอร์คือ ลวดแพลทินัม (Platinum Wires) ที่เชื่อมต่อกับขาโลหะด้านล่างทั้งหมด 6 ขา โดยแบ่งหน้าที่เป็น 2 ขาสำหรับจ่ายไฟเลี้ยงขดลวดทำความร้อน และอีก 4 ขาทำหน้าที่วัดค่าความต้านทานที่เปลี่ยนแปลงไปจากชั้นดีบุกไดออกไซด์ สัญญาณไฟฟ้านี้จะถูกส่งต่อไปยังบอร์ดควบคุม (เช่น Arduino) เพื่อแปลงค่าออกมาเป็นปริมาณความเข้มข้นของก๊าซ หรือสั่งให้กริ่งเตือนภัยดังขึ้นเมื่อพบก๊าซรั่ว

ใบความรู้การใช้งานคำสั่งโปรแกรม

ตัวอย่างคำสั่ง

รูปแบบการเขียนคำสั่ง if

 if(condition){
 	//statement การทำงานใดๆ
 }

รูปแบบการเขียนคำสั่ง if else

 if(condition){
 	//statement การทำงานใดๆ
 }else{
 	//statement การทำงานใดๆ
 }

รูปแบบการเขียนคำสั่ง if else..if

 if(condition){
 	//statement การทำงานใดๆ
 }else if(condition){
 	//statement การทำงานใดๆ
 }

รูปแบบการเขียนคำสั่ง switch case

 switch (variable)
{
case VALUE_1:
                     //statement การทำงานใดๆ
                     break;
case VALUE_2:
                    //statement การทำงานใดๆ
                    break;
case VALUE_3:
                    //statement การทำงานใดๆ
                   break;
default:
         //statement การทำงานใดๆ
}

ข้อควรระวังการต่อใช้งานกับโมดูล button นั้น มีทั้งแบบ active HIGH และแบบ active LOW นักศึกษาต้องทำการตรวจสอบว่าโมดูลปุ่มกดที่ได้ไปนั้นเป็นประเภทไหนจะได้ทำการเขียนโปรแกรมควบคุมได้อย่างถูกต้อง

เมื่อนักเรียนนักศึกษาทำการ ต่อไมโครคอนโทรลเลอร์เข้ากับ led และปุ่มกดแล้ว ให้ทำการเช็คโมดูลปุ่มกดนั้นเป็น Active HIGH หรือ Active LOW โดยทดลองเขียน code ดังต่อไปนี้ และการอ้างอิงตำแหน่งค่า input เพื่อรับสัญญาณดิจิตอลจะอยู่ที่ขา 11 หากนักเรียนนักศึกษาต่อขา input ที่รับสัญญาณแตกต่างไปจากนี้ให้ทำการเปลี่ยนขานั้นๆ ให้ตรงกับการต่อใช้งานจริงด้วย มิฉะนั้นการรับค่า digitalRead จะเกิดความผิดพลาด


int button = 11;
void setup(){
	Serial.begin(9600);
	pinMode(button,INPUT);
}
void loop() {
	if(digitalRead(button)==HIGH){
		Serial.println("button is Active HIGH");
   	 }
      delay(500);
}

เมื่อนักเรียนนักศึกษาใช้งาน code ด้านบนแล้ว Serial monitor ไม่ปรากฏข้อความแต่เมื่อลองกดปุ่ม แล้วปรากฏคำว่า button is Active HIGH ที่หน้า Serial monitor แสดงว่าโมดูลที่นักเรียนต่ออยู่นั้นถูกต้อง และเป็นชนิด Actiove HIGH


int button = 11;
void setup(){
	Serial.begin(9600);
	pinMode(button,INPUT);
}
void loop() {
	if(digitalRead(button)==LOW){
		Serial.println("button is Active LOW");
   	 }
      delay(500);
}

เมื่อนักเรียนนักศึกษาใช้งาน code ด้านบนแล้ว Serial monitor ไม่ปรากฏข้อความแต่เมื่อลองกดปุ่ม แล้วปรากฏคำว่า button is Active LOW ที่หน้า Serial monitor แสดงว่าโมดูลที่นักเรียนใช้งานนั้นถูกต้อง และเป็นชนิด Actiove LOW




ให้นักเรียนนักศึกษาทำไปทีละข้อย่อยแล้วเรียกตรวจ พร้อมอธิบาย


  • 1. กำหนดให้นักเรียนนักศึกษาเชื่อมต่อ ไมโครคอนโทรลเลอร์กับเซอเซอร์วัดปริมาณแก๊ซ ด้วยเซนเซอร์ MQ-2 แล้วเขียนแสดงผลค่าที่วัดได้ออกทาง Serial monitor (เรียนรู้การอ่านค่า แอนาล๊อกที่อ่านได้จากเซนเซอร์ ข้อความสามารถสแปมได้ (หากยังไม่เคยเรียนรู้เซนเซอร์ mq-03 มาก่อนให้เรียนรู้พร้อมครูผู้สอน))
  • 2. (ต่อ)จากข้อย่อยที่ 1 กำหนดให้นักเรียนเขียนปรับปรุงโค้ด จากค่าแอนาล๊อกที่อ่านได้แล้วแปลงเป็นเปอร์เซ็นจาก 0% ถึง 100% และแสดงผลผ่าน Serial monitor ( เรียนรู้การใช้งาน function: map();)
  • 3. (ต่อ)จากข้อย่อยที่ 2 กำหนดให้เชื่อมต่อกับจอแสดงผล lcd1602 แล้วเขียนให้แสดงผลแบบเปอร์เซ็นจากข้อย่อยที่ 2 ไว้ ณ ตำแหน่งซ้ายล่างของจอ lcd1602
  • 4. (ต่อ)จากข้อย่อยที่ 3 ปรับปรุงโปรแกรมเพิ่มเติมโดยแสดงผลเป็นเกจวัด โดยใช้งานคำสั่ง " lcd.write(255);" เพื่อแสดงเป็นช่องทึบ 1 ช่อง กำหนดในบรรทัดที่ 1 ต้องแสดงผลเป็นเกจวัดจากบริเวณซ้ายมือสุดคือ 0% ไปจนถึงขวามือ 100%
  • 5. (ต่อ)จากข้อย่อยที่ 4 จงเขียนโปรแกรมเพิ่มทางเลือกโดยการกดปุ่ม 1 ปุ่มแล้ว ล้างหน้าจอ lcd1602 กำหนดให้แสดงผลแจ้งเตือนอันตรายจากแก๊สรั่วไหล เมื่อมีแก็สถึงปริมาณที่กำหนด (50%) ให้แจ้งเตือนคำว่า "dangerous" กระพริบในหน้าจอ lcd1602 (กล่าวคือในข้อย่อยที่ 5 เป็นการแสดงผลแบบแจ้งเตือนอันตรายโดยไม่ปรากฏค่าที่รับแต่จะแสดงทันทีเมื่อเกิดแก๊สรั่ว



ความคิดเห็น

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

[2/2567] ใบงานรายวิชาพื้นฐานการอินเตอร์เฟส สัปดาห์ที่ 7

[2/2567] ใบงานรายวิชาการประยุกต์ไมโครคอนโทรลเลอร์ สัปดาห์ที่ 12