หน่วยที่ 12 arduino...
TRANSCRIPT
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 508
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต
สาระส าคญ
จากการศกษาและปฏบตการทดลองใชงานไมโครคอนโทรลเลอร Arduino นกเรยนสามารถน าหลกการของการท างาน การใชงานซอฟตแวร การตอวงจร การใชชดค าสงและรปแบบการเขยนโปรแกรมควบคม มาใชในการประยกตใชงานไมโครคอนโทรลเลอร ซงขอน าเสนอการประยกตใชงานในรปแบบหนยนตอตโนมต ซงจะเกยวกบอปกรณโครงสรางของหนยนตทใชการเคลอนทแบบลอ อปกรณเซนเซอร วงจรขบมอเตอรแบบใชไอซ H-Bridge การใชชดค าสงและรปแบบการเขยนโปรแกรมควบคมทศทางการหมนและความเรวการหมนของมอเตอรตามเงอนไขการท างานของเซนเซอรตรวจจบการสะทอนแสงเพอตรวจจบเสน โดยใชชดหนยนต i-Duino Robot ทออกแบบและพฒนาส าหรบใชศกษาและปฏบตการทดลองใชงานไมโครคอนโทรลเลอร Arduino
สาระการเรยนร
12.1 ความหมายของหนยนตอตโนมต 12.2 โครงสรางของหนยนตอตโนมต 12.3 การควบคมการเคลอนทของหนยนต 12.4 การตรวจจบเสนเพอการควบคมการเคลอนทของหนยนต
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 509
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
จดประสงคการเรยนร
จดประสงคทวไป
1. เพอใหนกเรยนมความรและความเขาใจเกยวกบหนยนตอตโนมต 2. เพอใหนกเรยนมความรและเขาใจการควบคมการเคลอนทของหนยนต 3. เพอใหนกเรยนมความรและเขาใจการอานคาจากเซนเซอรเพอควบคมการเคลอนทของหนยนต
จดประสงคเชงพฤตกรรม นกเรยนสามารถ
1. บอกความหมายของหนยนตอตโนมตได 2. บอกสวนประกอบโครงสรางของหนยนตอตโนมตได 3. บอกหนาทสวนประกอบโครงสรางของหนยนตอตโนมตได 4. อธบายวธการควบคมการเคลอนทของหนยนตแบบใชลอได 5. อธบายหลกการท างานของเซนเซอรตรวจจบแสงสะทอนส าหรบใชตรวจจบเสนได 6. อธบายหลกการควบคมการเคลอนทของหนยนตแบบเคลอนทในกรอบทก าหนดได 7. อธบายหลกการควบคมการเคลอนทของหนยนตแบบเคลอนทตามเสนได 8. ประกอบอปกรณโครงสรางของหนยนตอตโนมตตามแบบทก าหนดใหได 9. ตอวงจรควบคมหนยนตอตโนมตตามแบบทก าหนดใหได 10. เขยนโปรแกรมควบคมการเคลอนทของหนยนตอตโนมตแบบเคลอนทในกรอบทก าหนดได 11. เขยนโปรแกรมควบคมการเคลอนทของหนยนตอตโนมตแบบเคลอนทตามเสนได
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 510
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ผงความคดเนอหาหนวยท 12
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 511
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
หนวยท 12
การประยกตใชงาน Arduino ในรปแบบ
หนยนตอตโนมต
ปจจบนไมโครคอนโทรลเลอรถกน ามาใชในระบบควบคมอตโนมตหลายลกษณะงาน ทงในเครองใชไฟฟาในชวตประจ าวน ในอปกรณดานการสอสาร ในอปกรณดานการแพทย ในอปกรณดานการทหาร ในอปกรณระบบควบคมเครองจกรในอตสาหกรรม และในอปกรณดานระบบการเกษตร คาดวาในอนาคตจะมนวตกรรมทใชไมโครคอนโทรลเลอรในระบบควบคมถกพฒนาขนอกมาก ทงนเนองจากไมโครคอนโทรลเลอรมโครงสรางเหมอนกบระบบคอมพวเตอร และไดรบการพฒนาใหมขดความสามารถทตอบสนองกบความตองการใชงาน มการผลต พฒนาบอรดส าเรจรปเพอใหสะดวกตอการใชงาน รวมทงดานการพฒนาโปรแกรมกมซอฟตแวรส าเรจรปทสามารถน ามาใชงานโดยไมตองเสยคาลขสทธ หรอเรยกวาเปนโอเพนซอรส (Open Source) เราจงสามารถน าไมโครคอนโทรลเลอรมาประยกตใชงานไดหลายรปแบบ ในหนวยการเรยนนขอน าเสนอการประยกตใชงานไมโครคอนโทรลเลอร Arduino ในรปแบบหนยนตอตโนมต โดยใชชดหนยนตแบบเคลอนทดวยลอ เรยกวา i-Duino Robot
12.1 ความหมายของหนยนตอตโนมต หนยนตอตโนมต (Autonomous robots) เปนหนยนตทสามารถท างานไดเองตามค าสงโปรแกรมทก าหนดไว โดยไมมการควบคมจากมนษย ซงหนยนตตองสามารถรบร คด และกระท าภารกจ ตามทก าหนดไวในค าสงโปรแกรมได ในเวปไซด www. https://th.wikipedia.org ไดอางถง ศาสตราจารย George A. Bekey แหงมหาวทยาลยเซาเทรนแคลฟอรเนย ไดใหนยามหนยนตวาเปน "เครองจกรทสามารถ รบร คด และกระท า" (A machine that senses, thinks, and acts)
หนยนต (Robot) ถอก าเนดจากจนตนาการของมนษย ในสมยอดตกาลในยคทหนยนตยงไมไดเกดขนในโลกมนษยกจนตนาการไววา ถามอะไรซกอยางมาท างานแทนมนษยกดมาก จงเกดค าวา โรบอท (Robot) ขน ค าวาโรบอท มาจากค าวา Robota ในภาษาเชกแปลวาท างานเยยงทาส ซงเกดขนในละครเวทเรอง ราสซม ยนเวอรแซล โรบอท (Rassum’s Universal Robots) ในป ค.ศ. 1920 หรอป พ.ศ. 2463 แตงโดยนกแตงละครชาวเชกชอ นายคาเวล คาเปก (Kavel Capek) โดยเนอเรองวาดวยมนษยไดประดษฐ
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 512
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
เครองจกรมาท างานเปนทาสมนษย ตอมาเครองจกรเหลานนกมความคดเหมอนมนษย จงลกขนมาตอตานไมยอมเปนทาสรบใชเหมอนสมยกอน ค าวาโรบอทจงเปนทรจก ตอมาในป ค.ศ. 1944 หรอป พ.ศ. 2487 นกเขยนนยายวทยาศาสตรชอ ไอแซก อะซมอฟ (Isaac Asimov) ไดเขยนนยายสนวทยาศาสตรเรอง รนอะราว (Run around) ซงไดน าค าวาโรบอทมาใช และตอมาไดถกรวบรวมไวในนยายวทยาศาสตรทโดงดงชอ ไอโรบอท (I – Robot) ท าใหนกวทยาศาสตรไดรจกค าวา โรบอท ครงแรกผานทางนยายวทยาศาสตร โรบอทจงเปนทสนใจและถกน ามาใชงานอยางแพรหลายเปนแนวคดและจนตนาการในการประดษฐและสรางหนยนตในเวลาตอมา หนยนตทเปนตวเปนตนเกดขนในชวงป ค.ศ. 1940 - ค.ศ. 1950 ไดมการสรางหนยนตทชอวา เอลซ เดอะ โทลทอส (Elsie the tortoise) ประดษฐขนโดย เกรย วอลเตอร (Grey Walter) เปนการน ามอเตอรไฟฟามาประกอบเปนเครองจกรทเคลอนทไดดวยลอและในเวลาชวงเดยวกนนเอง ไดมการสรางหนยนตเคลอนทตวแรกชอ ชาคคย (Shakey) ทเคลอนทดวยลอเหมอนกน แต ชาคคย จะเหนอกวาคอสามารถคดเองไดและมเซนเซอรชวยตดสนใจในการเคลอนท พฒนาโดยสถาบนวจยเทคโนโลยสแตนฟอรด (Stanford Research Institute: SRI) นอกเหนอจากหนยนตทเปนลอแลว ในป ค.ศ. 1960 ไดมการพฒนาหนยนตเดนดวยขาตวแรกทมขนาดใหญทชอวา เจนเนอรล อเลกทรกวอลกงทรก (General Electric Walking Truck) มน าหนกมากถง 3000 ปอนด สามารถเดนไดดวย 4 ขา ดวยความเรว 4 ไมล/ชวโมง ซงมการใชคอมพวเตอรในการค านวณการขยบขา พฒนาโดยวศวกรของบรษทเจนเนอรล อเลกทรก (General Electric) ชอ ราฟท มเซอร (Ralph Moser) ท าใหทวโลกรสกตนตวในหนยนตอยางมาก หลงจากทไดเรมมการประดษฐหนยนตขนมาใหทวโลกตนตวแลว ในแวดวงอตสาหกรรมกไดเรมมความคดทจะเพมแรงงานขนโดยไมตองอาศยแรงงานของมนษยจงมการคดคนสรางหนยนตทใชในงานอตสาหกรรมตวแรกชอ ยนเมท (Unimates) พฒนาและสรางโดย จอรจ เดอโวล (George Devol) และ โจอ เอนกลเบรเกอร (Joe Engleberger) ในชวงป ค.ศ. 1950-1960 ท าใหเกดหนยนตทางอตสาหกรรมตวแรกเกดขนในโลก และพฒนาตอเนองมาจนถงปจจบน (เรยบเรยงจากชยวฒน ฟองสนธ. 2558. หนา 2-3) หนยนตอตโนมตสามารถแบงไดหลายแบบ หากแบงตามโครงสรางการท างานของหนยนตจะแบงหนยนตได 2 แบบ ดงน คอ 12.1.1 หนยนตทท างานโดยตงอยกบท
หนยนตทท างานโดยตงอยกบท หมายถง หนยนตมกลไกทสามารถเคลอนไหวได แตไม สามารถเคลอนทยายต าแหนงของตวเองแบบอตโนมตได ตวอยางเชน แขนกลหนยนต หนยนตผาตด ซงจะมน าหนกมากและใชพลงงานจากแหลงจายภายนอก หนยนตประเภทนจะมการก าหนดขอบเขตในการเคลอนไหวเฉพาะพนท
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 513
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.1.2 หนยนตทท างานโดยมการเคลอนท หนยนตทท างานโดยมการเคลอนท หมายถง หนยนตทสามารถเคลอนยายต าแหนงของ
ตวเองไดหรอเคลอนทไปสถานทตางๆ ไดดวยตวเองแบบอตโนมต เชน หนยนตส ารวจ หนยนตขนถายสนคา หนยนตตรวจการ หนยนตประเภทนจะออกแบบใหมระบบเคลอนท และมแหลงจายพลงงานในตวเองโดยมน าหนกไมมาก เพอไมใหเปนอปสรรคในการเคลอนทยงเทคโนโลยทนสมยมากขน รปแบบของหนยนตกจะมหลายแบบมากขน
12.2 โครงสรางของหนยนตอตโนมต สวนประกอบของโครงสรางหนยนตโดยทวไปประกอบดวยอปกรณพนฐาน ไดแก ตวโครงสรางหนยนต, ชดขบเคลอนทางกลไก, ชดสมองกล, ชดเซนเซอร และแหลงจายพลงงาน แสดงสวนประกอบโครงสรางหนยนตดงรปท 12.1
โครงสรางหนยนตอตโนมต
ตวโครงสรางหนยนต
ชดขบเคลอนกลไก
ชดสมองกล
ชดเซนเซอร
แหลงจายพลงงาน
รปท 12.1 โครงสรางของหนยนต
12.2.1 ตวโครงสรางหนยนต คอ สวนโครงสรางรปรางหนยนตส าหรบเชอมตอและจบยด อปกรณตาง ๆ ของหนยนต
12.2.2 ชดขบเคลอนกลไก คอ กลไกทสามารถเคลอนทไดตามการท างานของหนยนต 12.2.3 ชดสมองกล คอ สวนควบคมการท างานของหนยนต ทอาจเปนระบบคอมพวเตอร
ระบบไมโครคอนโทรลเลอร หรอระบบโปรแกรมเมเบลลอจกคอนโทรล 12.2.4 ชดเซนเซอร คอ สวนรบรทเปนเซนเซอรตรวจจบสภาพแวดลอมตาง ๆ เชน 12.2.5 แหลงจายพลงงาน คอ แหลงจายพลงงานของหนยนต โดยทวไปอาจเปนแบตเตอร หรอแหลงจายพลงงานแบบไฟฟากระแสตรง
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 514
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ส าหรบหนยนต i-Duino Robot จะมสวนประกอบของโครงสรางดงน
(ข) แผนฐานหนยนตและชดมอเตอรลอ
(ค) เซนเซอรตรวจจบแสงสะทอน
(ง) แผงวงจร i-Duino Robot
(ก) หนยนต i-Duino Robot (จ) แบตเตอรร
รปท 12.2 หนยนต i-Duino Robot และสวนประกอบ
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 515
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.3 การควบคมการเคลอนทของหนยนต หนยนต i-Duino Robot เปนหนยนตแบบเคลอนทดวยลอ ควบคมทศทางการเคลอนทไดดงน 12.3.1 หนยนตเคลอนทเดนหนา (Forward) มอเตอรทง 2 ตวจะหมนเดนหนาในทศทาง เดยวกนและท LED แสดงผล ไดแก LED_A และ LED_B จะแสดงสเขยวทง 2 ดวง ดงรปท 12.3
รปท 12.3 ทศทางการหมนของมอเตอร หนยนต i-Duino Robot เคลอนทไปขางหนา
12.3.2 หนยนตเคลอนทถอยหลง (Backward) มอเตอรทง 2 ตวจะหมนถอยหลงในทศทางเดยวกนและท LED แสดงผล ไดแก LED_A และ LED_B จะแสดงสแดงทง 2 ดวง ดงรปท 12.4
รปท 12.4 ทศทางการหมนของมอเตอร หนยนต i-Duino Robot เคลอนทถอยหลง
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 516
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.3.3 หนยนตเคลอนทเลยวซาย (Turn Left) มอเตอร A จะหยดหมน สวนมอเตอร B จะหมนเดนหนา และท LED แสดงผล ไดแก LED_A จะดบ LED_B จะแสดงสเขยว ดงรปท 12.5
รปท 12.5 ทศทางการหมนของมอเตอร หนยนต i-Duino Robot เคลอนทเลยวซาย
12.3.4 หนยนตเคลอนทเลยวขวา (Turn Right) มอเตอร A จะหมนเดนหนา สวนมอเตอร B จะหยดหมน และท LED แสดงผล ไดแก LED_A จะแสดงสเขยว LED_B จะดบ ดงรปท 12.6
รปท 12.6 ทศทางการหมนของมอเตอร หนยนต i-Duino Robot เคลอนทเลยวขวา
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 517
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.3.5 หนยนตเคลอนทหมนซาย (Spin Left) มอเตอร A จะหมนถอยหลง สวนมอเตอร B จะหมนเดนหนา และท LED แสดงผล ไดแก LED_A จะแสดงสแดง LED_B จะแสดงสเขยว ดงรปท 12.7
รปท 12.7 ทศทางการหมนของมอเตอร หนยนต i-Duino Robot เคลอนทหมนซาย
12.3.6 หนยนตเคลอนทหมนขวา (Spin Right) มอเตอร A จะหมนเดนหนา สวนมอเตอร B จะหมนถอยหลง และท LED แสดงผล ไดแก LED_A จะแสดงสเขยว LED_B จะแสดงสแดง ดงรปท 12.8
รปท 12.8 ทศทางการหมนของมอเตอร หนยนต i-Duino Robot เคลอนทหมนขวา
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 518
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.3.7 หนยนตหยดเคลอนท (Stop) มอเตอรทง 2 ตวจะหยดหมน และท LED แสดงผล ทง 2 ดวงจะดบ ดงรปท 12.9
รปท 12.9 ทศทางการหมนของมอเตอร หนยนต i-Duino Robot หยดเคลอนท
การเขยนโปรแกรมควบคมใหหนยนตเคลอนท แสดงดงตวอยางโปรแกรม 12.1 ตวอยางโปรแกรม 12.1
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21
#include <motor.h> //Include Library motor.h #define SW1 2 void setup() { pinMode(SW1,INPUT); pinMode(EN1,OUTPUT); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(EN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); } void loop() { if(digitalRead(SW1)==LOW) { FW(255,255); delay(5000); //i-Duino Robot move Forward BW(127,127); delay(5000); //i-Duino Robot move Backward TL(0,178); delay(5000); //i-Duino Robot move Turn Left TR(178,0); delay(5000); //i-Duino Robot move Turn Right SL(76,76); delay(5000); //i-Duino Robot move Spin Left SR(76,76); delay(5000); //i-Duino Robot move Spin Right STOP(); delay(5000); //i-Duino Robot Stop } }
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 519
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4 การตรวจจบเสนเพอควบคมการเคลอนทของหนยนต
ในการควบคมทศทางการเคลอนทของหนยนต i-Duino Robot ใชเซนเซอรตรวจจบแสงสะทอนแบบอนฟราเรดหรอเซนเซอรตรวจจบแสงสะทอน ส าหรบตรวจจบเสนสด าของสนามทพนสขาว คาแสงสะทอนของเสนสด า ซงจะไดคาแตกตางกน ระหวาง 0 ถง 1023 โดยสามารถใชตวอยางโปรแกรม 10.8 ในเนอหาหนวยท 10 เพออานคาแสงสะทอนมาแสดงผลบนจอ LCD Module ซงคาแสงสะทอนทอานไดจากพนสขาวมคาประมาณ 700 ถง 900 และคาแสงสะทอนทอานไดจากเสนสด ามคาประมาณ 100 ถง 300 จากนนน าคาทอานไดมาหาคาอางองส าหรบก าหนดเปนเงอนไข
คาแสงสะทอนอางอง (ref) = (คาแสงสะทอนจากพนสขาว + คาแสงสะทอนจากเสนสด า) 2
ตวอยาง อานคาแสงสะทอนจากพนสขาวได = 950 คาแสงสะทอนจากเสนสด า = 250 คาแสงสะทอนอางอง (ref) = (950+250)/2 = 600
อยางไรกตาม การใชงานจรงอาจก าหนดคาแสงสะทอนอางองใหกวางกวานได เชน 500 หรอ 700 โดยใชคาแสงสะทอนอางองใหอยในชวงระหวางกงกลางของ 250 ถง 950 แตไมควรใชคาใกลกบ 250 หรอ 950 มากเกนไป เพราะจะท าใหเซนเซอรตรวจจบแสงสะทอนแยกไมไดวาเสนสด า หรอพนสขาว ดงนน หลกการพนฐานของหนยนตอตโนมตทเคลอนทตามเสนสด า คอ การควบคมใหหนยนตเคลอนทโดยทเซนเซอรตรวจจบแสงสะทอนทตดตงกบตวหนยนตดานซายและดานขวาเปนเซนเซอรตรวจจบพนสขาวและเสนสด า ขอน าเสนอการตรวจจบเสนเพอควบคมการเคลอนทของหนยนต 2 แบบ ดงน 12.4.1 ใชเซนเซอรตรวจจบแสงสะทอน 2 ตว ซงจะมเงอนไขการท างาน 4 เงอนไข ดงน
12.4.1.1 หนยนตเคลอนทอยในแนวเสนสด า 12.4.1.2 หนยนตเคลอนทเบยงไปดานขวา 12.4.1.3 หนยนตเคลอนทเบยงไปดานซาย 12.4.1.4 หนยนตเคลอนทพบเสนตด
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 520
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.1.1 หนยนตเคลอนทอยในแนวเสนสด า
เปนกรณทหนยนตเคลอนทเดนหนาหรอถอยหลงอยางตอเนอง โดยทเซนเซอรตรวจจบแสงสะทอนทง 2 ตว ตรวจจบพนสนามสขาวหรอครอมเสนสด า แสดงดงรปท 12.10 การควบคมหนยนตตามเงอนไขน คอ ใหหนยนตเคลอนทตรงไปขางหนาหรอถอยหลงอยางตอเนองดวยคาหนวงเวลาสน ๆ
left>ref เซนเซอรตรวจจบดานซายพบพนสขาว
right>ref เซนเซอรตรวจจบดานขวาพบพนสขาว
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนทอยในแนวเสนสด า
รปท 12.10 การเคลอนทของหนยนตอยในแนวเสนสด า
ผลการท างานของเซนเซอรตรวจจบ
left>ref right>ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 521
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.1.2 หนยนตเคลอนทเบยงดานขวา
เปนกรณทหนยนตเคลอนทเดนหนาแตไมตรงเสน โดยเบยงไปทางดานขวา ท าใหเซนเซอรตรวจจบแสงสะทอนดานซาย ตรวจจบเจอเสนสด า แสดงดงรปท 12.11 การควบคมหนยนตตามเงอนไขน คอ ใหตวหนยนตเลยวซายดวยคาหนวงเวลาสน ๆ เพอใหหนยนตเคลอนทกลบไปอยในแนวเสนสด าเหมอนเดม
left<ref เซนเซอรตรวจจบดานซายพบเสนสด า
right>ref เซนเซอรตรวจจบดานขวาพบพนสขาว
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนทเบยงดานขวา
รปท 12.11 หนยนตเคลอนทเบยงดานขวา
ผลการท างานของเซนเซอรตรวจจบ
left<ref right>ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 522
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.1.3 หนยนตเคลอนทเบยงดานซาย
เปนกรณทหนยนตเคลอนทเดนหนาแตไมตรงเสน โดยเบยงไปทางดานซาย ท าใหเซนเซอรตรวจจบแสงสะทอนดานขวาตรวจจบเจอเสนสด า แสดงดงรปท 12.12 การควบคมหนยนตตามเงอนไขน คอ ใหตวหนยนตเลยวขวา ดวยคาหนวงเวลาสน ๆ เพอใหหนยนตเคลอนทกลบไปอยในแนวเสนสด าเหมอนเดม
left>ref เซนเซอรตรวจจบดานซายพบพนสขาว
right<ref เซนเซอรตรวจจบดานขวาพบพนเสนสด า
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนทเบยงดานซาย
รปท 12.12 หนยนตเคลอนทเบยงดานซาย
ผลการท างานของเซนเซอรตรวจจบ
left>ref right<ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 523
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.1.4 หนยนตเคลอนทพบเสนตด
เปนกรณทหนยนตเคลอนทเดนหนาและตรวจพบเสนตดสด า ซงอาจเปนเสนทท าไวเพอใหหนยนตหยดการเคลอนท หรออาจเปนเสนทใหหนยนตตรวจสอบเพอการท าภารกจตาง ๆ ท าใหเซนเซอรตรวจจบแสงสะทอนทง 2 เซนเซอรตรวจจบเจอเสนสด า แสดงดงรปท 12.13 การควบคมหนยนตตามเงอนไขน คอ ใหตวหนยนตหยดท าภารกจ หรอท าภารกจอน ๆ ตามทก าหนด
Left<ref เซนเซอรตรวจจบดานซายพบเสนสด า
right<ref เซนเซอรตรวจจบดานขวาพบพนเสนสด า
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนพบเสนตด
รปท 12.13 หนยนตเคลอนทพบเสนตด
ผลการท างานของเซนเซอรตรวจจบ
Left<ref right<ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 524
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.2 ใชเซนเซอรตรวจจบแสงสะทอน 3 ตว ซงจะมเงอนไขการท างาน 6 เงอนไข ดงน
12.4.2.1 หนยนตเคลอนทอยในแนวเสนสด า
เปนกรณทหนยนตเคลอนทเดนหนาหรอถอยหลงอยางตอเนอง โดยทเซนเซอรตรวจจบแสงสะทอนตวกลางจะอยบนเสนสด า สวนเซนเซอรตรวจจบดานซายและดานขวาจะตรวจจบพนสนามสขาว แสดงดงรปท 12.14 การควบคมหนยนตตามเงอนไขน คอ ใหหนยนตเคลอนทตรงไปขางหนาหรอถอยหลงอยางตอเนองดวยคาหนวงเวลาสน ๆ
left>ref เซนเซอรตรวจจบดานซาย
พบพนสขาว
mid<ref เซนเซอรตรวจจบตวกลาง
พบเสนสด า
right>ref เซนเซอรตรวจจบดาน
ขวาพบพนสขาว
(ข) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนทอยในแนวเสนสด า
รปท 12.14 การเคลอนทของหนยนตอยในแนวเสนสด า
ผลการท างานของเซนเซอรตรวจจบ
left>ref right>ref mid<ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 525
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.2.2 หนยนตเคลอนทเบยงดานขวา
เปนกรณทหนยนตเคลอนทเดนหนาแตไมตรงเสน โดยเบยงไปทางดานขวา ท าใหเซนเซอรตรวจจบแสงสะทอนดานซาย ตรวจจบเจอเสนสด า แสดงดงรปท 12.15 การควบคมหนยนตตามเงอนไขน คอ ใหตวหนยนตเลยวซายดวยคาหนวงเวลาสน ๆ เพอใหหนยนตเคลอนทกลบไปอยในแนวเสนสด าเหมอนเดม
left<ref เซนเซอรตรวจจบดานซาย
พบเสนสด า
mid>ref เซนเซอรตรวจจบตวกลาง
พบพนสขาว
right>ref เซนเซอรตรวจจบดานขวา
พบพนสขาว
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนทเบยงดานขวา
รปท 12.15 หนยนตเคลอนทเบยงดานขวา
ผลการท างานของเซนเซอรตรวจจบ
left<ref right>ref mid>ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 526
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.2.3 หนยนตเคลอนทเบยงดานซาย
เปนกรณทหนยนตเคลอนทเดนหนาแตไมตรงเสน โดยเบยงไปทางดานซาย ท าใหเซนเซอรตรวจจบแสงสะทอนดานขวาตรวจจบเจอเสนสด า แสดงดงรปท 12.16 การควบคมหนยนตตามเงอนไขน คอ ใหตวหนยนตเลยวขวา ดวยคาหนวงเวลาสน ๆ เพอใหหนยนตเคลอนทกลบไปอยในแนวเสนสด าเหมอนเดม
left>ref เซนเซอรตรวจจบดานซาย
พบพนสขาว
mid>ref เซนเซอรตรวจจบตวกลาง
พบพนสขาว
right<ref เซนเซอรตรวจจบดานขวา
พบเสนสด า
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนทเบยงดานซาย
รปท 12.16 หนยนตเคลอนทเบยงดานซาย
ผลการท างานของเซนเซอรตรวจจบ
left>ref right<ref mid>ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 527
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.2.4 หนยนตเคลอนทพบเสนตดดานขวา
เปนกรณทหนยนตเคลอนทเดนหนาและตรวจพบเสนตดดานขวา อาจเปนเสนทางแยกหรอเปนเสนทท าไวเพอใหหนยนตตรวจสอบเพอการท าภารกจตาง ๆ ซงเซนเซอรตรวจจบแสงสะทอนดานซายพบพนสขาว และเซนเซอรตรวจจบแสงสะทอน 2 ตว คอตวกลางและตวดานขวาพบเสนสด า แสดงดงรปท 12.17 การควบคมหนยนตตามเงอนไขน คอ อาจใหตวหนยนตหยดเคลอนแลวเลยวขวา เพอท าภารกจอน ๆ ตามทก าหนด
left>ref เซนเซอรตรวจจบดานซาย
พบพนสขาว
mid<ref เซนเซอรตรวจจบตวกลาง
พบเสนสด า
right<ref เซนเซอรตรวจจบดานขวา
พบเสนสด า
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนพบเสนตดดานขวา
รปท 12.17 หนยนตเคลอนทพบเสนตดดานขวา
ผลการท างานของเซนเซอรตรวจจบ
left>ref right<ref mid<ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 528
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.2.5 หนยนตเคลอนทพบเสนตดดานซาย
เปนกรณทหนยนตเคลอนทเดนหนาและตรวจพบเสนตดดานซาย อาจเปนเสนทางแยกหรอเปนเสนทท าไวเพอใหหนยนตตรวจสอบเพอการท าภารกจตาง ๆ ซงเซนเซอรตรวจจบแสงสะทอนดานขวาพบพนสขาว และเซนเซอรตรวจจบแสงสะทอน 2 ตว คอตวกลางและตวดานซายพบเสนสด า แสดงดงรปท 12.18 การควบคมหนยนตตามเงอนไขน คอ อาจใหตวหนยนตหยดเคลอนแลวเลยวซาย เพอท าภารกจอน ๆ ตามทก าหนด
left<ref เซนเซอรตรวจจบดานซาย
พบเสนสด า
mid<ref เซนเซอรตรวจจบตวกลาง
พบเสนสด า
right>ref เซนเซอรตรวจจบดานขวา
พบพนสขาว
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนพบเสนตดดานซาย
รปท 12.18 หนยนตเคลอนทพบเสนตดดานซาย
ผลการท างานของเซนเซอรตรวจจบ
left<ref right>ref mid<ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 529
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
12.4.2.6 หนยนตเคลอนทพบเสนตด
เปนกรณทหนยนตเคลอนทเดนหนาและตรวจพบเสนตดสด า ซงอาจเปนเสนทท าไวเพอใหหนยนตหยดการเคลอนท หรออาจเปนเสนทใหหนยนตตรวจสอบเพอการท าภารกจตาง ๆ ท าใหเซนเซอรตรวจจบแสงสะทอนทง 3 เซนเซอรตรวจจบเจอเสนสด า แสดงดงรปท 12.19 การควบคมหนยนตตามเงอนไขน คอ ใหตวหนยนตหยดท าภารกจ หรอท าภารกจอน ๆ ตามทก าหนด
left<ref เซนเซอรตรวจจบดานซาย
พบเสนสด า
mid<ref เซนเซอรตรวจจบตวกลาง
พบเสนสด า
right<ref เซนเซอรตรวจจบดานขวา
พบเสนสด า
(ก) การท างานของเซนเซอรตรวจจบแสงสะทอน
(ข) หนยนตเคลอนพบเสนตด
รปท 12.19 หนยนตเคลอนทพบเสนตด
ผลการท างานของเซนเซอรตรวจจบ
left<ref right<ref mid<ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 530
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
สรปเนอหาสาระส าคญ
การประยกตใชงานไมโครคอนโทรลเลอรในรปแบบหนยนตอตโนมตนน ไมโครคอนโทรลเลอรจะท าหนาทเปนระบบสมองกล (Embedded System) ทรบขอมลจากเซนเซอรหรอเซนเซอรตรวจจบตาง ๆ มาประมวลผลแลวสงขอมลใหกบวงจรควบคมการขบเคลอนกลไก เพอท างานหรอท าภารกจทก าหนด ซงจะตองมชดค าสงโปรแกรมส าหรบรบคาจากเซนเซอร (Input) ประมวลผล (Process) และควบคมสงงาน (Output) ส าหรบหนยนตทใชในการศกษาและปฏบตการทดลองน เปนพนฐานทใหนกเรยนเขาใจกระบวนการท างานของเซนเซอรตรวจจบแสงสะทอน การประมวลผลของไมโครคอนโทรลเลอร Arduinoตามค าสงเงอนไขของโปรแกรม เพอน าไปควบคมสงงานวงจรขบมอเตอรใหมอเตอรหมนตามทศทางและมความเรวของการหมนตามทก าหนด ซงในหนยนตอตโนมตทใชงานจรงหรอในเครองจกรอตสาหกรรมจะมกระบวนการท างานทซบซอนมากกวา เนองจากมเซนเซอรหลายแบบ หลายชนด มอปกรณและวงจรทตองควบคมสงงานหลายรปแบบ ไมโครคอนโทรลเลอรกตองสามารถท างานทซบซอนได รวมถงการพฒนาโปรแกรมกจะซบซอนตามไปดวย ดงนนในการน าความรไปใชกบงานจรง นกเรยนตองหมนศกษาหาความรเพมเตมดวยตวเอง และตองปฏบตงานอยางจรงจง มความตงใจ อดทน รอบคอบ และรบผดชอบงานในหนาท
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 531
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
บรรณานกรม ชยวฒน ฟองสนธ. เอกสารประกอบการสอนวชาหนยนตเบองตน, แผนกวชาชางอเลกทรอนกส วทยาลยเทคนคพระนครศรอยธยา, 2558. เดชฤทธ มณธรรม. คมภรการใชงานหนยนต (ROBOT). ซเอดยเคชน, กรงเทพฯ, 2559. อนโนเวตฟ เอกเพอรเมนต. Electronic 123 : คมอความรอเลกทรอนกสเบองตน. อนโนเวตฟ เอกเพอรเมนต. กรงเทพฯ. อนโนเวตฟ เอกเพอรเมนต. POP-BOT XT คมอการสรางและพฒนาโปรแกรมควบคมหนยนตอตโนมต ดวยภาษา C/C++ กบ Arduino. อนโนเวตฟเอกเพอรเมนต, กรงเทพฯ. เอกชย มะการ. เรยนร เขาใจ ใชงานไมโครคอนโทรลเลอรตระกล AVR ดวย Arduino. อทท, กรงเทพฯ, 2552. หนยนตอตโนมต (Autonomous robots). [ออนไลน]. เขาถงไดจาก : www.https://th.wikipedia.org (30 มกราคม 2560).
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 532
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
แบบฝกหดหนวยท 12 ค าชแจง 1. แบบฝกหดมทงหมด 2 ตอน ประกอบดวยตอนท 1 และตอนท 2 (20 คะแนน) 2. แบบฝกหดตอนท 1 เปนค าถามแบบจบค มทงหมด 20 ขอ (10 คะแนน) 3. แบบฝกหดตอนท 2 เปนค าถามแบบเลอกตอบ มทงหมด 10 ขอ (10 คะแนน) ตอนท 1 ค าชแจง ใหนกเรยนจบคขอความทเปนคณสมบตและการท างานของหนยนตอตโนมตทสมพนธกน และเขยนตวอกษร a-t ลงหนาขอความในแตละขอ
คณสมบตและการท างานของหนยนตอตโนมต 1. เปนหนยนตทรบร คด และกระท าดวยตนเอง a. ADC = 700-900 2. ท าหนาทรบขอมลจากเซนเซอร ประมวลผล และควบคมสงงาน b. หนยนตหมนซาย
3. ท าหนาทตรวจจบสภาพแวดลอม เชน อณหภม ความชน วตถ เปนตน c. หนยนตเบยงขวา
4. เปนแหลงจายพลงงานใหกบหนยนตทเคลอนทได d. หนยนตเลยวขวา 5. เปนหนยนตประเภททสามารถเคลอนทได e. ADC = 100-300
6. หนยนตเคลอนทเดนหนา (Forward) หรอเคลอนทถอยหลง (Backward)
f. คาแสงสะทอนอางอง = 550
7. มอเตอรดานซายหมนเดนหนา และมอเตอรดานขวาหมนถอยหลง g. หนยนตอตโนมต
8. มอเตอรดานซายหมนถอยหลง และมอเตอรดานขวาหมนเดนหนา h. Sensor>ref 9. มอเตอรดานซายหยดหมน และมอเตอรดานขวาหมนถอยหลง i. สมองกล
10. มอเตอรดานขวาหมนเดนหนา และมอเตอรดานซายหยดหมน j. left>ref, right>ref 11. คาแสงสะทอนของพนสขาว k. หนยนตพบเสนตด
12. คาแสงสะทอนของพนสด า l. หนยนตหมนขวา
13. คาแสงสะทอน (ADC) = 800 และคาแสงสะทอน (ADC) = 300 m. หนยนตเบยงขวา 14. เซนเซอรตรวจจบแสงสะทอนตรวจจบพบพนสขาว n. เซนเซอร
15. เซนเซอรตรวจจบแสงสะทอนดานซายของหนยนตพบเสนสด า และ เซนเซอรตรวจจบแสงสะทอนดานขวาพบพนสขาว
o. มอเตอรหมนทาง เดยวกน
16. เซนเซอรตรวจจบแสงสะทอนตรวจจบพบเสนสด า p. หนยนตเลยวซาย
17. left<ref, mid<ref, right<ref q. Sensor<ref 18. หนยนตเคลอนทอยในแนวเสนสด า r. หนยนตส ารวจ
19. left>ref, mid>ref, right<ref s. แบตเตอร
20. left<ref, mid>ref, right>ref t. หนยนตเบยงซาย
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 533
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ตอนท 2 ค าชแจง ใหนกเรยนท าเครองหมายกากบาท (X) ลงบนค าตอบทถกตองทสด 1. ขอใดไมใชหนยนตอตโนมต ก. หนยนตส ารวจทเคลอนทดวยโปรแกรม ข. แขนกลทท างานดวยสมองกล ค. หนยนตรถทวงตามเสนสด า ง. หนยนตรถแบบบงคบดวยคลนวทย 2. ขอใดเปนสวนประกอบทส าคญของหนยนตอตโนมต ก. ระบบสมองกล ข. ลอหนยนต ค. สายไฟตอวงจร ง. ตวจบยดมอเตอร 3. ขอใดเปนหนาทของเซนเซอร ก. เปนสวตชทควบคมได ข. เปนตวตรวจจบ ค. เปนตวประมวลผลสญญาณ ง. เปนอปกรณควบคมความเรวมอเตอร 4. ขอใดไมใชเซนเซอร ก. Tact Switch ข. LED Infrared ค. Photo Transistor ง. Relay 5. เซนเซอรตรวจจบเสนของหนยนต i-Duino UNO ใชหลกการใด ก. Reflector Infrared ข. Capacitive Sensor ค. Resistive Sensor ง. Photo Transistor
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 534
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
6. ขอใดเปนการควบคมใหหนยนตเลยวซาย ก. มอเตอรดานซายและดานขวาหมนเดนหนา ข. มอเตอรดานซายและดานขวาหมนถอยหลง ค. มอเตอรดานซายหมนเดนหนาและมอเตอรดานขวาหมนถอยหลง ง. มอเตอรดานซายหยดหมนและมอเตอรดานขวาหมนเดนหนา 7. ขอใดเปนการควบคมใหหนยนตหมนทางขวา ก. มอเตอรดานซายและดานขวาหมนเดนหนา ข. มอเตอรดานซายและดานขวาหมนถอยหลง ค. มอเตอรดานซายหมนเดนหนาและมอเตอรดานขวาหมนถอยหลง ง. มอเตอรดานซายหยดหมนและมอเตอรดานขวาหมนเดนหนา 8. ขอใดเปนการท างานของเซนเซอรเมอหนยนตเคลอนทเบยงทางขวา ก. left>ref และ right>ref ข. left<ref และ right>ref ค. left<ref และ right<ref ง. left>ref และ right<ref 9. ขอใดเปนการท างานของเซนเซอรเมอหนยนตเคลอนทเบยงทางซาย ก. left>ref และ right>ref ข. left<ref และ right>ref ค. left<ref และ right<ref ง. left>ref และ right<ref 10. ขอใดเปนการท างานของเซนเซอรเมอหนยนตเคลอนพบเสนตดดานซาย ก. left>ref mid<ref right>ref ข. left>ref mid>ref right>ref ค. left<ref mid<ref right>ref ง. left>ref mid>ref right>ref
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 535
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ใบปฏบตงานท 12 หนวยท 12
ชอวชา ไมโครคอนโทรลเลอร รหสวชา 2105-2105 จ านวน 6 ชวโมง เรอง การเขยนโปรแกรมควบคมหนยนตอตโนมต
ค าชแจง ใหนกเรยนแบงกลมตามความสมครใจ กลมละ 2 คน และท าการฝกตามใบปฏบตงานท 12 เรอง การเขยนโปรแกรมควบคมหนยนตอตโนมต
จดประสงคเชงพฤตกรรม 1. ประกอบหนยนตอตโนมตตามแบบทก าหนดใหได 2. ตอวงจรควบคมหนยนตอตโนมตตามแบบทก าหนดใหได 3. ทดสอบการท างานของหนยนตอตโนมตได 4. เขยนโปรแกรมควบคมการเคลอนทของหนยนตอตโนมตแบบเคลอนทในกรอบทก าหนดได 5. เขยนโปรแกรมควบคมการเคลอนทของหนยนตอตโนมตแบบเคลอนทตามเสนได
อปกรณประกอบการปฏบตงาน 1. เครองคอมพวเตอรพรอมซอฟตแวร Arduino IDE จ านวน 1 เครอง 2. ชดหนยนต i-Duino Robot จ านวน 1 ชด 3. สนามหนยนต จ านวน 1 ชด 4. สาย mini-USB แบบขวตอ Type-A, Type-B mini จ านวน 1 เสน
เครองมอส าหรบการปฏบตงาน 1. ชดไขควง จ านวน 1 ชด 2. คมจบ, คมตด จ านวน 1 ชด
ขอควรระวง 1. การตอแหลงจายกบแผงวงจร i-Duino Robot ตองตรวจสอบขวใหถกตอง หากผดขวจะท าใหไมโครคอนโทรลเลอรเสยหายได 2. การตอสาย mini-USB กบบอรด Arduino UNO และการตอวงจรตองตอใหแนน หากไมแนนจะท าใหการทดลองผดพลาดได 3. หากมขอสงสยใหสอบถามครผสอน
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 536
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ขนตอนการปฏบตงาน ปฏบตงานท 11.1 การประกอบและทดสอบหนยนตอตโนมต i-Duino Robot
1. เตรยมอปกรณและเครองมอประกอบการปฏบตงานตามรายการทก าหนดให 2. ประกอบแผนรองและถาดแบตเตอร กบชดแผนฐานและมอเตอรลอ ของหนยนตดงรปท 12.20
(ก) ถาดแบตเตอร
(ข) ชดแผนฐานและมอเตอรลอ (ค) ชดแผนฐานและมอเตอรลอทประกอบเขาดวยกน
รปท 12.20 การประกอบถาดแบตเตอรกบฐานและชดมอเตอรลอ
3. ประกอบเสายดแผนวงจร i-Duino Uno กบแผนฐานดวยสกร และใสแบตเตอรลงในถาด
(ก) เสายดแผนวงจร
(ข) แบตเตอร (ค) ชดโครงสรางหนยนต i-Duino Robot
รปท 12.21 ชดโครงสรางของ i-Duino Robot
ยดถาดกบแผนรองดวยสกร
ยดสกรกบเสาจากดานลางแผนฐาน
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 537
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
4. ประกอบแผนวงจร i-Duino Robot กบชดโครงสรางของหนยนต ยดดวยสกรใหแนน
(ก) สกรส าหรบยดแผนวงจรกบเสา
(ข) แผนวงจร i-Duino Robot (ค) ประกอบแผนวงจรกบชดโครงสรางหนยนต
รปท 12.22 การประกอบแผนวงจรกบชดโครงสรางหนยนต
5. ตอสายมอเตอรกบขวตอ Motor_A และขวตอ Motor_B ตอสายเซนเซอรตรวจจบแสงสะทอนอนฟราเรดกบขวตอ AN0 และ AN1 และตอสายแบตเตอรกบขวตอ DC Jack กบแผนวงจรดงรปท 12.23
รปท 12.23 หนยนต i-Duino Robot
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 538
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
6. เชอมตอสาย mini-USB กบหนยนตและเครองคอมพวเตอร 7. เปดใชงานซอฟตแวร Arduino IDE และตงคาการเชอมตอใหสมบรณ สรางไฟลสเกตชชอ Lab12_1a และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab12_1a
โปรแกรม Lab12_1a 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#include <LiquidCrystal_I2C.h> #define SW1 2 #define sensorL 0 #define sensorR 1 unsigned int left, right; LiquidCrystal_I2C lcd(0x27,16,2); void setup() { pinMode(SW1,INPUT); lcd.begin(); lcd.backlight(); lcd.setCursor(1,0); lcd.print("i-Duino Robot"); lcd.setCursor(0,1); lcd.print("Electronics ATC"); } void loop() { if(digitalRead(SW1)==LOW) { lcd.clear(); while(1) { left =analogRead(sensorL); //Read Analog from SensorL right=analogRead(sensorR); //Read Analog from SensorR delay(10); lcd.setCursor(0,0); lcd.print("left ="); lcd.setCursor(9,0); lcd.print(left); lcd.setCursor(0,1); lcd.print("right="); lcd.setCursor(9,1); lcd.print(right); } } }
ค าอธบายโปรแกรม : โปรแกรมทดสอบการแสดงผลของจอ LCD Module ใหแสดงขอความ “i-Duino Robot” บรรทดท 1 และแสดงขอความ “Electronics ATC” บรรทดท 2 และเมอกด SW1 จะเปนการทดสอบการอานคาจากเซนเซอรตรวจจบแสงสะทอนอนฟราเรด ดานซายและดานขวามาแสดงคาบนจอ LCD Module ใหทดลองน าหนยนตไปวางบนพนทดสอบใหเซนเซอรตรวจจบอยบนพนสขาว และเสนสด า
8. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 9. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร สงเกตการท างานของหนยนต ผลการทดลอง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 539
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
10. บนทกคาแสงสะทอนจากพนสขาว คาแสงสะทอนจากเสนสด า และค านวณคาแสงสะทอนอางอง (ref)
คาแสงสะทอนจากพนสขาว = คาแสงสะทอนจากเสนสด า = ค านวณคาแสงสะทอนอางอง (ref) = = 11. สรางไฟลสเกตชชอ Lab12_1b และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab12_1b
โปรแกรม Lab12_1b 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21
#include <motor.h> #define SW1 2 void setup() { pinMode(SW1,INPUT); pinMode(EN1,OUTPUT); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(EN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); } void loop() { if(digitalRead(SW1)==LOW) { FW(127,127); delay(5000); //Forward BW(200,200); delay(5000); //Backward TL(0,255); delay(5000); //Turn Left TR(255,0); delay(5000); //Turn Right SL(130,130); delay(5000); //Spin Left SR(255,255); delay(5000); //Spin Left STOP(); delay(5000); //Stop } }
อธบายโปรแกรม : เปนการทดสอบการเคลอนทของหนยนต ใหเคลอนทเดนหนา ถอยหลง เลยวซาย เลยวขวา หมนซาย หมนขวา และหยด โดยใชงานไฟลไลบราร motor.h
12. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 13. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร สงเกตการท างานของหนยนต ผลการทดลอง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 540
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
งานทมอบหมายหลงปฏบตงานท 12.1 1. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรม เปนหนยนต Alarm Robot : หนยนตสงเสยงรอง
เมอถกยกขนจากพน ตามเงอนไขในตาราง 12.1 และบนทกค าสงทงหมดลงในตาราง (5 คะแนน)
ตาราง 12.1 การท างานงานหนยนต Alram Robot การท างานของหนยนตเมอวางบนพน การท างานของหนยนตเมอถกยกขนจากพน
จอ LCD Module การสงเสยง จอ LCD Module การสงเสยง “Alarm OFF” ไมดง “Alarm ON” สงเสยง Beep
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 541
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ปฏบตงานท 12.2 หนยนตเคลอนทและหยดทเสนสด า 1. สรางไฟลสเกตชชอ Lab12_2 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab12_2 โปรแกรม Lab12_2
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
#include <motor.h> #include <LiquidCrystal_I2C.h> #define SW1 2 #define sensorL 0 #define sensorR 1 unsigned int ref=600, left, right; LiquidCrystal_I2C lcd(0x27,16,2); void setup() { pinMode(SW1,INPUT); pinMode(EN1,OUTPUT); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(EN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); lcd.begin(); lcd.backlight(); lcd.setCursor(1,0); lcd.print("i-Duino Robot"); lcd.setCursor(0,1); lcd.print("Electronics ATC"); } void loop() { if(digitalRead(SW1)==LOW) { lcd.clear(); while(1) { left =analogRead(sensorL); //Read Analog from SensorL right=analogRead(sensorR); //Read Analog from SensorR delay(10); lcd.setCursor(0,0); lcd.print("left ="); lcd.setCursor(9,0); lcd.print(left); lcd.setCursor(0,1); lcd.print("right="); lcd.setCursor(9,1); lcd.print(right); if(left>ref&&right>ref) //On white floor { FW(100,100); delay(1); } else //On black line STOP(); } } }
ค าอธบายโปรแกรม : โปรแกรมอานคาจากเซนเซอรตรวจจบแสงสะทอน เพอควบคมการเคลอนทของ หนยนต โดยก าหนดเงอนไขหากคาแสงสะทอนทอานไดมคานอยกวาคาแสงสะทอนอางอง (พบเสนสด า) ใหหนยนตหยด
2. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 3. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร น าหนยนตไปทดสอบกบพนสนาม
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 542
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ผลการทดลอง :
งานทมอบหมายหลงปฏบตงานท 12.2 1. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมควบคมหนยนตใหเคลอนทอยในกรอบดงรป
(5 คะแนน)
รปท 12.24 สนามส าหรบทดสอบหนยนตเคลอนทในกรอบ
2. ทดสอบการท างานของหนยนต บนทกค าสงโปรแกรมลงในตาราง 12.2 ตาราง 12.2 โปรแกรมควบคมหนยนตใหเคลอนทในกรอบ
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 543
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 12.2 (ตอ)
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 544
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ปฏบตงานท 12.3 การเขยนโปรแกรมควบคมหนยนตใหเคลอนทตามเสน เปนการควบคมใหหนยนตเคลอนทตามเสนสด าทก าหนด แสดงดงรป
รปท 12.25 สนามทดสอบหนยนตเคลอนทตามเสน
1. สรางไฟลสเกตชชอ Lab12_3 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab12_3 โปรแกรม Lab12_3
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#include <motor.h> #include <LiquidCrystal_I2C.h> #define SW1 2 #define sensorL 0 #define sensorR 1 unsigned int ref=600, left, right; LiquidCrystal_I2C lcd(0x27,16,2); void setup() { pinMode(SW1,INPUT); pinMode(EN1,OUTPUT); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(EN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); lcd.begin(); lcd.backlight(); lcd.setCursor(1,0); lcd.print("i-Duino Robot"); lcd.setCursor(0,1); lcd.print("Electronics ATC"); } void loop() { if(digitalRead(SW1)==LOW) { lcd.clear(); while(1) { left =analogRead(sensorL); right=analogRead(sensorR); delay(10); lcd.setCursor(0,0); lcd.print("left ="); lcd.setCursor(9,0); lcd.print(left); lcd.setCursor(0,1); lcd.print("right="); lcd.setCursor(9,1); lcd.print(right);
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 545
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
โปรแกรม Lab12_3 (ตอ) 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
if(left>ref && right>ref) //On white floor { FW(120,120); delay(1);} else if(left<ref && right>ref) //SensorL on black line { TL(0,80); delay(10); } else if(left>ref && right<ref) //SensorR on black line { TR(80,0); delay(10); } else { FW(120,120); delay(1);} } } }
ค าอธบายโปรแกรม : โปรแกรมอานคาจากเซนเซอรตรวจจบแสงสะทอน ควบคมหนยนตเคลอนทตามเสนสด า
2. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 3. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร ทดสอบหนยนตกบสนาม ผลการทดลอง :
งานทมอบหมายหลงปฏบตงานท 12.3 1. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมควบคมหนยนตเคลอนทตามเสน โดยเมอหนยนต
พบเสนตดใหหนยนตหยด ทดสอบการท างานของหนยนตและบนทกค าสงโปรแกรมทงหมดลงในตาราง (5 คะแนน)
รปท 12.26 สนามทดสอบหนยนตเคลอนทตามเสนแบบมเสนตด
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 546
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 12.3 โปรแกรมหนยนตเคลอนทตามเสนและหยดทเสนตด
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 547
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 12.3 (ตอ)
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 548
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ปฏบตงานท 12.4 การเขยนโปรแกรมควบคมหนยนตใหเคลอนทตามเสน เปนการควบคมใหหนยนตเคลอนทตามเสนสด าทก าหนด แสดงดงรป
รปท 12.27 สนามทดสอบหนยนตเคลอนทตามเสน
1. สรางไฟลสเกตชชอ Lab12_4 และเขยนค าสงภาษาซตามค าสงโปรแกรม Lab12_4 โปรแกรม Lab12_4
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#include <motor.h> #include <LiquidCrystal_I2C.h> #define SW1 2 #define sensorL 0 #define sensorR 1 unsigned int ref=600, left, right; LiquidCrystal_I2C lcd(0x27,16,2); void setup() { pinMode(SW1,INPUT); pinMode(EN1,OUTPUT); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(EN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); lcd.begin(); lcd.backlight(); lcd.setCursor(1,0); lcd.print("i-Duino Robot"); lcd.setCursor(0,1); lcd.print("Electronics ATC"); } void loop() { if(digitalRead(SW1)==LOW) { lcd.clear(); while(1) { left =analogRead(sensorL); right=analogRead(sensorR); delay(10); lcd.setCursor(0,0); lcd.print("left ="); lcd.setCursor(9,0); lcd.print(left);
FINISH
START
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 549
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
โปรแกรม Lab12_4 (ตอ) 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
lcd.setCursor(0,1); lcd.print("right="); lcd.setCursor(9,1); lcd.print(right); if(left>ref && right>ref) //On white floor { FW(120,120); delay(1);} else if(left<ref && right>ref) //SensorL on black line { TL(0,80); delay(10); } else if(left>ref && right<ref) //SensorR on black line { TR(80,0); delay(10); } else if(left<ref && right<ref) //SensorL, sensorR on black line { STOP(); } else { FW(120,120); delay(1);} } } }
ค าอธบายโปรแกรม : โปรแกรมอานคาจากเซนเซอรตรวจจบแสงสะทอน ควบคมหนยนตเคลอนทตามเสนสด า
2. ท าการคอมไพล และอปโหลดไฟลสเกตชลงแผงวงจร i-Duino Robot 3. เลอน Power Switch ON เพอจายแรงดนไฟเลยงวงจร ทดสอบหนยนตกบสนาม ผลการทดลอง :
งานทมอบหมายหลงปฏบตงานท 12.4 1. ศกษาชดค าสงโปรแกรมและเขยนโปรแกรมควบคมหนยนตเคลอนทตามเสน ใหวงตามเสน
ตงแตจด Start จนถงจดสนสด โดยใชเวลานอยทสด ทดสอบการท างานของหนยนตและบนทกค าสงโปรแกรมทงหมดลงในตาราง 12.4 (5 คะแนน)
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 550
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 12.4 โปรแกรมหนยนตเคลอนทตามเสน
ค าสง :
เอกสารประกอบการเรยน วชาไมโครคอนโทรลเลอร (2105-2105) 551
หนวยท 12 การประยกตใชงาน Arduino ในรปแบบหนยนตอตโนมต เรยบเรยงโดยครบญเกด สนธพนธ
ตาราง 12.4 (ตอ)
ค าสง :