สารบัญ:

แขนกล Arduino: 5 ขั้นตอน
แขนกล Arduino: 5 ขั้นตอน

วีดีโอ: แขนกล Arduino: 5 ขั้นตอน

วีดีโอ: แขนกล Arduino: 5 ขั้นตอน
วีดีโอ: แขนกลตรวจจับสีด้วยกล้อง Arduino Robot Arm 2024, พฤศจิกายน
Anonim
Image
Image
แขนกล Arduino
แขนกล Arduino
แขนกล Arduino
แขนกล Arduino

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

โครงงานนี้เกี่ยวกับแขนหุ่นยนต์ 4 dofs และกริป ด้วยงบประมาณที่ต่ำพอสมควร: โครงสร้างถูกตัดโดยเพื่อน เซอร์โว 4 ตัวราคา 30 ยูโร จอยสติ๊ก 2 ตัว 4 ยูโร สลักเกลียว ฯลฯ ในราคาไม่ถึง 10 ยูโร และส่วนที่เหลือทั้งหมด (Arduino, สายไฟ, เซอร์โวของกริป เป็นต้น) รวมอยู่ในชุดเริ่มต้นของฉันแล้ว รวมเป็นเงิน 40-45 ยูโร ซึ่งประมาณ 45-50 ดอลลาร์สหรัฐ (ราคาเท่า me-arm kit แต่เดี๋ยวก่อน มันเป็นเรื่องสนุกที่จะต้องทำด้วยตัวเอง และไม่ปฏิบัติตามคำแนะนำเหมือนเครื่องจักร)

เนื่องจากนี่เป็นโปรเจ็กต์แรกและสอนได้ของฉัน ฉันจึงเข้าร่วม "ผู้แต่งครั้งแรก" และการแข่งขันอื่นๆ อีกสองสามรายการ ดังนั้นหากคุณชอบ โปรดโหวต:)

ขั้นตอนที่ 1: การออกแบบและการประกอบ:

อันดับแรก ฉันต้องการโครงสร้าง: นี่เป็นส่วนที่ยาวที่สุด เนื่องจากฉันไม่ต้องการคัดลอกและวางโครงการจากคนอื่น ฉันจึงใช้โครงการเป็นข้อมูลอ้างอิงและฉัน (และเพื่อนร่วมชั้นที่มีทักษะอีกสองคนที่ช่วยฉันไว้จริงๆ) เริ่มปรับเปลี่ยนตามความต้องการของเรา (เซอร์โวต่าง ๆ ที่มีแรงบิด น้ำหนักและขนาดต่างกัน เป็นต้น) ฉันต้องสร้างมันสองสามครั้ง แต่ละอันฉันพบว่ามีบางอย่างผิดปกติ และเราต้องตัดบางชิ้นแล้วลองใหม่ ฉันได้แนบไฟล์.dxf แล้ว ในกรณีที่คุณต้องการใช้ จากนั้นฉันต้องซื้ออุปกรณ์อิเล็กทรอนิกส์:ชิ้นส่วนส่วนใหญ่เป็นแบบมาตรฐาน ส่วนที่ยากคือการเลือกเซอร์โว ฉันคำนวณแรงบิดที่ต้องการโดยใช้หลักง่ายๆ ต่อมาฉันลองคำนวณให้แม่นยำยิ่งขึ้น และพบว่าฉันอาจใช้เกินความสามารถไปเล็กน้อย เห็นได้ชัดว่า 6 กก./ซม. น่าจะเพียงพอสำหรับเซอร์โวตัวที่ 2 (จากฐาน) และของผมให้ 9-11 กก./ซม. สิ่งนี้ทำให้ฉันมีความปลอดภัยและมีโอกาสบรรทุกสัมภาระได้มากถึง 2 กก. (ซึ่งเป็นไปไม่ได้ แต่ฉันชอบที่สามารถทำได้ในทางเทคนิค) ฉันสามารถซื้อเซอร์โวหลายตัวได้ด้วย โดยลดแรงบิดลงในขณะที่เคลื่อนออกจากฐาน แต่การซื้อเซอร์โวที่เหมือนกันจากผู้ขายรายเดียวกันนั้นเป็นตัวเลือกที่ถูกที่สุด แหล่งจ่ายไฟ: Arduino ไม่เพียงพอสำหรับเซอร์โวอย่างแน่นอน เนื่องจากแต่ละ mg995 ดึงออกมา 350mA และไมโครเซอร์โว 9g ดึง 100mA รวมเป็น 350*4 +100 = 1500mA ดังนั้นฉันจึงกู้ที่ชาร์จ (6V 1.5A) และบัดกรีสายจัมเปอร์สองเส้นเข้ากับมัน (ถ้าคุณบางคนอาจต้องการคำแนะนำจริง ๆ แค่ถามในความคิดเห็นและฉันจะทำให้ดีที่สุดเพื่อสร้างทีละขั้นตอน คู่มือ)รายการวัสดุ:- โครงสร้าง- สกรู M5x7cm x5, สลักเกลียว m5 x15 (ฐาน)- สกรู M3x16mm x18*- สกรู M3x20mm x13*- สลักเกลียว M3 x40*- สกรู M3x8cm x3 - แคลมป์ (มิฉะนั้นจะตก)- 3 เดือย- Arduino (หรืออย่างอื่นที่จะควบคุม ต้องมีอย่างน้อย 5 PWM)- บางอย่างที่จะจ่ายไฟ 5-6V และอย่างน้อย 1.5A - จอยสติ๊กที่เหมือน ps2 3x- 4x TowerPro mg995 เซอร์โว- 1x TowerPro 9g microservo (สำหรับกริป))- สายจัมเปอร์จำนวนมาก - เขียงหั่นขนม*(ฉันใช้สลักเกลียวและสกรูเพื่อให้สามารถประกอบและถอดแยกชิ้นส่วนได้อย่างรวดเร็ว ไม่เช่นนั้น ให้เปลี่ยนเกือบทั้งหมดด้วยสกรูสำหรับงานไม้)

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

