
สารบัญ:
- ขั้นตอนที่ 1: ทฤษฎีเบื้องหลังโครงการ
- ขั้นตอนที่ 2: การออกแบบ PCB
- ขั้นตอนที่ 3: การสร้าง PCB
- ขั้นตอนที่ 4: การออกแบบแขน
- ขั้นตอนที่ 5: การพิมพ์ชิ้นส่วน
- ขั้นตอนที่ 6: นำทุกอย่างมารวมกัน
- ขั้นตอนที่ 7: การเขียนโปรแกรม Arduino
- ขั้นตอนที่ 8: การเขียนโปรแกรมใน Python
- ขั้นตอนที่ 9: รายการอะไหล่
- ขั้นตอนที่ 10: ความคิดสุดท้าย
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12



แขนกลที่ใช้กันอย่างแพร่หลายในอุตสาหกรรม ไม่ว่าจะเป็นงานประกอบ
การเชื่อมหรือแม้กระทั่งการเชื่อมประสานกับสถานีอวกาศนานาชาติ ISS ช่วยให้มนุษย์ทำงานหรือแทนที่มนุษย์โดยสิ้นเชิง แขนที่ฉันสร้างขึ้นนั้นเป็นตัวแทนของแขนหุ่นยนต์ที่มีขนาดเล็กกว่าที่ควรใช้สำหรับเคลื่อนย้ายวัตถุ มันถูกควบคุมโดย arduino pro mini ซึ่งมีไลบรารีในตัวสำหรับควบคุมเซอร์โวอยู่แล้ว เซอร์โวถูกควบคุมโดย PWM (Pulse Width Modulation) ซึ่งไม่ยากที่จะตั้งโปรแกรม แต่ไลบรารีนี้ทำให้ง่ายขึ้น ผู้ใช้สามารถควบคุมเซอร์โวเหล่านั้นได้ด้วยโพเทนชิโอมิเตอร์ที่ออกแบบมาเพื่อทำหน้าที่เป็นตัวแบ่งแรงดันไฟ หรือจากโปรแกรมบนพีซีที่ใช้ตัวเลื่อน 4 ตัวในการควบคุมเซอร์โวมอเตอร์
สำหรับโปรเจ็กต์นี้ ฉันต้องออกแบบ PCB แบบกำหนดเองและสร้างมันขึ้นมา สร้างโมเดล 3 มิติของ arm และเขียนโค้ดที่ควบคุมทั้งหมด ยิ่งไปกว่านั้น ฉันยังเขียนโปรแกรมเพิ่มเติมในไพ ธ อนที่ส่งสัญญาณไปยัง Arduino ซึ่งจัดการเพื่อถอดรหัสสัญญาณนั้นและย้ายเซอร์โวไปยังตำแหน่งที่ผู้ใช้ตั้งค่าไว้
ขั้นตอนที่ 1: ทฤษฎีเบื้องหลังโครงการ

Arduino นั้นยอดเยี่ยมในลักษณะที่มีไลบรารี่ใช้งานฟรี สำหรับโปรเจ็กต์นี้ ฉันใช้ไลบรารี่ Servo.h ที่ทำให้การควบคุมเซอร์โวง่ายขึ้นมาก
เซอร์โวมอเตอร์ควบคุมโดย PWM -Pulse Width Modulation- ซึ่งหมายความว่าในการควบคุมเซอร์โว คุณต้องสร้างพัลส์แรงดันไฟสั้น เซอร์โวสามารถถอดรหัสความยาวของสัญญาณนี้และหมุนไปยังตำแหน่งที่กำหนด และนี่คือที่ที่ฉันใช้ห้องสมุดที่กล่าวถึงแล้ว ฉันไม่ต้องคำนวณความยาวของสัญญาณด้วยตัวเอง แต่ฉันใช้ฟังก์ชันของไลบรารีซึ่งฉันแค่ส่งพารามิเตอร์เป็นองศาและมันสร้างสัญญาณ
สำหรับการควบคุมเซอร์โว ฉันใช้โพเทนชิโอมิเตอร์ที่ทำหน้าที่เป็นตัวแบ่งแรงดันไฟฟ้า บอร์ด Arduino มีตัวแปลงอนาล็อก/ดิจิตอลหลายตัวที่ฉันใช้สำหรับโครงการ โดยพื้นฐานแล้ว Arduino กำลังตรวจสอบแรงดันไฟบนพินกลางของโพเทนชิออมิเตอร์ และหากหมุนไปที่แรงดันด้านใดด้านหนึ่งจะเป็น 0 โวลต์ (ค่า = 0) และอีกด้านหนึ่งคือ 5 โวลต์ (ค่า = 1023) ค่านี้จะถูกปรับขนาดจากช่วง 0 - 1023 เป็น 0 - 180 จากนั้นจึงส่งผ่านไปยังฟังก์ชันที่กล่าวถึงแล้ว
อีกหัวข้อหนึ่งคือการสื่อสารแบบอนุกรมกับ Arduino ที่ฉันจะกล่าวถึงในเวลาสั้นๆ โดยทั่วไปโปรแกรมที่เขียนบนพีซีจะส่งค่าที่เลือกโดยผู้ใช้ Arduino สามารถถอดรหัสและย้ายเซอร์โวไปยังตำแหน่งที่กำหนด
ขั้นตอนที่ 2: การออกแบบ PCB



