สารบัญ:

การติดตามและหลีกเลี่ยงหุ่นยนต์โดยใช้ Arduino: 5 ขั้นตอน
การติดตามและหลีกเลี่ยงหุ่นยนต์โดยใช้ Arduino: 5 ขั้นตอน

วีดีโอ: การติดตามและหลีกเลี่ยงหุ่นยนต์โดยใช้ Arduino: 5 ขั้นตอน

วีดีโอ: การติดตามและหลีกเลี่ยงหุ่นยนต์โดยใช้ Arduino: 5 ขั้นตอน
วีดีโอ: ออกแบบหุ่นยนต์เดินตามเส้น 4 เซ็นเซอร์ : Arduino Line Follower Robot 2024, พฤศจิกายน
Anonim
ติดตามแสงและหลีกเลี่ยงหุ่นยนต์ที่ใช้ Arduino
ติดตามแสงและหลีกเลี่ยงหุ่นยนต์ที่ใช้ Arduino

นี่เป็นโครงการง่ายๆ ที่ทำตามหรือหลีกเลี่ยงแสง

ฉันทำการจำลองนี้ใน Proteus 8.6 pro. Components Required:-1) Arduino uno

2) 3 แอลดีอาร์

3) มอเตอร์เกียร์ 2 Dc.4) หนึ่งเซอร์โว.5) ตัวต้านทาน 1k สามตัว.6) สะพาน H หนึ่งตัว l290D7) สวิตช์เปิดและปิดหนึ่งตัว [สำหรับการเปลี่ยนแปลงเงื่อนไขของโปรแกรม]

8) แบตเตอรี่ 9v และ 5v

ขั้นตอนที่ 1: รหัส Ardunio

Arduino Code ถูกดัดแปลงเล็กน้อยวันที่ 23 กุมภาพันธ์ 2559]

รหัสนี้มีความคิดเห็นสูง ฉันไม่ต้องการอธิบาย แต่ถ้าคุณต้องการความช่วยเหลือโปรดติดต่อฉันได้ที่ ([email protected])

หมายเหตุ: - ฉันใช้สองเงื่อนไขในโปรแกรมนี้ที่ 1 สำหรับ Light Following.2 และหนึ่งสำหรับการหลีกเลี่ยง Light

