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

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

สารบัญ:

Anonim

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

ฉันสร้างแบบจำลองนี้ใน Proteus 8.6 pro

ส่วนประกอบที่จำเป็น: -

1) Arduino uno

2) 3 LDR

3) 2 Dc Gear Motors

4) เซอร์โวหนึ่งอัน

5) ตัวต้านทาน 1k สามตัว

6) หนึ่ง H-Bridge l290D

7) สวิตช์เปิด & ปิดหนึ่งครั้ง สำหรับเงื่อนไขการเปลี่ยนแปลงของโปรแกรม

8) Battry 9v และ 5v

วัสดุ:

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

ปรับปรุง: _

รหัส Arduino ได้รับการแก้ไขวันที่ 23 กุมภาพันธ์ 2559

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

บันทึก:-

ฉันใช้สองเงื่อนไขในโปรแกรมนี้

อันดับที่ 1 สำหรับการติดตามแสง

อันที่สองสำหรับการหลีกเลี่ยงแสง

เท่าที่เงื่อนไขเหล่านี้พอใจหุ่นยนต์จะติดตามหรือหลีกเลี่ยงแสง

นี่คือค่าต่ำสุดของ LDR ที่ฉันเลือก โดยทั่วไปแล้วแสงจะอยู่ในช่วง 80 ถึง 95 แต่เมื่อความเข้มแสงเพิ่มขึ้นจะทำให้เกิดแรงกระตุ้นเพิ่มขึ้นเนื่องจากทำงานบนหลักการของตัวแบ่งแรงดันไฟฟ้า

int a = 400; // ค่าความคลาดเคลื่อน

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

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

ขั้นตอนที่ 3: H-bridge ของคุณทำงานอย่างไร

L293NE / SN754410 เป็น H-bridge ที่ธรรมดามาก มันมีสะพานสองแห่งสะพานหนึ่งอยู่ทางด้านซ้ายของชิปและอีกสะพานอยู่ทางขวาและสามารถควบคุมมอเตอร์ได้ 2 ตัว สามารถขับกระแสได้สูงสุด 1 แอมป์และทำงานระหว่าง 4.5V ถึง 36V มอเตอร์กระแสตรงขนาดเล็กที่คุณใช้ในห้องปฏิบัติการนี้สามารถทำงานได้อย่างปลอดภัยจากแรงดันไฟฟ้าต่ำดังนั้นสะพาน H นี้จะทำงานได้ดี H-bridge มีพินและฟีเจอร์ดังต่อไปนี้: Pin 1 (1,2EN) เปิดใช้งานและปิดใช้งานมอเตอร์ของเราไม่ว่าจะให้ HIGH หรือ LOWPin 2 (1A) เป็นลอจิกแบบพินสำหรับมอเตอร์ของเรา (อินพุตเป็น PIN สูงหรือต่ำ) 3 (1Y) สำหรับเทอร์มินอลมอเตอร์พิน 4-5 สำหรับพินที่พิน 6 (2Y) สำหรับเทอร์มินัลมอเตอร์อื่นพิน 7 (2A) เป็นลอจิกพินสำหรับมอเตอร์ของเรา (อินพุตมีค่าสูงหรือต่ำ) Pin 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-bridge เชื่อมต่อมอเตอร์เข้ากับ H-bridge ดังแสดงในรูปที่ 2

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

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

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

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

ตอนนี้ยังคงถามคำถาม“ แต่ LDR มีค่าความต้านทานเท่าใด?” เป็นคำถามที่ดี

ปริมาณของแสงรอบข้างที่น้อยลงความต้านทานที่สูงกว่าแสงโดยรอบที่มากขึ้นหมายถึงความต้านทานที่ลดลง ตอนนี้สำหรับ LDR ที่เจาะจงฉันใช้ช่วงความต้านทานของพวกเขาอยู่ที่ 200 - 10 กิโลโอห์ม แต่การเปลี่ยนแปลงนี้สำหรับคนที่แตกต่างกันดังนั้นอย่าลืมดูที่ที่คุณซื้อพวกเขาจากนั้นลองหาแผ่นข้อมูลหรืออะไรก็ได้ กรณี R1 คือ LDR ของเราดังนั้นเราจะนำสมการนั้นกลับมาและทำคณิตศาสตร์ - อี - เวทย์มนตร์ (เวทย์มนตร์ทางคณิตศาสตร์ทางไฟฟ้า) ตอนนี้ก่อนอื่นเราต้องแปลงค่ากิโลโอห์มเป็นโอห์ม:

200 kilo-ohms = 200,000 ohms 10 kilo-ohms = 10,000 ohms

เพื่อหาว่าแรงดันไฟฟ้าขาออกคืออะไรเมื่อเราอยู่ในระยะพิทซ์ดำเราจึงทำการเสียบตัวเลขต่อไปนี้:

5 * (10000 / (200000 + 10000))

อินพุตเป็น 5V เนื่องจากเป็นสิ่งที่เราได้รับจาก Arduino

ด้านบนให้ 0.24V (ปัดเศษ) ตอนนี้เราจะพบว่าแรงดันเอาต์พุตอยู่ในความสว่างสูงสุดโดยใช้ตัวเลขต่อไปนี้: 5 * (10000 / (10000 + 10,000)) และนี่คือ 2.5V แน่นอน

ดังนั้นนี่คือค่าแรงดันไฟฟ้าที่เราจะเข้าสู่หมุดแบบอะนาล็อกของ Arduino แต่นี่ไม่ใช่ค่าที่จะเห็นได้ในโปรแกรม "แต่ทำไม" คุณอาจถาม

Arduino ใช้ชิปอนาล็อกเป็นดิจิตอลซึ่งแปลงแรงดันไฟฟ้าอนาล็อกเป็นข้อมูลดิจิตอลที่ใช้งานได้ ซึ่งแตกต่างจากพินดิจิตอลบน Arduino ที่สามารถอ่านสถานะ HIGH หรือ LOW เป็น 0 และ 5V หมุดอะนาล็อกสามารถอ่านได้ตั้งแต่ 0-5V และแปลงเป็นช่วงจำนวน 0-1023 ตอนนี้มี math-e-magic.

เราสามารถคำนวณค่าที่ Arduino จะอ่านได้จริง

เนื่องจากนี่จะเป็นฟังก์ชันเชิงเส้นเราสามารถใช้สูตรต่อไปนี้: Y = mX + C

ไหน; Y = ค่าดิจิตอลอยู่ที่ไหน; m = ความชัน, (เพิ่มขึ้น / เรียกใช้), (ค่าดิจิทัล / ค่าอะนาล็อก) ที่ไหน; C = Y intercept จุดตัดแกน Y คือ 0 นั่นทำให้เรา: Y = mXm = 1023/5 = 204.6 ดังนั้น: ค่าดิจิตอล = 204.6 * ค่าอนาล็อกดังนั้นในระดับสีดำค่าดิจิตอลจะเท่ากับ: 204.6 * 0.24

ซึ่งให้ประมาณ 49 และในความสว่างสูงสุดจะเป็น: 204.6 * 2.5

ซึ่งให้ประมาณ 511

ขณะนี้มีการตั้งค่าเหล่านี้สองตัวบนหมุดแบบอะนาล็อกสองตัวเราสามารถสร้างตัวแปรจำนวนเต็มสองตัวเพื่อเก็บค่าของพวกเขาสองตัวและทำการเปรียบเทียบตัวดำเนินการเพื่อดูว่าอันใดมีค่าต่ำสุด

ขั้นตอนที่ 5: