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% ตามลําดับ
|
|
|
|
|
ภาพประกอบการทดลอง
ต่อวงจรบนเบรนบอร์ด ตามรูปที่ 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 สว่าง |
มุมมอง Schematic View |
มุมมอง Breadboard view |