ใบงานการทดลองท่ี 8 การใชง้ านแอนะลอ็ กเอาต์พตุ (PWM)วัตถุประสงคเ์ ชิงพฤติกรรมเพื่อให้นักศึกษาสามารถ 1. เขียนโปรแกรมเพอ่ื ควบคมุ ความสว่างของหลอดแอลอีดโี ดยใช้พัลส์วดิ ท์มอดูเลชันได้อย่างถกู ต้อง 2. เขียนโปรแกรมเพ่อื ควบคมุ ลักษณะเสยี งของบซั เซอร์ด้วยพลั ส์วดิ ทม์ อดูเลชันได้อย่างถูกต้องอุปกรณ์ประกอบการทดลอง 1 เคร่ือง 1 บอร์ด 1. คอมพวิ เตอร์ที่มีชอ่ งเสียบ USB 1 บอรด์ 2. บอรด์ Arduino Mega 2560 10 เสน้ 3. บอร์ด One the all 1 เสน้ 4. สายเชอื่ มต่อ 5. สาย USB type A to USB type Bลงชอื่ ผ้ทู ดลอง 1. _____________________________ 2.__________________________________ทฤษฎีที่เก่ียวข้อง ลักษณะของสัญญาณแอนะล็อกท่ีจ่ายออกจากอาร์ดุยโนนั้น จะเป็นในลักษณะของสัญญาณแบบพลั ส์วิดทม์ อดูเลชัน (Pulse Width Modulation - PWM) โดยดว้ ยค่า Duty Cycle ที่เปล่ียนไปน้นั ก็จะทาให้แรงดนั เฉล่ยี เปล่ยี นแปลงไปเชน่ เดียวดัน ซ่งึ อธิบายได้ดงั รปู ใบงานที่ 8-1รูปใบงานที่ 8-1 ลกั ษณะสัญญาณ PWM ที่คา่ Duty Cycle ต่างๆ หนงั สือชดุ ฝกึ ด้านดจิ ิทลั 169
จากรูปใบงานท่ี 8-1 เป็นการแสดงค่าแรงดันที่เกดิ ขนึ้ ขณะที่สง่ PWM คา่ Duty Cycle ทีแ่ ตกต่างกันโดยจะเห็นได้ว่า ค่าแรงดันนั้น จะสัมพันธ์กับเปอร์เซ็นต์ของช่วงเวลาการ “ON” และ “OFF” โดยจะเรียกช่วงเวลาการ “ON” ของรูปสัญญาณเป็นสัดส่วนกับคาบเวลาของรปู คล่ืนในหน่ึงคาบ เป็นเปอร์เซ็นตว์ ่า DutyCycle ซึ่งจากรูปจะเห็นได้ว่า ในขณะท่ี Duty Cycle 20% จะมีช่วงเวลา “ON” เป็นสัดส่วน 20% ของคาบเวลาในหนึ่งรูปคลน่ื นนั่ เองวธิ ีการใชง้ านฟงั ก์ชน่ั เพ่อื สร้างสัญญาณ PWM ในการสงั่ งานให้ขาสัญญาณของอาร์ดุยโนสร้างรูปคลน่ื PWM บนอาร์ดุยโน สามารถทาได้โดยใช้คาสั่งดังน้ี คาสง่ั analogWrite (pin, value); เมอื่ pin: เปน็ ชอ่ื ขาสญั ญาณท่ีตอ้ งการใชส้ ่งค่าสัญญาณ PWM value: เป็นคา่ ของ Duty Cycle อยู่ระหว่าง 0 (always off) ถงึ 255 (always on). *หมายเหตุ ขาสญั ญาณ PWM ของ Arduino Mega 2560 จะอยทู่ ่ีขา 2-13 เท่าน้นั ตวั อยา่ งการส่ังงาน 1 analogWrite(3,64); จากคาส่ังเป็นการส่ง PWM Duty Cycle = 25% ไปที่ขา 3 ซ่ึงแสดงรูปสัญญาณ ได้ ดังรปู ใบงานที่ 8-2 รปู ใบงานท่ี 8-2 ลักษณะสญั ญาณทขี่ า 3 ตวั อยา่ งการส่ังงาน 2 analogWrite(5, 255); จากคาส่ังเป็นการส่ง PWM Duty Cycle = 100% ไปท่ีขา 5 ซึ่งแสดงรูปสัญญาณได้ ดังรปู ใบงานที่ 8-3 โดยจะเหน็ ไดว้ า่ เสมือนเปน็ การสัง่ งาน “HIGH” อยู่ตลอดเวลา รปู ใบงานที่ 8-3 ลักษณะสญั ญาณทขี่ า 5 ทมี่ า arduino.cc170 หนงั สอื ชุดฝึกด้านดิจทิ ลั
การทดลองย่อยที่ 1 การควบคมุ ความสวา่ งของหลอดแอลอดี ดี ้วยพลั ส์วิดทม์ อดเู ลชันขัน้ ตอนการทดลอง ในการทดลองนี้ จะเป็นการควบคุมหลอดแอลอีดีให้แสดงความสว่างแบบค่อยๆ เพิ่มความสว่างข้ึนและลดความสวา่ งลง โดยใช้การควบคุมผา่ นพัลส์วิดท์มอดูเลชนั1.1 เชอื่ มตอ่ โมดลู ADC เข้ากบั ไมโครคอนโทรลเลอร์ ดงั รูปใบงานท่ี 8-4 รปู ใบงานท่ี 8-4 เชื่อมตอ่ ขา D13 เขา้ กบั LED11.2 เขียนโปรแกรมบน Arduino IDE ตามโปรแกรมการทดลองที่ 7-1โปรแกรมการทดลองที่ 8-1 1 int ledPin = 13; 2 void setup() { 3} 4 void loop() { 5 for(int fadeValue=255 ; fadeValue >= 0; fadeValue-=5) { 6 analogWrite(ledPin, fadeValue); 7 delay(30); 8} 9 10 for(int fadeValue=0 ; fadeValue <= 255; fadeValue+=5) { 11 analogWrite(ledPin, fadeValue); 12 delay(30); 13 } 14 } 15 16 หนงั สือชดุ ฝกึ ดา้ นดิจทิ ัล 171
อธิบายการทางานบรรทัดที่ 5 : ฟังก์ชนั่ for โดยกาหนดค่า facdValue เรม่ิ ต้นท่ี 255 และส้ินสดุ ที่ 0 โดยลดลงครั้งละ 5บรรทัดที่ 7 : ส่ังงานใหข้ า ledPin ซง่ึ ในทีน่ ีค้ อื ขา 13 มีคา่ duty cycle ของสัญญาณ PWM ท่ีค่า fadeValueบรรทดั ท่ี 11 : ฟงั กช์ น่ั for โดยกาหนดคา่ facdValue เร่มิ ตน้ ท่ี 0 และส้นิ สุดที่ 255 โดยเพม่ิ ขน้ึ ครงั้ ละ 51.3 ทาการ Compile แล้ว Upload โปรแกรมลงบน Arduino1.4 สังเกตผลการทางาน โดยลักษณะการทางานจะเป็นในลกั ษณะที่จากดับ และค่อยๆ สว่างขึ้น แล้วจึงค่อยๆสว่างนอ้ ยลง จนดับอกี คร้งั หน่งึ ดงั รปู ใบงานท่ี 8-5 รปู ใบงานที่ 8-5 ลักษณะการเปล่ียนแปลงความสว่างของ LED11.5 ทดสอบแก้ไขโปรแกรม โดยทดสอบว่าหากต้องการแก้ไขโปรแกรมให้มีการ fade ความสว่างท่ีเร็วข้ึนจะต้องไปแก้ไขโปรแกรมในสว่ นใด……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………172 หนังสือชดุ ฝึกด้านดิจทิ ัล
1.6 เช่ือมต่อตัวต้านทานปรับค่าได้เข้าที่ขาสัญญาณ A0 เพ่ืออ่านค่า ADC แล้วนามาประยุกต์ใช้ร่วมกับสัญญาณ PWM โดยแสดงการเชอ่ื มตอ่ ได้ ดงั รูปท่ี 8-6 รูปใบงานท่ี 8-6 ลักษณะการเชื่อมต่อ VR เข้าทข่ี า A01.7 เขียนโปรแกรม ดงั โปรแกรมการทดลองที่ 8-2โปรแกรมการทดลองท่ี 8-2 1 int ADC_IN = A0; 2 int value,duty; 3 int LED = 13; 4 void setup(){ 5 Serial.begin(9600); 6 pinMode(LED,OUTPUT); 7} 8 9 void loop(){ 10 value = analogRead(ADC_IN); 11 Serial.print(\"Value = \"); 12 Serial.print(value); 13 14 duty = (255.0/1023)*value; 15 Serial.print(\" : Duty = \"); 16 Serial.println(duty); 17 18 analogWrite(LED,duty); 19 } 20 หนังสือชุดฝึกดา้ นดิจทิ ลั 173
1.8 ทาการ Compile แลว้ Upload โปรแกรมลงบน Arduino1.9 เปิด Serial Monitor แล้วทดลองหมุน VR ดูว่าค่าท่ีแสดงบน Serial Monitor มีความสัมพันธ์กับความสว่างของ LED1 อย่างไร…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………การทดลองย่อยที่ 2 การประยกุ ต์ใช้งานพลั ส์วิดท์มอดเู ลชนั ในการควบคมุ บซั เซอร์ ด้วยฟงั ก์ช่ัน tone Buzzer เป็นอุปกรณ์ทางไฟฟ้าที่ใช้สาหรับแสดงผลเป็นเสียง เพ่ือแจ้งเตือนหรือส่ือความหมายเป็นสญั ญาณตา่ งๆ โดยมีลกั ษณะภายของดังรปู ใบงานท่ี 8-7 รูปใบงานท่ี 8-7 ลักษณะภายนอกของ Buzzer หลักการทางานคือ บัซเซอร์จะเกิดการเคล่ือนที่บิดตัวตามความถ่ีสัญญาณไฟฟ้าท่ีป้อนเข้ามาเกิดเป็นเสยี ง ดังนน้ั การกาเนิดเสยี งทาไดโ้ ดยสร้างสญั ญาณพลั สจ์ ากโปรแกรมควบคุมใหเ้ ป็นความถี่ที่อยู่ในช่วงท่ีหูของมนุษย์สามารถตอบสนองได้ ซ่ึงความถี่ของเสียงที่ออกมาจะขึ้นกับความถ่ีของสัญญาณ PWM ท่ีป้อนเข้าไปโดยจะต้องมวี งจรขบั แสดงดังรปู ใบงานที่ 8-8 รูปใบงานที่ 8-8 ลกั ษณะวงจรขับบซั เซอร์174 หนังสือชุดฝึกดา้ นดิจทิ ลั
โดยบนบอร์ด One the All จะมี Buzzer อยู่หน่ึงตัว ซ่ึงต่อวงจร Drive ไว้เรียบร้อยแล้ว สามารถป้อนสัญญาณ PWM เข้าไปท่ีขา IN ไดเ้ ลย ดงั รูปใบงานที่ 8-9 รูปใบงานท่ี 8-9 ช่องเช่ือมต่อเพือ่ ส่งสญั ญาณไปควบคุมบัซเซอร์ ในการทดลองนี้เราจะมาทดลองเขียนโปรแกรมรบั ค่าจาก SW1 ถึง SW8 ควบคมุ เสียง Buzzer โดยใช้PWM เอาต์พุต ขา 13 ของ อาร์ดุยโน จ่ายสัญญาณ PWM ให้กับ Buzzer และใช้ ดิจิทัล I/O ขา 2, 3, 4, 5,6, 7, 8 และ 9 รบั คา่ จาก SW1, SW2, SW3, SW4, SW5, SW6, SW7 และ SW8 ตามลาดบั และใช้ฟงั ก์ชัน tone (pin, frequency) ; โดยท่ี pin คือขาทตี่ ้องการจ่ายสญั ญาณ PWM ออกมา ส่วน frequency คอื ความถีข่ องสญั ญาณ PWM ทส่ี ง่ มายงั Buzzer ในหนว่ ยของ Hzข้นั ตอนการทดลอง2.1 ตอ่ วงจรบนบอร์ด One the All ตามรปู ใบงานท่ี 8-10 รปู ใบงานท่ี 8-10 เช่อื มตอ่ ส่วนสวิตช์ และบัซเซอร์เข้าท่ีอารด์ ุยโน หนงั สือชุดฝกึ ดา้ นดจิ ิทัล 175
2.2 เขียนโปรแกรมดงั โปรแกรมการทดลองท่ี 8-3โปรแกรมการทดลองท่ี 8-31 #define NOTE_C4 26223 #define NOTE_D4 2944 #define NOTE_E4 3305 #define NOTE_F4 3496 #define NOTE_G4 39278 #define NOTE_A4 4409 #define NOTE_B4 49410 #define NOTE_C5 5231112 int buzzerPin = 13;13 int SW1 = 2;14 int SW2 = 3;15 int SW3 = 4;16 int SW4 = 5;17 int SW5 = 6;18 int SW6 = 7;19 int SW7 = 8;20 int SW8 = 9;2122 void setup() {23 pinMode(SW1, INPUT);24 pinMode(SW2, INPUT);25 pinMode(SW3, INPUT);26 pinMode(SW4, INPUT);27 pinMode(SW5, INPUT);28 pinMode(SW6, INPUT);29 pinMode(SW7, INPUT);30 pinMode(SW8, INPUT);31 pinMode(buzzerPin, OUTPUT);32 }3334 void loop() {3536 if(digitalRead(SW1)==0){37 tone(buzzerPin, NOTE_C4);38 }39 else if(digitalRead(SW2)==0){40 tone(buzzerPin, NOTE_D4);41 }42 else if(digitalRead(SW3)==0){43 tone(buzzerPin, NOTE_E4);44 }45 else if(digitalRead(SW4)==0){46 tone(buzzerPin, NOTE_F4);47 }176 หนังสอื ชดุ ฝึกด้านดิจิทัล
โปรแกรมการทดลองท่ี 8-3 (ต่อ) 48 else if(digitalRead(SW5)==0){ 49 tone(buzzerPin, NOTE_G4); 505 } 1 else if(digitalRead(SW6)==0){ 52 tone(buzzerPin, NOTE_A4); 53 } 54 else if(digitalRead(SW7)==0){ 55 tone(buzzerPin, NOTE_B4); 56 } 57 else if(digitalRead(SW8)==0){ 58 tone(buzzerPin, NOTE_C5); 59 } 60 else noTone(buzzerPin); 61 }2.3 ทาการ Compile แล้ว Upload โปรแกรมลงบน Arduino2.4 ทดสอบโดยการกดปุม่ แตล่ ะปุ่ม แล้วบันทกึ เสียงท่ีไดย้ นิ วา่ ตรงกับโน้ตดนตรตี ัวใด เช่น เมื่อกด SW1 ....เสยี งโด... ใช้ตวั อักษรยอ่ ในโปรแกรม คอื NOTE_C4 เมื่อกด SW2 .................... ใชต้ ัวอกั ษรย่อในโปรแกรม คอื ................... เมอ่ื กด SW3 .................... ใชต้ ัวอักษรย่อในโปรแกรม คือ ................... เม่ือกด SW4 .................... ใช้ตวั อักษรยอ่ ในโปรแกรม คือ ................... เมื่อกด SW5 .................... ใช้ตัวอกั ษรย่อในโปรแกรม คอื .................. เมอ่ื กด SW6 .................... ใชต้ ัวอักษรยอ่ ในโปรแกรม คือ .................. เมื่อกด SW7 .................... ใชต้ ัวอักษรย่อในโปรแกรม คอื .................. เมอ่ื กด SW8 .................... ใชต้ ัวอกั ษรยอ่ ในโปรแกรม คือ ..................สรุปผลการทดลอง………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………คาถามท้ายการทดลองจงบอกความแตกต่างระหวา่ งการควบคุมพลั ส์วิดทม์ อดูเลชนั ระหวา่ งการใช้ฟังก์ช่ัน analogWrite และ tone………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… หนังสอื ชุดฝกึ ด้านดจิ ทิ ลั 177
Note………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………...………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………178 หนังสือชุดฝึกด้านดิจทิ ัล
Search
Read the Text Version
- 1 - 10
Pages: