Arduino Control Stepper Motor by using A3967 Module

โครงงานนี้เป็นการทดลองใช้โมดูลขับสเตปเปอร์มอเตอร์ A3967 และต่อใช้งานร่วมกับบอร์ดควบคุม Arduino UNO เพื่อศึกษาการใช้งานโมดูลและโครงสร้างภายในตัวไอซี A3967 ทั้งนี้ตัวโมดูลขับสเตปเปอร์มอเตอร์ A3967 เป็นอีกตัวหนึ่งที่สามารถรถนำมาใช้งานได้งานง่ายนอกจากโมดูลอื่นที่มีจะหน่ายอยู่ ช่วยให้ออกแบบในส่วนของการขับตัวสเตปเปอร์มอเตอร์ได้รวดเร็ว และเหมาะสำหรับนำไปขับมอเตอร์ขนาดเล็กทั่วไปและขนาดกลางเท่านั้น


Datasheet for A3967 Stepping Driver

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


รูปที่ 4 และรูปที่ 5 แสดงสเตปเปอร์มอเตอร์ที่ใช้ในการทดลองแบบไบโพล่าร์ (Bipolar Stepper Motor) จะมีสายไฟจำนวน 4 เส้นสำหรับควบคุม คือ สายไฟสีดำ น้ำตาล เหลือง และส้ม ในรูปที่ 5 เป็นเนมเพลตแสดงรุ่นของตัวมอเตอร์ที่ใช้ในการทดลอง
/* Arduino Code Ref : https://www.sparkfun.com/tutorials/400 */ int dirpin = 13; int steppin = 3; int i; void setup() { pinMode(dirpin, OUTPUT); pinMode(steppin, OUTPUT); } void loop() { digitalWrite(dirpin, LOW); // Direction. delay(300); for (i = 0; i<3000; i++) { digitalWrite(steppin, LOW); delayMicroseconds(10); digitalWrite(steppin, HIGH); delayMicroseconds(300); } digitalWrite(dirpin, HIGH); // Direction. delay(300); for (i = 0; i<3000; i++) { digitalWrite(steppin, LOW); delayMicroseconds(10); digitalWrite(steppin, HIGH); delayMicroseconds(300); } }
สำหรับตัวอย่างโปรแกรมที่แสดงข้างบน เป็นการให้บอร์ดควบคุม Arduino UNO สร้างสัญญาณขับแบบพัลซ์วิดมอดูเลชั่นที่ขา D3 (Ton =300uS และ Toff =10uS) และที่ขา D13 จะทำหน้าที่กำหนดทิศทางการหมุนให้ตามเข็มนาฬิกาหรือทวนเข็มนาฬิกา โดยโปรแกรมจะวนลูปการทำงานสลับกัน

รูปที่ 6 แสดงลักษณะการต่อร่วมกันระหว่างสเตปเปอร์มอเตอร์และโมดูล A3967 โดยไฟเลี้ยงแรงดัน 5V สำหรับจ่ายให้โมดูลจะแยกออกจากบอร์ดควบคุม Arduino UNO เพื่อให้การทำงานแยกกันเป็นส่วน


สำหรับรูปที่ 8 เป็นการวัดสัญญาณขับสเตปเปอร์มอเตอร์ที่ขา D13 (DIR) และขา D3 (STER) ซึ่งสัญญาณจะมีค่าเท่ากับการเขียนโปรแกรมนั้นเอง คือ ที่ขา D3 จะสร้างสัญญาณพัลซ์บวกที่ 300uS และสัญญาณพัลซ์ลบที่ 10uS


สำหรับการนำโมดูลขับสเตปเปอร์มอเตอร์มาใช้งานนั้น ในปัจจุบันมีให้เลือกใช้โมดูลมากมายหลายแบบ ซึ่งการนำมาใช้งานเราอาจจะต้องพิจารณาในเรื่องของการกระแสและแรงดันให้กับสเตปเปอร์มอเตอร์ที่เหมาะสม รวมถึงการทดสอบความร้อนเมื่อใช้งานโมดูลอย่างต่อเนื่อง และจากการทดลองโมดูล A3967 นี้ ปริมาณกระแสขณะขับตัวสเตปเปอร์มอเตอร์จะสัมพันธ์กับความถี่ของสัญญาณขับที่ขา D3 (STER) แบบพัลซ์วิดธ์มอดูเลตชั่นด้วยครับ.
Reference
- https://www.sparkfun.com/datasheets/Robotics/A3967.pdf
- https://www.allegromicro.com/en/products/motor-drivers/brush-dc-motor-drivers/a3967
- https://www.electronicoscaldas.com/datasheet/A3967-EDMOD_Manual.pdf
- https://www.digikey.com/en/datasheets/allegromicrosystemsllc/allegro-microsystems-llca3967datasheetashx
- https://electropeak.com/learn/interfacing-a3967-easydriver-stepper-motor-driver-with-arduino/
- https://forum.arduino.cc/t/bipolar-stepper-l298n-accelstepper-current-spikes-start-end-of-rotation/676715
- https://www.sparkfun.com/tutorials/400
- https://www.allegromicro.com/~/media/files/datasheets/a3967-datasheet.ashx