วันพฤหัสบดีที่ 16 กุมภาพันธ์ พ.ศ. 2560

Arduino : ขับ Step Motor ด้วย Module THB7128

ชุดขับ Step Motor ในปัจจุบันมีให้เลือกมายมายหลายแบบ แต่หลักๆ แล้วจะมี 2 แบบด้วยกันคือการขับด้วยชุดขับพวกวงจร H-Bridge เช่น L298 และชุดขับสำหรับ Step Motor โดยเฉพาะ เช่น THB7128 ซึ่งข้อแตกต่างของชุดขับ 2 ชนิดนี้คือ ราคา และ ความยากง่ายในการควบคุม ซึ่งแบบ H-Bridge นั้นจะมีราคาที่ค่อนข้างถูกว่า ชุดขับ Step motor โดยตรงแต่ก็มีความซับซ้อนกว่าในส่วนการควบคุม ซึงในบทความนี้ผมจะมาแนะนำการใช้งานชุดขับ Step Motor THB7128


     ชุดขับ Step ที่ใช้งานหน้าตาแบบนี้ โดยบนบอร์ดจะมี 5 ส่วนหลักๆคือ

  1. IC Driver THB7128
  2. DIP Switch
    • ประกอบด้วย Switch 1- 4 โดย 
      • Switch 1 - 3 ใช้ความคุมความละเอียดในการหมุดต่อ 1 step มีตั้งแต่ 1, 2, 4, 8, 16, 32, 64, 128 คือ สมุติว่า Step Motor ที่เลือกใช้งานเป็นแบบ 1.8 องศา / step ถ้ากำหนด DIP Switch นี้เป็นค่า 8 จะได้ความละเอียด ต่อ 1 step เป็น 1.8 / 8 องศา และจำนวน step ต่อ 1 รอบจะเพิ่มขึ้นด้วย จากตัวอย่าง 1.8 องศา / step จะใช้จำนวน 200 step ต่อการหมุน 1 รอบ แต่ถ้า เลือก DIP Switch เป็นค่า 8 จำนวนรอบจะเป็น 200 * 8 = 1600 step
      • Switch 4 คือกระแสสำหรับตอนที่ Hold Torque ซึ่งจะมี 20% และ 50% ของกระแส Max (R Trimmer)
  3. R Trimmer
    • ใช้ Limit กระแสสูงสุดที่ใช้ Drive Motor ตั้งแต่ 0 - 3 A ซึ่งทั้งนี้ต้องดูที่ Datasheet ของ Motor ที่เลือกใช้งานว่ากระแสสูงสุดเป็นเท่าไหร่
  4. Terminal ฝั่ง Input
    • CW
      • ขาสั่งงานการหมุนของ Motor ว่าจะให้หมุนทวนเข็มหรือตามเข็ม  ขา + ต่อกับ I/O ของ Arduino ขา - ต่อ Gnd
    • EN
      • ขาสั่งเปิด-ปิดการทำงานของ IC ขานี้ไม่ต้องต่อก็ได้ การใช้งานเป็นแบบ Active low
    • CLK
      • ขานี้เป็นขากำหนดความเร็วของการหมุน คล้ายๆ กับการส่ง PWM ควบคุม Motor กระแสตรง ขา + ต่อกับ I/O ของ Arduino ขา - ต่อ Gnd
  5. Terminal ฝั่ง Output
    • A+ A- B+ B- 
      • ต่อเข้ากับ Step Motor ต้องตรวจสอบตาม Datasheet ของ Motor นั้นๆ ให้ดี เพราะถ้าต่อผิดอาจจะเกิดความเสียหายต่อ  IC Driver ได้
    • VCC, GND 
      • คือไฟสำหรับ Drive Motor volt สูงสุด 40V

     อย่างที่กล่าวมาข้างต้นแล้วว่าตัว Module THB7128 นั้นราคาสูงแต่ง่ายตอนควบคุม ก็คือการควบคุมจะทำคล้ายๆ กับการคุบคุม Motor กระแสตรงซึ่ง ฝั้ง Input ที่ใช้งานก็แค่ใช้  CLK และ CW ก็สามารถสั่งงานให้กับ Motor ได้แล้ว โดย code ตัวอย่างนี้ผมจะใช้งานรวมกับ Library ชื่อ AccelStepper  หรือ download

#include <Makeblock.h>
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <AccelStepper.h>
#define _PIN_CLK_ 13
#define _PIN_CW_ 12
#define _DIP_SW_EXCITATION_ 16
#define _MOTOR_NUMER_OF_STEP_PER_ROUND_ 200
#define _SW_MAX_SETEP_ (_DIP_SW_EXCITATION_ * _MOTOR_NUMER_OF_STEP_PER_ROUND_)
AccelStepper stepper(AccelStepper::DRIVER, _PIN_CLK_, _PIN_CW_);
long current_position;
void setup()
{
stepper.setAcceleration(100000);
stepper.setCurrentPosition(0);
stepper.setMaxSpeed(_DIP_SW_EXCITATION_ * 20);
}
void loop()
{
current_position = stepper.currentPosition();
if(current_position >= _SW_MAX_SETEP_)
{
stepper.moveTo(0);
}
if(current_position <= 0)
{
stepper.moveTo(_SW_MAX_SETEP_);
}
stepper.run();
}



     จากโค๊ดตัวอย่างกำหนด DIP Switch บน Board 16  (#define _DIP_SW_EXCITATION_ 16) และ Step Motor ที่ใช้งานเป็นแบบความละเอียด 1.8 องศาต่อ Step  (#define _MOTOR_NUMER_OF_STEP_PER_ROUND_ 200) ใน loop เป็นการหมุน แบบทวนเข็ม 1 รอบและหมุนตามเข็มอีก 1 รอบ ซึ่ง position ของการหมุนจะเท่ากับ ความระเอียด คูณ กับจำนวน step ต่อ 1 รอบ  (#define _SW_MAX_SETEP_ (_DIP_SW_EXCITATION_ * _MOTOR_NUMER_OF_STEP_PER_ROUND_)

นาย สุธรรม แสงทรง

อ้างอิง

http://piak.appstack.cc/2014/06/arduino-step-motor-module-thb7128.html


1 ความคิดเห็น:

  1. We have over 600+ stepper motors, stepper motor drivers and accessory products in stock for you to choose from. Furthermore, more than 10+ new models will be added each month. Featured products like nema 14 stepper motor and nema 17 stepper motor
    have received high praise and had a good performance on market.

    ตอบลบ