การทดลองที่ 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
}
ผลที่ได้จากการรันโค้ด
#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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น