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

การทดลองที่ 5.4 การเชื่อมต่อวงจรอิเล็กทรอนิกส์ด้วยแสง

วัตถุประสงค์ของการทดลอง
1.เพื่อฝึกต่อวงจรโดยใช้อุปกรณ์เชื่อมต่อทางแสง เช่น PC817 ได้
2.สามารถประยุกต์ใช้งานPC817 ร่วมกับบอร์ด Arduino และสามารถใช้ควบคุมการจ่ายกระแสให้กับโหลด

รายการอุปกรณ์
1. แผงต่อวงจร(เบรดบอร์ด)                                1 อัน
2. อุปกรณ์เชื่อมต่อทางแสง PC817                      1 ตัว
3. ไดโอดเปล่งแสงสีแดงหรือสีเขียว                    1 ตัว
4. ตัวต้านทาน 220Ω หรือ 330Ω                         1 ตัว
5. ทรานซิสเตอร์ NPN เบอร์ PN2222A                1 ตัว
6. ตัวต้านทาน 1kΩ                                           1 ตัว
7. ตัวต้านทาน 4.7kΩ                                        1 ตัว
8. ตัวต้านทาน 10kΩ                                         1 ตัว
9. ตัวต้านทานปรับค่าได้ 10kΩ หรือ 20kΩ           1 ตัว
10. ไดโอด 1N400x                                          1 ตัว
11. มอเตอร์ไฟฟ้ากระแสตรงขนาดเล็ก                 1 ตัว *
12. สายไฟสําหรับต่อวงจร                                 1 ชุด
13. มัลติมิเตอร์                                                 1 เครื่อง
14. แหล่งจ่ายแรงดันควบคุม                              1 เครื่อง
15. ออสซิลโลสโคปแบบดิจิทัล                         1 เครื่อง

ขั้นตอนการทดลอง
1. ต่อวงจรบนเบรดบอร์ดตามรูปที่ 5.4.1 ให้สังเกต ผังวงจรว่ามี GND1 และ GND2 แยกกันซึ่ง
จะต้องไม่นํามาต่อเขาด้วยกันโดยเด็ดขาด

2. ให้ใช้แรงดันไฟเลี้ยง +5V และ GND1 ให้ใช้จากบอร์ด Arduino แต่สําหรับ +9V และ GND2
ให้ใช้จากแหลงจ่ายแรงดันควบคุม

3. เขียนโค้ด Arduino โดยสร้างสัญญาณแบบ PWM โดยใช้คําสั่ง analogWrite() เพื่อสร้างสัญญาณ
เอาต์พุตที่ขา D5 โดยปรับค่า Duty Cycle ของสัญญาณเอาต์พุตตามค่าที่อ่านได้จากตัวต้านทาน
ปรับค่าได้ ซึ่งต่อเป็นอินพุตที่ขา A1

4. ใช้ออสซิลโลสโคปวัดสัญญาณที่ขา E ของ PC817 เทียบกับ GND2 แล้วทดลองหมุนปรับที่
ตัวต้านทานปรับค่าได้ เพื่อปรับค่า Duty Cycle เป็น 0% 25% 50% และ 100% ตามลําดับ
บันทึกรูปคลื่นสัญญาณที่ได้ในแต่ละกรณี

5. ทดลองเปลี่ยนจาก LED และตัวต้านทาน เป็นมอเตอร์ไฟฟ้ากระแสตรงขนาดเล็ก (ปรับแรงดันไฟเลี้ยง
จาก +9V ให้เป็นแรงดันไฟเลี้ยงที่เหมาะสมกับมอเตอร์ไฟฟ้า +VM) โดยต่อวงจรตามรูปที่ 5.4.2 และ
ทดลองปรับค่า Duty Cycle

6. เขียนรายงานการทดลอง

