วันพุธที่ 27 สิงหาคม พ.ศ. 2557

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

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

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


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

  • ฝึกต่อวงจรโดยใช้ไอซีลอจิก 74HCT00 และ 74HCT14 บนเบรดบอร์ด
  • ใช้เครื่องกำเนิดสัญญาณสร้างสัญญาณตามรูปแบบที่กำหนด เพื่อป้อนให้ขาอินพุตของลอจิกเกต
  • ใช้ออสซิลโลสโคปตรวจวัดคลื่นสัญญาณที่ขาอินพุตและขาเอาต์พุตของลอจิกเกต เพื่อวิเคราะห์การทำงานของวงจร

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

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

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


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

   
        4. สังเกตความสัมพันธ์ระหว่างคลื่นสัญญาณอินพุตและเอาต์พุต (ปรับ Time/Div ไปที่
            ระดับ 10us และ50ns ตามลำดับเพื่อดูรูปคลื่นสัญญาณในแต่ละกรณี) และวัดระดับ
            แรงดันสูงสุดของสัญญาณเอาต์พุตที่ได้ (ให้บันทึกภาพที่ปรากฏบนจอแสดงผลของ
            ออสซิลโลสโคปด้วย)
Vmax = 5.12 V

Vmax = 5.44 V

        5. ต่อวงจรไดโอดเปล่งแสงพร้อมตัวต้านทาน 330Ω หรือ 470Ω ที่ขาเอาต์พุตของ
            ลอจิกเกต NOT
        6. ใช้ออสซิลโลสโคปวัดสัญญาณ โดยใช้ช่อง A วัดสัญญาณที่ขาอินพุต ใช้ช่อง B
            วัดสัญญาณที่ขาเอาต์พุตของลอจิกเกต NOT
   
        7. สังเกตความแตกต่างเมื่อเปรียบเทียบกับกรณีที่ไม่ได้ต่อวงจรไดโอดเปล่งแสง
            พร้อมตัวต้านทานที่ขาเอาต์พุต และวัดระดับแรงดันสูงสุดของสัญญาณเอาต์พุตที่ได้
            (ให้บันทึกภาพที่ปรากฏบนจอแสดงผลของออสซิลโลสโคปด้วย)
