การเลือก Step Motor Driver
Post id: 44
Date: 26/10/2022
Step motor driver หรือตัวขับสเต็ปมอเตอร์ หรือจะเรียกทับศัพท์ว่าสเต็ปมอเตอร์ไดร์ฟเวอร์เลยก็ได้ ในท้องตลาดมีอยู่หลายชนิด หลายยี่ห้อ หลายรุ่น คำถามคือ แล้วเราควรจะเลือกรุ่นไหนดีละ?
วิธีการเลือก step motor driver
- ดูว่าตัวขับนั้นรองรับแรงดันของสเต็ปมอเตอร์ตัวนั้นรึเปล่า เช่น ถ้าเราใช้สเต็ปมอเตอร์ขนาด 24V แต่ถ้าขับ ขับได้แค่ 16V เราก็ใช้ตัวขับนี้ไม่ได้ แต่ตัวขับส่วนมากจะขับได้เป็นช่วงแรงดัน เช่น 16V — 35V ถ้าเป็นแบบนี้ก็ถือว่าใช้ได้เช่นกัน
- ดูที่สเต็ปมอเตอร์ว่ากินกระแสน้อยสุดเท่าไร มากสุดเท่าไร ถ้าตัวขับจ่ายกระแสไม่ถึง ก็ขับไม่ได้นะครับ
จริงก็ดูแค่นี้แหละครับ แต่ในโลกความเป็นจริง มันจะต่างจากทฤษฏีนิดหน่อยนะ
ตัวอย่างเช่น
สมมุติว่าสเต็ปมอเตอร์ของเราใช้แรงดัน 24V กินกระแสน้อยสุดคือ 1–5 แอมป์ แล้วถ้าผมอยากใช้ตัวขับรุ่น DRV8825 มาขับสเต็ปมอเตอร์ตัวนี้ ทุกคนคิดว่ามันจะขับได้ไหมครับ
ถ้ายังไม่แน่ใจ งั้นเราลองมาดูสเปคของ DRV8825 กันนะ
- แรงดันที่รองรับ 8.2–45V
เงื่อนไขแรก ผ่านครับ เพราะเราจะเอามาใช้ขับมอเตอร์ 24V ซึ่งอยู่ในที่ตัวขับตัวนี้รองรับ - กระแสที่รองรับสูงสุดคือ 2.5 แอมป์
เงื่อนไขที่สอง ก็ผ่านครับ เพราะกระแสน้อยสุดที่สเต็ปมอเตอร์ของเราต้องการคือ 1 แอมป์ ถ้าเราปรับให้รองรับกระแสได้สูงสุด 2.5 แอมป์ มันก็สามารถขับสเต็ปมอเตอร์ของเราได้สบายเลย
ถ้าอย่างนั้น เราก็สามารถใช้ตัวขับตัวนี้กับสเต็ปมอเตอร์ของเราได้ใช่ไหม?
คำตอบคือ…ก็ได้แหละครับ แต่ผมไม่แนะนำ
เพราะอะไรล่ะ…?
มันก็จริงอยู่ที่ว่าเราสามารถปรับกระแสสูงสุดได้ ถ้าเราปรับมันไม่ให้เกิน 2.5 แอมป์ มันก็คงไม่พังหรอก แต่ปัญหาคือ จะปรับยังไงล่ะ?
วิธีการปรับกระแสของ DRV8825 คือให้หมุน R ปรับค่าได้ ที่อยู่มุมบนซ้ายของรูปครับ โดยที่กระแสสูงสุดคำนวณจาก
Current_Limit = Vref * 2
โดยที่ Vref ให้วัดจาก R ปรับค่าได้ตัวนี้ เทียบกับ GND ฟังดูก็ไม่มีปัญหาอะไรใช่ไหมละ แต่จริงๆ แล้วปัญหามันอยู่ตรงนี้แหละ
เพราะมันเป็น R ปรับค่าได้ มันจึงสามารถปรับ Vref ได้ละเอียดมาก และเราอาจจะปรับมันเกินก็ได้ เช่น ถ้าเราบังเอิญปรับ Vref ไปที่ 1.5V ก็จะได้ว่า
Current_Limit = Vref * 2
Current_Limit = 1.5 * 2 = 3
แต่ตัวบอร์ด DRV8825 รองรับได้สูงสุดเท่าไรนะ? 2.5 แอมป์ใช่ไหม แล้วอะไรจะเกิดขึ้น?
คำตอบคือ บอร์ดไหม้ ยังไงละครับ
ดังนั้นมันสามารถใช้ได้ก็จริง แต่มันใช้ยาก เพราะต้องคอยปรับ R ให้พอดีเสมอ ซึ่งเราต้องหามิเตอร์มาวัด Vref ตอนเราปรับค่า R ด้วย ทำให้มันใช้งานได้ยุ่งยาก
ดังนั้นเราควรเลือกตัวขับที่ผ่านเงื่อนไขทั้ง 2 ข้อ และปรับ Current Limit ได้ง่าย
ตัวอย่างเช่น ตัวขับรุ่น TB6560 (ในรูปด้านบนสุด) รุ่นนี้เราสามารถปรับ Current Limit ได้โดยใช้สวิตช์ที่อยู่บนตัวบอร์ดได้เลย ดังนั้นต่อให้เราไม่มีมัลติมิเตอร์เราก็สามารถปรับค่ากระแสสูงสุดได้ง่ายๆ
ถึงแม้ว่ากระแสที่ได้จะไม่ใช่ค่าแบบละเอียด แต่ก็เป็นค่าที่แน่นอนเป๊ะๆ ทำให้เราไม่ต้องห่วงเรื่องกระแสไม่พอ หรือกระแสเกิน
ปัญหาต่างๆ เกี่ยวกับ Step Motor
- สเต็ปมอเตอร์ไม่หมุน
สาเหตุ
- ตัวขับพังแล้ว
- แรงดันไม่พอ - สเต็ปมอเตอร์ไม่หมุน และส่งเสียงแหลมออกมา
สาเหตุ
- ตัวขับจ่ายกระแสไม่พอ ให้ไปเพิ่ม Max Current Limit ที่ตัวขับ - สเต็ปมอเตอร์หมุนทางเดียว
สาเหตุ
- ลืมต่อ GND หรือขั้วต่อ GND หลวม - สเต็ปมอเตอร์หมุนแบบสั่นๆ หรือหมุนกลับไปกลับมา
สาเหตุ
- ลืมต่อ GND หรือขั้วต่อ GND หลวม - สเต็ปมอเตอร์หมุนได้ปกติ แต่เสียงดัง
สาเหตุ
- ตัวขับจ่ายกระแสไม่พอ ให้ไปเพิ่ม Max Current Limit ที่ตัวขับ - สเต็ปมอเตอร์หมุนไม่ลื่น ไม่เนียน
สาเหตุ
- ตัวขับจ่ายกระแสไม่พอ ให้ไปเพิ่ม Max Current Limit ที่ตัวขับ - ตัวขับสเต็ปมอเตอร์ไหม้ หรือพังบ่อยๆ
สาเหตุ
- เซ็ตค่า Current Limit สูงเกินกว่าตัวขับจะรับได้ หรือเซ็ตใกล้ค่า Max Limit เกินไป ทำให้เวลาใช้ไปนานๆ ตัวขับจะร้อนขึ้นเรื่อยๆ เพราะมันระบายความร้อนไม่ทัน สุดท้ายมันก็เลยไหม้ วิธีแก้คือไปปรับ Current Limit ลงมา หรือหาตัวขับใหม่ที่รองรับกระแสได้สูงขึ้นมาใช้แทน
ทั้งหมดที่ผมอยากแชร์ก็มีประมาณนี้นะครับ ส่วนเรื่องการเขียนโค้ดโปรแกรมยังไง การต่อยังไง อันนั้นมีคนเขียนเอาไว้เยอะแล้วครับ ทุกคนน่าจะสามารถหาได้ง่ายๆ แต่ปัญหาคือ หลังจากนั้นต่างหาก
โค้ดโปรแกรมก็ถูก วงจรก็ต่อถูก แต่ทำไมมอเตอร์ไม่หมุน ตรงนี้แหละครับที่ไม่ค่อยมีคนบอก ผมเลยอยากมาแชร์ให้ทุกคนได้รู้กันครับ