วันศุกร์ที่ 5 กันยายน พ.ศ. 2557

การทดลองที่ 3.4 การสร้างสัญญาณเอาต์พุตตามจังหวะสัญญาณอินพุตด้วย Arduino


การทดลองที่ 3.4
การสร้างสัญญาณเอาต์พุตตามจังหวะสัญญาณอินพุตด้วย Arduino

วัตถุประสงค์
  • สร้างสัญญาณจากเครื่องกำเนิดสัญญาณดิจิทัลแบบมีคาบ เพื่อป้อนเป็นอินพุตให้บอร์ด Arduino
  • เขียนโค้ดสำหรับ Arduino เพื่อประมวลผงสัญญาณดิจิทัลจากอินพุต และสร้างสัญญาณเอาต์พุตตามเงื่อนไขที่กำหนดให้
อุปกรณ์การทดลอง
  • แผงต่อวงจร                                                1  อัน
  • บอร์ด Arduino (ใช้แรงดัน +5V)                   1 บอร์ด
  • ตัวต้านทาน 100Ω หรือ 150Ω                     1 ตัว
  • ตัวต้านทาน 330Ω หรือ 470Ω                     1 ตัว
  • ไดโอดเปล่งแสงขนาด 5 มม.                     1 ตัว
  • สายไฟต่อวงจร                                           1 ชุด
  • เครื่องกำเนิดสัญญาณดิจิทัล                      1 เครื่อง
  • ออสซิลโลสโคป                                        1 เครื่อง
ขั้นตอนการทดลอง
  1. สร้างสัญญาณดิจิทัลแบบมีคาบ(แรงดันในช่วง 0V และ 5V เท่านั้น ห้ามใช้แรงดันสูงกว่า หรือแรงดันเป็นลบ) มีรูปคลื่นสี่เหลี่ยมหรือแบบ Pulse (Duty Cycle = 50%) มีความถี่ 10Hz จากเครื่องกำเนิดสัญญาณ โดยต่อผ่านตัวต้านทาน 100Ω หรือ 150Ω ไปยังขา D3 ของบอร์ด Arduino เพื่อใช้เป็นอินพุต
  2. ต่อวงจร LED พร้อมตัวต้านทานจำกัดกระแส ที่ขา D5 ของบอร์ด Arduino เพื่อใช้แสดงสถานะ
  3. เขียนโค้ด Arduino Sketch เพื่อทำให้หลอด LED บนแผงวงจรกระพริบตามความถี่ของสัญญาณอินพุต(อัตราการกระพริบของ LED จะต้องสอดคล้องกับความถี่ของสัญญาณอินพุต)
  4. ปรับความถี่ของสัญญาณอินพุตในช่วง 5Hz... 20HZ (เพิ่มทีละ 5Hz) และใช้ออสซิลโลสโคป 2 ช่องวัดสัญญาณอินพุตที่ขา D3 และสัญญาณเอาต์พุตที่ขา D5 พร้อมกัน และบันทึกรูปคลื่นสัญญาณที่ได้ สำหรับความถี่ต่างๆในการทดลอง
  5. เขียนรายงานการทดลอง(เขียนโจทย์ แนวทางการทำโจทย์ ผังวงจรโดยรวมซึ่งใช้โปรแกรม Eagle ในการวาด และโค้ด Arduino Sketch พร้อมทั้งคำอธิบายโค้ด รูปตัวอย่างที่ได้จากการวัดสัญญาณ และภาพถ่ายการต่อทดลองวงจรจริง) 
ผลการทดลอง

ใช้แรงดันที่เครื่องกำเนิดสัญญาณดิจิทัลเป็น 2.5 V, รูปคลื่นสี่เหลี่ยมหรือแบบ Pulse,  Duty Cycle = 50%








const byte LED_PIN = 5; //ใช้ขาหมายเลข D5 เพื่อสร้างสัญญาณดิจิทัล
const byte WAVE = 3; //ใช้ขาหมายเลข D3 เพื่อรับสัญญาณความถี่จากแหล่งกำเนิด

void setup() {
  pinMode(WAVE,INPUT); //ใช้ขา D3 เป็นอินพุต/
  pinMode(LED_PIN,OUTPUT); //ใช้ขา D5 เป็นเอาต์พุต
}

void loop() {
  digitalWrite(LED_PIN,digitalRead(WAVE)); 
//ให้เอาต์พุตที่ขา D5 รับสัญญาณตามความค่าความถี่ที่รับมาจากเครื่องกำเนิดสัญญาณดิจิทัล
}

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น