- แนวคิดของ Line Follower Robot
- ส่วนประกอบที่จำเป็น
- แผนภูมิวงจรรวม
- การเขียนโปรแกรม Atmega16 สำหรับ Line Follower Robot
ที่นี่เราจะสร้างโครงการอื่น ๆ ที่มีAVR ATmega16 ไมโครคอนโทรลเลอร์ หากคุณยังใหม่กับไมโครคอนโทรลเลอร์ AVR คุณสามารถอ้างถึงโครงการและแบบฝึกหัด AVR ก่อนหน้านี้
การสร้างหุ่นยนต์เป็นเรื่องที่น่าตื่นเต้นสำหรับผู้ที่ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์ทุกคน และความตื่นเต้นนี้สามารถขยายได้มากที่สุดหากหุ่นยนต์สามารถทำบางสิ่งได้โดยอัตโนมัติโดยไม่มีคำสั่งจากภายนอก หนึ่งในหุ่นยนต์ที่สร้างขึ้นมากที่สุดโดยเริ่มต้นอิเล็กทรอนิกส์เป็นสายติดตามหุ่นยนต์ตามชื่อที่แนะนำหุ่นยนต์จะเดินตามเส้นที่ลากบนพื้นผิว เส้นไม่จำเป็นต้องเป็นเส้นตรง นอกจากนี้เส้นอาจมีสีใดก็ได้
ก่อนหน้านี้เราได้สร้างโครงการ Line Follower Robot โดยใช้คอนโทรลเลอร์ที่แตกต่างกัน:
- Line Follower Robot โดยใช้ไมโครคอนโทรลเลอร์ 8051
- Line Follower Robot โดยใช้ไมโครคอนโทรลเลอร์ PIC
- Line Follower Robot โดยใช้ Arduino
- Line Follower Robot โดยใช้ Raspberry Pi
- Line Follower Robot โดยใช้ MSP430 Launchpad
วันนี้เราจะใช้ไมโครคอนโทรลเลอร์ตระกูล AVR ที่จะสร้างหุ่นยนต์สายลูกศิษย์
เซ็นเซอร์ IRส่วนใหญ่ใช้ในการตรวจจับเส้น เซ็นเซอร์ IR สามารถตรวจจับพื้นผิวสีขาวหรือสีดำได้ดี แม้ว่าคุณจะสามารถใช้เซ็นเซอร์ที่ซับซ้อนอื่น ๆ ซึ่งจะสามารถตรวจจับสีทั้งหมดและสามารถสร้างหุ่นยนต์ที่สามารถทำตามเส้นสีทั้งหมดได้ หุ่นยนต์ควรสามารถตรวจจับเส้นได้แม้ว่าเส้นทางจะถูกเปลี่ยนโดยการเปลี่ยนมุมและเดินตามเส้นไปเรื่อย ๆ นอกจากนี้ควรหยุดทุกที่ที่มีโซนหยุดอยู่ในแถว
ปัจจุบันหุ่นยนต์ผู้ติดตามไลน์ถูกนำมาใช้อย่างแพร่หลายในอุตสาหกรรมการผลิตการแพทย์การใช้งานในประเทศและคลังสินค้าสินค้า หุ่นยนต์ไม่ได้ จำกัด เฉพาะแอปพลิเคชั่นเหล่านี้เท่านั้นและยังสามารถขยายการใช้งานของมันในแอพพลิเคชั่นในอนาคต
แนวคิดของ Line Follower Robot
เซ็นเซอร์ IR เป็นผู้มีบทบาทสำคัญในโครงการนี้ เซ็นเซอร์ IR วางอยู่ด้านหน้าของหุ่นยนต์เพื่อติดตามเส้นสีดำที่ลากและพื้นผิว หุ่นยนต์วางอยู่ระหว่างเส้นและด้วยความช่วยเหลือของเซ็นเซอร์ IR หุ่นยนต์จะติดตามเส้น เซ็นเซอร์ IR ตอบรับการอ่านไปยังไมโครคอนโทรลเลอร์และด้วยความช่วยเหลือของการอ่าน IR ไมโครคอนโทรลเลอร์จะย้ายมอเตอร์ไปทางซ้ายหรือด้านขวาและนำหุ่นยนต์ไปยังเส้นทางอีกครั้ง
Line Follower Robot สามารถติดตามเส้นได้โดยใช้เซ็นเซอร์ IR เซ็นเซอร์นี้มีตัวส่งสัญญาณ IR และตัวรับสัญญาณ IR เครื่องส่งสัญญาณ IR (IR LED) จะส่งแสงและตัวรับ (โฟโตไดโอด) จะรอให้แสงที่ส่งกลับมา แสง IR จะย้อนกลับก็ต่อเมื่อสะท้อนจากพื้นผิวเท่านั้น ในขณะที่พื้นผิวทั้งหมดไม่สะท้อนแสง IR มีเพียงพื้นผิวสีขาวเท่านั้นที่สามารถสะท้อนแสงได้อย่างสมบูรณ์และพื้นผิวสีดำจะสังเกตได้อย่างสมบูรณ์ดังแสดงในรูปด้านล่าง เรียนรู้เพิ่มเติมเกี่ยวกับโมดูลเซ็นเซอร์ IR ที่นี่
ตอนนี้เราจะใช้ เซ็นเซอร์ IR สองตัว เพื่อตรวจสอบว่าหุ่นยนต์อยู่ในแนวเดียวกันหรือไม่และมอเตอร์สองตัวเพื่อแก้ไขหุ่นยนต์หากเคลื่อนที่ออกจากแทร็ก มอเตอร์เหล่านี้ต้องการกระแสไฟฟ้าสูงและควรเป็นแบบสองทิศทาง ด้วยเหตุนี้เราจึงใช้โมดูลไดรเวอร์มอเตอร์เช่น L293D นอกจากนี้เรายังต้องมีไมโครคอนโทรลเลอร์เช่น ATmega16 เพื่อสั่งการมอเตอร์ตามค่าจากเซ็นเซอร์ IR แผนภาพบล็อกแบบง่ายที่เหมือนกันแสดงอยู่ด้านล่าง
เซ็นเซอร์ IR สองตัวนี้จะถูกวางไว้ที่ด้านใดด้านหนึ่งของเส้น หากไม่มีเซ็นเซอร์ตรวจจับเส้นสีดำไมโครคอนโทรลเลอร์ AVR จะสั่งให้มอเตอร์เคลื่อนที่ไปข้างหน้าดังที่แสดงด้านล่าง
หากเซ็นเซอร์ด้านซ้ายเป็นเส้นสีดำไมโครคอนโทรลเลอร์จะสั่งให้หุ่นยนต์เลี้ยวซ้ายโดยหมุนล้อขวาเพียงอย่างเดียว
หากเซ็นเซอร์ด้านขวาเป็นเส้นสีดำไมโครคอนโทรลเลอร์จะสั่งให้หุ่นยนต์เลี้ยวขวาโดยหมุนล้อซ้ายเพียงอย่างเดียว
หากเซ็นเซอร์ทั้งสองอยู่บนเส้นสีดำหุ่นยนต์จะหยุดทำงาน
วิธีนี้หุ่นยนต์จะสามารถติดตามเส้นได้โดยไม่ต้องออกนอกเส้นทาง ตอนนี้ให้เราดูว่าวงจรและรหัสมีลักษณะอย่างไร
ส่วนประกอบที่จำเป็น
- DC Gear Motors (2 ยูนิต)
- โมดูลเซ็นเซอร์ IR (2 ยูนิต)
- โมดูล L293D
- แหล่งพลังงานไร้สาย (เช่นแบตเตอรี่ธนาคารพลังงาน)
- หุ่นยนต์ Chaises
- Atmega16 ไมโครคอนโทรลเลอร์ IC
- 16Mhz คริสตัลออสซิลเลเตอร์
- ตัวเก็บประจุ 100nF สองตัว
- ตัวเก็บประจุ 22pF สองตัว
- ปุ่มกด
- สายจัมเปอร์
- เขียงหั่นขนม
- USBASP v2.0 (เพื่อตั้งโปรแกรม Atmega16)
แผนภูมิวงจรรวม
เชื่อมต่อส่วนประกอบทั้งหมดตามที่แสดงด้านล่างในแผนภาพวงจร
การเขียนโปรแกรม Atmega16 สำหรับ Line Follower Robot
Atmega16 ได้รับการตั้งโปรแกรมโดยใช้ USBASP และ Atmel Studio7.0 หากคุณไม่ทราบว่า Atmega16 สามารถตั้งโปรแกรมโดยใช้ USBASP ได้อย่างไรให้ไปที่ลิงค์ โปรแกรมที่สมบูรณ์จะได้รับในตอนท้ายของโครงการเพียงอัปโหลดโปรแกรมใน Atmega16 โดยใช้โปรแกรมเมอร์ JTAG และ Atmel Studio 7.0 ตามที่อธิบายไว้ในบทช่วยสอนก่อนหน้านี้
เราพยายามทำให้รหัสสั้นและเรียบง่ายที่สุดเท่าที่จะทำได้ ดังนั้นเราจึงใช้ Macros และฟังก์ชันพิเศษลงทะเบียนในรหัสนี้
ถ้า(bit_is_clear (ปินะ, leftSen)) { // ตรวจสอบถ้าเซ็นเซอร์ซ้ายปิด
คำสั่งนี้ตรวจสอบว่า PA0 ที่เซ็นเซอร์ด้านซ้ายเชื่อมต่ออยู่ต่ำหรือสูง
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่งนี้และมาโครอื่น ๆ ให้ไปที่ลิงค์นี้
มีสี่เงื่อนไขที่เรากำลังติดตามเพื่ออ่านเซ็นเซอร์ IR แบบราง เซ็นเซอร์ IR ได้รับการตั้งชื่อตามตำแหน่งที่อยู่ด้านหน้าของหุ่นยนต์ IR ด้านซ้ายคือเซ็นเซอร์ด้านซ้ายและ IR ด้านขวาคือเซ็นเซอร์ด้านขวา เงื่อนไขต่อไปนี้จะตัดสินการเคลื่อนไหวของหุ่นยนต์
เราได้เขียนโค้ดตามเงื่อนไขข้างต้น สิ่งเดียวที่เปลี่ยนไปคือเราใช้พินอินพุตเพียงสองตัวของ L293D เพื่อขับเคลื่อนมอเตอร์ทั้งสองตัว
รหัสที่สมบูรณ์พร้อมวิดีโอสาธิตได้รับด้านล่าง