
สารบัญ:
- ขั้นตอนที่ 1: ไลบรารี StepDriver
- ขั้นตอนที่ 2: ตัวแปรส่วนกลาง
- ขั้นตอนที่ 3: ฟังก์ชัน - การตั้งค่าพินไดรเวอร์
- ขั้นตอนที่ 4: ฟังก์ชัน - ฟังก์ชันพื้นฐานของไดรเวอร์
- ขั้นตอนที่ 5: ฟังก์ชัน - การตั้งค่าขั้นตอนของมอเตอร์
- ขั้นตอนที่ 6: ฟังก์ชัน - การตั้งค่าโหมดขั้นตอนของมอเตอร์
- ขั้นตอนที่ 7: ฟังก์ชัน - การตั้งค่าลิมิตสวิตช์
- ขั้นตอนที่ 8: ฟังก์ชัน - การอ่านลิมิตสวิตช์
- ขั้นตอนที่ 9: ฟังก์ชัน - ตั้งค่าการเคลื่อนไหว
- ขั้นตอนที่ 10: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว
- ขั้นตอนที่ 11: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - ตัวแปร
- ขั้นตอนที่ 12: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - การเร่งความเร็ว
- ขั้นตอนที่ 13: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - ความเร็วต่อเนื่อง
- ขั้นตอนที่ 14: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - การชะลอตัว
- ขั้นตอนที่ 15: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - ความเร็วต่อเนื่อง
- ขั้นตอนที่ 16: ฟังก์ชัน - ฟังก์ชันย้าย - ย้าย Turns
- ขั้นตอนที่ 17: แผนภูมิแบบเคลื่อนไหว - ตำแหน่ง Velocity
- ขั้นตอนที่ 18: แผนภูมิแบบเคลื่อนไหว - ตำแหน่งเทียบกับ ตำแหน่ง
- ขั้นตอนที่ 19: แผนภูมิแบบเคลื่อนไหว - ความเร็วเทียบกับ ช่วงเวลา
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12



วันนี้ผมจะนำเสนอไลบรารี่สำหรับไดรเวอร์มอเตอร์แบบฟูลสเต็ปที่มีลิมิตสวิตช์ และการเคลื่อนที่ของเครื่องยนต์พร้อมอัตราเร่งและไมโครสเต็ป Lib นี้ซึ่งทำงานได้ทั้งกับ Arduino Uno และ Arduino Mega ช่วยให้คุณย้ายเอ็นจิ้นไม่เพียงแค่ตามจำนวนก้าวเท่านั้น แต่ยังรวมถึงหน่วยมิลลิเมตรด้วย และมันก็ค่อนข้างแม่นยำเช่นกัน
คุณลักษณะที่สำคัญของไลบรารีนี้คือช่วยให้คุณสร้างเครื่อง CNC ของคุณเองซึ่งไม่จำเป็นต้องเป็นเพียง X, Y แต่ยังรวมถึงสวิตช์ส่วนด้วยเช่นเนื่องจากไม่ใช่ GRBL ที่พร้อมใช้งาน แต่เป็นการเขียนโปรแกรมที่ ช่วยให้คุณสร้างเครื่องจักรในอุดมคติสำหรับคุณ
อย่างไรก็ตาม ข้อความต่อไปนี้เป็นรายละเอียดที่สำคัญ! วิดีโอนี้สำหรับผู้ที่คุ้นเคยกับการเขียนโปรแกรมอยู่แล้วเท่านั้น หากคุณไม่คุ้นเคยกับการเขียนโปรแกรม Arduino คุณควรดูวิดีโอแนะนำอื่นๆ ในช่องของฉันก่อน เนื่องจากฉันกำลังพูดถึงหัวข้อขั้นสูงในวิดีโอนี้ และอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับ Lib ที่ใช้ในวิดีโอ: Step Motor with Acceleration และ End of Stroke
ขั้นตอนที่ 1: ไลบรารี StepDriver
ไลบรารีนี้ครอบคลุมไดร์เวอร์ทั่วไปสามประเภทในตลาด: A4988, DRV8825 และ TB6600 โดยกำหนดค่าพินของไดรเวอร์ ทำให้สามารถรีเซ็ตและจัดวางในโหมดสลีปได้ เช่นเดียวกับการเปิดใช้งานและปิดใช้งานเอาต์พุตของมอเตอร์ที่ทำงานบนพิน Enable นอกจากนี้ยังตั้งค่าอินพุตของพินไมโครสเต็ปของไดรเวอร์ และจำกัดสวิตช์และระดับการเปิดใช้งาน (สูงหรือต่ำ) นอกจากนี้ยังมีรหัสการเคลื่อนที่ของมอเตอร์ที่มีการเร่งความเร็วอย่างต่อเนื่องในหน่วย mm/s² ความเร็วสูงสุดเป็น mm/s และความเร็วต่ำสุดเป็น mm/s
สำหรับผู้ที่ดูส่วนที่ 1 และ 2 ของวิดีโอ Step Motor with Acceleration และ End of Stroke ให้ดาวน์โหลดไลบรารี่ใหม่ที่มีให้ในวันนี้ เพราะฉันได้ทำการเปลี่ยนแปลงบางอย่างในไฟล์แรกนั้นเพื่ออำนวยความสะดวกในการใช้งาน
ขั้นตอนที่ 2: ตัวแปรส่วนกลาง
ฉันแสดงให้เห็นอย่างชัดเจนว่าตัวแปรส่วนกลางแต่ละตัวมีไว้เพื่ออะไร
ขั้นตอนที่ 3: ฟังก์ชัน - การตั้งค่าพินไดรเวอร์