ฉันออกแบบ PCB 2 อัน - อันหนึ่งสำหรับตัวควบคุมหลักที่ Arduino และพินสำหรับเซอร์โวและอันที่สองคือโพเทนชิโอมิเตอร์ เหตุผลสำหรับ 2 PCBs คือ ฉันต้องการควบคุมแขนหุ่นยนต์จากระยะที่ปลอดภัย ทั้งสองวงจรเชื่อมต่อด้วยสายเคเบิลที่มีความยาวที่กำหนด - ในกรณีของฉัน 80 ซม.
สำหรับแหล่งพลังงานฉันเลือกอะแดปเตอร์ภายนอกเพราะเซอร์โวที่ฉันใช้ใช้พลังงานมากกว่าที่ Arduino สามารถจ่ายได้ อย่างที่คุณเห็นมีตัวเก็บประจุบางตัวที่ฉันยังไม่ได้กล่าวถึง เป็นตัวเก็บประจุที่ใช้สำหรับการกรอง อย่างที่คุณทราบตอนนี้ เซอร์โวมอเตอร์ถูกควบคุมโดยแรงกระตุ้นสั้นๆ แรงกระตุ้นเหล่านี้สามารถทำให้แรงดันไฟของแหล่งจ่ายลดลงและโพเทนชิโอมิเตอร์ที่มีช่วง 0-5 โวลต์ก่อนหน้านี้มีช่วงที่เล็กกว่า นั่นหมายความว่าแรงดันไฟฟ้าที่ขากลางเปลี่ยนไปและ Arduino จะได้รับค่านี้และเปลี่ยนตำแหน่งที่เป็นเซอร์โวมอเตอร์ สิ่งนี้สามารถคงอยู่ตลอดไปและทำให้เกิดการสั่นที่ไม่ต้องการซึ่งตัวเก็บประจุบางตัวขนานกับแหล่งจ่ายไฟสามารถกำจัดได้
ขั้นตอนที่ 3: การสร้าง PCB



สำหรับการทำ PCB ฉันแนะนำให้คุณอ่านสิ่งนี้
ฉันใช้วิธี Iron on Glossy paper และได้ผลดี
จากนั้นฉันก็บัดกรีชิ้นส่วนบน PCB คุณจะเห็นว่าฉันใช้ซ็อกเก็ต Arduino ในกรณีที่ฉันต้องการในอนาคต
ขั้นตอนที่ 4: การออกแบบแขน



นี่ไม่ใช่ส่วนที่ยากที่สุดในการทำโครงการนี้
การตั้งค่าทั้งหมดทำจาก 8 ส่วนที่ 4 ไม่ได้เคลื่อนที่ชิ้นส่วน - กล่องสำหรับโพเทนชิโอมิเตอร์และฐานที่ Arduino ตั้งอยู่ - และอีกสี่ส่วนคือแขนตัวเอง ฉันจะไม่ลงรายละเอียดมาก ยกเว้นการออกแบบนั้นค่อนข้างใช้งานง่ายและเรียบง่าย ได้รับการออกแบบมาเพื่อให้พอดีกับ PCB และเซอร์โวแบบกำหนดเองของฉัน ซึ่งฉันจะรวมไว้ในรายการชิ้นส่วน
ขั้นตอนที่ 5: การพิมพ์ชิ้นส่วน



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




