Tuesday, October 21, 2014

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

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

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

รายการอุปกรณ์

แผงต่อวงจร(เบรดบอร์ด)1 อัน
อุปกรณ์เชื่อมต่อทางแสงPC8171 ตัว
ไดโอดเปล่งแสงสีแดงหรือสีเขียว1 ตัว
ตัวต้านทาน 220Ω หรือ 330Ω1 ตัว
ทรานซิสเตอร์ NPN เบอร์ PN2222A1 ตัว
ตัวต้านทาน 1kΩ1 ตัว
ตัวต้านทาน 4.7kΩ1 ตัว
ตัวต้านทาน 10kΩ1 ตัว
ตัวต้านทานปรับค่าได้ 10kΩ หรือ 20kΩ1 ตัว
ไดโอด 1N400x1 ตัว
มอเตอร์ไฟฟ้ากระแสตรงขนาดเล็ก1 ตัว*
สายไฟสําหรับต่อวงจร1 ชุด
มัลติมิเตอร์1 เครื่อง
แหล่งจ่ายแรงดันควบคุม1 เครื่อง
ออสซิลโลสโคปแบบดิจิทัล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. เขียนรายงานการทดลอง ซึ่งประกอบด้วยคําอธิบายการทดลองตามขั้นตอน ผังวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟ้า (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการต่อวงจรบนเบรดบอร์ด


รูปที่ 5.4.1: ผังวงจรสําหรับต่อทดลอง

รูปที่ 5.4.2: ผังวงจรสําหรับต่อทดลอง


ผลการทดลอง

รูปผังวงจรเป็นดังนี้

ผังวงจรรูปที่ 5.4.1 สร้างโดย Cadsoft Eagle

รูปวงจรจริง

รูปวงจรจริง 5.4.1

ในส่วนของ code Arduino

const byte IN = A1;
const byte OUT = 5;

void setup()
{
  pinMode(IN,INPUT);
  pinMode(OUT,OUTPUT);
  Serial.begin(9600); //open serial monitor
  digitalWrite(OUT,LOW); //define output equal low
}

void loop()
{
  float duty = analogRead(IN); // read value from potentiometer
  duty = map(duty,0,1023,0,255); //change value from range 0-1023 to 0-255
  analogWrite(OUT,duty);
  Serial.print("Duty cycle = ");
  Serial.print(duty*(100.0/255.0));
  Serial.println(" %");
}