ที่นี่ ฉันอธิบายวิธีการบางอย่าง
ฉันตั้งค่า Pinout และพิน Arduino เป็นเอาต์พุต
ขั้นตอนที่ 4: ฟังก์ชัน - ฟังก์ชันพื้นฐานของไดรเวอร์

ในส่วนนี้ เราทำงานกับการกำหนดค่าไดรเวอร์และฟังก์ชันพื้นฐาน
ขั้นตอนที่ 5: ฟังก์ชัน - การตั้งค่าขั้นตอนของมอเตอร์


ในโค้ดขั้นตอนนี้ เรากำหนดค่าจำนวนขั้นตอนต่อมิลลิเมตรที่มอเตอร์ต้องดำเนินการ
ขั้นตอนที่ 6: ฟังก์ชัน - การตั้งค่าโหมดขั้นตอนของมอเตอร์



ตารางนี้แสดงการตั้งค่าสำหรับโหมดสเต็ปมอเตอร์ นี่คือตัวอย่างบางส่วน.
ขั้นตอนที่ 7: ฟังก์ชัน - การตั้งค่าลิมิตสวิตช์

ที่นี่ฉันต้องอ่านค่าทั้งหมดและบูลีน จำเป็นต้องตั้งค่าว่าปุ่มที่ใช้งานจะขึ้นหรือลง ในขณะที่ตั้งค่า endpin ขีดจำกัดสูงสุดและต่ำสุด
ขั้นตอนที่ 8: ฟังก์ชัน - การอ่านลิมิตสวิตช์



ส่วนนี้แตกต่างจากส่วนใน Lib ที่ฉันเผยแพร่เมื่อสัปดาห์ที่แล้ว ทำไมฉันถึงเปลี่ยนมัน? ฉันสร้าง eRead เพื่อแทนที่คนอื่น ที่นี่ eRead จะอ่าน LVL, digitalRead (พิน) และจะคืนค่า TRUE ทั้งหมดนี้จะต้องดำเนินการในระดับสูง การทำงานต่อไปนี้กับคีย์ที่ใช้งานอยู่จะอยู่ที่ระดับต่ำ ฉันจะใช้ที่นี่เพื่อแสดงตาราง "ความจริง" ให้คุณเห็น
ในภาพโค้ด ฉันวางไดอะแกรมที่จะช่วยในการทำความเข้าใจว่า ในส่วนนี้ของซอร์สโค้ด ฉันกำลังมุ่งสู่ Ascending และยังไม่ได้กดปุ่มสิ้นสุดหลักสูตร
ในภาพนี้ โค้ดระบบปฏิบัติการ bool DRV8825 ฉันแสดงให้เห็นว่าเครื่องยนต์ยังคงเคลื่อนที่ไปในทิศทางที่เพิ่มขึ้น อย่างไรก็ตาม สวิตช์จำกัดสูงสุดเปิดใช้งาน กลไกจึงต้องหยุดการเคลื่อนไหว
สุดท้าย ผมแสดงการเคลื่อนไหวเหมือนกัน แต่ในทิศทางตรงกันข้าม
ที่นี่คุณได้เปิดใช้งานสวิตช์สิ้นสุดหลักสูตรแล้ว
ขั้นตอนที่ 9: ฟังก์ชัน - ตั้งค่าการเคลื่อนไหว