ในขั้นตอนนี้ตามที่หัวเรื่องบอกว่าฉันรวมทุกอย่างเข้าด้วยกัน
ตอนแรกฉันบัดกรีสายบนโพเทนชิโอมิเตอร์แล้วต่อสายเหล่านั้นบน PCB โพเทนชิโอมิเตอร์พอดีกับรูและฉันติดกาว PCB บนเสาที่พิมพ์ไว้ที่ด้านล่างของกล่อง คุณสามารถเจาะรูบนกระดานและเข้าไปในกล่องได้ แต่ฉันพบว่าการติดกาวนั้นมากเกินพอ จากนั้นฉันก็ปิดกล่องทั้งสองส่วนแล้วขันให้แน่นด้วยสกรู 4 ตัวที่พอดีกับรูที่ฉันออกแบบไว้
ในขั้นตอนต่อไปฉันทำสายแพแบบแบนเพื่อเชื่อมต่อทั้งสองบอร์ด
ในกล่องหลักฉันบัดกรีสายไฟจากพิน VCC ของตัวเชื่อมต่อเพื่อสลับจากนั้นไปที่ Vcc ของบอร์ดและจาก GND ของบอร์ดไปยัง GND ของตัวเชื่อมต่อ จากนั้นฉันก็ติดกาวขั้วต่อให้เข้าที่และติดบนเสา ขั้วต่อพอดีกับรูจึงไม่จำเป็นต้องใช้กาวร้อน
จากนั้นใช้สกรูยึดเซอร์โวด้านล่างที่ด้านล่างของกล่อง
หลังจากนั้นฉันวางส่วนบนของกล่องไว้ที่ส่วนล่างและเหมือนกับกล่องโพเทนชิออมิเตอร์ที่ฉันยึดด้วยสกรู 4 ตัว
ส่วนถัดไปค่อนข้างยุ่งยากเล็กน้อย แต่ฉันสามารถใส่แขนส่วนที่เหลือร่วมกับน็อตและแผ่นรองต่างๆ ได้ และมันก็ไม่ได้แน่นอย่างที่คิดเพราะฉันออกแบบความคลาดเคลื่อนระหว่างชิ้นส่วนต่างๆ ดังนั้นจึงง่ายต่อการใช้งาน
และในขั้นสุดท้าย ฉันติดเทปไว้ที่ด้านล่างของกล่อง เพราะไม่เช่นนั้น มันอาจจะเลื่อนได้
ขั้นตอนที่ 7: การเขียนโปรแกรม Arduino



ฉันได้กล่าวไปแล้วว่าโปรแกรมทำงานอย่างไรในทางทฤษฎีที่อยู่เบื้องหลังโปรเจ็กต์ แต่ฉันจะแยกย่อยให้มากกว่านี้
ดังนั้นในตอนเริ่มต้น เราต้องกำหนดตัวแปรบางตัว ส่วนใหญ่จะถูกคัดลอก 4 ครั้งเพราะเรามี 4 เซอร์โวและในความคิดของฉันมันไม่จำเป็นที่จะสร้างตรรกะที่ซับซ้อนมากขึ้นเพียงเพื่อทำให้โปรแกรมสั้นลงเล็กน้อย
ถัดไปมีการตั้งค่าเป็นโมฆะซึ่งมีการกำหนดพินของเซอร์โว
จากนั้นมี void loop - ส่วนหนึ่งของโปรแกรมที่วนซ้ำไม่รู้จบ ในส่วนนี้ โปรแกรมจะนำค่าจากโพเทนชิออมิเตอร์มาวัดและนำเข้าเอาต์พุต แต่มีปัญหาอย่างหนึ่งที่ค่าจากโพเทนชิออมิเตอร์กระโดดค่อนข้างน้อย ดังนั้นฉันจึงจำเป็นต้องเพิ่มตัวกรองที่ทำให้ค่าเฉลี่ยของ 5 ค่าสุดท้ายแล้วจึงแสดงผล สิ่งนี้จะป้องกันการโยกเยกที่ไม่ต้องการ
ส่วนสุดท้ายของโปรแกรมอ่านข้อมูลจากพอร์ตอนุกรมและตัดสินใจว่าจะทำอย่างไรตามข้อมูลที่ส่ง
เพื่อให้เข้าใจโค้ดอย่างถ่องแท้ ฉันแนะนำให้คุณไปที่เว็บไซต์ทางการของ Arduino
ขั้นตอนที่ 8: การเขียนโปรแกรมใน Python



