วันเสาร์ที่ 8 พฤศจิกายน พ.ศ. 2557

32 – Bit Binary Counter

วัตถุประสงค์ในการทดลอง
     1. ฝึกการเขียนโค้ดในการออกแบบวงจรแบบนับขนาด 32 bit
     2. เรียนรู้และฝึกทักษะในการเขียนภาษา VHDL
     3. ฝึกการใช้ Altera Quartus II Web Edition เพื่อประยุกต์การใช้งานกับบอร์ด FPGA อย่างถูกต้อง

อุปกรณ์และซอฟต์แวร์ที่ใช้ในการทดลอง
     1. Altera FPGA Board (WARRIOR CYCLONE3 DEV)
     2. สายดาวน์โหลด ByteBlaster II และ USB Blaster
     3. โปรแกรม Altera Quartus II Web Edition (version 11.1 ขึ้นไป)

ขั้นตอนการทดลอง
     1. สร้างโปรเจคสำหรับการทดลอง โดยทำการเลือก
         - เลือกชิปที่ตรงกับบอร์ด FPGA เป็น EP3C10E144C8
         - Device Family ตระกูล Cyclone III
         - Design synthesis เลือก ModelSim-Altera สำหรับเครื่องมือการจำลองการทำงาน (Simulation) โดยใช้ภาษา VHDL
     2. ทำการเขียนโค้ด ภาษา VHDL สำหรับ 32 – Bit Binary Counter โดยโค้ดที่ได้เป็นดังนี้

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity counter is
Port ( CLK : in STD_LOGIC;
OUTPUT : out STD_LOGIC_VECTOR (31 downto 0));
end counter;
architecture Behavioral of counter is
signal counter : STD_LOGIC_VECTOR(31 downto 0) := (others => '0');
begin
OUTPUT <= counter;
count_process: process(CLK)
begin
if rising_edge(CLK) then
counter <= counter + 1;
end if;
end process;
end Behavioral;

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


           1.) เพิ่มชื่อสัญญาณ LCD_E ที่ขา PIN_54 และกำหนดให้เป็น As output, driving GND โดย ขา 54 ต่ออยู่กับสัญญาณ LCD_E ที่เป็นตัวควบคุมการทำงานของ LEDs บนบอร์ดทดลอง FPGA ที่ใช้
           2.) กำหนดอินพุต CLK ความถี่ 50MHz (ได้จากวงจรสร้างความถี่บนบอร์ด FPGA)
           3.) กำหนดขาอินพุท LED(7:0) ที่ต่อกับ LED บนบอร์ด FPGA โดยให้แสดงสถานะลอจิกของตัวนับ 8 บิต นับจากซ้ายสุด (บิตที่ 31..24)

      5. ทำการ Fitter และ Assembler


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


ผลการทดลอง




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

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

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

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

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

อุปกรณ์ที่ใช้ในการทดลอง
     1. แผงต่อวงจร (เบรดบอร์ด) 1 อัน
     2. อุปกรณ์เชื่อมต่อทางแสง PC817 1 ตัว
     3. ไดโอดเปล่งแสงสีแดงหรือสีเขียว 1 ตัว
     4. ตัวต้านทาน 220Ω หรือ 330Ω 1 ตัว
     6. ทรานซิสเตอร์ NPN เบอร์ PN2222A 1 ตัว
     7. ตัวต้านทาน 1kΩ 1 ตัว
     8. ตัวต้านทาน 4.7kΩ 1 ตัว
     9. ตัวต้านทาน 10kΩ 1 ตัว
     10. ตัวต้านทานปรับค่าได้ 10kΩ หรือ 20kΩ 1 ตัว 
     11. ไดโอด 1N400x 1 ตัว
     12. มอเตอร์ไฟฟ้ากระแสตรงขนาดเล็ก 1 ตัว *
     13. สายไฟสำหรับต่อวงจร 1 ชุด
     14. มัลติมิเตอร์ 1 เครื่อง
     15. แหล่งจ่ายแรงดันควบคุม 1 เครื่อง
     16. ออสซิลโลสโคปแบบดิจิทัล 1 เครื่อง

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

     1. ต่อวงจรบนเบรดบอร์ดตามรูปที่ 5.4.1 ให้สังเกตว่า ในผังวงจรมี GND1 และ GND2 แยกกันซึ่ง
