วันอังคารที่ 4 พฤศจิกายน พ.ศ. 2557

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

การออกแบบวงจร 3 to 8 decorder


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

1.    ฝึกการออกแบบวงจร 3 to 8 decorder โดยใช้โปรแกรม Quartus
2.   สามารถออกแบบวงจรโดยใช่ลอจิเกตพื้นฐาน และใช้ภาษา VHDL ในการออกแบบได้
3.   สามารถทดลองกับบอร์ด FPGA ได้อย่างถูกต้องเหมาะสมได้


อุปกรณ์ที่ใช้ในการทดลอง  

1. บอร์ด Altera FPGA Board (WARRIOR CYCLONE3 DEV)  1 บอร์ด
2. สายดาวน์โหลด ByteBlaster II และ USB Blaster 1 สาย
3. โปรแกรม Altera Quartus II Web Edition (version 11.1 ขึ้นไป)


โจทย์
1) จงออกแบบวงจร 3-to-8 decoder มีทำงานตามข้อกำหนดต่อไปนี้
- มีอินพุต A(2:0) และเอาต์พุต Y(7:0)
ถ้า A(2:0) = "000" จะได้ Y(7:0) = "00000001"
ถ้า A(2:0) = "001" จะได้ Y(7:0) = "00000010"
ถ้า A(2:0) = "010" จะได้ Y(7:0) = "00000100"
.......
ถ้า A(2:0) = "111" จะได้ Y(7:0) = "10000000"
- อินพุต A(2:0) ให้ใช้สวิตช์เลื่อน (Slide Switches) บนบอร์ด FPGA
- เอาต์พุต Y(7:0) ให้ใช้ LEDs บนบอร์ด FPGA
การออกแบบวงจร ให้ใช้วิธีดังต่อไปนี้ (สร้าง Design Project สำหรับแต่ละกรณี)
- ใช้วิธีวาดวงจร โดยใช้ลอจิกเกตพื้นฐาน อย่างเช่น AND, OR, NOT
- ใช้ภาษา VHDL ในการออกแบบ
- ทดลองในบอร์ด FPGA และเขียนรายงานการทดลอง

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

1) เตรียมอุปกรณ์

Altera FPGA Board


ByteBlaster II และ USB Blaster 


โปรแกรม Altera Quartus II Web Edition 

2.) วาดวงจร 3 to 8 decorder โดยใช้ลอจิกเกตพื้นฐาน อย่างเช่น AND, OR, NOT 
ด้วยโปรแกรม Quartus 
3.) ใช้ภาษา VHDL ในการออกแบบวงจรตามที่โจทย์กำหนด
1.             สร้างโปรเจคสำหรับการทดลอง โดยทำการเลือก
-                   เลือกชิปที่ตรงกับบอร์ด FPGA เป็น EP3C10E144C8
-                   Device Family ตระกูล Cyclone III
-                   Design synthesis เลือก ModelSim-Altera สำหรับเครื่องมือการจำลองการทำงาน (Simulation)
โดยใช้ภาษา VHDL
code
library ieee, work;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity tb decoder tb_decoder3_to_8 is
end tb_decoder3_to_8;
architecture testbench of tb_decoder3_to_8 is
component decoder3_to_8 is
port(
I : in std_logic_vector( 2 downto 0 );
O : out std_logic_vector( 7 downto 0 ) );
end component;
signal t_I : std_logic_vector( 2 downto 0 );
signal t_O : std_logic_vector( 7 downto 0 );
begin
DUT: decoder decoder3_to_8 port map( I => t I_ , O => t O_ );
process begin
t_I <= "000";
for i in 0 to 7 loop
t_I <= std_logic_vector( to_unsigned(i, 3) );
wait for 100 ns;
end loop;
end process;
end testbench;

4.) ทำการ Analysis & Synthetic เพื่อวิเคราะห์และสังเคราะห์วงจรดิจิทัลจากโค้ด VHDL
5.) กำหนดหมายเลขขาอินพุต-เอาต์พุตสำหรับวงจร โดยใช้คำสั่ง Pin Planner


ถ้ามีการใช้ LED จากบอร์ด FPGA ให้เพิ่มชื่อสัญญาณ LED_54 ที่ขา PIN_54 และกำหนดให้เป็น As output, driving GND โดย ขา 54 ต่ออยู่กับสัญญาณ LED_54 ที่เป็นตัวควบคุมการทำงานของ LEDs บนบอร์ดทดลอง FPGA ที่ใช้

6.) ทำการ Fitter และ Assembler


7.) ใช้คำสั่ง Programmer เพื่อทำการรันโค้ดที่ได้บนวงจร FPGA Board

