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