วันพฤหัสบดีที่ 28 สิงหาคม พ.ศ. 2557

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

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

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


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

  •  แผงต่อวงจร (เบรดบอร์ด)                    1 อัน
  • ไอซี 74HCT00                                     1 ตัว

ที่มา: http://courses.cs.purdue.edu/_detail/cs25000:and_gate.jpg?id=cs25000%3Aschematics


  •  ไอซี 74HCT14                                    1 ตัว

ที่มา : http://sciencezero.org/electronics/hvprog.htm


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


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

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

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

 Time/Div =10 us


Time/Div = 50ns

5. ต่อวงจรไดโอดเปล่งแสงพร้อมตัวต้านทาน 330Ω หรือ 470Ω ที่ขาเอาต์พุตของลอจิกเกต NOT

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

8. ยกเลิกการต่อวงจรไดโอดเปล่งแสงพร้อมตัวต้านทานที่ขาเอาต์พุตของลอจิกเกต NOT
9. เปลี่ยนรูปคลื่นสัญญาณอินพุต โดยสร้างคลื่นสัญญาณรูปสามเหลี่ยม Vpp=5V, Voffset=2.5V, f=1kHz
    จากเครื่องกําเนิดสัญญาณ เพื่อป้อนให้ขาอินพุตของลอจิกเกต NOT

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

11. วัดระดับแรงดันอินพุตที่ทําให้เกิดจุดตัดของคลื่นสัญญาณจากช่อง A และ B
แรงดันที่วัดได้ 1.6V

12. ยกเลิกการต่อวงจรโดยใช้ไอซี74HCT00 และให้ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซีเบอร์ 74HCT14
      เพื่อสร้างลอจิกเกต NOT จํานวน 1 ตัว (เลือกลอจิกเกต NOT ตัวใดก็ได้ที่มีอยู่ภายในไอซีดังกล่าว)

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

แรงดันขาลงวัดได้ 1.52V


แรงดันขาขึ้นวัดได้ 0.96 v

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

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



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

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

ขาลง

ขาขึ้น

4. อธิบายความหมายของคำว่า V+ และ V- ของ Schmitt-Trigger Inverter และถ้าอ้างอิงตามดาต้าชีทของไอซี 74HCT14 (ดาวน์โหลดได้จากอินเทอร์เน็ต) จงระบุค่า V+ และ V- ตามลำดับสำหรับ
VCC=+4.5V
ตอบ     V+ คือ แรงดันขาขึ้น (positive-going threshold voltage) และ V- คือ แรงดันขาลง  (negative-going                 threshold voltage)   V+  มีค่าเท่ากับ 1.5v และ V- มีค่าเท่ากับ 0.9v ตามลำดับ
  อ้างอิงจากดาต้าชีทของ ไอซี 74HCT14 : https://www.futurlec.com/74HCT/74HCT14.shtml *

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




วันอาทิตย์ที่ 24 สิงหาคม พ.ศ. 2557

บอร์ดทดลอง(Breadboard)





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

Breadboard ใช้งานอย่างไร

บนผิวหน้าของBreadboard จะมีรูอยู่มากมายโดยแต่ละรูที่อยู่ในแถวเดียวกันจะมีการเชื่อมต่อกันอยู่ภายในเมื่อเรานำสายไฟสองเส้น มาเสียบลงบน Breadboard ตรงตำแหน่งของรูที่อยู่ในแถวแนวนอนเดียวกัน จะทำให้สายไฟทั้งสองเส้นนั้นเชื่อมต่อต่อกัน ถือว่าเป็นสายไฟเส้นเดียวกัน

การเชื่อมต่อภายในของ Breadboard นั้นจะแบ่งออกเป็นสองบริเวณ