สิ่งที่แตกต่างคือแรงดันทางด้านเอาต์พุตที่ออสซิโลสโคปวัดได้คือ 4.8 V
แรงดันดรอปลงเนื่องจากเราวัดแรงดันของไดโอตเปร่งแสง

        8. ยกเลิกการต่อวงจรไดโอดเปล่งแสงพร้อมตัวต้านทานที่ขาเอาต์พุตของลอจิกเกต NOT
        9. เปลี่ยนรูปคลื่นสัญญาณอินพุต โดยสร้างคลื่นสัญญาณรูปสามเหลี่ยม Vpp=5V,
            Voffset=2.5V, f=1kHz จากเครื่องกำเนิดสัญญาณ เพื่อป้อนให้ขาอินพุตของ
            ลอจิกเกต NOT
      10. ใช้ออสซิลโลสโคปวัดสัญญาณ โดยใช้ช่อง A วัดสัญญาณที่ขาอินพุต ใช้ช่อง B
            วัดสัญญาณที่ขาเอาต์พุตของลอจิกเกต NOT แล้วสังเกตผลที่ได้
            (ให้บันทึกภาพที่ปรากฏบนจอแสดงผลของออสซิลโลสโคปด้วย)


      11. วัดระดับแรงดันอินพุตที่ทำให้เกิดจุดตัดของคลื่นสัญญาณจากช่อง A และ B
             -แรงดันอินพุตที่ขอบขาลงคือ 1.44 V, ที่ขอบขาขึ้นคือ 1.67 V
      12. ยกเลิกการต่อวงจรโดยใช้ไอซี 74HCT00 และให้ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซี
            เบอร์ 74HCT14 เพื่อสร้างลอจิกเกต NOT จำนวน 1 ตัว
            (เลือกลอจิกเกต NOT ตัวใดก็ได้ที่มีอยู่ภายในไอซีดังกล่าว)
      13. สร้างคลื่นสัญญาณรูปสามเหลี่ยม Vpp=5V, Voffset=2.5V, f=1kHz จากเครื่องกำเนิด
            สัญญาณเพื่อป้อนให้ขาอินพุตของลอจิกเกต NOT

      14. ใช้ออสซิลโลสโคปวัดสัญญาณ โดยใช้ช่อง A วัดสัญญาณที่ขาอินพุต ใช้ช่อง B
            วัดสัญญาณที่ขาเอาต์พุตของลอจิกเกต NOT แล้วสังเกตผลที่ได้
            (ให้บันทึกภาพที่ปรากฏบนจอแสดงผลของออสซิลโลสโคปด้วย)

      15. วัดระดับแรงดันอินพุตที่ทำให้เกิดจุดตัดของคลื่นสัญญาณจากช่อง A และ B
            -แรงดันอินพุตที่ขอบขาขึ้นคือ 1.76 V, ที่ขอบขาลงคือ 0.88 V

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


       1. ในกรณีที่สร้างลอจิกเกต NOT จากเกต NAND ของไอซี 74HCT00 และป้อนสัญญาณ
           อินพุตเป็นรูปคลื่นสี่เหลี่ยมตามที่ได้ทดลองไป จงระบุระยะเวลาในการเปลี่ยนแปลงของ
           คลื่นสัญญาณที่ขาเอาต์พุตของลอจิกเกต NOT จาก HIGH เป็น LOW (ขอบขาลง) และ
           จาก LOW เป็น HIGH (ขอบขาขึ้น) ตามลำดับ เมื่อวัดด้วยออสซิลโลสโคป
           -ขอบขาขึ้น 100  ns  , ขอบขาลง 100 ns
       2. ในกรณีที่สร้างลอจิกเกต NOT จากเกต NAND ของไอซี 74HCT00 และป้อนสัญญาณ
           อินพุตเป็นรูปคลื่นสามเหลี่ยมตามที่ได้ทดลองไป จงอธิบายว่า จะได้คลื่นสัญญาณที่ขา
           เอาต์พุตของลอจิกเกต NOT เป็นรูปคลื่นแบบใด และให้ระบุระดับแรงดันอินพุตที่ทำให้เกิด
           จุดตัดของคลื่นสัญญาณจากช่อง A และ B
           (มีอยู่สองจุดตัด ในช่วงขาขึ้นและขาลงของสัญญาณอินพุต)
           แรงดันอินพุตที่ขอบขาลงคือ 1.44 V, ที่ขอบขาขึ้นคือ 1.67 V
             รูปคลื่นสี่เหลี่ยมที่มีความล่าช้าเกิดขึ้น
       3. ในกรณีที่ใช้ลอจิกเกต NOT ภายในไอซี 74HCT14 และป้อนสัญญาณอินพุตเป็น
           รูปคลื่นสามเหลี่ยมจงอธิบายว่า จะได้คลื่นสัญญาณที่ขาเอาต์พุตของลอจิกเกต NOT
           เป็นรูปคลื่นแบบใดและให้ระบุระดับแรงดันอินพุตที่ทำให้เกิดจุดตัดของคลื่นสัญญาณ
           จากช่อง A และ B
           (มีอยู่สองจุดตัด ในช่วงขาขึ้นและขาลงของสัญญาณอินพุต)
           -แรงดันอินพุตที่ขอบขาขึ้นคือ 1.76 V, ที่ขอบขาลงคือ 0.88 V
             รูปคลื่นสี่เหลี่ยม
       4. อธิบายความหมายของคำว่า V+ และ V- ของ Schmitt-Trigger Inverter และถ้าอ้างอิงตาม
           ดาต้าชีทของไอซี 74HCT14 (ดาวน์โหลดได้จากอินเทอร์เน็ต) จงระบุค่า V+ และ V-
           ตามลำดับสำหรับ  VCC=+4.5V
           -V+ คือแรงดันที่ทำให้รู้ว่าถ้าสูงกว่าค่านี้จะเป็น logic HIGH
             V-  คือแรงดันที่ทำให้รู้ว่าถ้าตำกว่าค่านี้จะเป็น logic LOW
             สำหรับ Vcc = 4.5 V , V+ = 1.55-3.15  V , V- = 0.9-2.45 V
       5. จงระบุค่าโดยประมาณสำหรับ V+ และ V- สำหรับไอซี 74HCT14 ที่สามารถดูได้จาก
           ผลการทดลอง(ใช้สำหรับ VCC=+5V)
           -  V+ ประมาณ 1.76 V  , V- ประมาน 0.88 V




วันอังคารที่ 26 สิงหาคม พ.ศ. 2557

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

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

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


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


  • ฝึกทักษะในการต่อวงจรอิเล็กทรอนิกส์พื้นฐานบนเบรดบอร์ด
  • เข้าใจและมีทักษะในการวัดปริมาณทางไฟฟ้าด้วยมัลติมิเตอร์ เช่น แรงดันตกคร่อมที่ตัวต้านทาน และการวัดกระแสในวงจร เป็นต้น
  • ฝึกใช้ออสซิลโลสโคป เพื่อตรวจดูรูปคลื่นสัญญาณและวิเคราะห์การทำงานของบอร์ด Arduino โดยใช้โค้ดตัวอย่าง

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


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

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

