一、A4988模塊簡(jiǎn)介
A4988 是一款功能齊全的微步進(jìn)電機(jī)驅(qū)動(dòng)器,內(nèi)置轉(zhuǎn)換器,操作簡(jiǎn)便。它設(shè)計(jì)用于在全步進(jìn)、半步進(jìn)、四分之一步進(jìn)、八分之一步進(jìn)和十六分之一步進(jìn)模式下驅(qū)動(dòng)雙極步進(jìn)電機(jī),輸出驅(qū)動(dòng)能力高達(dá) 35 V 和 ±2 A。A4988 內(nèi)置一個(gè)固定關(guān)斷時(shí)間電流調(diào)節(jié)器,可在慢速或混合衰減模式下工作。轉(zhuǎn)換器是 A4988 輕松實(shí)現(xiàn)的關(guān)鍵。只需在 STEP 輸入端輸入一個(gè)脈沖,即可驅(qū)動(dòng)電機(jī)進(jìn)行一個(gè)微步。無(wú)需相序表、高頻控制線或復(fù)雜的編程接口。A4988 接口非常適合無(wú)法使用復(fù)雜微處理器或微處理器負(fù)擔(dān)過(guò)重的應(yīng)用。在步進(jìn)操作期間,A4988 中的斬波控制會(huì)自動(dòng)選擇電流衰減模式:慢速或混合。在混合衰減模式下,設(shè)備初始設(shè)置為在固定關(guān)斷時(shí)間內(nèi)以快速衰減,然后在剩余關(guān)斷時(shí)間內(nèi)以慢速衰減?;旌纤p電流控制可降低電機(jī)可聽(tīng)噪聲,提高步進(jìn)精度,并降低功耗。內(nèi)置同步整流控制電路,用于改善 PWM 工作期間的功耗。內(nèi)部電路保護(hù)包括:帶滯后的熱關(guān)斷、欠壓鎖定 (UVLO) 和交叉電流保護(hù)。
特性
? 低導(dǎo)通電阻 (RDS(ON)) 輸出
? 自動(dòng)電流衰減模式檢測(cè)/選擇
? 混合和慢速電流衰減模式
? 同步整流,低功耗
? 內(nèi)部欠壓鎖定 (UVLO)
? 交叉電流保護(hù)
? 3.3 V 和 5 V 兼容邏輯電源
? 熱關(guān)斷電路
? 接地短路保護(hù)
? 負(fù)載短路保護(hù)
? 五種可選步進(jìn)模式:全步進(jìn)、1/2、1/4、1/8 和 1/16
二、A4988引腳說(shuō)明
EN:使能引腳(低電平有效),該引腳懸空或接低電平,A4988都可以正常工作;接高電平則不工作。
MS1,MS2,MS3:微步細(xì)分驅(qū)動(dòng)控制,通過(guò)這三個(gè)引腳的邏輯電平,調(diào)整A4988驅(qū)動(dòng)電機(jī)模式為全、半、1/4、1/8 及 1/16 步進(jìn)模式。
MS1 | MS2 | MS3 | 微步分辨率 |
---|---|---|---|
L | L | L | 全步 |
H | L | L | 半步 |
L | H | L | 1/4步 |
H | H | L | 1/8步 |
H | H | H | 1/16步 |
RST:復(fù)位引腳(低電平有效),該引腳懸空,則默認(rèn)為高電平。即該引腳沒(méi)有連接任何電平時(shí),A4988可以正常工作。
SLP:睡眠引腳,該引腳連接電平為低電平時(shí),A4988將進(jìn)入低能耗睡眠狀態(tài),即消耗最小的電能。如果無(wú)需使用SLeep功能,則可以將SLEEP引腳與RESET引腳連接,則A4988將持續(xù)保持正常能耗狀態(tài)而不會(huì)進(jìn)入低能耗狀態(tài)。
STEP:步進(jìn)引腳,通過(guò)MCU控制器向A4988發(fā)送脈沖控制信號(hào),A4988接收到此信號(hào)后,會(huì)根據(jù) MS1, MS2 和 MS3引腳控制電機(jī)運(yùn)轉(zhuǎn)。
DIR:方向引腳,通過(guò)此引腳可以調(diào)整A4988控制電機(jī)運(yùn)行方向。當(dāng)此引腳為低電平,A4988將控制電機(jī)順時(shí)針旋轉(zhuǎn)。高電平則逆時(shí)針旋轉(zhuǎn)。
1A,1B:電機(jī)繞組1控制引腳。
2A,2B:電機(jī)繞組2控制引腳。
VMOT:電機(jī)電源正極(可用電源電壓為8V ~ 35V)注:此引腳用于連接為電機(jī)供電的電源。
VDD:邏輯電源正極(3 – 5.5伏)注:此引腳用于為A4988電機(jī)驅(qū)動(dòng)板供電。
GND:電機(jī)電源接地和邏輯電源接地。
三、A4988的Vref電壓調(diào)節(jié)
Vref電壓調(diào)節(jié)是通過(guò)A4988上的電位器旋鈕調(diào)節(jié)Vref參考電壓。該電壓將直接影響到步進(jìn)電機(jī)在工作時(shí)流過(guò)線圈的電流強(qiáng)度。請(qǐng)注意,這一步操作非常重要,如果忽略這一步有可能會(huì)產(chǎn)生電機(jī)損壞的后果。
A4988 Vref參考電壓計(jì)算公式:
Rs: 市面上A4988模塊上的Rs電阻值一般有3種類型,0.05 歐姆, 0.1 歐姆或0.2 歐姆。店鋪的A4988模塊上的Rs電阻值為0.1歐姆,大部分A4988模塊順時(shí)針旋轉(zhuǎn)電位器可調(diào)大Vref,逆時(shí)針旋轉(zhuǎn)電位器調(diào)小Vref。
Vref: 電位器金屬旋鈕和GND之間的電壓即為Vref??墒褂眯「腻F旋轉(zhuǎn)電位器旋鈕從而改變Vref。(如下圖所示)。
Imax:步進(jìn)電機(jī)工作時(shí),線圈允許流過(guò)的最大電流。
例:Rs為0.1歐姆,電機(jī)Imax為1.5A,通過(guò)以上公式計(jì)算,Vref參考電壓為1.2V。即將通過(guò)調(diào)節(jié)電位器旋鈕 將Vref調(diào)節(jié)為1.2伏特左右。
測(cè)量Vref時(shí)注意:
- A4988模塊的VDD引腳需要連接+5V電壓
- A4988模塊的GND引腳必須與電路中的其它設(shè)備共地
- A4988模塊的VMOT引腳無(wú)需通電,但是通電也不影響Vref的測(cè)量。
- A4988模塊的1A/1B/2A/2B引腳可以不與步進(jìn)電機(jī)連接,但連接也不會(huì)影響Vref的測(cè)量
四、STM32F103C8T6控制A4988驅(qū)動(dòng)2相4線步進(jìn)電機(jī)
準(zhǔn)備工作
STM32F103C8T6最小系統(tǒng)板,A4988驅(qū)動(dòng)模塊,OLED顯示屏,EC11旋轉(zhuǎn)編碼器,按鍵和導(dǎo)線若干。
引腳接線
STM32F103C8T6 | A4988 |
---|---|
電機(jī)電源正 | VMOT |
電機(jī)電源負(fù) | GND |
3.3V | VDD |
GND | GND |
PA0 | STEP |
PA4 | EN |
PA5 | DIR |
PB3 | MS1 |
PB4 | MS2 |
PB5 | MS3 |
PA1 | 編碼器的A ,控制頻率和占空比的調(diào)節(jié) |
PA2 | 編碼器的B,控制頻率和占空比的調(diào)節(jié) |
PA3 | 編碼器的S,切換調(diào)節(jié)頻率還是調(diào)節(jié)占空比 |
PA6 | 與PA0短接,捕獲PWM |
PB10 | 按鍵1,控制細(xì)分切換 |
PB11 | 按鍵2,控制方向切換 |
代碼示例
A4988.c
#include "A4988.h"
#include "Delay.h"
void A4988_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5);
GPIO_ResetBits(GPIOB, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5);
}
void A4988_SetStep(uint8_t step)
{
switch(step)
{
case 1: //1細(xì)分
A4988_MS1_L;
A4988_MS2_L;
A4988_MS3_L;
break;
case 2: //1/2細(xì)分
A4988_MS1_H;
A4988_MS2_L;
A4988_MS3_L;
break;
case 3: //1/4細(xì)分
A4988_MS1_L;
A4988_MS2_H;
A4988_MS3_L;
break;
case 4: //1/8細(xì)分
A4988_MS1_H;
A4988_MS2_H;
A4988_MS3_L;
break;
case 5: //1/16細(xì)分
A4988_MS1_H;
A4988_MS2_H;
A4988_MS3_H;
break;
}
}
void A4988_SetDir(uint8_t dir)
{
A4988_EN_H;
Delay_ms(20);
if(dir == 1) A4988_DIR_H
else A4988_DIR_L
A4988_EN_L;
}
main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "KEY.h"
#include "A4988.h"
#include "PWM.h"
#include "IC.h"
#include "Encoder.h"
uint8_t step = 0;
uint8_t dir = 0;
int main(void)
{
OLED_Init();
PWM_Init();
A4988_Init();
Key_Init();
Encoder_Init();
OLED_ShowString(1, 5, "A4988");
OLED_ShowString(1, 12, "F"); //F:調(diào)節(jié)頻率,D:調(diào)節(jié)占空比
OLED_ShowString(2, 4, "0000Hz");
OLED_ShowString(2, 11, "000%");
OLED_ShowString(3, 4, "1 ");
OLED_ShowString(3, 11, "+");
PWM_SetPrescaler(720 - 1); //Freq = 72M / (PSC + 1) / 100
PWM_SetCompare1(50); //Duty = CCR / 100
A4988_SetDir(1);
A4988_SetStep(1);
Update_Display();
while (1)
{
int16_t encoder_change = Encoder_GetValue();
if(encoder_change != 0)
{
if(setting_mode == 0) // 調(diào)頻率
{
pwm_freq += encoder_change * 10;
if(pwm_freq > 2000) pwm_freq = 2000;
if(pwm_freq < 10) pwm_freq = 10;
PWM_SetPrescaler(pwm_freq - 1);
}
else // 調(diào)占空比
{
pwm_duty += encoder_change;
if(pwm_duty > 100) pwm_duty = 100;
if(pwm_duty < 0) pwm_duty = 0;
PWM_SetCompare1(pwm_duty);
}
Update_PWM();
Update_Display();
}
if(Encoder_GetKey()) // 按下編碼器按鍵切換調(diào)節(jié)模式
{
setting_mode ^= 1; // 0/1切換
Update_Display();
}
Delay_ms(20);
KeyEvent_TypeDef key_event = Key_Scan();
switch (key_event)
{
case KEY_MODE_CLICK:
// Mode鍵短按事件
step++;
if (step > 5) step = 1;
switch(step)
{
case 1:
A4988_SetStep(1); OLED_ShowString(3,4,"1 "); break;
case 2:
A4988_SetStep(2); OLED_ShowString(3,4,"1/2 "); break;
case 3:
A4988_SetStep(3); OLED_ShowString(3,4,"1/4 "); break;
case 4:
A4988_SetStep(4); OLED_ShowString(3,4,"1/8 "); break;
case 5:
A4988_SetStep(5); OLED_ShowString(3,4,"1/16"); break;
}
break;
case KEY_DIR_CLICK:
dir++;
if(dir > 2) dir = 1;
if(dir == 1)
{
A4988_SetDir(1);
OLED_ShowString(3, 11, "+"); //正轉(zhuǎn)
}
else
{
A4988_SetDir(0);
OLED_ShowString(3, 11, "-"); //反轉(zhuǎn)
}
break;
}
Delay_ms(20);
}
}
效果展示
五、A4988電機(jī)驅(qū)動(dòng)板常見(jiàn)問(wèn)題
1)4988驅(qū)動(dòng)板可以驅(qū)動(dòng)多大的電流?
如果4988芯片上沒(méi)有加散熱片,電流最好在1A以下。如果加散熱片,電流可以達(dá)到2A。
2)步進(jìn)電機(jī)的連接方式是什么?
先判斷哪兩根線為同一相,短接兩兩線有明顯阻力的為同一相,A相和B相可以不區(qū)分,只有是同一相接在同一個(gè)電機(jī)繞組控制引腳即可。
3)接上電后,電機(jī)左右抖動(dòng)不能正常運(yùn)行是什么原因?
電機(jī)出現(xiàn)抖動(dòng)一般有兩個(gè)原因,一是缺相:可能是4988與電機(jī)沒(méi)有接好導(dǎo)致4988的輸出端某一相斷開(kāi),造成電機(jī)缺相從而抖動(dòng)。也有可能是步進(jìn)電機(jī)接線接錯(cuò):如果步進(jìn)電機(jī)沒(méi)有正確的進(jìn)行連接,電機(jī)會(huì)出現(xiàn)抖動(dòng)的情況。二是驅(qū)動(dòng)電流過(guò)大或過(guò)小導(dǎo)致的,調(diào)節(jié)板載上的電位器調(diào)到電機(jī)正常平穩(wěn)運(yùn)行就可。
4)電機(jī)丟步如何解決?
相電流的大小跟步進(jìn)電機(jī)的扭力有直接關(guān)系,如果感覺(jué)你的步進(jìn)電機(jī)扭力不足、丟步,可能是4988輸出的電流太小。您可以調(diào)節(jié)A4988模塊上的電位器調(diào)節(jié)A4988模塊的輸出電流強(qiáng)度。具體調(diào)節(jié)方法請(qǐng)參考上面的Vref電壓的調(diào)節(jié)方法。請(qǐng)注意:如A4988輸出電流強(qiáng)度大于電機(jī)工作電流強(qiáng)可能會(huì)燒毀您的步進(jìn)電機(jī)。請(qǐng)小心調(diào)節(jié)。
5)4988可以驅(qū)動(dòng)兩相六線或兩相五線的電機(jī)嗎?
可以,兩相連線按照問(wèn)題2連接,將中間抽頭懸空即可。
6)電機(jī)停止轉(zhuǎn)動(dòng)時(shí)會(huì)有滋滋的電流聲。
這是正?,F(xiàn)象。步進(jìn)電機(jī)有一個(gè)參數(shù)-步距角。通過(guò)細(xì)分驅(qū)動(dòng)可以縮小步進(jìn)角度,比如步距角為1.8度的步進(jìn)電機(jī),采用16細(xì)分,最小可以走的角度是1.8/16=0.1125度。由于這個(gè)角度非常小,當(dāng)電機(jī)停止時(shí),可能處于非電機(jī)物理位置(1.8度為一個(gè)物理位置)。因此步進(jìn)電機(jī)在靜止時(shí)會(huì)有電流聲,這屬于正常現(xiàn)象,不用擔(dān)心。
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
9282瀏覽量
154276 -
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
152文章
3195瀏覽量
151027 -
電機(jī)驅(qū)動(dòng)器
+關(guān)注
關(guān)注
16文章
782瀏覽量
65982 -
STM32F
+關(guān)注
關(guān)注
1文章
42瀏覽量
18663
發(fā)布評(píng)論請(qǐng)先 登錄
STM32F103RBT6單片機(jī)和A4988驅(qū)動(dòng)控制步進(jìn)電機(jī)
stm32f103c8t6是怎樣去控制多個(gè)步進(jìn)電機(jī)的?
用A4988驅(qū)動(dòng)步進(jìn)電機(jī)的程序
如何使用A4988控制步進(jìn)電機(jī)
STM32F103C8T6核心板的資料合集免費(fèi)下載

使用STM32F103C8T6和A4988驅(qū)動(dòng)42步進(jìn)電機(jī)的原理圖和源代碼免費(fèi)下載

stm32f103c8t6單片機(jī)驅(qū)動(dòng)臺(tái)達(dá)伺服電機(jī)

【51單片機(jī)】 A4988驅(qū)動(dòng)模塊驅(qū)動(dòng)四線步進(jìn)電機(jī)

stm32f103c8t6控制多個(gè)步進(jìn)電機(jī)

A4988驅(qū)動(dòng)NEMA步進(jìn)電機(jī)

STM32 A4988控制步進(jìn)電機(jī)

評(píng)論