1.บริเวณที่อยู่ด้านในของ Breadboard
              บริเวณภายในกรอบสี่เหลี่ยมสีแดง รูทั้ง 5 รูที่อยู่ในแนวตามแถมสีชมพู จะเชื่อมต่อกัน และถือว่า เป็นจุดเดียวกัน



        ตัวอย่าง
          เมื่อเรานำสายไฟเส้นสีเขียวและเส้นสีดำมาเสียบลงบน Breadboard ดังที่เห็นในภาพ จะทำให้สายไฟทั้งสองเส้นนี้เชื่อมต่อกัน ถือว่าเป็นสายไฟเส้นเดียวกัน


 2. บริเวณที่อยู่ด้านนอกของ Breadboard
                บริเวณภายในกรอบสี่เหลี่ยมสีแดง รูทั้งหมดในแนวยาวที่ตามแถบสีชมพู จะเชื่อมต่อกัน  และถือว่าเป็นจุดเดียวกัน

                                        

          ตัวอย่าง


           เมื่อเรานำสายไฟสองเส้นคือเส้นดำและเส้นสีเขียว มาต่อกับ Breadboard ตามภาพด้านบน จะทำให้สายไฟทั้งสองเส้นนี้ เชื่อมต่อกัน ถือว่าเป็นสายไฟเส้นเดียวกัน







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

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


วัตถุประสงค์ของการทดลอง


  1. ผึกการใช้ ออสซิลโลสโคป
  2. ฝึกทักษะการใช้บอร์ด Arduino
  3. ทำความเข้าใจเกี่ยวกับโค้ด และ สังเกตุความแตกต่างของ output ในแต่ละโค้ด


วัสดุอุปกรณ์ที่ใช้

  1. บอร์ด Arduino                          1 อัน

  2. สายไฟสำหรับต่อวงจร                    1 ชุด
  3. ออสซิลโลสโคปแบบดิจิทัล               1 เครื่อง

  4. เครื่องกำเนิดสัญญาณ                     1 เครื่อง

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

  • โค้ดที่ 1.3.1:โค้ด Arduino เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 (แบบที่ 1)
          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(ได้รูปคลื่นสี่เหลี่ยม)
                                 คาบ(T) = 2ช่อง x 10 ms=20 ms
                                 ความถี่(F) =1/20 ms= 50 Hz
                                 Duty Cycle =100% x[(1ช่องx10 ms)/20 ms]= 50%


  • โค้ดที่ 1.3.2:โค้ด Arduino เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 (แบบที่ 2)

          const byte LED_PIN = 5; 

          void setup() {
              pinMode( LED_PIN, OUTPUT );
          }
          void loop() {
              digitalWrite( LED_PIN, HIGH );
              digitalWrite( LED_PIN, LOW );
          }
ผลที่ได้จากออสซิลโลสโคปของโค้ดโค้ดที่1.3.2(ได้รูปคลื่นสี่เหลี่ยม)
                                 คาบ(T) = 5ช่อง x 2 µs=10 µs
                                 ความถี่(F) =1/10 µs= 100 kHz
                                 Duty Cycle =100% x[(2.4ช่องx2 µs)/10 µs]= 48%
  • โค้ดที่ 1.3.3:โค้ด Arduino เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 (แบบที่ 3)
           const byte LED_PIN = 5; // Digital Pin 5 ( D 5 )
           void setup() {
               pinMode( LED_PIN, OUTPUT );  // ให้ขาดิจิทัล D5 เป็นเอาต์พุต
               analogWrite( LED_PIN, 191 );  // สร้างสัญญาณ PWM ที่ขา D5
           }
           void loop() {
              // empty ( ไม่มีคำสั่งใดๆในฟังก์ชัน loop)
           }

ผลที่ได้จากออสซิลโลสโคปของโค้ดที่1.3.3(ได้รูปคลื่นสี่เหลี่ยม)
                                 คาบ(T) = 2.1ช่อง x 500 µs=1 ms
                                 ความถี่(F) =1/1 ms= 1 kHz
                                 Duty Cycle =100% x[(1.6ช่องx500 µs)/1 ms]= 80%
  • โค้ดที่ 1.3.4:โค้ด Arduino เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 (แบบที่ 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
          }
