วันศุกร์ที่ 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