ยูทิลิตี้หลักของวิธี motionConfig คือการแปลงมิลลิเมตรต่อวินาที (การวัดที่ใช้ในเครื่อง CNC) เป็นขั้นตอน เพื่อให้ตรงตามตัวควบคุมของสเต็ปเปอร์มอเตอร์ ดังนั้น ในส่วนนี้ ฉันจึงยกตัวอย่างตัวแปรเพื่อให้เข้าใจขั้นตอน ไม่ใช่มิลลิเมตร
ขั้นตอนที่ 10: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว

ในขั้นตอนนี้ เราปฏิบัติต่อคำสั่งที่ย้ายขั้นตอนในทิศทางที่ต้องการในช่วงเวลาเป็นไมโครวินาที เรายังตั้งค่าพินทิศทางของคนขับ เวลาหน่วง และทิศทางของลิมิตสวิตช์
ขั้นตอนที่ 11: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - ตัวแปร

ในส่วนนี้ เรากำหนดค่าตัวแปรทั้งหมดที่เกี่ยวข้องกับช่วงเวลาของความเร็วสูงสุดและต่ำสุด ระยะทางของวิถี และขั้นตอนที่จำเป็นในการขัดจังหวะวิถี และอื่นๆ
ขั้นตอนที่ 12: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - การเร่งความเร็ว


ในที่นี้ ฉันขอนำเสนอรายละเอียดบางอย่างเกี่ยวกับวิธีที่เรามาถึงข้อมูลอัตราเร่ง ซึ่งคำนวณจากสมการของ Torricelli เนื่องจากจะคำนึงถึงช่องว่างในการเร่งความเร็ว ไม่ใช่เวลา แต่สิ่งสำคัญคือต้องเข้าใจว่าสมการทั้งหมดนี้เป็นเพียงโค้ดบรรทัดเดียวเท่านั้น
เราระบุรูปราวสำหรับออกกำลังกายในภาพด้านบน เนื่องจาก RPM เริ่มต้นไม่ดีสำหรับสเต็ปเปอร์มอเตอร์ส่วนใหญ่ สิ่งเดียวกันนี้เกิดขึ้นกับการชะลอตัว ด้วยเหตุนี้ เราจึงเห็นภาพสี่เหลี่ยมคางหมูในช่วงเวลาระหว่างการเร่งความเร็วและการชะลอตัว
ขั้นตอนที่ 13: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - ความเร็วต่อเนื่อง


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


เรามีสมการอื่น คราวนี้มีค่าความเร่งติดลบ นอกจากนี้ยังแสดงเป็นบรรทัดโค้ด ซึ่งแสดงในรูปสี่เหลี่ยมผืนผ้าที่ชื่อ Deceleration ในภาพด้านล่าง
ขั้นตอนที่ 15: ฟังก์ชัน - ฟังก์ชันการเคลื่อนไหว - ความเร็วต่อเนื่อง


เรากลับไปที่ความเร็วต่อเนื่องเพื่อทำงานในครึ่งหลังของวิถีดังที่แสดงด้านล่าง
ขั้นตอนที่ 16: ฟังก์ชัน - ฟังก์ชันย้าย - ย้าย Turns

ในส่วนนี้ เราเคลื่อนเครื่องยนต์ตามจำนวนรอบที่กำหนดในทิศทางที่ต้องการ โดยแปลงจำนวนรอบเป็นมิลลิเมตร สุดท้าย เราย้ายมอเตอร์ไปในทิศทางที่ร้องขอ
ขั้นตอนที่ 17: แผนภูมิแบบเคลื่อนไหว - ตำแหน่ง Velocity