8.) นำไปทดลองบนบอร์ด  FPGA 

บันทึกผลการทดลอง

จากการทดลองข้อที่ 2 :
การวาดวงจร 3 to 8 decorder

จากการทดลองข้อที่ 3 :



วันพุธที่ 15 ตุลาคม พ.ศ. 2557

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

การต่อวงจรสวิตช์ควบคุมด้วยแสง

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

1.    ฝึกการต่อวงจรโดยใช้สวิตช์ควบคุมด้วยแสง Opto-Interrupter บนเบรดบอร์ดอย่างถูกต้อง
2.   รู้จักการทำงานทางกายภาพของสวิตช์ควบคุมด้วยแสง
3.   ประยุกต์ใช้งานวงจรสวิตช์ควบคุมด้วยแสงร่วมกับบอร์ด Arduino ได้อย่างถูกต้องและเกิดประโยชน์

อุปกรณ์ที่ใช้ในการทดลอง  

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

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

      1. ต่อวงจรบนเบรดบอร์ดตามรูปที่ 5.3.1 โดยใช้แรงดันไฟเลี้ยง +5V และ GND จากบอร์ด Arduino 




ภาพการต่อวงจรบนเบรดบอร์ดจำลอง


ภาพการต่อวงจรจริงบนเบรดบอร์ด



      2. เขียนโค้ด Arduino เพื่อรับค่าอินพุตแบบดิจิทัลที่ขา D3 (จากสัญญาณ Vout ของวงจรบนเบรด
บอร์ด) แล้วสร้างสัญญาณเอาต์พุตที่ขา D5 เพื่อแสดงค่าของอินพุตที่รับโดยใช้LED เป็นตัวแสดง
สถานะทางลอจิก (ถ้าไม่มีวัตถุมาปิดกั้นช่องรับแสง LED จะต้องไม่ติด) 




Code: Arduino
const byte TCST = 3;
const byte LED1_PIN = 5;

void setup() {
  pinMode (TCST, INPUT);
  pinMode (LED1_PIN, OUTPUT);
  Serial.begin (9600);
}

void loop() {
  digitalWrite (LED1_PIN,(digitalRead(TCST)));

}

      3. ใช้กระดาษสีดําปิดกั้น (หรือวัตถุอื่น เช่น ไม้บรรทัดเหล็ก) บริเวณช่องรับแสงของอุปกรณ์สวิตช์
ควบคุมด้วยแสง สังเกตความแตกต่างระหว่างกรณีที่มีวัตถุปิดกั้นและไม่มี (เช่น ใช้มัลติมิเตอร์วัด
แรงดัน Vout)


วัดแรงดัน Vout. ที่ขณะมีวัตถุกั้น

วัดแรงดัน Vout. ที่ขณะไม่มีวัตถุกั้น


      4. ทดลองต่อบัซเซอร์แบบเปียโซ (สร้างเสียงเตือน) แทนวงจร LED ในวงจรบนเบรดบอร์ด (โดยนําไปต่ออนุกรมกับตัวต้านทานขนาด 330Ω และใหส้ังเกตว่า บัซเซอร์แบบเปียโซมีขาบวกและขาลบ) 




      5. แก้ไขโค้ด Arduino เพื่อนับเวลาตั้งแต่เริ่มนํากระดาษไปปิดกั้นจนถึงเมื่อนํากระดาษออกในแต่ละครั้งโดยวัดช่วงเวลาเป็นหน่วยมิลลิวินาที (msec) และให้แสดงผลออกทางพอร์ตอนุกรมผ่านทาง Serial 
Monitor ของ Arduino IDE (ให้ศึกษาการใช้คําสั่ง millis() สําหรับการเขียนโค้ด Arduino) 



Code: Arduino

const byte TCST = 3;
const byte LED1_PIN = 5;
unsigned long time1;
unsigned long time2;
unsigned long DeltaTime;
void setup() {
  pinMode (TCST, INPUT);
  pinMode (LED1_PIN, OUTPUT);
  Serial.begin (9600);
}
void loop() {
  digitalWrite(LED1_PIN, (digitalRead(TCST) == HIGH) ? HIGH : LOW);
  if (digitalRead(TCST) == HIGH)
  {
    time1 = millis();
    while (true)
{
      time2 = millis();
      if (digitalRead(TCST) == LOW)
      {
        Serial.print("Time :");
        DeltaTime = (time2 - time1);
        Serial.println(DeltaTime);
        break;
      }
    }
  }
  delay(100);
}

บันทึกผลการทดลอง

จากการทดลองข้อที่ 2 :


จากการทดลองข้อที่ 3 :
จากการทดลองข้อที่ 4 :


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

              1. จากการทดลองพบว่า จะวัดแรงดัน Vout ได้เท่ากับ 0.103 โวลต์ เมื่อไม่มีวัตถุไปปิดกั้นช่องรับแสงของอุปกรณ์H21A1 และจะวัด Vout ได้เท่ากับ 4.954 โวลต์ เมื่อมีวัตถุไปปิดกั้นช่องรับแสงของอุปกรณ์ดังกล่าว
     2. ถ้านํากระดาษสีขาวและกระดาษสีดํา ไปปิดกั้นช่องรับแสง ในแต่ละกรณีจะให้ผลการทำงานของวงจรที่แตกต่างกันหรือไม่จงอธิบาย  ไม่แตกต่างกัน เนื่องจากตัวอุปกรณ์สวัิตช์ควบคุมด้วยแสง H21A1 มีวิธีการตรวจจับแบบ Transmissive, Slotted





วันพฤหัสบดีที่ 2 ตุลาคม พ.ศ. 2557

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

การต่อวงจรไดโอดเปล่งแสงอินฟราเรด


และโฟโต้ทรานซิสเตอร์


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

1.    ฝึกการต่อวงจรไอดเปล่งแสงอินฟาเรด และโฟโต้ทรานซิสเตอร์ บนเบรดบอร์ดอย่างถูกต้อง
2.   รู้จักการทำงานของไอโอดเปล่งแสงอินฟาเรด และโฟโต้ทรานซิสเตอร์
       ที่ใช้เป็นตัวส่ง และรับแสงในวงจร
3.   สามารถหาความสัมพัธ์ระหว่างปริมาณแสงที่สะท้อนกลับ และระดับแรงดันเอาต์พุตในวงจรได้

อุปกรณ์ที่ใช้ในการทดลอง  

          1.  แผงต่อวงจร (เบรดบอร์ด)                                   1 อัน
          2. ไดโอดเปล่งแสงอินฟราเรด                                 1 ตัว
          3. โฟโต้ทรานซิสเตอร์                                             1 ตัว
          4. ตัวต้านทาน 220Ω                                               1 ตัว
          5. ตัวต้านทาน 10kΩ                                                1 ตัว
          6. ตัวเก็บประจุแบบ Electrolytic 1uF (มีขั้ว)          1 ตัว
          7. สายไฟสําหรับต่อวงจร                                         1 ชุด
          8. มัลติมิเตอร์                                                           1 เครื่อง
          9. แหล่งจ่ายแรงดันควบคุม                                     1 เครื่อง
        10. ออสซิลโลสโคปแบบดิจิทัล                                1 เครื่อง

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

       1. ต่อวงจรบนเบรดบอร์ด ตามผังวงจรในรูปที่5.1.1 (ให้ไดโอดเปล่งแสงอินฟราเรดและโฟโต้
ทรานซิสเตอร์อยู่ห่างกันประมาณ 1 cm) แล้วป้อนแรงดันไฟเลี้ยง VCC=+5V และ Gnd 
จากแหล่งจ่ายแรงดันควบคุม ไปยังวงจรบนเบรดบอร์ด



 ภาพการต่อวงจรบนเบรดบอร์ดตามรูปที่ 5.1.1



ภาพการต่อวงจรจริงบนเบรดบอร์ด เข้ากับเครื่องกำเนิดสัญญาณกระแสตรง 5 โวล์ต

ภาพการตรวจเช็ค IR LED ว่าใช้งานได้หรือไม่ (สามารถตรวจสอบได้โดยมองผ่านกล้องดิจิทัล)

        2. วัดแรงดันตกคร่อมที่ขาทั้งสองของไดโอดเปล่งแสงอินฟราเรด และวัดปริมาณกระแสที่ไหล (mA) แล้วจดบันทึกค่าที่ได้

ภาพการวัดแรงดันตกคร่อม IR LED
ค่าที่ได้คือ 1.182 v.

ภาพการวัดกระแสที่ผ่าน IR LED
ค่าที่ได้คือ 16.59 mA.

      3. ใช้ออสซิลโลสโคปวัดแรงดัน Vout แล้วบันทึกภาพของรูปคลื่นสัญญาณที่ปรากฏ
      4. ทดลองต่อและไม่ต่อตัวเก็บประจุสังเกตความแตกต่างของรูปคลื่นสัญญาณ Vout ในแต่ละกรณี

ภาพการวัดคลื่นสัญญาณโดยไม่ต่อตัวเก็บประจุ Vout ด้วยออสซิโลสโคป 

      5. นําแผ่นกระดาษสีขาว มาอยู่เหนือ ไดโอดเปล่งแสงอินฟราเรดและโฟโต้ทรานซิสเตอร์ทระยะ                   ห่าง 0.5 cm, 1 cm, 5 cm, และ 10 cm ตามลําดับ ใช้มัลตมิิเตอร์วัดแรงดัน Vout สําหรบระยะห่าง
            ดังกล่าว แล้วจดบันทึกค่าที่ได้ในแต่ละกรณี
  • ระยะห่าง 0.5 cm.
ค่าที่ได้คือ 3.238 v.

  • ระยะห่าง 1 cm.
ค่าที่ได้คือ 3.267 v.


  • ระยะห่าง 5 cm.
ค่าที่ได้คือ 3.878 v.

  • ระยะห่าง 10 cm.
ค่าที่ได้คือ 4.288 v.


      6. นําแผ่นกระดาษสีดํา มาอยู่เหนือ ไดโอดเปล่งแสงอินฟราเรดและโฟโต้ทรานซิสเตอร์ที่ระยะห่าง 
          0.5 cm, 1 cm, 5 cm, และ 10 cm ตามลําดับ ใช้มัลตมิิเตอร์วัดแรงดัน Vout สําหรบระยะห่าง
         ดังกล่าว แล้วจดบันทึกค่าที่ได้ในแต่ละกรณี
  • ระยะห่าง 0.5 cm.
 ค่าที่ได้คือ 4.870 v.

  • ระยะห่าง 1 cm.
 ค่าที่ได้คือ 4.873 v.

  • ระยะห่าง 5 cm.

 ค่าที่ได้คือ 4.848 v.

  • ระยะห่าง 10 cm.
 ค่าที่ได้คือ 4.769 v.


7. ต่อวงจรตามผังวงจรในรูปที่5.1.2 แล้วเปรียบเทียบความแตกต่างกับวงจรในรูปที่ 5.1.1 
(เช่น ดูการเปลี่ยนแปลงของแรงดัน Vout) 



 ภาพการต่อวงจรบนเบรดบอร์ดตามรูปที่ 5.1.2

ภาพการต่อวงจรจริงบนเบรดบอร์ด เข้ากับเครื่องกำเนิดสัญญาณกระแสตรง 5 โวล์ต

7.1  นําแผ่นกระดาษสีขาว มาอยู่เหนือ ไดโอดเปล่งแสงอินฟราเรดและโฟโต้ทรานซิสเตอร์ทระยะ                   ห่าง 0.5 cm, 1 cm, 5 cm, และ 10 cm ตามลําดับ ใช้มัลตมิิเตอร์วัดแรงดัน Vout สําหรบระยะห่าง
        ดังกล่าว แล้วจดบันทึกค่าที่ได้ในแต่ละกรณี
  • ระยะห่าง 0.5 cm. 
ค่าที่ได้คือ 1.248 v.

  • ระยะห่าง 1 cm.
ค่าที่ได้คือ 1.543 v.

  • ระยะห่าง 5 cm.
ค่าที่ได้คือ 1.004 v.

  • ระยะห่าง 10 cm.
ค่าที่ได้คือ 0.901 v.


 7.2 นําแผ่นกระดาษสีดํา มาอยู่เหนือ ไดโอดเปล่งแสงอินฟราเรดและโฟโต้ทรานซิสเตอร์ที่ระยะห่าง 
        0.5 cm, 1 cm, 5 cm, และ 10 cm ตามลําดับ ใช้มัลตมิิเตอร์วัดแรงดัน Vout สําหรบระยะห่าง
        ดังกล่าว แล้วจดบันทึกค่าที่ได้ในแต่ละกรณี
  • ระยะห่าง 0.5 cm.

 ค่าที่ได้คือ 0.119 v.
  • ระยะห่าง 1 cm.
 ค่าที่ได้คือ 0.134 v.
  • ระยะห่าง 5 cm.
 ค่าที่ได้คือ 0.196 v.

  • ระยะห่าง 10 cm.
 ค่าที่ได้คือ 0.254 v.

บันทึกผลการทดลอง

จากการทดลองข้อที่ 2 :
จากการทดลองข้อที่ 3 :

คลื่นสัญญาณปกติที่ Vout.

จากการทดลองข้อที่ 4 :

คลื่นสัญญาณ Vout. จากวงจรที่ไม่ต่อตัวเก็บประจุ

คลื่นสัญญาณ Vout. จากวงจรที่ต่อตัวเก็บประจุ