1. คอมไพล์โค้ดตัวอย่างที่ 1.3.1 แล้วอัพโหลดไปยังบอร์ด Arduino จากนั้นใช้ออสซิลโลสโคป
วัดสัญญาณเอาต์พุตที่ได้ (รูปคลื่นแบบสี่เหลี่ยม) แล้วบันทึกภาพ (ให้ระบุ ความถี่ และค่า Duty
Cycle ของสัญญาณตามที่วัดได้จริง)
Duty Cycle (%) = 100% x (ความกว้างของคลื่นในช่วงที่เป็น High / คาบของสัญญาณ)
2. ทำขั้นตอนที่ 1 ซ้ำ สำหรับโค้ดตัวอย่างที่ 1.3.2 – 1.3.4 ตามลำดับ
3. ใช้เครื่องกำเนิดสัญญาณ สร้างคลื่นแบบ PWM (รูปคลื่นแบบ Pulse) ที่มีความถี่ 50Hz มีค่า Duty
Cycle = 7.5% และมีระดับแรงดันต่ำและสูงในช่วง 0V และ 5V และให้ใช้ออสซิลโลสโคปตรวจดูรูป
คลื่นสัญญาณที่ได้และบันทึกภาพที่ปรากฏ (เปรียบเทียบผลกับการสร้างสัญญาณเอาต์พุตด้วยบอร์ด
Arduino)
const byte LED_PIN = 5; // ใชข้ าหมายเลข D5 เพื่อสร้างสัญญาณดิจิทัล
void setup() {
pinMode( LED_PIN, OUTPUT ); // ใชข้ า D5 เป็นเอาต์พุต
}
void loop() {
digitalWrite( LED_PIN, HIGH ); // ใหเ้ อาต์พุตที่ขา D5 เป็น High
delay( 10 ); // รอเวลาประมาณ 10 มิลลิวินาที
digitalWrite( LED_PIN, LOW ); // ใหเ้ อาต์พุตที่ขา D5 เป็น Low
delay( 10 ); // รอเวลาประมาณ 10 มิลลิวินาที
}
โค้ดที่ 1.3.1: โค้ด Arduino เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 (แบบที่ 1)
const byte LED_PIN = 5;
void setup() {
pinMode( LED_PIN, OUTPUT );
}
void loop() {
digitalWrite( LED_PIN, HIGH );
digitalWrite( LED_PIN, LOW );
}
โค้ดที่ 1.3.2: โค้ด Arduino เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 (แบบที่ 2)
const byte LED_PIN = 5; // Digital Pin 5 (D5)
void setup() {
pinMode( LED_PIN, OUTPUT ); // ใหข้ าดิจิทัล D5 เป็นเอาต์พุต
analogWrite( LED_PIN, 191 ); // สรา้ งสัญญาณ PWM ที่ขา D5
}
void loop() {
// empty (ไม่มีคำสั่งใดๆ ในฟังก์ชัน loop)
}
โค้ดที่ 1.3.3: โค้ด Arduino เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 (แบบที่ 3)
ศึกษาคำสั่ง analogWrite() ได้จาก: http://arduino.cc/en/Reference/analogWrite
#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
}
โค้ดที่ 1.3.4: โค้ด Arduino เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 (แบบที่ 4)
ศึกษาคำสั่งเกี่ยวกับ Servo Library ได้จาก: http://arduino.cc/en/reference/servo


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

1. จงอธิบายความแตกต่างของสัญญาณเอาต์พุต (ขา D5) ของบอร์ด Arduino ที่ได้จากโค้ด
ตัวอย่างในแต่ละกรณี (ให้เปรียบเทียบค่า Duty Cycle และความถี่ของสัญญาณเอาต์พุตที่ได้
ในแต่ละกรณี)
  1.3.1 Duty cycle = 100%*(10m/20m) = 50%
  1.3.2 Duty cycle = 100%*(4.5u/10u)  = 45%
  1.3.3 Duty cycle = 100%*(0.8m/1m)  = 80%
  1.3.4 Duty cycle = 100%*(2m/20m)   = 10%
2. มีขาใดบ้างของบอร์ด Arduino ในการทดลอง นอกจากขา D5 ที่สามารถใช้สร้างสัญญาณ PWM
ด้วยคำสั่ง analogWrite()
-D3,D6,D9,D10,D11
3. ถ้าต้องการจะสร้างสัญญาณแบบ PWM ที่มีค่า Duty Cycle 20% และ 80% ที่ขา D5 และ D10
ตามลำดับ โดยใช้คำสั่ง analogWrite() จะต้องเขียนโค้ด Arduino อย่างไร (เขียนโค้ดสำหรับ
Arduino Sketch ให้ครบถ้วน สาธิตและตรวจสอบความถูกต้องโดยใช้ออสซิลโลสโคปหรือเครื่อง
วิเคราะห์สัญญาณดิจิทัล)


4. สัญญาณเอาต์พุตที่ได้จากการใช้คำสั่งของ Servo Library มีความถี่เท่าไหร่
-50 Hz