แนวคิดคือการควบคุมเซอร์โวทุกตัวด้วยหนึ่งในสองแกนของจอยสติ๊กแบบ ps2 จอยสติ๊กทุกตัวดูเหมือนจะมี “ค่าพัก” ที่แตกต่างกัน (ค่าระหว่าง 0-1023 เมื่อยังคงอยู่) สำหรับทั้งแกน y และ x นั่น เป็นปัญหา เนื่องจากความแตกต่างทั้งหมดแต่เล็ก (อันหนึ่งมีค่าศูนย์บน y ที่ 623) และฉันต้องการใช้ฟังก์ชันแผนที่เพื่อแปลงจาก 0-1023 เป็นองศา แต่ฟังก์ชันแผนที่คิดว่าค่าที่เหลือคือ 1023/2 ซึ่งนำให้เซอร์โวทุกตัวเคลื่อนที่ทันทีที่ฉันเปิด Arduino ไม่ดี ฉันจัดการเรื่องนี้ได้โดยค้นหาความแตกต่างระหว่างค่าที่อ่านและค่าที่เหลือแต่ละค่าด้วยตนเอง (ซึ่งฉันคำนวณแยกกันสำหรับจอยสติ๊กทุกตัว) จากนั้นไปที่ ทำให้โค้ดสั้นลงและฉลาดขึ้น ฉันทำให้เขาอ่านค่าที่เหลือในฟังก์ชันการตั้งค่าและบันทึกไว้ในตัวแปรบางตัว อัลกอริธึมใหม่อาศัยการแปลงการเพิ่มขึ้นเป็นองศา แต่ฉันต้องการองศาที่ต่ำมากสำหรับการเพิ่มของฉัน ดังนั้น ฉันต้องหารค่าคงที่: ฉันลองหลายค่า จนกระทั่งได้ 200 สุดท้าย (ฉันอาจเพิ่มโพเทนชิออมิเตอร์เพื่อเปลี่ยนค่านี้เป็นค่าที่ต้องการด้วยตนเอง) โค้ดที่เหลือนั้นค่อนข้างมาตรฐาน ฉันเดาว่า แม้ว่าการใส่การคำนวณการเพิ่มขึ้นในฟังก์ชันแยกต่างหากอาจจะดูสง่างามกว่า

ขั้นตอนที่ 3: อิเล็กทรอนิกส์:

อิเล็กทรอนิกส์
อิเล็กทรอนิกส์