ผลการทดลอง
Code Ardunioโดยสร้างสัญญาณแบบ PWM โดยใช้คําสั่ง analogWrite() เพื่อสร้างสัญญาณ
เอาต์พุตที่ขา D5 โดยปรับค่า Duty Cycle ของสัญญาณเอาต์พุตตามค่าที่อ่านได้จากตัวต้านทาน
ปรับค่าได้ ซึ่งต่อเป็นอินพุตที่ขา A1
const byte TM_PIN = A1;
/*เลือกขาหมายเลข A1 เพื่อรับสัญญาณจาก trimpot*/
const byte PC_PIN = 5;//เลือกขาหมายเลข 5 เพื่อสร้างสัญญาณ to PC817 

void setup() {
  pinMode(TM_PIN,INPUT);
/*กำหนดพฤติกรรมของ analog pin ที่เราระบุ ให้ trimpot เป็น input*/
  pinMode(PC_PIN,OUTPUT);
/*กำหนดพฤติกรรมของ digital pin ที่เราระบุ ให้ PC817เป็น Output*/
  analogReference(DEFAULT);
/*เลือกแรงดันอ้างอิงสำหรับแปลงสัญญาณเอาตต์พุตต์เป็นข้อมูลดิจิตัล*/
  Serial.begin(9600);//open serial port
}

void loop() {
  int value = analogRead(TM_PIN);
/*อ่านค่าจาก analog pin แล้วเก็บค่าไว้ในตัวแปร */
  int value2=(value/4)*100/255; 
/* นำค่าที่ได้มาคำนวณหาค่า Duty Cycle */
  analogWrite(PC_PIN,value/4); 
/*Writeค่าที่ได้ไปยัง analog pin*/
  Serial.print("Read :");//
  Serial.println(value2);//แสดงค่า duty cycle ทาง serial monitor
  delay(1000);// อ่านค่าช้าลง 1000  ms
}





ใช้ออสซิโลสโคปวัดสัญญาณที่ขา E ของ PC817    แล้วทดลองหมุนปรับที่
ตัวต้านทานปรับค่าได้ เพื่อปรับค่า Duty Cycle เป็น 0% 25% 50% และ 100% ตามลําดับ
คลื่นสัญญาณที่ได้จากการ หมุนปรับตัวต้านทานปรับค่าได้
เพื่อปรับค่า Duty cycle เป็น 0%

คลื่นสัญญาณที่ได้จากการ หมุนปรับตัวต้านทานปรับค่าได้
เพื่อปรับค่า Duty cycle เป็น 25%

คลื่นสัญญาณที่ได้จากการ หมุนปรับตัวต้านทานปรับค่าได้
เพื่อปรับค่า Duty cycle เป็น 50%


คลื่นสัญญาณที่ได้จากการ หมุนปรับตัวต้านทานปรับค่าได้
เพื่อปรับค่า Duty cycle เป็น 100%





ภาพประกอบการทดลอง


ต่อวงจรบนเบรนบอร์ด ตามรูปที่ 5.4.1

ปรับตัวต้านทานปรับค่าได้ เพื่อปรับค่า duty cycle 0%
LED ดับ

duty cycle 0% จาก Serial Monitor ของ Arduino IDE

duty cycle 25% จาก Serial Monitor ของ Arduino IDE

ปรับตัวต้านทานปรับค่าได้ เพื่อปรับค่า duty cycle 25%
LED สว่าง

duty cycle 50% จาก Serial Monitor ของ Arduino IDE

ปรับตัวต้านทานปรับค่าได้ เพื่อปรับค่า duty cycle 50%
LED สว่าง

duty cycle 100% จาก Serial Monitor ของ Arduino IDE

ปรับตัวต้านทานปรับค่าได้ เพื่อปรับค่า duty cycle 100%
LED สว่าง
ผังวงจรที่วาดโดยโปรแกรม Fritzing

มุมมอง Schematic View 
มุมมอง Breadboard view




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

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

วัตถุประสงค์ของการทดลอง
1.สามารถต่อวงจรโดยใช้ ไดโอดเปล่งแสง และโต้ทรานซิสเตอร์ร่วมกับบอร์ด arduino ได้
2.สามารถต่อวงจรและเขียนโค้ดเพื่อใช้ตรวจจับวัตถุในระยะใกล้ได้

รายการอุปกรณ
1. แผงต่อวงจร (เบรดบอร์ด)                                                        1 อัน
2.ไดโอดเปล่งแสงอินฟราเรด                                                      1 ตัว
3.ไดโอดเปล่งแสงสีแดงหรือสีเขียว                                              1 ตัว
4.โฟโต้ทรานซิสเตอร์                                                                1 ตัว
5.ตัวต้านทาน 220Ω                                                                 1 ตัว
6.ตัวต้านทาน 330Ω หรือ 470Ω                                                 1 ตัว
7.ตัวต้านทาน 10kΩ                                                                 1 ตัว
8.ตัวเก็บประจุแบบ Electrolytic 1uF หรือ 10uF (มีขั้ว)                 1 ตัว
9.สายไฟสำหรับต่อวงจร                                                            1 ชุด
10.มัลติมิเตอร์                                                                          1 เครื่อง

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

Code Ardunio  เพื่อให้  LED เริ่มกระพริบด้วยความถี่ต่ำ (อย่างช้าๆ) แต่ถ้าวัตถุเข้าใกล้มากขึ้น LED จะกระพริบด้วยความถี่สูงขึ้น แต่ถ้าไม่มีวัตถุอยู่ในระยะใกล้ LED จะต้องไม่ติด

const byte LEDIR_PIN = A1; //from fototransistor
const byte LED1_PIN = 5; //to LED1
void setup() 
{
  pinMode(LED1_PIN,OUTPUT);//กำหนดพฤติกรรมของ Digital pin ที่เราระบุ
  analogReference(DEFAULT);//เลือกแรงดันอ้างอิง
  Serial.begin(9600); //open sesrial port
}

void loop() 
{
  //read analog values
  int value1 = analogRead(LEDIR_PIN);//อ่านค่าจาก analog pin
  if(analogRead(LEDIR_PIN)<700){
/*เงื่อนไขอ่านค่าจาก analog pin ถ้ามากกว่า 700
  digitalWrite(LED1_PIN,HIGH);// Write สถานะ HIGH ไปยัง digital pin
  delay(value1); // กำหนดให้ delay หรือกระพริบตามค่า value1
  digitalWrite(LED1_PIN,LOW); // Write สถานะ LOW ไปยัง digital pin
  delay(value1); // กำหนดให้ delay หรือกระพริบตามค่า value2 
  }else{
    digitalWrite(LED1_PIN,LOW); //LED ดับ
  }
  delay(100); // อ่านค่าช้าลง 100  ms
}





ภาพประกอบการทดลอง


วงจรที่ใช้ในการทดลอง
ขณะนำกระดาษมาอยู่เหนือตัวส่งและตัวรับแสง อินฟราเรดของวงจร



ผังการต่อวงจรบนเบรดบอร์ด


Breadboard View

Schematic View




คำถามท้ายการทดลอง
1. ในการทดลอง ถ้าใช้วัตถุต่างสีกัน จะมีผลต่อการทำงานของวงจรที่แตกต่างกันหรือไม่ จงอธิบาย
- มีผล เนื่องจาก วัตถุที่ต่างสีกันจะมีผลต่อการสะท้อนกลับของแสง ไปยังตัวรับ(Phototransister)
ซึ่งวัตถุที่มีสีเข้ม จะสะท้อนได้ดีกว่า จึงทำให้ LED กระพริบ เร็วกว่า และนอกจากนี้ ระยะห่างระหว่างวัตถุกับ Phototransister และ Infrared Emitted Diode ก็มีผลเช่นกัน คือ เมื่อวัตถุเข้าใกล้ มากขึ้นเรื่อยๆก็จะทำให้ LED กระพริบเร็วขึ้นเรื่อยๆ