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

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

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

  1. สร้างสัญญาณจากเครื่องกำเนิดสัญญาณดิจิดัลแบบมีคาบ เพื่อป้อนเป็นอินพุตให้บอร์ด Arduino
  2. ฝึกทักษะในการเขียนโปรแกรม สำหรับบอร์ด Arduino เพื่อประมวลผลสัญญาณดิจิทัลจากอินพุต และสร้างสัญญาณเอาต์พุตตามเงื่อนไขที่กำหนดให้

รายการอุปกรณ์
          1. แผงวงจร(เบรดบอร์ด)                            1 อัน
          2. บอร์ด Arduino(ใช้แรงดัน +5V)               1 บอร์ด
          3. ตัวต้านทาน 100Ω หรือ 150Ω                 1 ตัว
          4. ตัวต้านทาน 330Ω หรือ 470Ω                 1 ตัว
          5. ไดโอดเปล่งแสงขนาด 5 มม.                   1 ตัว
          6. สายไฟสำหรับต่อวงจร                            1 ชุด
          7. เครื่องกำเนิดสัญญาณดิจิทัล                    1 เครื่อง
          8. ออสซิลโลสโคป                                     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 พร้อมคำอธิบายโค้ด รูปตัวอย่างที่ได้จากการวัดสัญญาณและภาพถ่ายการต่อทดลองวงจรจริง ) จัดทำเป็นไฟล์ .PDF ขนาด A4 ส่งในระบบ e-learning ของภาควิชา


    *เนื่องจากการทดลองนี้ ไม่สามารถหาตัวต้านทาน ค่า 100Ω หรือ 150Ω ได้ จึงได้นำ ตัวต้านทาน330Ω จำนวน 2 ตัว ต่อขนาดกัน จึงได้ค่าประมาณ 165 Ω  ตามทฤษฎี*


โค้ดโปรแกรม

const byte digitalPin=3;  //กำหนดให้ตัวแปรเก็บค่า เลขของขาdigital ของ Arduino
const byte LED=5 ;
void setup() {
  pinMode(digitalPin,INPUT);  //กำหนดให้ขา D3 เป็นขา input โดยรับขาเข้ามาจาก function generator
  pinMode(LED,OUTPUT);     //กำหนดให้ขาD5 เป็นขา OUTPUT ซึ่งเป็น LED
}
void loop() {
 if(digitalRead(digitalPin)==HIGH){    //ตรวจสอบค่าที่ได้จาก Function Generator ถ้าหาก digitalRead(digitalPin)  = HIGH ไฟจะติด 
  digitalWrite(LED,HIGH);   
 }
 else digitalWrite(LED,LOW);   ถ้าหาก digitalRead(digitalPin)  = LOW ไฟจะดับ 
}
//จากเงื่อนไขด้านบนทำให้LED เกิดการกระพริบ
รูปคลื่นสัญญาณ 

เส้นคลื่นสีเหลือง แทน สัญญาณ OUTPUT

เส้นคลื่นสีฟ้า แทน สัญญาณ INPUT


5 HZ


10 Hz


15 Hz


20 Hz

เมื่อความถี่มากขึ้น LED จะกระพริบถี่ขึ้น


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

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