เท่าที่เงื่อนไขเหล่านี้พอใจ หุ่นยนต์จะทำตามหรือหลีกเลี่ยงแสง [นี่คือค่าต่ำสุดของ LDR ที่ฉันเลือก ในแสงปกติ มันคือช่วง 80 ถึง 95 แต่เมื่อความเข้มของมันเพิ่มแรงดันไฟฟ้าเหนี่ยวนำให้มากขึ้นเรื่อยๆ เนื่องจากมันทำงานบนหลักการของตัวแบ่งแรงดัน int a = 400; // ค่าความอดทน]

ขั้นตอนที่ 2: ไฟล์ Proteus

สำหรับ Arduino Library ดาวน์โหลดจากลิงค์นั้น

ขั้นตอนที่ 3: วิธีการทำงานของสะพาน H ของคุณ

H-bridge ของคุณทำงานอย่างไร
H-bridge ของคุณทำงานอย่างไร
H-bridge ของคุณทำงานอย่างไร
H-bridge ของคุณทำงานอย่างไร

L293NE/SN754410 เป็นสะพาน H แบบพื้นฐาน มีบริดจ์สองอัน อันหนึ่งอยู่ด้านซ้ายของชิป และอีกอันอยู่ทางด้านขวา และสามารถควบคุมมอเตอร์ได้ 2 ตัว สามารถขับกระแสไฟได้สูงถึง 1 แอมป์ และทำงานระหว่าง 4.5V ถึง 36V มอเตอร์ DC ขนาดเล็กที่คุณใช้ในห้องปฏิบัติการนี้สามารถทำงานโดยใช้แรงดันไฟฟ้าต่ำได้อย่างปลอดภัย ดังนั้นสะพาน H นี้จะทำงานได้ดี H-bridge มีพินและคุณสมบัติดังต่อไปนี้: Pin 1 (1, 2EN) เปิดใช้งานและปิดใช้งานมอเตอร์ของเราไม่ว่าจะให้ HIGH หรือ LOWPin 2 (1A) เป็นพินลอจิกสำหรับมอเตอร์ของเรา (อินพุตคือ HIGH หรือ LOW) 3 (1Y) ใช้สำหรับขั้วต่อมอเตอร์ตัวใดตัวหนึ่ง ขา 4-5 ตัวสำหรับกราวด์ ขา 6 (2Y) ใช้สำหรับขั้วต่อมอเตอร์ตัวอื่น ขา 7 (2A) เป็นขาลอจิกสำหรับมอเตอร์ของเรา (อินพุตสูงหรือต่ำ) ขา 8 (VCC2) เป็นแหล่งจ่ายไฟสำหรับมอเตอร์ของเรา ซึ่งควรได้รับแรงดันไฟฟ้าที่กำหนดของมอเตอร์ของคุณ ขา 9-11 ไม่ได้เชื่อมต่อ เนื่องจากคุณใช้มอเตอร์เพียงตัวเดียวในแล็บนี้ ขา 12-13 ใช้สำหรับกราวด์ ขา 14-15 ไม่ได้เชื่อมต่อขา 16 (VCC1) คือ เชื่อมต่อกับ 5V ด้านบนเป็นไดอะแกรมของ H-bridge และพินใดทำหน้าที่ในตัวอย่างของเรา รวมอยู่ในไดอะแกรมเป็นตารางความจริงที่ระบุว่ามอเตอร์ทำงานอย่างไรตามสถานะของลอจิกพิน (ซึ่งกำหนดโดย Arduino ของเรา)

ในโปรเจ็กต์นี้ พินเปิดใช้งานจะเชื่อมต่อกับพินดิจิทัลบน Arduino ของคุณ ดังนั้นคุณสามารถส่งค่าสูงหรือต่ำ และเปิดหรือปิดมอเตอร์ได้ พินลอจิกของมอเตอร์ยังเชื่อมต่อกับพินดิจิทัลที่กำหนดไว้บน Arduino ของคุณ ดังนั้นคุณจึงสามารถส่งค่า HIGH และ LOW เพื่อให้มอเตอร์หมุนไปในทิศทางเดียว หรือ LOW และ HIGH เพื่อให้มอเตอร์หมุนไปในทิศทางอื่นได้ แรงดันไฟของมอเตอร์เชื่อมต่อกับแหล่งจ่ายแรงดันของมอเตอร์ ซึ่งมักจะเป็นแหล่งจ่ายไฟภายนอก หากมอเตอร์ของคุณสามารถทำงานบน 5V และน้อยกว่า 500mA คุณสามารถใช้เอาต์พุต 5V ของ Arduino ได้ มอเตอร์ส่วนใหญ่ต้องการแรงดันไฟฟ้าที่สูงกว่าและกระแสดึงที่สูงกว่านี้ ดังนั้น คุณจะต้องใช้แหล่งจ่ายไฟภายนอก

ต่อมอเตอร์เข้ากับตัว H ต่อมอเตอร์เข้ากับตัว H ดังรูปที่ 2

หรือหากคุณใช้แหล่งจ่ายไฟภายนอกสำหรับ Arduino คุณสามารถใช้พิน Vin

ขั้นตอนที่ 4: LDR ทำงานอย่างไร

ตอนนี้สิ่งแรกที่อาจต้องการคำอธิบายเพิ่มเติมคือการใช้ตัวต้านทานแบบพึ่งพาแสง ตัวต้านทานแบบพึ่งพาแสง (หรือของ LDR) เป็นตัวต้านทานที่มีค่าการเปลี่ยนแปลงขึ้นอยู่กับปริมาณของแสงโดยรอบ แต่เราจะตรวจจับความต้านทานด้วย Arduino ได้อย่างไร คุณไม่สามารถทำได้จริงๆ อย่างไรก็ตาม คุณสามารถตรวจจับระดับแรงดันไฟฟ้าโดยใช้พินอะนาล็อก ซึ่งสามารถวัด (ในการใช้งานพื้นฐาน) ระหว่าง 0-5V ตอนนี้คุณอาจกำลังถามว่า "เราจะแปลงค่าความต้านทานเป็นการเปลี่ยนแปลงแรงดันไฟฟ้าได้อย่างไร" ง่ายมาก เราสร้างตัวแบ่งแรงดันไฟฟ้า ตัวแบ่งแรงดันไฟฟ้าใช้แรงดันไฟฟ้าแล้วส่งออกเศษส่วนของแรงดันไฟฟ้านั้นตามสัดส่วนของแรงดันไฟฟ้าขาเข้าและอัตราส่วนของค่าตัวต้านทานสองค่าที่ใช้ สมการคือ:

แรงดันขาออก = แรงดันไฟฟ้าขาเข้า * (R2 / (R1 + R2)) โดยที่ R1 คือค่าของตัวต้านทานตัวแรกและ R2 คือค่าของวินาที

ตอนนี้ยังคงถามคำถามว่า "แต่ค่าความต้านทานมีค่าเท่าไหร่" เป็นคำถามที่ดี ยิ่งแสงโดยรอบมีความต้านทานสูง แสงรอบข้างมากขึ้นหมายถึงความต้านทานที่ต่ำลง ตอนนี้สำหรับ LDR โดยเฉพาะ ฉันใช้ช่วงความต้านทานอยู่ระหว่าง 200 – 10 กิโลโอห์ม แต่การเปลี่ยนแปลงนี้สำหรับค่าต่างๆ ที่แตกต่างกัน ดังนั้นโปรดตรวจสอบว่าคุณซื้อมันมาจากที่ใด และพยายามหาแผ่นข้อมูลหรืออะไรทำนองนั้น ตอนนี้อยู่ในนี้ กรณี R1 คือ LDR ของเราจริงๆ ดังนั้นเราจึงนำสมการนั้นกลับมาและทำคณิตศาสตร์อิเล็กทรอนิกส์ (มายากลไฟฟ้าทางคณิตศาสตร์) ก่อนอื่นเราต้องแปลงค่ากิโลโอห์มเหล่านั้นเป็นโอห์ม: 200 กิโลโอห์ม = 200,000 โอห์ม 10 กิโลโอห์ม = 10, 000 โอห์มดังนั้นเพื่อค้นหาว่าแรงดันเอาต์พุตเป็นเท่าใดเมื่อเราเป็นสีดำสนิทเราเสียบตัวเลขต่อไปนี้: 5 * (10000 / (200,000 + 10000)) อินพุตคือ 5V ตามที่เราได้รับ จาก Arduino ด้านบนให้ 0.24V (ปัดเศษ) ตอนนี้เราพบว่าแรงดันเอาต์พุตอยู่ที่ความสว่างสูงสุดโดยใช้ตัวเลขต่อไปนี้:5 * (10000 / (10000 + 10000)) และสิ่งนี้ทำให้เรา 2.5V อย่างแน่นอน นี่คือค่าแรงดันไฟที่เราจะใส่เข้าไปในขาอนาล็อกของ Arduino แต่นี่ไม่ใช่ค่าที่จะเห็นในโปรแกรม "แต่ทำไม" คุณอาจถาม Arduino ใช้ชิปอนาล็อกเป็นดิจิตอลซึ่งแปลงแรงดันไฟฟ้าแอนะล็อกให้เป็นข้อมูลดิจิทัลที่ใช้งานได้ ต่างจากพินดิจิตอลบน Arduino ที่สามารถอ่านสถานะ HIGH หรือ LOW ได้เพียง 0 และ 5V เท่านั้น พินแบบอะนาล็อกสามารถอ่านได้ตั้งแต่ 0-5V และแปลงค่านี้เป็นช่วงตัวเลข 0-1023 ตอนนี้มี math-e-magic เพิ่มเติม. เราสามารถคำนวณได้ว่าค่าใดที่ Arduino จะอ่านได้จริง

เนื่องจากนี่จะเป็นฟังก์ชันเชิงเส้น เราจึงสามารถใช้สูตรต่อไปนี้: Y = mX + C Where; Y = มูลค่าดิจิทัลที่ไหน; m = ความชัน, (เพิ่มขึ้น / วิ่ง), (ค่าดิจิตอล / ค่าแอนะล็อก)ที่ไหน; การสกัดกั้น C = Y การสกัดกั้น Y เป็น 0 เพื่อให้เราได้รับ:Y = mXm = 1023 / 5 = 204.6ดังนั้น:ค่าดิจิตอล = 204.6 * ค่าอะนาล็อก ดังนั้นในความมืดมิด ค่าดิจิตอลจะเป็น:204.6 * 0.24 ซึ่งให้ประมาณ 49. และ ในความสว่างสูงสุดจะเป็น: 204.6 * 2.5 ซึ่งให้ค่าประมาณ 511 ขณะนี้ด้วยสองพินแบบอะนาล็อกที่ตั้งค่าไว้บนหมุดอะนาล็อกสองตัว เราสามารถสร้างตัวแปรจำนวนเต็มสองตัวเพื่อเก็บค่าสองค่าและดำเนินการเปรียบเทียบเพื่อดูว่าตัวใดมีค่าน้อยที่สุด หมุนหุ่นยนต์ไปในทิศทางนั้น

แนะนำ: