Friday, October 3, 2014

การทดลองที่ 5.2

การตรวจจับวัตถุในระยะใกล้ด้วยแสงอินฟราเรด

วัตถุประสงค์
  • เพื่อฝึกใช้งานบอร์ด Arduino ร่วมกับอุปกรณ์ที่ทำงานเกี่ยวข้องกับแสง 
รายการอุปกรณ์
  • แผงต่อวงจร (เบรดบอร์ด) 1 อัน
  • ไดโอดเปล่งแสงอินฟราเรด 1 ตัว
  • ไดโอดเปล่งแสงสีแดงหรือสีเขียว 1 ตัว
  • โฟโต้ทรานซิสเตอร์ 1 ตัว
  • ตัวต้านทาน 220Ω 1 ตัว
  • ตัวต้านทาน 330Ω หรือ 470Ω 1 ตัว
  • ตัวต้านทาน 10kΩ 1 ตัว
  • ตัวเก็บประจุแบบ Electrolytic 1uF หรือ 10uF (มีขั้ว) 1 ตัว
  • สายไฟสําหรับต่อวงจร 1 ชุด
  • มัลติมิเตอร์ 1 เครื่อง
ขั้นตอนการทดลอง
  1. ออกแบบวงจร (วาดผังวงจร) โดยใช้ไดโอดเปล่งแสงอินฟราเรดและโฟโต้ทรานซิสเตอร์ 1 ชุด พร้อมตัวต้านทานตามที่กําหนดให้แล้วนําสัญญาณเอาต์พุตของวงจรส่วนนี้ไปต่อเข้าที่ขาอินพุต A1 ของบอร์ด Arduino และให้มีวงจรไดโอดเปล่งแสง (LED) พร้อมตัวต้านทานจํากัดกระแส 330Ω หรือ 470Ω ที่ต่อกับขาเอาต์พุต D5 ของบอร์ด Arduino เพื่อใช้เป็นเอาต์พุตในการแสดงผล
  2. ต่อวงจรตามผังวงจรที่ได้วาดไว้บนเบรดบอร์ด ให้ใชแรงดันไฟเลี้ยง VCC=+5V และ Gnd จากบอร์ด Arduino เท่านั้น
  3. เขียนโค้ดสําหรับ Arduino ให้แสดงพฤติกรรมดังนี้เมื่อมีวัตถุเข้าใกล้ (อยู่เหนือ) ตัวส่งและตัวรับแสงอินฟราเรดของวงจร (เช่น ที่ระยะห่างประมาณ 10 cm หรือน้อยกว่า) จะทําให้LED เริ่มกระพริบด้วยความถี่ต่ํา (อย่างช้าๆ) แต่ถ้าวัตถุเข้าใกล้มากขึ้น LED จะกระพริบด้วยความถี่สูงขึ้น แต่ถ้าไม่มีวัตถุอยู่ในระยะใกล้LED จะต้องไม่ติด (ไม่กระพริบ) ให้ทดลองกับวัตถุต่างสีกัน เช่น สีขาวและสีดํา 
  4. เขียนรายงานการทดลอง ซึ่งประกอบด้วยคําอธิบายการทดลองตามขั้นตอน ผังวงจรที่ถูกต้องครบถ้วนตามหลักไฟฟ้า (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการตอวงจรบนเบรดบอร์ด และตอบคําถามท้ายการทดลอง
ผลการทดลอง

ได้ทำการออกแบบวงจรดังนี้
ผังวงจร (โดยโปรแกรม Cadsoft Eagle )
รูปจำลองวงจรที่ต่อบนเบรดบอร์ด (โดยโปรแกรม Fritzing)
รูปวงจรที่ต่อจริงบนเบรดบอร์ด
ได้ทำการเขียนโค๊ดดังนี้

const byte IN = A1;                        //กำหนดชื่อของขา IO                                          
const byte LED = 5;

void setup() {
  pinMode(IN,INPUT);                  //กำหนดให้ขา IN เป็น Input
  pinMode(LED,OUTPUT);          //กำหนดให้ขา LED เป็น Output
  Serial.begin(9600);                      //ตั้ง Baud Rate ของ Serial Monitor เท่ากับ 9600
  digitalWrite(LED,LOW);            //กำหนดสถานะเริ่มต้นของ LED เป็น LOW
}

void loop() {
  int Light = analogRead(IN);        //ประกาศตัวแปรชื่อ Light เก็บค่าอนาล็อกจากขา IN
  Serial.println(Light);                    //แสดงค่า Light ที่เก็บได้บน Serial port
  if(Light < 610){                           //เช็คถ้าเก็บค่าได้น้อยกว่า 610 (ค่าที่วัดได้จาระยะห่าง 10 Cm)
    digitalWrite(LED,HIGH);         //สั่ง  LED เปิด - ปิด โดยมี Delay ระหว่างการเปิด-ปิดคือ ค่าที่อ่าน
    delay(Light*0.75);                    //ได้จาก Light คูณด้วย 0.75 (เพื่อเพิ่มความถี่ในการกระพริบ)
    digitalWrite(LED,LOW);
    delay(Light*0.75);
  }else{
    digitalWrite(LED,LOW);         // ถ้าค่าที่อ่านได้จาก Light มากกว่า 610 LED จะไม่ทำงาน
  }
}




รูปประกอบการทดลอง 


ภาพเมื่อนำกระดาษสีขาวมาทดสอบ 

ภาพเมื่อนำกระดาษสีดำมาทดสอบ 

ภาพเมื่อนำกระดาษสีเขียวมาทดสอบ 



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

1. ในการทดลอง ถ้าใช้วัตถุต่างสีกัน จะมีผลต่อการทํางานของวงจรที่แตกต่างกันหรือไม่จงอธิบาย

  • แตกต่างกัน เพราะค่า Analog ที่อ่านได้มาจากการแบ่งแรงดันที่โฟโต้ทรานซิสเตอร์ที่ทำงานด้วยการรับแสงสะท้อนจากกระดาษสีต่างๆ ที่ส่งมาจากไดโอดเปล่งแสงอินฟาเรด เนื่องจากกระดาษแต่ละสีสะท้อนแสงได้ไม่เท่ากัน จึงทำให้ค่าที่อ่านได้ในระยะเท่ากัน มีค่าแตกต่างกันจากกการทดลอง เมื่อใช้กระดาษสีดำ จะพบว่า LED ไม่กระพริบเลยก็เนื่องมาจากว่าสีดำสะท้อนแสงได้น้อยมากนั่นเอง 

No comments:

Post a Comment