จะต้องไม่นำมาต่อเข้าด้วยกันโดยเด็ดขาด



     2. ให้ใช้แรงดันไฟเลี้ยง +5V และ GND1 ให้ใช้จากบอร์ด Arduino แต่สำหรับ +9V และ GND2
ให้ใช้จากแหล่งจ่ายแรงดันควบคุม
     3. เขียนโค้ด Arduino โดยสร้างสัญญาณแบบ PWM โดยใช้คำสั่ง analogWrite() เพื่อสร้างสัญญาณเอาต์พุตที่ขา D5 โดยปรับค่า Duty Cycle ของสัญญาณเอาต์พุตตามค่าที่อ่านได้จากตัวต้านทานปรับค่าได้ ซึ่งต่อเป็นอินพุตที่ขา A1


โค้ดที่ได้ :
const byte TriP = A1;
const byte LED1_PIN = 5;

void setup() {
  pinMode (TriP, INPUT);
  pinMode (LED1_PIN, OUTPUT);
  Serial.begin (9600);
}
void loop() {
 float value1 = analogRead(TriP);
 value1 = (value1)*(255.0/1024.0);
 analogWrite (LED1_PIN, value1);
 Serial.println (value1);
}

     4. ใช้ออสซิลโลสโคปวัดสัญญาณที่ขา E ของ PC817 เทียบกับ GND2 แล้วทดลองหมุนปรับที่
ตัวต้านทานปรับค่าได้ เพื่อปรับค่า Duty Cycle เป็น 0% 25% 50% และ 100% ตามลำดับ
บันทึกรูปคลื่นสัญญาณที่ได้ในแต่ละกรณี
 




     5. ทดลองเปลี่ยนจาก LED และตัวต้านทาน เป็นมอเตอร์ไฟฟ้ากระแสตรงขนาดเล็ก (ปรับแรงดันไฟเลี้ยง
จาก +9V ให้เป็นแรงดันไฟเลี้ยงที่เหมาะสมกับมอเตอร์ไฟฟ้า +VM) โดยต่อวงจรตามรูปที่ 5.4.2 และ
ทดลองปรับค่า Duty Cycle




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

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

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

การทดลองที่ 5.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 จะต้องไม่ติด (ไม่กระพริบ) ให้ทดลองกับวัตถุต่างสีกัน เช่น สีขาวและสีดำ

โค้ดที่ได้
const byte Infrared = A1;
const byte LED1_PIN = 5;

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

void loop() {
  int value1 = analogRead (Infrared);
  if (value1 >= 175) {
    digitalWrite (LED1_PIN, HIGH);
    if (value1 >= 250) {
    digitalWrite (LED1_PIN, HIGH);
    delay (1000-(value1));
    digitalWrite (LED1_PIN, LOW);
    delay (1000-(value1));
    }
  }
  else {
    digitalWrite (LED1_PIN, LOW);
  }
  Serial.println (value1, DEC);
delay (100);
}

ผลการทดลอง :


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

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

      1. ในการทดลอง ถ้าใช้วัตถุต่างสีกัน จะมีผลต่อการทำงานของวงจรที่แตกต่างกันหรือไม่ จงอธิบาย
ตอบ : ต่างกัน เพราะว่า การทดลองใช้กระดาษสีดำและสีขาว กระดาษสีดำ เป็นสีที่ไม่มีการทะลุผ่านและไม่มีการสะท้อนของแสง ทำให้การทดลอง ไม่เปลี่ยนแปลง แต่เมื่อเรานำกระดาษสีขาวมาใกล้วงจร มีผลทำให้ LED กระพริบถี่มากขึ้น

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

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

การทดลองที่ 4.7 (การสร้างวงจรสร้างและควบคุมแรงไฟฟ้ากระแสตรงแบบปรับค่าได้)

วัตถุประสงค์
     1. ฝึกการออกแบบและต่อวงจรเพื่อสร้างและควบคุมแรงดันไฟฟ้ากระแสตรงแบบปรับค่าได้ 
     2. ฝึกการต่อ ไอซี 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 และจากอินเทอร์เน็ต)

การออกแบบวงจรด้วยโปรแกรม Fritzing 



ภาพการต่อวงจรขณะทำการทดลอง



      2. ใช้แรงดันจากแหล่งจ่ายภายนอก โดยป้อนแรงดัน +9V เป็นแรงดันอินพุต และปรับค่าตัวต้านทานปรับค่าได้ในวงจร ให้ได้แรงดันเอาต์พุต +5V และ +3.3V ตามลำดับ ตรวจสอบและวัดระดับแรงดันเอาต์พุตด้วยมัลติมิเตอร์




ผลการทดลอง : 1. เมื่อปรับค่าตัวตาานทานในวงจรเป็น 0.875 kΩ จะได้แรงดันประมาน 3.3 V
                        2. เมื่อปรับค่าตัวตาานทานในวงจรเป็น 3.06 kΩ จะได้แรงดันประมาน 5 V

วันพุธที่ 17 กันยายน พ.ศ. 2557

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

การทดลองที่ 4.3 (การต่อวงจรตัวต้านทานไวแสงและตรวจวัดการเปลี่ยนแปลงของปริมาณแสง)

วัตถุประสงค์
     1. เรียนรู้วิธีการใช้งานตัวต้านทานไวแสง (LDR)
     2. ฝึกต่อวงจรโดยตัวต้านทานไวแสง (LDR) ร่วมกับไอซีเปรียบเทียบแรงดัน เบอร์ LM393N
     3. ฝึกต่อวงจรโดยตัวต้านทานไวแสง (LDR) เพื่อใช้เป็นฝึกต่อวงจรโดยตัวต้านทานไวแสง (LDR)

อุปกรณ์ที่ใช้ในการทดลอง
     1. แผงต่อวงจร (เบรดบอร์ด) 1 อัน
     2. ไอซีเปรียบเทียบแรงดัน เบอร์ LM393N 1 ตัว
     3. ตัวต้านทานปรับค่าได้แบบสามขา ขนาด 10kΩ หรือ 20kΩ 1 ตัว
     4. ตัวต้านทานไวแสง 1 ตัว
     5. ตัวต้านทาน 330Ω หรือ 470Ω 1 ตัว
     6. ตัวต้านทาน 4.7kΩ 1 ตัว
     7. ตัวต้านทาน 10kΩ 1 ตัว
     8. ทรานซิสเตอร์ NPN เบอร์ PN2222A 1 ตัว
     9. สายไฟสำหรับต่อวงจร 1 ชุด
     10. มัลติมิเตอร์ 1 เครื่อง
ขั้นตอนและผลการทดลอง 

     1. ใช้มัลติมิเตอร์วัดค่าความต้านทานของตัวต้านทานไวแสง (LDR) ในสภาวะแสงที่แตกต่างกันในสามระดับ (ปริมาณแสงน้อย ปานกลาง และมาก) แล้วจดบันทึกค่าที่วัดได้ สังเกตการเปลี่ยนแปลงของค่าความต้านทานเมื่อปริมาณแสงเปลี่ยน

ปริมานแสง
ค่าความต้านทานที่วัดได้
มาก
402.9 Ω
ปานกลาง
2.246 kΩ
น้อย
16.23 kΩ

     2. ต่อวงจรบนเบรดบอร์ด ตามรูปที่ 4.3.1 แล้ววัดแรงดัน Vx ในสภาวะแสงที่แตกต่างกัน (ปริมาณแสงน้อย ปานกลาง มาก) แล้วจดบันทึกค่าที่วัดได้ สังเกตการเปลี่ยนแปลงของระดับแรงดันเมื่อปริมาณ
แสงเปลี่ยน





