A4988 Stepper Motor Driver
원문 : Pololu (http://www.pololu.com/product/1182)
1. A4988 Stepper motor driver module
A4988 드라이버는 micro-stepping(1스텝을 분할하여 미세한 컨트롤이 가능하도록 지원)을 지원하며 under-current, over-current 보호회로를 장착한 스텝모터용 드라이버입니다. 하나의 bipolar 스텝 모터를 구동할 수 있으며 코일 당 최대 2A의 출력 전류를 지원합니다. (phase 당 1A 이상을 사용하는 경우 heat sink 를 장착해야 합니다.) 특히 스텝모터를 Direction, Control 두 개의 핀으로 간단하게 제어할 수 있습니다. 오픈소스 RepRap 3D 프린터 제작에도 사용되는 드라이버입니다. 아래 상세 제원을 확인하시고 데이터 시트는 링크를 참고하세요. A4988 datasheet (380k pdf)
- Simple step and direction control interface
- Five different step resolutions: full-step, half-step, quarter-step, eighth-step, and sixteenth-step
- Adjustable current control lets you set the maximum current output with a potentiometer, which lets you use voltages above your stepper motor’s rated voltage to achieve higher step rates
- Intelligent chopping control that automatically selects the correct current decay mode (fast decay or slow decay)
- Over-temperature thermal shutdown, under-voltage lockout, and crossover-current protection
- Short-to-ground and shorted-load protection
A4988은 최대 전류 출력을 설정함으로써 스텝모터의 동작 전압보다 높은 전압을 사용할 수 있게하고 세밀한 micro-step 제어를 가능케합니다.
A4988 드라이버는 몇 가지 특별한 버전이 있습니다. Black Edition A4988 stepper motor driver carrier 의 경우는 20% 가량 성능이 향상된 버전이며, larger version of the A4988 carrier 는 대용량의 모터를 지원하기 위한 보드로 메인 전원 입력단자에 reverse power protection 기능을 탑재하고 보드에 내장된 5 V and 3.3 V regulators 를 이용하므로 별도의 회로 로직용 전원이 필요치 않습니다. DRV8825 carrier 모듈은 약 50% 의 향상된 성능과 2.5V를 포함한 넓은 범위의 동작 전압을 지원합니다.
몇 몇의 unipolar 스텝 모터 (6선, 8선을 가진 경우) 또한 bipolar 스텝 모터처럼 A4988로 제어할 수 있습니다.frequently asked questions 에서 상세한 내용을 확인하세요. Unipolar 스텝 모터 중 5선을 가진 모터는 사용할 수 없습니다.
2. 연결 방법
동작을 위한 최소핀만 MCU에 연결한 모습 (full-step mode). |
---|
2-1. 전원 연결
드라이버는 회로 동작용으로 VDD and GND 핀에 3 – 5.5 V 전원을 인가해 줘야 합니다. 만약 voltage regulator가 장착된 제품을 사용한다면 회로 동작용 전원이 필요치 않습니다. 아마도 보드에 5V 핀이 있을 것이므로 5V 핀을 VDD로 바로 연결시켜주면 됩니다. 이 경우 5V 핀을 통해 마이크로 컨트롤러에 전원을 공급할 수도 있습니다.
VMOT and GND 핀에는 모터가 사용할 전류를 인가할 수 있는 (8 – 35 V, peak 시 최대 4A 이내) 전원을 연결해야 합니다. 이 전원 공급선에는 적당한 decoupling capacitors 를 보드 근처에 달아줘야 합니다. (필수는 아닌듯 하며 원문에서 이렇게 표현하고 있음. 링크 페이지에서 연결방법을 참고하세요)
Warning: This carrier board uses low-ESR ceramic capacitors, which makes it susceptible to destructive LC voltage spikes, especially when using power leads longer than a few inches. Under the right conditions, these spikes can exceed the 35 V maximum voltage rating for the A4988 and permanently damage the board, even when the motor supply voltage is as low as 12 V. One way to protect the driver from such spikes is to put a large (at least 47 µF) electrolytic capacitor across motor power (VMOT) and ground somewhere close to the board.
2-2. 모터 연결
4선, 6선, 8선 스텝 모터를 적당히 연결해 줘야 합니다. 다음 링크를 참고하세요. FAQ answer
주의!! : 드라이버에 전원을 인가하는 동안 스테퍼 모터를 동작하거나 분리하는 경우 드라이버에 심각한 손상을 초래할 수 있습니다. (일반적으로 전원이 인가된 상태에서 배선을 바꾼다던지, 탈착한다던지…)
2-3. 스텝, 마이크로 스텝 사이즈 결정
스텝 모터는 고유한 스텝 사이즈 크기를 가지고 있는데 (예. 1.8° 또는 1 회전 당 200 steps), 이 값이 full step 시 사용되는 값 입니다. A4988 처럼 micro-stepping 을 지원하는 드라이버의 경우 1회전 당 200 step을 가진 모터를 1회전 당 400 혹은 800 스텝으로 컨트롤 할 수 있습니다.
Micro-stepping을 이용한 스텝 사이즈의 크기는 아래의 표에 표기된 것 처럼 selector inputs (MS1, MS2, and MS3) 을 활성화 함으로써 설정할 수 있습니다. MS1, MS3 은 내부에 100kΩ pull-down 저항을, MS2 의 경우는 50kΩ pull-down 저항을 가지고 있습니다. 따라서 이 핀들을 사용하지 않는 경우 full-step mode 로 동작하게 됩니다. Micro-step modes 가 적절히 동작하기 위해서는 전류 한계(current limit) 값이 충분히 낮게 설정되어야 합니다. 그렇지 않을 경우 스텝 사이의 중간 위치를 유지하기 위한 전류 레벨이 적절히 유지되지 않기 때문에 micro-step을 건너뛰게 됩니다.
MS1 | MS2 | MS3 | Microstep Resolution |
---|---|---|---|
Low | Low | Low | Full step |
High | Low | Low | Half step |
Low | High | Low | Quarter step |
High | High | Low | Eighth step |
High | High | High | Sixteenth step |
2-4. 컨트롤 입력 핀
STEP 핀으로 입력되는 하나의 펄스가 DIR 핀으로 설정된 방향으로 회전하는 하나의 마이크로 스텝에 대응됩니다. STEP 핀과 DIR 핀은 내부에 풀업, 풀다운 저항에 연결되지 않았으므로 floating 상태(비연결 상태)로 둬서는 안됩니다.
만약 한 방향으로만 회전하도록 하고 싶다면 DIR 핀을 VCC 또는 GND에 바로 연결하면 됩니다. 전원 상태에 관련된 RST, SLP, EN 핀에 대한 정보는 A4988 datasheet를 참고하세요.
참고 : Please note that the RST pin is floating; if you are not using the pin, you can connect it to the adjacent SLP pin on the PCB to bring it high and enable the board.
2-5. 전류 제한 설정
Micro-step을 지원하기 위해 모터에는 허용되는 전압보다 높은 전압이 전류 제한과 함께 인가됩니다. 예를 들어, 일반적인 스텝 모터가 5V – 1A – 5Ω coil resistance 제한을 가지고 있다고 하면, 최대 전류 1A 설정을 유지한채 12V로 동작시켜서 micro-step을 구현합니다.
이를위해 A4988 드라이버는 보드에 최대전류를 설정할 수 있는 potentiometer 를 가지고 있습니다. 최대 전류값을 측정하기 위한 방법은 아래를 참고하세요.
One way to set the current limit is to put the driver into full-step mode and to measure the current running through a single motor coil without clocking the STEP input. The measured current will be 0.7 times the current limit (since both coils are always on and limited to 70% of the current limit setting in full-step mode). Please note that changing the logic voltage, Vdd, to a different value will change the current limit setting since the voltage on the “ref” pin is a function of Vdd.
Another way to set the current limit is to measure the voltage on the “ref” pin and to calculate the resulting current limit (the current sense resistors are 0.05Ω). The ref pin voltage is accessible on a via that is circled on the bottom silkscreen of the circuit board. The current limit relates to the reference voltage as follows:
Current Limit = VREF × 2.5
So, for example, if the reference voltage is 0.3 V, the current limit is 0.75 A. As mentioned above, in full step mode, the current through the coils is limited to 70% of the current limit, so to get a full-step coil current of 1 A, the current limit should be 1 A/0.7=1.4 A, which corresponds to a VREF of 1.4 A/2.5=0.56 V. See the A4988 datasheet for more information.
Note: The coil current can be very different from the power supply current, so you should not use the current measured at the power supply to set the current limit. The appropriate place to put your current meter is in series with one of your stepper motor coils.
2-6. 전원 공급
A4988 드라이버 IC 는 코일 당 최대 2A 의 전류를 허용합니다. 하지만 실제 인가할 수 있는 최대 전류는 IC 를 얼마나 잘 식혀줄 수 있느냐에 달려 있습니다. 코일 당 1 A 이상의 전류를 인가할 때에는 heat sink 또는 다른 방법을 강구하세요.
칩은 overheat 상태가 되기 전에 이미 뜨겁게 달아오를 수 있습니다. 주변에 연결된 부품이나 만질 때 주의를 요합니다.
If the supply voltage is very high compared to what the motor needs to achieve the set current, the duty cycle will be very low, which also leads to significant differences between average and RMS currents.
Note: A4988 칩은 단종된 구형 A4983 칩을 대체합니다. A4988 칩은 over-current 보호 기능과 100k 풀 다운 저항이 MS1 핀에 연결된 점을 제외하고는 A4983칩과 동일합니다.
3. 소스 코드 (스케치)
//simple A4988 connection //jumper reset and sleep together //connect VDD to Arduino 3.3v or 5v //connect GND to Arduino GND (GND near VDD) //connect 1A and 1B to stepper coil 1 //connect 2A and 2B to stepper coil 2 //connect VMOT to power source (9v battery + term) //connect GRD to power source (9v battery - term) int stp = 13; //connect pin 13 to step int dir = 12; // connect pin 12 to dir int a = 0; // gen counter void setup() { pinMode(stp, OUTPUT); pinMode(dir, OUTPUT); } void loop() { if (a < 200) //sweep 200 step in dir 1 { a++; digitalWrite(stp, HIGH); delay(10); digitalWrite(stp, LOW); delay(10); } else //sweep 200 in dir 2 { digitalWrite(dir, HIGH); a++; digitalWrite(stp, HIGH); delay(10); digitalWrite(stp, LOW); delay(10); if (a>400) // Initialize { a = 0; digitalWrite(dir, LOW); } } }