ส่วนนี้ของโครงการนี้ไม่จำเป็น แต่ฉันคิดว่ามันให้คุณค่ากับโครงการนี้มากขึ้นเท่านั้น
Python มีไลบรารี่มากมายที่ใช้งานได้ฟรี แต่ในโปรเจ็กต์นี้ ฉันใช้เฉพาะ tkinter และซีเรียล Tkinter ใช้สำหรับ GUI (Graphical User Interface) และซีเรียลตามชื่อที่ใช้สำหรับการสื่อสารแบบอนุกรม
รหัสนี้สร้าง GUI พร้อมตัวเลื่อน 4 ตัวที่มีค่าต่ำสุด 0 และสูงสุด 180 อาจเป็นคำใบ้สำหรับคุณว่าเป็นองศาและตัวเลื่อนแต่ละตัวถูกตั้งโปรแกรมให้ควบคุมเซอร์โวตัวเดียว โปรแกรมนี้ค่อนข้างง่าย - ใช้ค่าและส่งไปยัง Arduino แต่วิธีการส่งนั้นน่าสนใจ หากคุณเลือกที่จะเปลี่ยนค่าของเซอร์โวตัวแรกเป็น 123 องศา มันจะส่งไปยังค่า Arduino 1123 หมายเลขแรกของแต่ละหมายเลขที่ส่งคือตัวบอกว่าเซอร์โวตัวใดกำลังจะถูกควบคุม Arduino มีโค้ดที่สามารถถอดรหัสสิ่งนี้และย้ายเซอร์โวที่ถูกต้องได้
ขั้นตอนที่ 9: รายการอะไหล่

- Arduino Pro Mini 1 ชิ้น
- เซอร์โว FS5106B 1 ชิ้น
- เซอร์โว Futaba S3003 2 ชิ้น
- หัวเข็ม 2x5 1 ชิ้น
- หัวเข็ม 1x3 6 ชิ้น
- ตัวเก็บประจุ 220uF 3 ชิ้น
- ไมโครเซอร์โว FS90 1 ชิ้น
- ขั้วต่อ AWP-10 2 ชิ้น
- คอนเนคเตอร์ FC681492 1 ชิ้น
- สวิตซ์ P-B100G1 1 ชิ้น
- ลูกบ๊อกซ์ 2x14 1 ชิ้น
- TTL-232R-5v - คอนเวอร์เตอร์ 1 ชิ้น
- โพเทนชิโอมิเตอร์ B200K 4 ชิ้น
- และสกรู แผ่นรอง และน็อตอีกมากมาย
ขั้นตอนที่ 10: ความคิดสุดท้าย

ขอบคุณสำหรับการอ่านนี้และฉันหวังว่าอย่างน้อยฉันมีแรงบันดาลใจคุณ นี่เป็นโปรเจ็กต์ที่ใหญ่กว่าโครงการแรกของฉันซึ่งฉันทำเองทั้งหมดโดยไม่ต้องคัดลอกเนื้อหาจากอินเทอร์เน็ตและโพสต์คำสั่งแรก ฉันรู้ว่าแขนสามารถอัพเกรดได้ แต่ตอนนี้ฉันพอใจกับมันแล้ว ทุกส่วนและซอร์สโค้ดนั้นฟรี คุณสามารถใช้มันและเปลี่ยนแปลงได้ตามที่คุณต้องการ หากคุณมีคำถามใด ๆ อย่าลังเลที่จะถามในส่วนความคิดเห็น คุณยังสามารถดูวิดีโอได้ พวกมันไม่ได้มีคุณภาพดี แต่พวกมันแสดงฟังก์ชันการทำงานของโปรเจ็กต์
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน

ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)

การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน

DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)

RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)

วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