ปริมานแสง
แรงดัน Vx ที่วัดได้
มาก
4.97 V
ปานกลาง
4.21 V
น้อย
2.157 V

     3. ต่อวงจรบนเบรดบอร์ด ตามรูปที่ 4.3.2 (แบบที่ 1) โดยใช้แรงดันไฟเลี้ยง VCC=+5V และ Gnd
จากแหล่งจ่ายแรงดันควบคุม ทดลองหมุนปรับค่าที่ตัวต้านทานปรับค่าได้ และวัดแรงดัน Vref ที่ได้
สังเกตสถานะติด/ดับของ LED



การออกแบบวงจรด้วยโปรแกรม Fritzing




ค่าความต้านทานของ trimpot โดยประมาน
แรงดัน Vref ที่วัดได้
สถานะไดโอดเปล่งแสง
10 kΩ
0 V
ดับ
7.5 kΩ
0.615 V
ดับ
5 kΩ
2.509 V
ดับ
2.5 kΩ
4.596 V
ติด
0 kΩ
5.155 V
ติด

     4. ต่อวงจรบนเบรดบอร์ด ตามรูปที่ 4.3.3 (แบบที่ 2) โดยใช้แรงดันไฟเลี้ยง VCC=+5V และ Gnd
จากแหล่งจ่ายแรงดันควบคุม ทดลองหมุนปรับค่าที่ตัวต้านทานปรับค่าได้ และวัดแรงดัน Vref ที่ได้
สังเกตสถานะติด/ดับของ LED


การออกแบบวงจรด้วยโปรแกรม Fritzing




ค่าความต้านทานของ trimpot โดยประมาน
แรงดัน Vref ที่วัดได้
สถานะไดโอดเปล่งแสง
10 kΩ
0.001 V
ติด
7.5 kΩ
0.714 V
ติด
5 kΩ
2.569 V
ดับ
2.5 kΩ
4.429 V
ดับ
0 kΩ
5.157 V
ดับ
 

     5. ต่อวงจรบนเบรดบอร์ด ตามรูปที่ 4.3.4 (แบบที่ 3) โดยใช้แรงดันไฟเลี้ยง +5V +9V และ Gnd
จากแหล่งจ่ายแรงดันควบคุม ทดลองหมุนปรับค่าที่ตัวต้านทานปรับค่าได้ เพื่อให้ LED “สว่าง”
เมื่อปริมาณแสงน้อย และให้ LED “ไม่ติด” เมื่อปริมาณแสงมาก



การออกแบบวงจรด้วยโปรแกรม Fritzing





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

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

     1. ค่าความต้านทานของ LDR จะเปลี่ยนแปลงอย่างไร เมื่อปริมาณแสงเปลี่ยน และค่าความ
ต้านทานของ LDR ที่ได้จากการทดลอง จะอยู่ในช่วงใด
ตอบ : เมื่อปริมานแสงมากขึ้น ค่าความต้านทานจะยิ่งน้อยลง ค่าความต้านทานที่วัดได้อยู่ในช่วง
402.9 Ω - 16.23 kΩ
      2. สำหรับวงจรแบบที่ 1 และ 2 แรงดัน Vx จะเปลี่ยนแปลงอย่างไร เมื่อปริมาณแสงเปลี่ยน
(เปลี่ยนจากปริมาณแสงน้อยเป็นปริมาณแสงมาก)
ตอบ : แรงดันที่จุด Vx จะเพิ่มขึ้น ถ้าความต้านทานของ LDR ลดลง เมื่อได้รับแสงมากขึ้น
     3. สำหรับวงจรแบบที่ 3 การปรับค่าแรงดัน Vref โดยใช้ตัวต้านทานปรับค่าได้ในวงจร มีผลอย่างไร
ต่อการติดหรือดับของ LED
ตอบ : จากการทดลองพบว่าถ้าเราปรับค่าตัวต้านทานเข้าใกล้ 10 kΩ จะทำให้ Vref เข้าใกล้ 0 V ซึ่งทำให้ ไฟติด แต่ปรับค่าตัวต้านทานมากขึ้น Vref น้อยลง ทำให้สถานะของไฟดับ