การเดินสายไฟจะเหมือนกับที่แสดงในภาพหรือไฟล์ fritzing:servos ส่งสัญญาณไปยังหมุด: 5-6-9-10-11 และแกนจอยสติ๊กไปยังหมุดอะนาล็อก: A0-A1-A2-A3-A4 ปัญหาสำคัญที่ฉันพบ คือจอยสติ๊กจะต้องจัดหาโดย Arduino ไม่ใช่โดยเครื่องชาร์จที่ฉันใช้สำหรับเซอร์โว ไม่เช่นนั้นเซอร์โวจะเคลื่อนที่แบบสุ่มไปมาอย่างบ้าคลั่ง ฉันคิดว่าอาจเป็นเพราะถ้าฉันจัดหาที่ชาร์จให้กับ Arduino จะไม่สามารถบอกความแตกต่างที่อาจเกิดขึ้นได้อย่างแม่นยำเมื่อฉันย้ายพวกมัน แต่แล้วอีกครั้ง: ฉันยังใหม่กับอุปกรณ์อิเล็กทรอนิกส์ดังนั้นจึงเป็นเพียงการคาดเดา การเชื่อมต่อกราวด์ Arduino และกราวด์ของเครื่องชาร์จผ่านเขียงหั่นขนมช่วยป้องกันการเคลื่อนไหวแบบสุ่มและไม่คาดคิดด้วยเหตุผลที่คล้ายกันของการจ่ายจอยสติ๊กฉันคิดว่า

ขั้นตอนที่ 4: อยู่ระหว่างการปรับปรุง:

อยู่ระหว่างการปรับปรุง
อยู่ระหว่างการปรับปรุง

เนื่องจากจอยสติ๊กทุกตัวสามารถควบคุมเซอร์โวได้ 2 ตัว (1 ตัวต่อแกน) ฉันจึงต้องใช้เซอร์โว 3 ตัวเพื่อควบคุมทั้งแขน แต่โชคไม่ดีที่ฉันมีเพียง 2 นิ้วหัวแม่มือ ดังนั้นฉันคิดว่าแทนที่จะควบคุมเซอร์โวทุกตัว ฉันควบคุมได้เพียงตำแหน่ง xyz ของ กริปและเปิด-ปิดกริป รวมเป็น 4 แกน 2 จอยสติ๊ก และ 2 นิ้วหัวแม่มือ! ฉันพบว่าปัญหานั้นเป็นที่รู้จักกันดีในชื่อ Inverse Kinematics ฉันพบว่ามันทั้งหมดแต่ง่าย แนวคิดคือการเขียน (สมการไม่เชิงเส้น) เพื่อค้นหาสถานะของเอฟเฟกต์ทุกอัน (มุมสำหรับเซอร์โว) ที่กำหนดตำแหน่งสุดท้าย ฉันได้อัปโหลดกระดาษที่เขียนด้วยลายมือพร้อมสมการแล้ว และฉันกำลังพยายามหาโค้ดใหม่เพื่อใช้มัน มันไม่ควรยากเกินไป โดยพื้นฐานแล้ว ฉันต้องอ่านจอยสติ๊ก ใช้การอ่านเพื่อแก้ไขพิกัด xyz ของกริป จากนั้นให้สมการของฉัน คำนวณมุมเซอร์โวและเขียนมัน

ขั้นตอนที่ 5: การปรับปรุงในอนาคต:

ดังนั้น ฉันค่อนข้างพอใจกับผลลัพธ์ของมัน และเมื่อพิจารณาว่าฉันยังใหม่กับอุปกรณ์อิเล็กทรอนิกส์ที่ไม่ได้ทำอะไรเลย หรือตัวฉันเองเป็นชัยชนะครั้งใหญ่ อย่างที่ฉันพูดในตอนเริ่มต้น ความคิดใดๆ สำหรับการปรับปรุงในอนาคต ทั้งซอฟต์แวร์และ ฮาร์ดแวร์เป็นมากกว่ายินดีต้อนรับ! จนถึงตอนนี้ฉันคิดว่า:1. โพเทนชิออมิเตอร์เพื่อปรับเปลี่ยน "ความรู้สึก" ของจอยสติ๊ก2. รหัสใหม่เพื่อให้เขา "บันทึก" การเคลื่อนไหวบางอย่างและทำอีกครั้ง (อาจเร็วกว่าและสั้นกว่าที่มนุษย์ป้อน)3. อินพุตภาพ/ระยะทาง/เสียงบางประเภทและสามารถรับวัตถุโดยไม่ต้องใช้จอยสติ๊ก4 ความสามารถในการวาดรูปเรขาคณิต มีแนวคิดอื่นอีกไหม? โปรดแสดงความคิดเห็นพร้อมข้อเสนอแนะใด ๆ ขอบคุณ

แนะนำ: