วันพฤหัสบดีที่ 23 ตุลาคม พ.ศ. 2557

การทดลองที่ 5.3 การต่อวงจรสวิตช์ควบคุมด้วยแสง


การทดลองที่ 5.3
การต่อวงจรสวิตช์ควบคุมด้วยแสง

วัตถุประสงค์

  • ฝึกต่อวงจรโดยใช้อุปกรณ์สวิตช์ควบคุมด้วยแสง (Opto-Interrupter) เช่น เบอร์ H21A1
  • ประยุกต์ใช้อุปกรณ์ชนิดนี้ร่วมกับบอร์ด Arduino

อุปกรณ์การทดลอง

  • แผงต่อวงจร                                                                         1  อัน
  • ไดโอดเปล่งแสงสีแดง                                                         1 ตัว
  • อุปกรณ์สวิตช์ควบคุมด้วยแสง H21A1 หรือ TCST2202       1 ตัว
  • ตัวต้านทาน 470Ω                                                                 2 ตัว
  • ตัวต้านทาน 330Ω                                                                 1 ตัว
  • ตัวต้านทาน 10kΩ                                                                 1 ตัว
  • บัซเซอร์แบบเปียโซ (Piezo Buzzer)                                       1 ตัว
  • สายไฟต่อวงจร                                                                     1 ชุด
  • มัลติมิเตอร์                                                                            1 เครื่อง

ขั้นตอนการทดลอง

  1. ต่อวงจรทดลองบนเบรดบอร์ดตามรูปที่ 5.3.1 โดยใช้แรงดันไฟเลี้ยง +5V และ GND จากบอร์ด Arduino
  2. เขียนโค้ด Arduino เพื่อรับค่าอินพุตแบบดิจิทัลที่ขา D3 (จากสัญญาณ Vout ของวงจรบนเบรดบอร์ด) แล้วสร้างสัญญาณเอาต์พุตที่ขา D5 เพื่อแสดงค่าสัญญาณอินพุตที่รับโดยใช้ LED เป็นตัวแสดงสถานะทางลอจิก (ถ้าไม่มีวัตถุมาปิดกั้นช่องรับแสง LED จะไม่ติด)
  3. ใช้กระดาษสีดำปิดกั้น บริเวณช่องรับแสงของอุปกรณ์สวิตช์ควบคุมด้วยแสง สังเกตความแตกต่างระหว่างกรณีที่มีวัตถุปิดกั้นและไม่มี (ใช้มัลติมิเตอร์วัดแรงดัน Vout)
  4. ทดลองต่อบัซเซอร์แบบโซเปีย แทนวงจร LED ในวงจรบนเบรดบอร์ด (โดยนำไปต่ออนุกรมกับตัวต้านทานขนาด 330Ω และให้สังเกตว่า บัซเซอร์โซเปียมีขาบวกและขาลบ)
  5. แก้ไขโค้ด Arduino เพื่อนับเวลาตั้งแต่เริ่มนำกระดาษไปปิดกั้นจนถึงเมื่อนำกระดาษออกในแต่ละครั้งโดยวัดช่วงเวลาเป็นหน่วยมิลลิวินาที (msec) และให้แสดงผลออกทางพอร์ตอนุกรมผ่านทาง Serial Monitor ของ Arduino IDE
  6. เขียนรายงานการทดลอง


รูปที่ 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

+++++++++++++++++++++++++++++\(^o^)/+++++++++++++++++++++++++++++


โค้ด 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
}


       >>>>>>>>ลงตรงนี้จ๊ะ<<<<<<<<<<

+++++++++++++++++++++++++++++\(^o^)/+++++++++++++++++++++++++++++

คำถามท้ายการทดลอง

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

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

แสดงความคิดเห็น