วัตถุประสงค์
- ฝึกต่อวงจรโดยใช้อุปกรณ์สวิตช์ควบคุมด้วยแสง (Opto-Interrupter) เช่น เบอร์ H21A1
- ประยุกต์ใช้อุปกรณ์ชนิดนี้ร่วมกับบอร์ด Arduino
อุปกรณ์การทดลอง
- แผงต่อวงจร 1 อัน
- ไดโอดเปล่งแสงสีแดง 1 ตัว
- อุปกรณ์สวิตช์ควบคุมด้วยแสง H21A1 หรือ TCST2202 1 ตัว
- ตัวต้านทาน 470Ω 2 ตัว
- ตัวต้านทาน 330Ω 1 ตัว
- ตัวต้านทาน 10kΩ 1 ตัว
- บัซเซอร์แบบเปียโซ (Piezo Buzzer) 1 ตัว
- สายไฟต่อวงจร 1 ชุด
- มัลติมิเตอร์ 1 เครื่อง
ขั้นตอนการทดลอง
- ต่อวงจรทดลองบนเบรดบอร์ดตามรูปที่ 5.3.1 โดยใช้แรงดันไฟเลี้ยง +5V และ GND จากบอร์ด Arduino
- เขียนโค้ด Arduino เพื่อรับค่าอินพุตแบบดิจิทัลที่ขา D3 (จากสัญญาณ Vout ของวงจรบนเบรดบอร์ด) แล้วสร้างสัญญาณเอาต์พุตที่ขา D5 เพื่อแสดงค่าสัญญาณอินพุตที่รับโดยใช้ LED เป็นตัวแสดงสถานะทางลอจิก (ถ้าไม่มีวัตถุมาปิดกั้นช่องรับแสง LED จะไม่ติด)
- ใช้กระดาษสีดำปิดกั้น บริเวณช่องรับแสงของอุปกรณ์สวิตช์ควบคุมด้วยแสง สังเกตความแตกต่างระหว่างกรณีที่มีวัตถุปิดกั้นและไม่มี (ใช้มัลติมิเตอร์วัดแรงดัน Vout)
- ทดลองต่อบัซเซอร์แบบโซเปีย แทนวงจร LED ในวงจรบนเบรดบอร์ด (โดยนำไปต่ออนุกรมกับตัวต้านทานขนาด 330Ω และให้สังเกตว่า บัซเซอร์โซเปียมีขาบวกและขาลบ)
- แก้ไขโค้ด Arduino เพื่อนับเวลาตั้งแต่เริ่มนำกระดาษไปปิดกั้นจนถึงเมื่อนำกระดาษออกในแต่ละครั้งโดยวัดช่วงเวลาเป็นหน่วยมิลลิวินาที (msec) และให้แสดงผลออกทางพอร์ตอนุกรมผ่านทาง Serial Monitor ของ Arduino IDE
- เขียนรายงานการทดลอง
รูปที่ 1 จงจรแบบที่ 2 วาดด้วยโปรแกรม Frizing Breadboard และ ต่อวงจรทดลองจริง
ผลการทดลอง
โค้ด Arduino เพื่อรับค่าอินพุตแบบดิจิทัลที่ขา D3 (จากสัญญาณ Vout ของวงจรบนเบรดบอร์ด) แล้วสร้างสัญญาณเอาต์พุตที่ขา D5 เพื่อแสดงค่าสัญญาณอินพุตที่รับโดยใช้ LED เป็นตัวแสดงสถานะทางลอจิก (ถ้าไม่มีวัตถุมาปิดกั้นช่องรับแสง LED จะไม่ติด)| const byte PB_PIN = 3; //ใช้ขาหมายเลข D3 เพื่อรับสัญญาณดิจิทัล const byte LED_PIN = 5; //ใช้ขาหมายเลข D5 เพื่อสร้างสัญญาณดิจิทัล void setup() { pinMode(PB_PIN,INPUT); //ใช้ SW_PIN เป็นอินพุต pinMode(LED_PIN,OUTPUT); //ใช้ LED_PIN เป็นเอาต์พุต Serial.begin(9600); //open serial port } void loop() { digitalWrite(LED1_PIN,(digitalRead(PB_PIN)==HIGH)? HIGH : LOW); /*ให้เอาต์พุตที่ขา D5 เป็น HIGHT (LED สว่าง ) เมื่อใช้ไม้บรรทัดปิดกั้นช่องรับแสง (PB_PIN เป็น HIGH)*/ Serial.println(digitalRead(PB_PIN)); //แสดงค่าดิจิทัลที่ได้จาก PB_PIN ใน serial port delay(1000); // อ่านค่าช้าลง 1000 มิลลิวินาที } |
ตารางที่ 1 เปรียบเทียบความแตกต่างของแรงดัน Vout ระหว่างกรณีที่มีวัตถุปิดกั้นและไม่มีวัตถุปิดกั้นช่องรับแสงของอุกรณ์สวิตช์ควบคุมด้วยแสง โดยใช้มัลติมิเตอร์วัด
| ใช้มัลติมิเตอร์วัดที่แรงดัน Vout เมื่อไม่มีวัตถุมาปิดกั้นช่องรับแสง Vout = 0.124 V Arduino รับค่า ลอจิก LOW |
ใช้มัลติมิเตอร์วัดที่แรงดัน Vout เมื่อมีวัตถุมาปิดกั้นช่องรับแสง Vout = 4.759 V Arduino รับค่า ลอจิก HIGH |
โค้ด Arduino เพื่อนับเวลาตั้งแต่เริ่มนำกระดาษไปปิดกั้นจนถึงเมื่อนำกระดาษออกในแต่ละครั้งโดยวัดช่วงเวลาเป็นหน่วยมิลลิวินาที (msec) และให้แสดงผลออกทางพอร์ตอนุกรมผ่านทาง Serial Monitor ของ Arduino IDE
const byte PB_PIN = 3; //ใช้ขาหมายเลข D3 เพื่อรับสัญญาณดิจิทัล const byte LED_PIN = 5; //ใช้ขาหมายเลข D5 เพื่อสร้างสัญญาณดิจิทัล unsigned long deTime,time1,time2; //ประกาศตัวแปล long ชื่อ deTime, time1 และ time2 void setup() { pinMode(PB_PIN,INPUT); //ใช้ SW_PIN เป็นอินพุต pinMode(LED_PIN,OUTPUT); //ใช้ LED_PIN เป็นเอาต์พุต Serial.begin(9600); //open serial port } void loop() { digitalWrite(LED1_PIN,(digitalRead(PB_PIN)==HIGH)? HIGH : LOW); //ให้เอาต์พุตที่ขา D5 เป็น HIGHT (LED สว่าง ) เมื่อใช้ไม้บรรทัดปิดกั้นช่องรับแสง (PB_PIN เป็น HIGH) if(digitalRead(SW_PIN)==HIGH) { //เงื่อนไข ถ้ามีวัตถุมาปิดกั้นช่องรับแสง Piezo Buzzer (PB_PIN เป็น HIGH) time1 = millis(); //ให้ time1 บันทึกเวลาเริ่มตั้งแต่มีวัตถุมาปิดกั้น while(true){ //วน loop เมื่อข้างต้นเป็นจริง time2 = millis(); //ให้ time2 เก็บบันทึกค่าเวลาไปเรื่อยๆ จนกระทั้งเอาวัตถุปิดกั้นออก if(digitalRead(SW_PIN)==LOW){ //เงื่อนไข ถ้าไม่มีวัตถุมาปิดกั้นช่องรับแสง Piezo Buzzer (PB_PIN เป็น LOW) Serial.print("Time : "); //พิมพ์ Time : ใน serial port deTime = time2 - time1; //ค่า deTime เป็นค่าที่ได้ตั้งแต่นำกระดาษมาปิดกั้นจนเมื่อนำกระดาษออกในแต่ละครั้ง Serial.println(deTime); //แสดงค่า deTime ใน serial port break; //หยุดวน loop } } } delay(1000); //wait a second so as not to send massive amounts of data } |
คำถามท้ายการทดลอง
1. จากการทดลองพบว่า จะวัดแรงดัน Vout ได้เท่ากับ ...0.124... โวลต์ เมื่อไม่มีวัตถุไปปิดกั้นช่องรับแสงของอุปกรณ์ H21A1 และจะวัด Vout ได้เท่ากับ ...4.759... โวลต์ เมื่อมีวัตถุไปปิดกั้นช่องรับแสงของอุปกรณ์ดังกล่าว (ตารางที่ 1)2. ถ้านำกระดาษสีขาวและกระดาษสีดำ ไปปิดกั้นช่องรับแสง ในแต่ละกรณี จะให้ผลการทำงานของ วงจรที่แตกต่างกันหรือไม่ จงอธิบาย
ตอบ ไม่แตกต่างกัน เมื่อนำกระดาษสีขาวและสีดำมาปิดที่ช่องรับแสงของอุกรณ์สวิตช์ควบคุมด้วยแสง Piezo Buzzer จะสร้างเสียงเตือนในทั้งสองกรณี นั่นคือไม่ว่าจะนำกระดาษสีขาวหรือสีดำมาปิด Arduino จะรับ ลอจิก HIGH
ตารางที่ 2 เปรียบเทียบความแตกต่างของแรงดัน Vout ระหว่างกรณีนำกระดาษสีขาวและกระดาษสีดำ ไปปิดกั้นช่องรับแสงของอุกรณ์สวิตช์ควบคุมด้วยแสง โดยใช้มัลติมิเตอร์วัด
| นำกระดาษสีขาวมาปิดกั้นช่องรับแสง Vout = 3.438 V Arduino รับค่า ลอจิก HIGH |
นำกระดาษสีดำมาปิดกั้นช่องรับแสง Vout = 4.794 V Arduino รับค่า ลอจิก HIGH |






ไม่มีความคิดเห็น:
แสดงความคิดเห็น