การทดลองที่ 1.3
การตรวจวัดสัญญาณดิจิทัล-เอาต์พุตจากบอร์ด Arduino
วัตถุประสงค์ของการทดลอง
- เพื่อฝึกทักษะการต่อวงจรอิเล็กทรอนิกส์บนบอร์ดการทดลอง
- เข้าใจและมีทักษะในการวัดปริมาณทางไฟฟ้าด้วยมัลติมิเตอร์
- ฝึกการใช้งานบอร์ด Arduino โดยศึกษาจาก code ตัวอย่าง
อุปกรณ์ที่ใช้ในการทดลอง
| บอร์ด Arduino | 1 บอร์ด |
| สายไฟสำหรับต่อวงจร | 1 ชุด |
| ออสซิลโลสโคปแบบดิจิทัล | 1 เครื่อง |
| เครื่องกําเนิดสัญญาณ | 1 เครื่อง |
วิธีการทดลอง
1. คอมไพล์โค้ดตัวอย่างที่ 1.3.1 แล้วอัพโหลดไปยังบอร์ด Arduino จากนั้นใช้
ออสซิลโลสโคป วัดสัญญาณเอาต์พุตที่ได้ (รูปคลื่นแบบสี่เหลี่ยม) แล้วบันทึกภาพ
(ให้ระบุ ความถี่ และค่า Duty Cycle ของสัญญาณตามที่วัดได้จริง)
Duty Cycle (%) = 100% x (ความกว้างของคลื่นในช่วงที่เป็น High / คาบของสัญญาณ)
2. ทําขั้นตอนที่ 1 ซ้ำ สําหรับโค้ดตัวอย่างที่ 1.3.2 – 1.3.4 ตามลําดับ
3. ใช้เครื่องกําเนิดสัญญาณ สร้างคลื่นแบบ PWM (รูปคลื่นแบบ Pulse) ที่มีความถี่ 50Hz มีค่า Duty Cycle = 7.5% และมีระดับแรงดันต่ำและสูงในช่วง 0V และ 5V และให้ใช้ออสซิลโลสโคปตรวจดูรูป คลื่นสัญญาณที่ได้และบันทึกภาพที่ปรากฏ (เปรียบเทียบผลกับการสร้างสัญญาณเอาต์พุตด้วยบอร์ด Arduino)
ภาพการต่อวงจรจากบอร์ด Arduino Nano
ผลการทดลอง
- เมื่อนำ code ที่ 1.3.1 ไปรันบนบอร์ด Arduino และใช้เครื่องออสซิลโลสโคปวัด พบว่า duty cycle เท่ากับ 50% ส่วน frequency = 50 Hz ดังภาพข้างล่าง
- เมื่อนำ code ที่ 1.3.2 ไปรันบนบอร์ด Arduino และใช้เครื่องออสซิลโลสโคปวัด พบว่า duty cycle เท่ากับ 47.1% ส่วน frequency = 98.4 kHz ดังภาพข้างล่าง
- เมื่อนำ code ที่ 1.3.3 ไปรันบนบอร์ด Arduino และใช้เครื่องออสซิลโลสโคปวัด พบว่า duty cycle เท่ากับ 74.8% ส่วน frequency = 970.9 Hz ดังภาพข้างล่าง
- เมื่อนำ code ที่ 1.3.4 ไปรันบนบอร์ด Arduino และใช้เครื่องออสซิลโลสโคปวัด พบว่า duty cycle เท่ากับ 7.5% ส่วน frequency = 50 Hz ดังภาพข้างล่าง
คำถามท้ายการทดลอง
1. จงอธิบายความแตกต่างของสัญญาณเอาต์พุต (ขา D5) ของบอร์ด Arduino ที่ได้จากโค้ดตัวอย่างใน แต่ละกรณี (ให้เปรียบเทียบค่า Duty Cycle และความถี่ของสัญญาณเอาต์พุตที่ได้ในแต่ละกรณี)
Ans โค้ดที่ 1.3.1 มีค่า Duty Cycle = 50%, Frequency = 50 Hz
โค้ดที่ 1.3.2 มีค่า Duty Cycle = 47.1%, Frequency = 98.4 kHz โค้ดที่ 1.3.3 มีค่า Duty Cycle = 74.8%, Frequency = 970.9 Hz โค้ดที่ 1.3.4 มีค่า Duty Cycle = 7.5%, Frequency = 50 Hz
2. มีขาใดบ้างของบอร์ด Arduino ในการทดลอง นอกจากขา D5 ที่สามารถใช้สร้างสัญญาณ PWM ด้วย คําสั่ง analogWrite()
Ans A0, A1, A2, A3, A4, A5, A6, A7, D3, D6, D9, D10, D11
3. ถ้าต้องการจะสร้างสัญญาณแบบ PWM ที่มีค่า Duty Cycle 20% และ 80% ที่ขา D5 และ D10
ตามลําดับ โดยใช้คําสั่ง analogWrite() จะต้องเขียนโค้ด Arduino อย่างไร
(เขียนโค้ดสําหรับ Arduino Sketch ให้ครบถ้วน สาธิตและตรวจสอบความถูกต้อง
โดยใช้ออสซิลโลสโคปหรือเครื่อง วิเคราะห์สัญญาณดิจิทัล)
Ans const byte LED_PIN_5 = 5;
const byte LED_PIN_10 = 10;
void setup() {
analogWrite(LED_PIN_5, 51.2);
analogWrite(LED_PIN_10, 204.8);
}
void loop() {
// empty (ไม่ มี คําสั่งใดๆ ในฟังก์ ชั นloop)
}
4. สัญญาณเอาต์พุตที่ได้จากการใช้คําสั่งของ Servo Library มีความถี่เท่าไหร่
Ans 50 Hz