我造輪子,你造車,創客一起造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】
本文介紹X-CTR100控制器控制步進電機,實現步進電機精確轉速控制。
原理
如上圖所示,步進電機系統一般包括控制器、驅動器和步進電機三部分。
步進電機
步進電機是一種將電脈沖轉化為角位移的執行機構。通俗一點講:當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(或步進角)。可以通過控制脈沖個數來控制角位移量,從而達到准確定位的目的;同時也可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達調速的目的。因此在需要准確定位或調速控制時均可考慮使用步進電機。
步進電機根據尺寸進行分類,常用小型步進電機有42、57型號。
本文使用42型四線步進電機接口及參數
本文選用電機參數
步進電機種類、參數眾多,詳細說明請查閱本文參考資料文件夾內容。
驅動器
上圖為常用步進電機驅動器,其中DRV8825和A4988為小型步進電機驅動器,驅動電流較小,常用於打印機、3D打印機、雕刻機等設備,支持的3d打印機有Prusa Mendel,ultimaker,printbot,makerbot等
TB6600為大功率驅動器,驅動電流更大,常用於大型設備。
驅動器雖然外形參數各異,驅動方法類似,一般包括EN(使能)、DIR(方向)、PLUS(脈沖)三個控制角。
本文以DRV8825為例進行說明。A4988與DRV8825引腳兼容,性能稍弱,詳見下表。
參考:https://reprap.org/wiki/A4988_vs_DRV8825_Chinese_Stepper_Driver_Boards
DRV8825 是德州儀器 (TI) 為打印機、 掃描儀和其他自動化設備設計的集成電機驅動芯片。 它集成了 2 個 H 橋電路, 以及片上 1/32 微步進分度器, 可以驅動一個雙極型電機,或兩個直流有刷電機。 輸入電壓范圍 8.2~45V, 可以提供 1.75A 的有效電流, 並可承受 2.5A的峰值電流(在 24 V、 25° C 的應用環境下 )。低至 0.2Ω 的導通電阻, 保證了芯片良好的熱特性。 另外, 還集成了快速響應的短路、 過熱、欠壓及交叉傳導保護功能電路, 能夠檢測故障狀況, 並迅速切斷 H 橋, 從而為電機和驅動芯片提供保護
DRV8825相對4988 特點優勢:
1、最大電流2.5A。
2、最高支持32細分。
3、4層PCB板,散熱性能更好。
4、芯片內阻更小,發熱更低,散熱性更好。
DRV8825特點:
1、適合驅動8.2V~45V 2.5A以下的步進電機;
2、只有簡單的步進和方向控制接口;
3、六個不同的步進模式:全、半、1/4、1/8、1/16、1/32;
4、可調電位器可以調節最大電流輸出,從而獲得更高的步進率;
5、自動電流衰減模式檢測/選擇;
6、過熱關閉電路、欠壓鎖定、交叉電流保護;
7、接地短路保護和加載短路保護
DRV8825模塊原理圖:
DRV8825接線示意圖
細分設置
電流調節
Rs電阻值市面上一般是0.1 歐(R100),對應的是驅動模塊上面S1 S2電阻。這里是0.1歐姆(標號R100=0.1歐)。
但市面DRV8825驅動模塊這個Vref出廠基本都是調到1.6V這樣算下來,電流I=3.2。這也是很多人用DRV8825驅動模塊發燙,電機發燙原因,這樣很容易損壞電機和驅動模塊。
所以拿到手第一時間把這個Vref參考電壓調小到0.5V左右再根據電機參數微調。
Vref電壓:電位器金屬旋鈕到GND的電壓。可以通過調節電位器改變。
常見問題
1)DRV8825驅動板可以驅動57電機嗎?
4988可以驅動的電機跟尺寸關系不大,主要與工作電流有關,理論上電流小於2A的步進電機都是可以驅動的,不論是42還是57電機。
2)可以驅動多大的電流?
如果DRV8825芯片上沒有加散熱片,電流最好在1.5以下。如果加散熱片,電流可以達到2.5A。
3)步進電機的連接方式是什么?
正如DRV8825板子背面所標識的,連接方式是依次連接步進電機的1B-1A-2A-2B,或者反向為2B-2A-1A-1B,或者1A-1B-2B-2A,其它的方式一次類推。如果你的電機線是標准的紅藍綠黑的顏色,可以按照顏色連接為:紅-藍-綠-黑,或相反:黑-綠-藍-紅。
4)接上電機后,電機不能正常運行,在左右抖動,是什么原因?
電機出現抖動一般有兩個原因,一是缺相:可能是DRV8825板子沒有焊接好或因為外力導致DRV8825的輸出端某一相斷開,造成電機缺相從而抖動。也有可能是步進電機接線只用一相沒有連接好;而是兩相接錯:如果步進電機沒有按照正確的順序進行連接,電機也會出現抖動的情況,請按照問題3進行正確的連接
5)電機丟步如何解決?
相電流的大小跟步進電機的扭力有直接關系,如果感覺你的步進電機扭力不足、丟步,可以加大4988板子的電流配置。驅動板是通過一個小的電位器來實現對輸出電流的配置的。可以通過用萬用表測量電位器中間管腳的電位。電位和電流的關系滿足下面的公式:Vref = I_TripMax= Vref/(5*Rs)(模塊的Rs電阻為R100).也就是如果你想配置電機工作電流為1A,則電位應該配置在0.5V
6)DRV8825可以驅動兩相六線或兩相無線的電機嗎?
可以,兩相連線按照問題3連接,將中間抽頭懸空即可。
7)電機停止轉動時會有滋滋的電流聲。
首先說明的是這是正常現象。步進電機的特點是走特定的角度而不是一直轉,所以步進電機都有一個參數,步距角。如果通過細分,可以最小走步距角/細分數的角度,比如步距角為1.8度的步進電機,采用16細分,最小可以走的角度是1.8/16=0.1125度。但由於這個角度非常小,並且不一定在電機物理所在的位置(1.8度為一個物理位置),所以步進電機停止時也需要通電,從而保證電機不會自動跳到物理步距角上。因為這個特性使得步進電機在靜止時會有電流聲,這屬於正常現象,不用擔心。
X-SOFT軟件生態,X-API文件如下。
參考自【開源&分享】蒙塵子 http://www.3dprinter-diy.com/forum.php?mod=viewthread&tid=1330
高級說明
步進電機主要參數
① 步進電機的相數:是指電機內部的線圈組數,目前常用的有兩相、三相、五相步進電機。
② 拍數:完成一個磁場周期性變化所需脈沖數或導電狀態,用m表示,或指電機轉過一個齒距角所需脈沖數。
③ 保持轉矩:是指步進電機通電但沒有轉動時,定子鎖住轉子的力矩。
④ 步距角:對應一個脈沖信號,電機轉子轉過的角位移。
⑤ 定位轉矩:電機在不通電狀態下,電機轉子自身的鎖定力矩。
⑥ 失步:電機運轉時運轉的步數,不等於理論上的步數。
⑦ 失調角:轉子齒軸線偏移定子齒軸線的角度,電機運轉必存在失調角,由失調角產生的誤差,采用細分驅動是不能解決的。
⑧ 運行矩頻特性:電機在某種測試條件下測得運行中輸出力矩與頻率關系的曲線 。
步進電機的特點
① 一般步進電機的精度為步距角的3-5%,且不累積;
② 步進電機外表允許的最高溫度取決於不同電機磁性材料的退磁點;
③ 步進電機的力矩會隨轉速的升高而下降( U=E+L(di/dt)+I*R),矩頻特性曲線
④ 空載啟動頻率:即步進電機在空載情況下能夠正常啟動的脈沖頻率,如果脈沖頻率高於該值,電機不能正常啟動,可能發生丟步或堵轉。
步進電機的起步速度一般在10~100RPM,伺服電機的起步速度一般在100~300RPM。根據電機大小和負載情況而定,大電機一般對應較低的起步速度。
⑤ 低頻振動特性:步進電動機以連續的步距狀態邊移動邊重復運轉。其步距狀態的移動會產生1 步距響應。
電機驅動電壓越高,電機電流越大,負載越輕,電機體積越小,則共振區向上偏移,反之亦然。步進電機低速轉動時振動和噪聲大是其固有的缺點,克服兩相混合式步進電機在低速運轉時的振
動和噪聲方法:
a. 通過改變減速比等機械傳動避開共振區;
b. 采用帶有細分功能的驅動器;
c. 換成步距角更小的步進電機;
d. 選用電感較大的電機
e. 換成交流伺服電機,幾乎可以完全克服震動和噪聲,但成本高;
f. 采用小電流、低電壓來驅動。
g. 在電機軸上加磁性阻尼器;
例程
本例程實現X-CTR100控制器對步進電機精確轉速控制。
由於步進電機特性,很難直接設置高轉速,一般需要加減速過程,本例程包括了步進電機加減速運行。
另外還包括零轉速和關閉使能狀態下的力矩情況。
硬件說明
硬件資源:
- 串口UART1
- DRV8825驅動器,轉接板(自備)
- 42步進電機
- 12V電源(3A)
硬件連接:
使用MicroUSB數據線連接X-CTR100 COM接口。
步進電機控制接口
STEP——PE9(RP接口)
DIR——PE4(RP接口)
EN——PE5(RP接口)
5V——5V(RP接口)
GND——GND(RP接口)
供電接口
12V外接供電電源連接到VIN1或VIN2,驅動器電源也連接至VIN1或VIN2,注意正負極。
步進電機連接轉接板,如下圖。
軟件生態
X-SOFT軟件生態,X-API文件如下。
ax_step.c——X-CTR100 步進電機操作源文件
ax_step.h——X-CTR100 步進電機操作頭文件
X-API接口函數如下:
void AX_STEP_Init(void); //STEP 步進電機初始化 void AX_STEP_SetEnable(uint8_t en); //STEP 步進電機使能控制 void AX_STEP_SetSpeed(int16_t speed); //STEP 步進電機轉速控制 |
控制方法采用硬件定時器TIM1實現,通過在定時器中斷中修改ARR周期,實現頻率控制,通過CCR1實現50%占空比控制。
速度控制AX_STEP_SetSpeed()接口函數實現。
/** * @簡 述 STEP 步進電機轉速控制 * @參 數 speed:電機轉速,脈沖頻率,單位20Hz,即1為20Hz,100為2000Hz,范圍±5000 * 實際電機轉速,與電機步距角,細分設置相關,例如1.8°電機,32細分,轉動一圈需要200x32個脈沖。 * @返回值 無 */ void AX_STEP_SetSpeed(int16_t speed) { if (speed > 0) { //設置方向 GPIO_SetBits(GPIOE, GPIO_Pin_4);
//計算速度 step_period = 50000 / speed; //20hz = 1S/
//初始化定時器 TIM1->ARR = step_period - 1; TIM1->CCR1 = step_period >> 1;//周期的一半 TIM_CtrlPWMOutputs(TIM1, ENABLE); //MOE 主輸出使能 TIM_Cmd(TIM1, ENABLE); } else if (speed < 0) { //設置方向 GPIO_ResetBits(GPIOE, GPIO_Pin_4);
//計算速度 step_period = 50000 / (-speed);
//初始化定時器 TIM1->ARR = step_period - 1; TIM1->CCR1 = step_period >> 1;//周期的一半 TIM_CtrlPWMOutputs(TIM1, ENABLE); //MOE 主輸出使能 TIM_Cmd(TIM1, ENABLE); } else { TIM_CtrlPWMOutputs(TIM1, DISABLE); TIM_Cmd(TIM1, DISABLE); } } |
軟件說明
主程序,實現步進電機變速正轉、變速反轉、和停止,串口有提示信息輸出,主程序代碼如下。
int main(void) { int16_t i;
//X-CTR100初始化 AX_Init(115200); printf("***X-CTR100 步進電機控制例程***\r\n\r\n");
//模塊初始化及配置 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); AX_STEP_Init(); //初始化步進電機 AX_STEP_SetEnable(1);
while (1) { printf("*步進電機正方向轉動測試\r\n\r\n"); //加速 for (i = 0; i <= 2000; i += 2) { AX_STEP_SetSpeed(i); AX_Delayms(2); } //恆速 AX_Delayms(3000); //減速 for (i = i; i >= 0; i -= 2) { AX_STEP_SetSpeed(i); AX_Delayms(2); } AX_Delayms(1000);
printf("*步進電機反方向轉動測試\r\n\r\n"); //加速 for (i = 0; i <= 2000; i += 2) { AX_STEP_SetSpeed(-i); AX_Delayms(2); } //恆速 AX_Delayms(3000); //減速 for (i = i; i >= 0; i -= 2) { AX_STEP_SetSpeed(-i); AX_Delayms(2); } AX_Delayms(1000);
printf("*步進電機零轉速和關閉使能測試\r\n"); printf("*零轉速,有維持力矩\r\n"); AX_Delayms(3000); printf("*關閉使能,無維持力矩\r\n\r\n"); AX_STEP_SetEnable(0); AX_Delayms(3000); AX_STEP_SetEnable(1);
} } |
實現效果
打開X-Assistant軟件,可以看到電機運行提示信息,DRV8825調節至32細分。
電機首先加速正轉,后恆速運行,后減速到停止;再次電機反轉,后恆速,后停止。
然后電機停止轉動,此時保持維持力矩;最后關閉使能,維持力矩消失,電流減小。
總結
本文實現了X-CTR100控制器控制步進電機精確轉動,實際步進電機系統因項目不同差異較大。
有些步進電機系統的控制遠遠比該例程復雜,一般包括精確位置閉環控制,相應速度控制,S曲線控制等。
本文采用基礎框架是步進電機通用編程框架,復雜功能可以根據項目需要在此基礎上添加。
參考
http://www.3dprinter-diy.com/forum.php?mod=viewthread&tid=1330
https://reprap.org/wiki/A4988_vs_DRV8825_Chinese_Stepper_Driver_Boards
雷賽科技·步進電機及驅動器知識講座