Publish : 23 October 2020หัวข้อในบทความนี้ - ทำความรู้จักกับไอซี DRV8825 - การต่อแหล่งจ่ายไฟ - การตั้งค่า Step Mode - Control Input - Control Output - การปรับ Current Limiting - Fault Detection Pin - การใช้งานกับ Arduino
- การใช้งานโดยไม่ใช้ Library - การใช้งานร่วมกับ Library - การต่ออุปกรณ์ - การใช้งานใน Step Mode อื่น ๆ ในตอนที่แล้วเราได้พูดถึงการใช้งานโมดูล A4988 สำหรับขับมอเตอร์กันไปแล้ว สำหรับวันนี้จะพูดถึงอีกตัวที่ผู้เขียนขอเรียกว่าเป็นคู่แฝดของ A4988 นั่นคือโมดูล DRV8825 กันครับ บอกก่อนเลยว่าเนื้อหาอาจไม่ยาวมาก ไปดูกันเลยครับทำความรู้จักกับไอซี DRV8825 DRV8825 เป็นไอซี PWM Microstepping Stepper Motor Controller จาก Texas Instruments ที่มีคุณสมบัติครบถ้วนเช่นกับ A4988 คือมีการป้องกันกระแสเกิน ป้องกันอุณหภูมิเกิน ป้องกันแรงดันต่ำกว่ากำหนด ป้องกันโหลดช๊อต อีกทั้งยังสามารถใช้กระแสได้สูงสุดที่ 2.5A และรองรับแรงดันได้ถึง 45Vคุณสมบัติของไอซีมีดังนี้
คุณสมบัติ |
Rating |
หน่วย |
แรงดันโหลด |
สูงสุด 47 |
V |
กระแสโหลด |
±2.5 |
A |
แรงดันลอจิก |
-0.3 ถึง 5.5 |
V |
ไฟเลี้ยงไอซี |
-0.3 ถึง 5.5 |
V |
Sense Voltage |
-0.8 ถึง 0.8 |
V |
Reference Voltage |
3.5 |
V |
อุณหภูมิในการทำงาน |
-40 ถึง 150 |
ºC
|
เมื่อเปิด Datasheet ดูสเปคกระดาษกันแล้วก็พอเห็นว่า DRV8825 พอจะเหนือกว่า A4988 อยู่นะครับ เริ่มสนุกกันแล้วสิโมดูลขับสเต็ปมอเตอร์ DRV8825 เช่นเดียวกับ A4988 ครับ DRV8825 นั้นผลิตมาในรูปแบบตัวถัง HTSSOP(28) ซึ่งไม่สะดวกในการเสียบ Breadboard ใช้งานเท่าไร จึงจะเหมาะกว่าที่จะใช้โมดูล DRV8825 สำเร็จรูปมาใช้งานกันครับ
จะเห็นว่าขาต่าง ๆ และการวางขาของโมดูลนั้นเหมือนกับ A4988 ถึง 90% มีเพียงขาเดียวคือไม่มี VCC แต่เป็น FAULT แทน ถ้าเราใช้งาน A4988 ได้แล้วก็มาใช้งานตัวนี้ได้เลยล่ะครับ ส่วนขาที่ต่างมามันคืออะไร ไปดูกันเลย (ใครรู้จาก A4988 แล้วข้ามไป FAULT ที่ข้อสุดท้ายเลยครับ ที่เหลือเหมือนกัน) การต่อแหล่งจ่ายไฟการต่อแหล่งจ่ายไฟนั้นจะใช้ชุดไฟแรงสูงสำหรับเลี้ยงมอเตอร์ และสาย GND อีกเส้นจะต่อกับ GND ของบอร์ด Arduino ส่วน VCC สำหรับเลี้ยงบอร์ดนั้นจะไม่มีแล้วครับ เนื่องจากมันเป็น Fault แทน ซึ่งจะได้อธิบายต่อไป การตั้งค่า Step ModeStep Mode นี้เป็นอีกอย่างที่ DRV8825 มีเหนือกว่า A4988 คือสามารถตั้งค่าได้ละเอียดกว่า โดย DRV8825 นั้นสามารถตั้งได้ถึง 1/32 Step โดยใช้การจั๊ม MS1 MS2 MS3 เช่นเดียวกับ A4988 โดยมีการจั๊มดังนี้
MS1 |
MS2 |
MS3 |
Resolution |
LOW |
LOW |
LOW |
1/1 (Full Step) |
HIGH |
LOW |
LOW |
1/2 (Half Step) |
LOW |
HIGH |
LOW |
1/4 |
HIGH |
HIGH |
LOW |
1/8 |
LOW |
LOW |
HIGH |
1/16 |
HIGH |
LOW |
HIGH |
1/32 |
LOW |
HIGH |
HIGH |
HIGH |
HIGH |
HIGH |
จะเห็นว่าการจั๊มนั้นจะเหมือนกับ A4988 เลยครับ แตกต่างกันตรง 1/16 และ 1/32 เท่านั้นเอง Control Inputการ Control Input ต่าง ๆ ของ DRV8825 นั้นก็จะเหมือนกับ A4988 เลยครับ ขอก็อปปี้มาวางเลยละกัน
STEP เป็นขาที่รับ Pulse จากไมโครคอนโทลเลอร์ เมื่อไม่โครคอนโทรลเลอร์ส่ง HIGH มา 1 ลูก มอเตอร์ก็จะขยับ 1 สเต็ปตามความละเอียดที่ตั้งไว้ และการส่ง Pulse เข้ามาช้าเร็วก็จะทำให้มอเตอร์หมุนข้าเร็วตามไปด้วย
DIR เป็นขาที่ใช้ควบคุมทิศทางการหมุนของมอเตอร์ เมื่อขานี้ได้สัญญาณ HIGH มอเตอร์จะหมุนตามเข็มนาฬิกา และเมื่อขานี้ได้รับสัญญาณ LOW มอเตอร์จะหมุนทวนเข็มนาฬิกา
นอกจากการควบคุมหลักสองขาที่กล่าวแล้ว ยังมีขาที่ใช้ควบคุมเกี่ยวกับการจัดการพลังงานดังนี้
ENABLE เป็นขาที่เปิดหรือปิดการใช้งานไอซี A4988 เป็นขา Active LOW เมื่อเราจ่ายสถานะ LOW ให้กับขานี้ ไอซีจะทำงานและขับมอเตอร์ได้ เมื่อขานี้ได้สถานะ HIGH ก็จะปลดการทำงานของไอซี ทำให้การทำงานทั้งหมดถูกปิดลงไป
RESET เป็นขารีเซ็ตการทำงานของไอซี ทำงานแบบ Active LOW เมื่อเราจ่าย LOW เข้าไป ก็จะไม่สนใจการทำงานทุกอย่าง เข้าสู่การรีเซ็ต จนกว่าจะมีการจ่ายสัญญาณ HIGH เข้าไปจึงจะมีการเริ่มการทำงานใหม่อีกครั้ง
SLEEP ทำงานแบบ Active LOW เมื่อใส่สัญญาณ LOW เข้าไปก็จะเข้าสู่โหมด Sleep ใช้ในกรณีที่เราไม่ได้ใช้งานมอเตอร์ วงจรไม่มีการทำงานขับมอเตอร์ใด ๆ ก็สามารถสั่งให้เข้าสู่โหมด Sleep ได้เพื่อประหยัดพลังงานของไฟเลี้ยง
*** เราสามารถต่อ SLEEP เข้ากับ RESET ได้ เพื่อให้ RESET มีสถานะเป็น HIGH ตลอดเวลา เพื่อให้วงจรทำงานอยู่ตลอด **
Control Output การ Control Output ก็เช่นเดียวกันเลยครับ 1A 1B 2A 2B ก็ไปต่อกับคอยล์ 1 คอยล์ 2 ของมอเตอร์เท่านั้นเอง เหมือนกับ A4988 เลย ต่างกันแค่ DRV8825 นี้จะทำกระแสได้สูงกว่าคือ 2.5A และแรงดันตั้งแต่ 8.5 - 45V (หากแรงดันต่ำกว่า 8.5V ตัวไอซีจะเข้าสู่ Low Voltage Protect ไม่ทำงานใด ๆ ครับ)
*** ควรแปะ Heat Sink ที่แถมกับโมดูลไว้บนตัวไอซีเพื่อระบายความร้อน เนื่องจากการทำงานที่กระแสสูงตัวไอซีจะร้อนมาก หากมีความร้อนมากไปอาจทำให้วงจรป้องกันและทุกอย่างหยุดทำงาน หรือไอซีไหม้เกิดความเสียหายได้ ***
*** แม้สเป็คของไอซีจะสามารถทำได้ถึง 37V แต่อุปกรณ์ตัวเก็บประจุที่ใช้ในโมดูลจะทนได้แค่ 35V การใช้แรงดันเกินจากนี้อาจทำให้โมดูลเสียหาย ***
การปรับ Current Limiting วิธีปรับ Current Limiting นั้นก็จะเหมือนกับ A4988 เลยครับ ใช้วิธีเดียวกัน มี 2 วิธีให้เลือกใช้ ขอไปแบบเร็ว ๆ ไม่มีตัวอย่างแล้วนะครับ วิธีที่ 1 (1) หา Datasheet ของมอเตอร์ที่เราจะใช้ มองหา Rated Current เพื่อนำมาใช้งาน
(2) คำนวณเลขกันก่อนจากสูตร
(3) ตั้งโมดูลให้เป็น Full Step Mode แล้วทำการจ่ายไฟ ต่อมอเตอร์เข้าไป วัดค่า Vref โดยนำโวลต์มิเตอร์จิ้มที่ตัว Trimmer เทียบกราวด์ ค่อย ๆ หมุนปรับจนได้ค่าตามที่คำนวณไว้ วิธีที่ 2 ทำการวัดโดยต่อแอมป์มิเตอร์คั่นโมดูลกับมอเตอร์ แล้วทำการปรับค่าให้ได้ Rated Current ตามต้องการ วิธีจะคล้าย ๆ แบบแรก ตั้ง Full Step Mode เหมือนกัน เปลี่ยนแค่จุดวัด และเปลี่ยนจากวัดแรงดันเป็นวัดกระแสแทน Fault Detection Pin สิ่งที่แตกต่างจาก A4988 คือ DRV8825 จะไม่มี VCC แต่จะเปลี่ยนเป็น FAULT แทน ซึ่งเจ้า FAULT นี้เป็นขา OUTPUT เมื่อวงจร H-Bridge FET ภายในตัวไอซีปิดการทำงาน FAULT จะจ่ายสัญญาณ LOW ออกมาเพื่อเป็นการป้องกันกระแสเกินและป้องกันความร้อนสูงเกิน เป็นระบบป้องกันของไอซีอย่างหนึ่ง และหากเราเชื่อม FAULT เข้ากับ SLEEP แล้ว สัญญาณ LOW นี้จะกระตุ้นให้ SLEEP ทำงาน ส่งผลให้โมดูลหยุดการทำงานลงจนกว่าจะมีการ RESET หรือถอดไฟชุด VMOTOR ออกแล้วจ่ายไฟเข้าไปใหม่อีกรอบ (สำหรับการใช้งานโดยทั่วไปเราจะลอย FAULT ไว้ ไม่ต่อกับขาใด ๆ)การใช้งานกับ Arduino
การใช้งานโมดูล DRV8825 กับ Arduino นั้นก็สามารถทำได้ 2 วิธี และเขียนโปรแกรมเหมือนกับ A4988 เลยครับ ตรงนี้จึงขออนุญาตโปรแกรมเอาของ A4988 เดิมมาแปะเป็นตัวอย่าง และก็จะไม่อธิบายนะครับ ใครที่ยังจำตอนที่แล้วได้ก็ข้ามไปตรงการต่ออุปกรณ์เลย
การใช้งานโดยไม่ใช้ Library
การใช้งานร่วมกับ Library
การต่ออุปกรณ์
มาถึงวิธีการต่ออุปกรณ์ การต่อ DRV8825 หลัก ๆ ก็จะเหมือน A4988 เลยครับ ต่างกันที่เราจะไม่ต่อ 5V ไปยัง VCC ของโมดูล (เพราะไม่มี) และลอยขา FAULT ไว้ ตามภาพด้านล่างเลย
การใช้งานใน Step Mode อื่น ๆ
การใช้ Step Mode อื่น ๆ ก็เช่นเดียวกับ A4988 อีกแหละครับ เราแค่เปลี่ยนโค้ดให้เป็น Step ที่เราใช้งาน และทำการจั๊ม MS1 MS2 MS3 ตามนั้น เพื่อไม่ให้ดูขี้เกียจเกินไปขอเขียนโปรแกรมตัวอย่างใหม่ซักอัน เราจะใช้งานใน 1/32 Step Mode กันครับ
จะเห็นจากโค้ดแล้วนะครับว่าเหมือนเดิมเป๊ะเลย ส่วนการต่ออุปกรณ์นั้นก็จั๊มไปเลยครับ ซึ่ง 1/32 นี้สามารถจั๊มได้ 3 แบบ เพื่อความง่ายก็ HIGH HIGH HIGH ไปเลยครับ
เป็นไงกันบ้างครับวันนี้ จริง ๆ เนื้อหาไม่ได้มีอะไรเลยครับ แฝดสองตัวนี้ถ้าใช้ตัวใดตัวหนึ่งได้ก็จะใช้ได้ทั้งคู่ แตกต่างกันก็แค่เล็กน้อยตรงขา FAULT และ Step Mode ที่สามารถทำได้ละเอียดกว่าเท่านั้น และก็สารภาพกันตรง ๆ ว่าไม่รู้จะเขียนอะไรเหมือนกันครับ เนื้อหาก็เลยก็อปปี้จากบทความครั้งก่อนมาวางไว้ ผู้อ่านก็คงอ่านจบด้วยความรวดเร็วเพราะก็คงข้ามเนื้อหาเดิมเยอะเหมือนกันเนอะ เอาเป็นว่าวันนี้จบเท่านี้กันดีกว่า หมดเนื้อหาแล้ว พบกันใหม่สัปดาห์หน้า สวัสดีครับผม