ในกราฟนี้ ผมมีข้อมูลที่ดึงมาจากสมการที่เราใช้ในส่วนของ Acceleration ฉันเอาค่าและเล่นบนอนุกรม Arduino และฉันไปจากสิ่งนี้เป็น Excel ซึ่งส่งผลให้ตารางนี้ ตารางนี้แสดงความคืบหน้าของขั้นตอน
ขั้นตอนที่ 18: แผนภูมิแบบเคลื่อนไหว - ตำแหน่งเทียบกับ ตำแหน่ง

ในที่นี้ เราใช้ตำแหน่งเป็นขั้นและความเร็วแล้วแปลงเป็นคาบเป็นไมโครวินาที เราสังเกตในขั้นตอนนี้ว่าคาบเป็นสัดส่วนผกผันกับความเร็ว
ขั้นตอนที่ 19: แผนภูมิแบบเคลื่อนไหว - ความเร็วเทียบกับ ช่วงเวลา

สุดท้าย เรามีความเร็วเป็นฟังก์ชันของทันที และด้วยเหตุนี้ เรามีเส้นตรง เนื่องจากเป็นความเร็วเป็นฟังก์ชันของเวลา
แนะนำ:
Raspberry Pi - MPL3115A2 Precision Altimeter Sensor Python Tutorial: 4 ขั้นตอน

Raspberry Pi - MPL3115A2 Precision Altimeter Sensor Python Tutorial: MPL3115A2 ใช้เซ็นเซอร์ความดัน MEMS พร้อมอินเทอร์เฟซ I2C เพื่อให้ข้อมูลความดัน/ระดับความสูงและอุณหภูมิที่แม่นยำ เอาต์พุตเซ็นเซอร์ถูกแปลงเป็นดิจิทัลด้วย ADC 24 บิตความละเอียดสูง การประมวลผลภายในลบงานค่าตอบแทนออกจาก
Raspberry Pi A1332 Precision Hall - Effect Angle Sensor Java บทช่วยสอน: 4 ขั้นตอน

Raspberry Pi A1332 Precision Hall - เซ็นเซอร์มุมเอฟเฟกต์ บทช่วยสอน Java: A1332 เป็นเซ็นเซอร์ตำแหน่งมุมแม่เหล็กที่ตั้งโปรแกรมได้ความละเอียดสูง 360 °แบบไม่ต้องสัมผัส ออกแบบมาสำหรับระบบดิจิทัลโดยใช้อินเทอร์เฟซ I2C สร้างขึ้นจากเทคโนโลยี Circular Vertical Hall (CVH) และสัญญาณไมโครโปรเซสเซอร์ที่ตั้งโปรแกรมได้
Raspberry Pi - MPL3115A2 Precision Altimeter Sensor Java Tutorial: 4 ขั้นตอน

Raspberry Pi - MPL3115A2 Precision Altimeter Sensor Java Tutorial: MPL3115A2 ใช้เซ็นเซอร์ความดัน MEMS พร้อมอินเทอร์เฟซ I2C เพื่อให้ข้อมูลความดัน/ระดับความสูงและอุณหภูมิที่แม่นยำ เอาต์พุตเซ็นเซอร์ถูกแปลงเป็นดิจิทัลด้วย ADC 24 บิตความละเอียดสูง การประมวลผลภายในลบงานค่าตอบแทนออกจาก
Mad Lib ด้วย Python: 10 ขั้นตอน

Mad Lib ด้วย Python: การสร้างโปรแกรม Mad Libs ใน pythonสิ่งที่คุณต้องการ:1. คอมพิวเตอร์ Windows หรือ Mac2. การเชื่อมต่ออินเทอร์เน็ตคุณจะรู้อะไรในตอนท้าย:1. สตริง2. ตัวแปร2. อินพุต & ฟังก์ชั่นการพิมพ์
3x3x3 LED Cube พร้อม Arduino Lib: 4 ขั้นตอน (พร้อมรูปภาพ)

3x3x3 LED Cube พร้อม Arduino Lib: มีคำแนะนำอื่น ๆ เกี่ยวกับการสร้างลูกบาศก์ LED ซึ่งแตกต่างกันด้วยเหตุผลหลายประการ: 1. สร้างขึ้นด้วยส่วนประกอบนอกชั้นวางจำนวนน้อยและเชื่อมต่อกับ Arduino โดยตรง 2. ไดอะแกรมวงจรที่ชัดเจนและง่ายต่อการทำซ้ำคือปร