본문 바로가기

Raspberry Pi Pico 에서 A4988 스텝모터 드라이버 사용하기

by rudals.kim 2022. 10. 25. 댓글 개
반응형

Raspberry Pi Pico에서 스텝 모터를 사용해야 하는 경우가 생겨 아두이노 CNC 쉴드에서 많이 사용되는 A4988 스텝 모터 드라이버를 사용하여 동작시켜 보았습니다.

A4988 칩은 Allegro사에서 제작된 마이크로스테핑 모터 드라이버용 칩으로 데이터 시트에 DMOS Microstepping Driver with Translator And Overcurrent Protection라고 소개되어 있습니다.

간략한 특징은 아래와 같으며 좀 더 자세한 내용은 아래 첨부된 데이터 시트를 참고하시기 바랍니다.

 

Features and Benefits
▪ Low R DS(ON) outputs
▪ Automatic current decay mode detection/selection
▪ Mixed and Slow current decay modes
▪ Synchronous rectification for low power dissipation
▪ Internal UVLO
▪ Crossover-current protection
▪ 3.3 and 5 V compatible logic supply
▪ Thermal shutdown circuitry
▪ Short-to-ground protection
▪ Shorted load protection
▪ Five selectable step modes: full,  1 / 2 ,  1 / 4 ,  1 / 8 , and  1 / 16

A4988.pdf
1.04MB

 

알리에서 주로 검색하면 사용되는 모듈의 회로도입니다. 이 모듈로 스텝 모터를 구동해볼 예정입니다.

데이터 시트에 일반적인 회로를 구성 예를 아래와 같이 보여주고 있는데 마이크로 컨트롤러에서 제어 가능한 신호 라인은 SLEEP_N, STEP, MS1, MS2, MS3, DIR, ENABLE_N, RESET_N 핀입니다.

RESET_N, ENABLE_N, SLEEP_N은 기본적인 핀으로 반드시 제어신호를 넣어줘야 합니다. 나머지 핀 중 MS1, MS2, MS3은 아래와 같이 스텝 모터의 Phase를 선택하는 데 사용되며 STEP에는 클럭을 넣고 DIR 핀을 High나 Low로 설정하면 스텝 모터를 정/역회전으로 구동할 수 있습니다.

아래와 같이 연결하여 스텝모터를 구동시켜 보았습니다.

(연결하지 않는 핀은 기본값 Low값을 사용하였습니다 - 데이터 시트 참고)

아래는 이번에 구매한 스텝 모터인데 네마17 17HS4023 스테핑 모터입니다. 환율 때문인지 알리익스프레스에서 구매하는 것과 국내에서 구매하는것과 별 차이가 나지 않았습니다. 국내에서 구매하면 배송이 빠르기 때문에 이번에는 국내 판매자에게 구매를 하였습니다.

판매 페이지에 적혀있던 스텝 모터 관련 스펙은 아래와 같습니다.

MicroPython을 사용하여 라즈베리파이 피코에서 스텝 모터를 구동해 보았습니다.

(참고 : https://gist.github.com/danielwilczak101/17d86834faed3aa1b3feeff1a8991808#file-main-py)

from machine import Pin, ADC
import utime
import time

step = Pin(17)
direction = Pin(16, Pin.OUT)

# To control speed just modify the amount/value of nop[dely amount 0-31].
@rp2.asm_pio(set_init=rp2.PIO.OUT_LOW)
def move():
    wrap_target()
    set(pins, 1)   [31]
    nop()          [31]
    nop()          [31]
    set(pins, 0)   [31]
    nop()          [31]
    nop()          [31]
    wrap()

"""Instantiate a state machine with the move
program, at 100000Hz, with set base to step pin."""
motor = rp2.StateMachine(0, move, freq=100000, set_base=step)

# Set direction
direction.value(0)

# Start your motor!
motor.active(1)

 

라즈베리파이 피코와 연결하여 테스트해 보니 잘 동작됩니다.

A4988 스텝 모터 드라이버는 8~35V의 전압과 최대 2A의 전류 허용량을 지원하여 쉽게 스텝 모터를 제어할 수 있기 때문에 취미용으로 많이 사용될 것 같습니다.

반응형

댓글