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

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

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