วันศุกร์ที่ 17 ตุลาคม พ.ศ. 2557

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

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

วัตถุประสงค์
  • ฝึกต่อวงจรโดยใช้อุปกรณ์เชื่อมต่อทางแสง เช่น เบอร์ 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. เขียนรายงานการทดลอง ซึ่งประกอบด้วยคำอธิบายการทดลองตามขั้นตอน ผังวงจรที่ถูกต้อง
ครบถ้วนตามหลักไฟฟ้า (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการต่อวงจรบน
เบรดบอร์ด
รูปวงจรที่ต่อในการทดลอง

โค้ดที่ใช้ในการทดลอง
void setup() {
  pinMode(A1,INPUT);
  pinMode(5,OUTPUT);
  analogReference(DEFAULT);
}

void loop() {
  analogWrite(5,analogRead(A1));
 
}
 

วันศุกร์ที่ 3 ตุลาคม พ.ศ. 2557

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

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

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

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

  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 จะต้องไม่ติด (ไม่กระพริบ) ให้ทดลองกับวัตถุต่างสีกัน เช่น สีขาวและสีดำ
     4. เขียนรายงานการทดลอง ซึ่งประกอบด้วยคำอธิบายการทดลองตามขั้นตอน ผังวงจรที่ถูกต้อง
ครบถ้วนตามหลักไฟฟ้า (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการต่อวงจรบน
เบรดบอร์ด และตอบคำถามท้ายการทดลอง

โค้ดที่ใช้ในการทดลอง
const byte IR_LED = A1;
const byte LED = 5;

void setup() {
  pinMode(IR_LED, INPUT);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
  analogReference(DEFAULT);
  Serial.begin(9600);
}

void loop() {
  int value = analogRead(IR_LED);
  Serial.println(value);
  delay(100);

  if (value > 310) {
    digitalWrite(LED, HIGH);
    delay(1024 - (value));
    digitalWrite(LED, LOW);
    delay(1024 - (value));
  } else {
    digitalWrite(LED, LOW);
  }

}



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

วันเสาร์ที่ 27 กันยายน พ.ศ. 2557

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

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

การสร้างวงจรสร้างและควบคุมแรงไฟฟ้ากระแสตรงแบบปรับค่าได้
วัตถุประสงค์
  ฝึกออกแบบและต่อวงจรสร้างและควบคุมแรงดันไฟฟ้ากระแสตรงแบบปรับค่าได้ โดยใช้ไอซี
LM317T เพื่อใช้เป็นแหล่งจ่ายให้วงจรอิเล็กทรอนิกส์
รายการอุปกรณ์
 1. แผงต่อวงจร (เบรดบอร์ด) 1 อัน
 2. ไอซี LM317T 1 ตัว
 3. ตัวเก็บประจุ 0.1uF และ 10uF อย่างละ 1 ตัว
 4. ตัวต้านทานค่าคงที่ เลือกค่าในช่วง 220Ω ถึง 1kΩ 1 ตัว
 5. ตัวต้านทานปรับค่าได้แบบสามขา 4.7kΩ หรือ 10kΩ 1 ตัว
 6. ไดโอด 1N4001 อย่างน้อย 1 ตัว
 7. สายไฟสำหรับต่อวงจร 1 ชุด
 8. แหล่งจ่ายแรงดันควบคุม 1 เครื่อง
 9. มัลติมิเตอร์ 1 เครื่อง
ขั้นตอนการทดลอง
1. ออกแบบวงจร วาดผังวงจร และต่อวงจรบนเบรดบอร์ด เพื่อสร้างวงจรควบคุมแรงดันแบบปรับค่าได้
โดยใช้ไอซี LM317T และอุปกรณ์ตามรายการที่ได้ระบุไว้ (ศึกษาตัวอย่างวงจรได้จากดาต้าชีท
LM317T และจากอินเทอร์เน็ต)
2. ใช้แรงดันจากแหล่งจ่ายภายนอก โดยป้อนแรงดัน +9V เป็นแรงดันอินพุต และปรับค่าตัวต้านทาน
ปรับค่าได้ในวงจร ให้ได้แรงดันเอาต์พุต +5V และ +3.3V ตามลำดับ ตรวจสอบและวัดระดับแรงดัน
เอาต์พุตด้วยมัลติมิเตอร์
ผลการทดลอง





วันศุกร์ที่ 19 กันยายน พ.ศ. 2557

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

การทดลองที่ 4.4 สัญญาณอินพุต-แอนะล็อกและการใช้งานร่วมกับบอร์ด Arduino


วัตถุประสงค์
1. ฝึกต่อวงจรเพื่อสร้างสัญญาณแอนะล็อก และป้อนให้บอร์ด Arduino เพื่อใช้เป็นสัญญาณอินพุต
2. เขียนโปรแกรมสําหรับ Arduino เพื่อเปิด/ปิด LED ตามสภาวะแสง

รายการอุปกรณ์
1. แผงต่อวงจร (เบรดบอร์ด)    1 อัน
2. บอร์ด Arduino (ใช้แรงดัน +5V)   1 บอร์ด
3. ตัวต้านทานปรับค่าได้ 10kΩ หรือ 20kΩ  1 ตัว
4. ตัวต้านทานไวแสง LDR    1 ตัว
5. ไดโอดเปล่งแสงขนาด 5 มม.   1 ตัว
6. ตัวต้านทาน 330Ω หรือ 470Ω   1 ตัว
7. ตัวต้านทาน 10kΩ    1 ตัว
8. สายไฟสําหรับต่อวงจร    1 ชุด
9. มัลติมิเตอร์     1 เครื่อง

ขั้นตอนการทดลอง
1. ต่อวงจรตามผังวงจรในรูปที่ 4.4.1 บนเบรดบอร์ด ร่วมกับบอร์ด Arduino โดยใช้แรงดันไฟเลี้ยง VCC=+5V และ Gnd จากบอร์ด Arduino เท่านั้น (ต่อวงจรบนเบรดบอร์ดก่อน จากนั้นจึงเชื่อมต่อ สัญญาณอนิพุตและเอาต์พุตของบอร์ด Arduino เมื่อตรวจสอบความถูกต้อง แล้วจึงป้อนแรงดันไฟ เลี้ยงและ Gnd ตามลําดับ)

2. เขียนโปรแกรมตามตัวอย่างโค้ดที่กําหนดให้ และทําขั้นตอน Upload จากนั้นให้ทดลองหมุนปรับค่าที่ ตัวต้านทานปรับค่าได้ หรือปิดบริเวณส่วนรบัแสงของ LDR เปิดหน้าต่าง Serial Monitor ของ Arduino IDE แล้วสังเกตข้อความที่ถูกส่งมาจากบอร์ด Arduino

3. ปรับแก้โค้ดตัวอย่าง เพื่อให้วงจรและบอร์ด Arduino แสดงพฤติกรรมดังนี้ ถ้าปิดส่วนรับแสงของตัว ต้านทานไวแสง LDR หรือมปีริมาณแสงนอ้ยลง จะทําให้ LED1 “สว่าง” แต่ถ้า LDR ได้รับแสงตาม สภาวะแสงปรกติ หรือได้รับปริมาณแสงมาก จะทําให้ LED1 “ไม่ติด”

4. เขียนรายงานการทดลอง ซงึ่ประกอบด้วยคําอธบิายการทดลองตามขั้นตอน ผงัวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟา้ (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการตอ่วงจรบน เบรดบอร์ด โค้ด Arduino ที่ได้ทดลองจรงิพร้อมคาํอธิบายโค้ด/การทํางานของโปรแกรมโดย ละเอียด และตอบคําถามทา้ยการทดลอง
ผลการทดลอง 

โค้ดข้อ 4.4.2

โค้ดข้อ 4.4.3

คำถามท้ายการทดลอง
1. ค่าที่ได้ (เลขจํานวนเต็ม) จากบอร์ด Arduino สําหรับสญัญาณอินพุตที่ขา A1 มีค่าอยู่ในช่วงใด (ต่ําสุด-สูงสุด)
ตอบ 340 - 970

2. จะต้องปรับแก้โค้ดอย่างไรสําหรับบอร์ด Arduino ถ้าจะทําให้ LED1 มีความสว่างมากน้อยได้ตาม ปริมาณแสงที่ได้รับ เช่น ถ้า LDR ได้แสงสวา่งน้อย จะทําให้ LED1 สว่างมาก แต่ถ้า LDR ได้แสง สว่างมาก จะทําให้ LED1สว่างน้อย หรือไม่ติดเลย
 -
const byte LDR_PIN = A1;
const byte VREF_PIN = A2;
const byte LED1_PIN = 5;
void setup() {
  pinMode(LED1_PIN, OUTPUT);
  digitalWrite(LED1_PIN, LOW);
  analogReference(DEFAULT);
  Serial.begin(9600);
}

void loop() {
  int value1 = analogRead(LDR_PIN);
  int value2 = analogRead(VREF_PIN);
  Serial.print("READ");
  Serial.print(value1, DEC);
  Serial.print(",");
  Serial.println(value2, DEC);
  delay(100);

  if (value1 <= value2) {
    analogWrite(LED1_PIN, 255-analogRead(LDR_PIN));
  }
}

วันศุกร์ที่ 12 กันยายน พ.ศ. 2557

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

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

การต่อวงจรไอซีเปรียบเทียบแรงดัน


วัตถุประสงค์

1. ฝึกต่อวงจรเพื่อสร้างแรงดันอ้างอิง โดยใช้ตัวต้านทานปรับค่าได้(Trimpot/Potentiometer)แบบ 3 ขา
2. ฝึกต่อวงจรโดยใช้ไอซีที่มีตัวเปรียบเทียบแรงดัน (Voltage Comparator) อยู่ภายใน เช่น เบอร์ LM393N (ตัวถังแบบ PDIP-8)

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


  1. ไอซีเปรียบเทียบแรงดัน เบอร์ LM939N                                       
  2. ตัวต้านทานปรับค่าได้แบบ 3 ขา ขนาด 10 kΩ หรือ 20 kΩ           
  3. ตัวต้านทาน 4.7 kΩ หรือ 10 kΩ (สำหรับ Pull-Up)                       
  4. ตัวต้านทาน 330Ω หรือ 470 Ω                                                     
  5. ไดโอดเปล่งแสง (LED) ขนาด 5 มม.                                           
  6. สายไฟสำหรับต่อวงจร                                                                  
  7. แผงต่อวงจร (เบรดบอร์ด)                                                             
  8. มัลติมิเตอร์                                                                                   
  9. แหล่งจ่ายควบคุมแรงดัน                                                              
  10. เครื่องกำเนิดสัญญาณแบบดิจิทัล                                                  
  11. ออสซิลโลสโคปแบบดิจิทัล                                                         


ขั้นตอนการทดลอง

1. ต่อวงจรโดยใช้ตัวต้านทานปรับค่าได้ แล้วป้อนแรงดันไฟเลี้ยง VCC=+5V และ Gnd จากแหล่งจ่ายแรงดันควบคุม ไปยังวงจรบนเบรดบอร์ด
2. ใช้มัลติมิเตอร์วัดแรงดันระหว่างจุด Vx กับ Gnd และทดลองหมุนปรับค่าที่ตัวต้านทาน สังเกตและจดบันทึกค่าแรงดันต่ําสุดและแรงดันสูงสุดที่วัดได้
3. ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซี LM393N (เลือกใช้ตัวเปรียบเทียบแรงดันที่อยู่ภายในตัวใดตัวหนึ่งจากที่มีอยู่สองตัว)
4. สร้างสัญญาณแบบสามเหลี่ยม(Triangular Wave) ให้อยู่ในช่วงแรงดัน0 V ถึง 5 V โดยใช้เครื่องกําเนิดสัญญาณ (Function Generator) โดยกําหนดให้Vpp = 5 V(Peak-to-Peak Voltage) และ แรงดัน Offset = 2.5 V และความถี่ f  = 1 kHz เพื่อใช้เป็นสัญญาณอินพุต Vin แล้วนําไปป้อนให้ขา V- ของตัวเปรียบเทียบแรงดันที่ได้เลือกใช้
5. ใช้ออสซิลโลสโคปวัดสัญญาณ โดยใช้ช่อง A สําหรับวัดสัญญาณที่มาจากเครื่องกําเนิดสัญญาณ (Vin) และช่อง B สําหรับวัดสัญญาณเอาต์พุต (Vout) ที่ขาของตัวเปรียบเทียบแรงดันที่ได้เลือกใช้
6. ทดลองหมุนปรับค่าที่ตัวต้านทานปรับค่าได้ วัดแรงดัน Vref และสังเกตการเปลี่ยนแปลงค่า Duty Cycle ของรูปคลื่นสัญญาณเอาต์พุต
7. สลับขาสัญญาณอินพุตที่ขา V+ และ V- (ตามผังวงจรในรูปที่ 4.1.3) แล้ วทําขั้นตอนที่6 ถึง7 ซ้ำ


ผลการทดลอง

เมื่อยังไม่ได้ปรับค่าความต้านทาน

เมื่อทดลองหมุนปรับค่าความทาน สัญญาณแรงดันเอาต์พุต(Vout) มีการเปลี่ยนแปลง

สลับขาสัญญาณอินพุตที่ขา V+ และ V- 


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

1. ระดับของแรงดันอ้างอิง(Vref) ที่ได้จากตัวต้านทานปรับค่าได้ เพื่อใช้ในการเปรียบเทียบแรงดัน มีความสัมพันธ์ อย่างไรกับระดับของแรงดันเอาต์พุต(Vout) ที่ได้จากตัวเปรียบเทียบแรงดัน และค่า Duty Cycle ของสัญญาณเอาต์พุตที่วัดได้ จงอธิบาย 
- สัญญาณแรงดันเอาต์พุตจะมีค่าสถานะทางโลจิกเป็น 1 เมื่อป้อนแรงดันอินพุต V+ มากกว่า V- เมื่อปรับค่าความต้านทานมากขึ้นจะทำให้ Vref มากขึ้น แต่ Vin คงที่ มีทำผลทำให้ช่วงที่สัญญาณเอาต์พุตออกมาได้ลอจิก 1 ย่อลงและค่า Duty Cycle ก็มากขึ้น และถ้าปรับค่าความต้านทานน้อยลงจะทำให้ Vref น้อยตาม จะทำให้ช่วงที่สัญญาณเอาต์พุตออกมาได้ลอจิก 1 ขยายออก ค่า Duty Cycle ก็น้อยลง 
2. ถ้าจะให้สัญญาณเอาต์พุต Voutมีค่า Duty Cycle ประมาณ 50% จะต้องหมุนปรับค่าที่ตัว ต้านทานปรับค่าได้ ให้มีแรงดัน Vrefประมาณเท่าใด 
- 2.28 V
3. เมื่อหมุนปรับค่าที่ตัวต้านทานปรับค่าได้ จากซ้ายสุดไปขวาสุด จะได้ค่า Vref อยู่ในช่วง 0 ถึง 5 โวลต์ และได้ค่า Duty Cycle ของสัญญาณเอาต์พุตอยู่ในช่วง 0 ถึง 78 เปอร์เซ็นต์

วันศุกร์ที่ 5 กันยายน พ.ศ. 2557

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

การทดลองที่ 3.4
การสร้างสัญญาณเอาต์พุตตามจังหวะสัญญาณอินพุตด้วย Arduino
วัตถุประสงค์
1.สร้างสัญญาณจากเครื่องกำเนิดสัญญาณดิจิทัลแบบมีคาบ เพื่อป้อนเป็นอินพุตให้บอร์ด Arduino
2.เขียนโค้ดสำหรับ Arduino เพื่อประมวลผลสัญญาณดิจิทัลจากอินพุต และสร้างสัญญาณเอาต์พุตตามเงื่อนไขที่กำหนดให้

รายการอุปกรณ์
1.แผงต่อวงจร
2.บอร์ด Arduino
3.ตัวต้านทาน 100/150 ohm
4.ตัวต้านทาน 330/470 ohm
5.ไดโอดเปล่าแสง
6.สายไฟสำหรับต่อวงจร
7.เครื่องกำเนิดสัญญาณ
8.ออสซิลโลสโคป

ขั้นตอนการทดลอง
1.สร้างสัญญาณดิจิทับแบบมีคาบมีรูปสัญญาณสี่เหลี่นม หรือแบบ Pulse มีคสามถี่ 10Hz จากเครื่องกำเนิดสัญญาณ โดยต่อผ่านตัวต้านทาน 100/150 ohm ไปยังขา D3 ของบอร์ด Arduino เพื่อใช้เป็นอินพุต
2.ต่อวงจร LED พร้อมตัวต้านทานจำกัดกระแสที่ขา D5 ของบอร์ด Arduino เพื่อใช้เป็นสถานะ
3.เขียนโค้ด Arduino Sketch เพื่อทำให้หลอด LED บนแผงวงจร กระพริบตามความถี่ของสัญญาณอินพุต
4.ปรับความถี่ของสัญญาณอินพุตในช่วง 5Hz .. 20Hz (เพิ่มทีละ 5Hz)และใช้ออสซิลโลสโคป 2 ช่องวัดสัญญาณอินพุตที่ขา D3 และสัญญาณเอาต์พุตที่ขา D5 พร้อมกัน และบันทึกรูปคลื่นสัญญาณที่ได้สำหรับความถี่ต่างๆในการทดลอง
5.เขียนรายงานการทดลองในการวาด และโค้ด Arduino Sketch พร้อมคำอธบายโค้ด รูปตัวอย่างที่วัดได้จากสัญญาณ และภาพถ่ายการต่อทดลองวงจรจริง

ภาพการต่อจริง


โค้ด Arduino
const byte A = 3;
const byte B = 5;

void setup(){
  pinMode(A,INPUT);
  pinMode(B,OUTPUT);
}
void loop(){
  if(digitalRead(A)==HIGH){
    digitalWrite(B,HIGH);
  }
  if(digitalRead(A)==LOW){
    digitalWrite(B,LOW);
  }
}

คลื่นสัญญาณ 5Hz
คลื่นสัญญาณ 10Hz
คลื่นสัญญาณ 15 Hz
คลื่นสัญญาณ 20Hz





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

การทดลองที่ 3.3
การต่อวงจรอินพตุ -เอาต์พุตดิจิทัลเบื้องต้นสำหรับ Arduino
วัตถุประสงค์
1.ฝึกการต่อวงจรในไอซี 74HC00N เพื่อสร้าง RS Lacth
2.เขียนโปรแกรมสำหรับArduino

รายการอุปกรณ์
1.แผงต่อวงจร
2.บอร์ดArduino
3.ไอซี 74HC00N
4.ไดโอดเปล่งแสง
5.ปุ่มกดแบบสี่ขา
6.ตัวต้านทาน  330/470 ohm
7.ตัวต้านทาน 10 k ohm
8.สายไฟสำหรับต่อวงจร
9.มัลติมิเตอร์
10.แหล่งจ่ายแรงดัน

ขั้นตอนการทดลอง
1.ต่อวงจรเบรดบอร์ด โดยใช้ไอซี 74HC00N เพื่อลอจิก RS Latch และป้อนแรงดันไฟเลี้ย Vcc = 5v และ GND จากแหล่งจ่ายแรงดันให้วงจร
2.กำหนดสถานะของสัญญาณอินพุต A และ ฺB ทั้งหมด 4 กรณี โดยการกดค้างไว้(LOW)หรือไม่ กดปุ่ม(HIGH) ใช้มิบติมิเตอร์วัดแรงดันของสัญญาณ Q และ /Q รวมถึงสังเกต สถานะติด/ดับของ LED ทั้งสอง สำหรับแต่ละกรณี้ของอินพุต แล้วบันทึกที่ได้ลงในตาราง
3.ต่อวงจรตามวงจรโดยใช้บอร์ด Arduino ปุ่มกดแบบสี่ขา ไดโอดเปล่งแสง และตัวต้านทาน และให้เขียนโปรแกรมสำหรัย Arduinoเพื่อเลียนแบบพฤติกรรมการทำงานของ RS Latch


โค้ด Arduino ข้อ 3
const byte SW1 = 2;
const byte SW2 = 3;
const byte LED1 = 4;
const byte LED2 = 5;

void setup(){
 pinMode(SW1,INPUT);
 pinMode(SW2,INPUT);
 pinMode(LED1,OUTPUT);
 pinMode(LED2,OUTPUT);
 digitalWrite(LED1,HIGH);
}

void loop(){
 if(digitalRead(SW1)==LOW){
  digitalWrite(LED1,HIGH);
  digitalWrite(LED2,LOW);
}
 if(digitalRead(SW2)==LOW){
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,HIGH);
}
 if(digitalRead(SW1)==LOW && digitalRead(SW2)==LOW){
  digitalWrite(LED1,HIGH);
  digitalWrite(LED2,HIGH);
}
}


ผลที่ได้จากการทดลอง





วันศุกร์ที่ 29 สิงหาคม พ.ศ. 2557

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

การทดลองที่ 2.3
การตรวจวัดคลื่นสัญญาณที่ขาดิจิตอล-เอาต์พุตของลอจิเกต

วัตถุประสงค์
1.ฝึกต่อวงจรโดยไอซีลอจิก
2.ฝึกใช้เครื่องออสซิลโลสโคปในการตรวจวัดสัญญานและวิเคราะห์วงจร

รายการอุปกรณ์
1.แผงต่อวงจร (เบรดบอร์ด) 1 อัน
2.ไอซี 74HCT00 1 ตัว
3.ไอซี 74HCT14 1 ตัว
4.สายไฟสําหรับต่อวงจร 1 ชุด
5.ออสซิลโลสโคป (สายวัด 2 ช่อง) 1 เครื่อง
6.เครื่องกําเนิดสัญญาณ 1 เครื่อง
7.แหล่งจ่ายควบคุมแรงดัน 1 ชุด

ขั้นตอนการทดลอง
1. ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซี74HCT00 เพื่อสร้างลอจิกเกต NOT จํานวน 1 ตัว จากลอจิกเกต
NAND
2. สร้างคลื่นสญญาณสี่เหลี่ยมที่มีแอมพลิจูดอยู่ในช่วง 0V ถึง 5V (Vpp=5V, Voffset=2.5V) ความถี่
f=10kHz และมีค่า Duty Cycle = 50% โดยใช้เครื่องกําเนิดสัญญาณ แล้วป้อนที่ขาอินพุตของลอจิก
เกต NOT
3. ใช้ออสซิลโลสโคปวัดสัญญาณ โดยใช้ช่อง CH1 วัดสัญญาณที่ขาอินพุต ใช้ช่อง CH2 วัดสัญญาณที่ขาเอาต์พุตของลอจิกเกต NOT
4. ต่อวงจรไดโอดเปล่งแสงพร้อมตัวต้านทาน 330Ω หรือ 470Ω ที่ขาเอาต์พุตของลอจิกเกต NOT
5. สังเกตความแตกต่างเมื่อเปรียบเทียบกับกรณีที่ไม่ได้ต่อวงจรไดโอดเปล่งแสงพร้อมตัวต้านทานที่ขา
เอาต์พุต และวัดระดับแรงดันสูงสุดของสัญญาณเอาต์พุตที่ได้
6. เปลี่ยนรูปคลื่นสัญญาณอินพุต โดยสร้างคลื่นสัญญาณรูปสามเหลี่ยม Vpp=5V, Voffset=2.5V, f=1kHz จากเครื่องกําเนิดสัญญาณ เพื่อป้อนให้ขาอินพุตของลอจิกเกต NOT
7. ใช้ออสซิลโลสโคปวัดสัญญาณ โดยใช้ช่อง CH1 วัดสัญญาณที่ขาอินพุต ใช้ช่อง CH2 วัดสัญญาณที่ขา
เอาต์พุตของลอจิกเกต NOT แล้วสังเกตผลที่ได้
8. ยกเลิกการต่อวงจรโดยใช้ไอซี74HCT00 และให้ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซีเบอร์ 74HCT14
เพื่อสร้างลอจิกเกต NOT จํานวน 1 ตัว (เลือกลอจิกเกต NOT ตัวใดก็ได้ที่มีอยู่ภายในไอซีดังกล่าว)
9. สร้างคลื่นสัญญาณรูปสามเหลี่ยม Vpp=5V, Voffset=2.5V, f=1kHz จากเครื่องกําเนิดสัญญาณ
เพื่อป้อนให้ขาอินพุตของลอจิกเกต NOT

10. วัดระดับแรงดันอินพุตที่ทําให้เกิดจุดตัดของคลื่นสัญญาณจากช่อง CH1และ CH2

ผลการทดลอง
จากการต่อวงจรบนเบรดบอร์ดโดยใช้ไอซี74HCT00เพื่อสร้างลอจิเกตแบบ NOT
เมื่อต่อวงจรไดโอดเปล่งแสงพร้อมตัวต้านทาน 330Ω หรือ 470Ω ที่ขาเอาต์พุต

ยกเลิกการต่อไดโอดและเปลี่ยนรูปคลื่นสัญญาณอินพุต โดยสร้างคลื่นสัญญาณรูปสามเหลี่ยม Vpp=5V, Voffset=2.5V, f=1kHz

เปลี่ยนจากการใช้ไอซี74HCT00 และให้ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซีเบอร์ 74HCT14 



คําถามท้ายการทดลอง
1. ในกรณีที่สร้างลอจิกเกต NOT จากเกต NAND ของไอซี74HCT00 และป้อนสัญญาณอินพุตเป็น
รูปคลื่นสี่เหลี่ยมตามที่ได้ทดลองไป จงระบุระยะเวลาในการเปลี่ยนแปลงของคลื่นสัญญาณที่ขา
เอาต์พุตของลอจิกเกต NOT จาก HIGH เป็น LOW (ขอบขาลง) และจาก LOW เป็น HIGH (ขอบขา
ขึ้น) ตามลําดับ เมื่อวัดด้วยออสซิลโลสโคป

- เมื่อผ่านไป 50 us จะเปลี่ยนจาก HIGH เป็น LOW และใช้เวลาอีก 50 us จาก LOW เป็น HIGH

2. ในกรณีที่สร้างลอจิกเกต NOT จากเกต NAND ของไอซี74HCT00 และป้อนสัญญาณอินพุตเป็น
รูปคลื่นสามเหลี่ยมตามที่ได้ทดลองไป จงอธิบายว่า จะได้คลื่นสัญญาณที่ขาเอาต์พุตของลอจิกเกต
NOT เป็นรูปคลื่นแบบใด และให้ระบุระดับแรงดันอินพุตที่ทําให้เกิดจุดตัดของคลื่นสัญญาณจากช่อง
A และ B (มีอยู่สองจุดตัด ในช่วงขาขึ้นและขาลงของสัญญาณอินพุต)

- ตัดกันที่ 1.6 v

3. ในกรณีที่ใช้ลอจิกเกต NOT ภายในไอซี74HCT14 และป้อนสัญญาณอินพุตเป็นรูปคลื่นสามเหลี่ยม
จงอธิบายว่า จะได้คลื่นสัญญาณที่ขาเอาต์พุตของลอจิกเกต NOT เป็นรูปคลื่นแบบใด และให้ระบุ
ระดับแรงดันอินพุตที่ทําให้เกิดจุดตัดของคลื่นสัญญาณจากช่อง A และ B (มีอยู่สองจุดตัด ในช่วงขา
ขึ้นและขาลงของสัญญาณอินพุต)

-ได้รูปสี่เหลี่ยม ตัดที่ 1.8 v

4. อธิบายความหมายของคําว่า V+ และ V- ของ Schmitt-Trigger Inverter และถ้าอ้างอิงตามดาต้าชีท
ของไอซี 74HCT14 (ดาวน์โหลดได้จากอินเทอร์เน็ต) จงระบุค่า V+ และ V- ตามลําดับสําหรับ
VCC=+4.5V

-  V+  คือค่าแรงดันที่เริ่มเป็น HIGH
    V-  คือค่าแรงดันที่เริ่มเป็น LOW
   V+ = 1.9 v
   V- = 0.1 v

5. จงระบุค่าโดยประมาณสําหรับV+ และ V- สําหรับไอซี74HCT14 ที่สามารถดูได้จากผลการทดลอง
(ใช้สําหรับ VCC=+5V)

- V+ = 1.7 V
   V- = 160 mV

วันศุกร์ที่ 22 สิงหาคม พ.ศ. 2557

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

การทดลองที่ 1.3
การตรวจวัดสัญญาณดิจิทัล-เอาต์พุตจากบอร์ด Arduino

วัตถุประสงค์
1. ฝึกทักษะการต่อวงจรอิเล็กทรอนิกส์
2. ฝึกทักษะการใช้ออสซิลโลสโคป

รายการอุปกรณ์
1. บอร์ด Arduino 1 อัน
2. สายไฟสําหรับต่อวงจร 1 ชุด
3. ออสซิลโลสโคปแบบดิจิทัล 1 เครื่อง
4. เครื่องกําเนิดสัญญาณ 1 เครื่อง

วิธีการทดลอง
1.คอมไพล์โค้ดที่ 1.3.1-1.3.4 แล้วอัพโหลดไปยังบอร์ด Arduino จากนั้นใช้ออสซิลโลสโคป
วัดสัญญาณเอาต์พุตที่ได้ของแต่ละอัน แล้วบันทึกภาพ
2. ใช้เครื่องกําเนิดสัญญาณ สรางคลื่นแบบ PWM (รูปคลื่นแบบ Pulse) ที่มีความถี่ 50Hz มีค่า Duty
Cycle = 7.5% และมีระดบแรงดันต่ำและสูงในช่วง 0V และ 5V และให้ใช้ออสซิลโลสโคปตรวจดูรูป
คลื่นสัญญาณที่ได้และบันทึกภาพที่ปรากฏ (เปรียบเทียบผลกับการสร้างสัญญาณเอาต์พุตด้วยบอร์ด
Arduino)

โค้ดที่ 1.3.1
const byte LED_PIN = 5; //
void setup() {
  pinMode( LED_PIN, OUTPUT ); //
}
void loop() {
  digitalWrite( LED_PIN, HIGH ); //
  delay( 10 ); //
  digitalWrite( LED_PIN, LOW ); //
  delay( 10 ); //
}
ผลที่ได้หลังจากการรันโค้ด
โค้ดที่ 1.3.2
const byte LED_PIN = 5; 
void setup() { 
  pinMode( LED_PIN, OUTPUT ); 
void loop() { 
  digitalWrite( LED_PIN, HIGH ); 
  digitalWrite( LED_PIN, LOW ); 
}
ผลที่ได้จากการรันโค้ด
โค้ดที่ 1.3.3
const byte LED_PIN = 5; // Digital Pin 5 (D5)
void setup() { 
  pinMode( LED_PIN, OUTPUT ); // 
  analogWrite( LED_PIN, 191 ); //
void loop() { 
 // empty
}
ผลที่ได้จากการรันโค้ด

โค้ดที่ 1.3.4
#include <Servo.h>
Servo servo;
int minPulse = 600; // minimum servo position, in us
int maxPulse = 2400; // maximum servo position, in us
void setup() {
 servo.attach( 5, minPulse, maxPulse ); // use D5 for PWM output (servo)
 servo.write( 90 ); // set rotation angle (value between 0 to 180 degree)
}
void loop() {
 // empty
}
ผลที่ได้จากรันโค้ด
จากข้อ 3 เปรียบเทียบผลกับการสร้างสัญญาณเอาต์พุตด้วยบอร์ด
Arduino

คำถามท้ายการทดลอง
1.จงอธิบายความแตกต่างของสัญญาณเอาต์พุต (ขา D5) ของบอร์ด Arduino ที่ได้จากโค้ดตัวอย่างในแต่ละกรณี (ให้เปรียบเทียบค่า Duty Cycle และความถี่ของสัญญาณเอาต์พุตที่ได้ในแต่ละกรณี)
- ในโค้ดตัวอย่างที่ 1.3.1 และ 1.3.2 โค้ดทั้งสองมีคำสั่งที่เหมือนๆกันเพียงแต่ในโค้ดที่ 1.3.2 ตัดคำสั่ง delay() ออกไป ผลที่ได้จากการวัดด้วยออสซิลโลสโคปแสดงให้เห็นว่าค่าความถี่ของสัญญาณและค่า Duty Cycle ต่างกัน
2. มีขาใดบ้างของบอร์ด Arduino ในการทดลอง นอกจากขา D5 ที่สามารถใช้สร้างสัญญาณ PWM ด้วย
คําสั่ง analogWrite()
- ขา 3,6,9,10,11
3. ถ้าต้องการจะสร้างสัญญาณแบบ PWM ที่มีค่า Duty Cycle 20% และ 80% ที่ขา D5 และ D10 
ตามลําดับ โดยใช้คําสั่ง analogWrite() จะต้องเขียนโค้ด Arduino อย่างไร (เขียนโค้ดสําหรับ
Arduino Sketch ให้ครบถ้วน สาธิตและตรวจสอบความถูกต้องโดยใช้ออสซิลโลสโคปหรือเครองื่
วิเคราะห์สัญญาณดิจิทัล)
-  const byte LED_PIN1 = 5;
   const byte LED_PIN2 = 10;
  void setup(){
    pinMode( LED_PIN1, OUTPUT );
    pinMode( LED_PIN2, OUTPUT );
    analogWrite(LED_PIN1, 51);
    analogWrite(LED_PIN2, 204);
}
  void loop(){}
4. สัญญาณเอาต์พุตที่ได้จากการใช้คําสั่งของ Servo Library มีความถี่เท่าไหร่
- 50 Hz