ผลที่ได้จากออสซิลโลสโคปของโค้ดที่1.3.4(ได้รูปคลื่นสี่เหลี่ยม)
                                 คาบ(T) = 4ช่อง x5 ms=20 ms
                                 ความถี่(F) =1/20 ms= 50 kHz
                                 Duty Cycle =100% x[(0.4ช่องx5ms)/20ms]= 10%


  (การทดลองโดยใช้เครื่องกำเนิดสัญญาณเอาต์พุต)
  1. ใช้เครื่องกำเนิดสัญญาณ สร้างคลื่นแบบ PWM(Pulse) ที่มีความถี่ 50 Hz มีค่า
        Duty Cycle 7.5% และมีแรงดันอยู่ในช่วง 0V และ 5V 

   2.  ใช้ออสซิลโลสโคปตรวจดูรูปคลื่นสัญญาณ 


                                 คาบ(T) = 4ช่อง x5 ms=20 ms
                                 ความถี่(F) =1/20 ms= 50 kHz
                                 Duty Cycle =100% x[(0.3ช่องx5ms)/20ms]= 7.5%



จากรูป จะเห็นว่าการสร้างสัญญาณเอาต์พุตด้วย เครื่องกำเนิดสัญญาณ และ บอร์ด Arduino
(ใช้โค้ดในตัวอย่างที่ 1.3.4) ให้ผลเหมือนกัน 


-------------------------------------------------------------------------------------------
     คำถามท้ายการทดลอง
1. จงอธิบายความแตกต่างของสัญญาณเอาต์พุต (ขา D5) ของบอร์ด Arduino ที่ได้จากโค้ดตัวอย่างในแต่ละกรณี (ให้เปรียบเทียบค่า Duty Cycle และความถี่ของสัญญาณเอาต์พุตที่ได้ในแต่ละกรณี)
ตอบ   โค้ดที่ 1.3.1        Duty Cycle = 50%       ความถี่(F) = 50   Hz              
        โค้ดที่ 1.3.2        Duty Cycle = 48%       ความถี่(F) = 100 kHz        
        โค้ดที่ 1.3.3        Duty Cycle = 80%       ความถี่(F) = 1    kHz           
        โค้ดที่ 1.3.4        Duty Cycle = 10%       ความถี่(F) = 50   Hz              

2. มีขาใดบ้างของบอร์ด Arduino ในการทดลอง นอกจากขา D5 ที่สามารถใช้สร้างสัญญาณ PWM ด้วยคำสั่ง analogWrite()

ตอบ  ขา D3, D6, D9, D10, D11 และขาฝั่งแอนะล็อก

3. ถ้าต้องการจะสร้างสัญญาณแบบ PWM ที่มีค่า Duty Cycle 20% และ 80% ที่ขา D5 และ D10 ตามลำดับ โดยใช้คำสั่ง analogWrite() จะต้องเขียนโค้ด Arduino อย่างไร (เขียนโค้ดสำหรับ Arduino Sketch ให้ครบถ้วน สาธิตและตรวจสอบความถูกต้องโดยใช้ออสซิลโลสโคปหรือเครื่องวิเคราะห์สัญญาณดิจิทัล)

ตอบ   Arduino Sketch :
     const byte LED_PIN = 5;
     const byte LED_PIN_1 = 10;
     void setup(){
       pinMode(LED_PIN,OUT_PUT);
       analogWrite(LED_PIN,51);
       pinMode(LED_PIN_1,OUT_PUT);
       analogWrite(LED_PIN_1,204);
     }

     void loop(){
       //empty
     }


จากรูป
CH1(สีเหลือง) คือ ขาD10 ที่มีค่า Duty Cycle 79.9%
CH1(สีเหลือง) คือ ขาD5   ที่มีค่า Duty Cycle 19.6%


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

ตอบ 49.75 Hz