จากการทดลองข้อที่ 5 :

กระดาษสีขาว
จากตารางสามารถสรุปได้ว่า
เมื่อระยะห่างของกระดาษ กับโฟโต้ทรายซิสเตอร์มากขึ้น ค่าแรงดันที่ได้จะมีค่ามากขึ้นตามไปด้วย เพราะฉะนั้น อาจสรุปได้ว่า "ในวงจรนี้ ระยะห่างของกระดาษสีขาวแปรผันตรงกับปริมาณของแรงดัน"


จากการทดลองข้อที่ 6 :

กระดาษสีดำ
จากตารางสามารถสรุปได้ว่า
เมื่อระยะห่างของกระดาษ กับโฟโต้ทรายซิสเตอร์มากขึ้น ค่าแรงดันแทบจะไม่เปลี่ยนแปลง
เพราะฉะนั้น อาจสรุปได้ว่า "ในวงจรนี้ ระยะห่างของกระดาษสีดำไม่ทำให้ค่าแรงดันเกิดการเปลี่ยนแปลง เนื่องจากกระดาษสีดำ สะท้อนแสงได้ไม่ดี"

จากการทดลองข้อที่ 7.1 :

กระดาษสีขาว


จากตารางสามารถสรุปได้ว่า
เมื่อระยะห่างของกระดาษ กับโฟโต้ทรายซิสเตอร์มากขึ้น ค่าแรงดันที่ได้จะมีค่าน้อยลงตามไปด้วย เพราะฉะนั้น อาจสรุปได้ว่า "ในวงจรนี้ ระยะห่างของกระดาษสีขาวแปรผกผันกับปริมาณของแรงดัน"


จากการทดลองข้อที่ 7.2 :

กระดาษสีดำ


จากตารางสามารถสรุปได้ว่า
เมื่อระยะห่างของกระดาษ กับโฟโต้ทรายซิสเตอร์มากขึ้น ค่าแรงดันแทบจะไม่เปลี่ยนแปลง
เพราะฉะนั้น อาจสรุปได้ว่า "ในวงจรนี้ ระยะห่างของกระดาษสีดำไม่ทำให้ค่าแรงดันเกิดการเปลี่ยนแปลง เนื่องจากกระดาษสีดำ สะท้อนแสงได้ไม่ดี"



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

1. จากกการทดลองพบว่า จะมีกระแสไหลผ่านไดโอดเปล่งแสงอินฟราเรด 16.59 mA. และวัดแรงดันตกคร่อมได้เท่ากับ  1.182 v. โวลต์

2. เมื่อทดลองโดยใช้กระดาษสีขาว สําหรับวงจรแบบที่ 1 จะได้แรงดัน Vout อยู่ในช่วง 3.238 - 4.288 และจะได้แรงดัน Vout อยู่ในช่วง 0.901- 1.248 v. สําหรับวงจรแบบที่ 2 

3. เมื่อทดลองโดยใช้กระดาษสีดํา สําหรับวงจรแบบที่ 1 จะได้แรงดัน Vout อยู่ในช่วง 4.769-4.873  และจะได้แรงดัน Vout อยู่ในช่วง 0.119 - 0.254 v. สําหรับวงจรแบบที่ 2 

4. ที่ระยะห่างเท่ากัน การทดลองด้วยวัตถุสีขาวและวัตถุสีดํา จะให้ผลแตกต่างกันหรือไม่ เมื่อวัดแรงดันVout ของวงจร จงอธิบาย ผลที่ได้จะออกมาแตกต่างกันเนื่องจาก กระดาษสีขาวมีคุณสมบัติในการสะท้อนแสงมากกว่า ทำให้โฟโต้ทรานซิสเตอร์รับปริมาณแสงน้อยกว่าจากกระดาษสีดำ (เมื่อมีแสงในปริมาณมากพอทรานซิสเตอร์จะทำงานโดยยอมให้กระแสไหลผ่านจากขาหนึ่งไปยังอีกขาหนึ่ง)

5. การต่อตัวเก็บประจุคร่อมที่ Vout กับ Gnd มีผลต่อรูปคลื่นสัญญาณเอาต์พุตหรือไม่จงอธิบาย ทำให้คลื่นสัญญาณที่ได้มีค่าผกผันกับปริมาณแสงที่ได้รับ และมีค่าน้อยลง

6. ในการทดลอง แสงสว่างจากหลอดไฟในอาคาร มีผลต่อสัญญาณ  Vout  หรือไม่จงอธิบาย ไม่มีผลเนื่องจาก ในวงจรมีระยะตรวจจับการสะท้อนแสง(IR LED)