概述
STSPIN220 是一款步進電機驅動器,在一個小型 VFQFPN 3 x 3 x 1.0 mm 封裝中集成了控制邏輯和低 RDS(開啟)功率級。該套件提供一整套保護功能,包括過電流、過熱和短路保護,并且可以強制進入零消耗狀態(tài),從而顯著延長電池壽命。 本文檔的目標是提供關于使用STM32CubeMX驅動低壓步進電機驅動器STSPIN220的詳盡信息和操作指南。通過本文檔,將深入了解如何利用STM32CubeMX來配置電機驅動器,以及如何實現(xiàn)對步進電機的精確控制和運動。
最近在弄ST的課程,需要樣片的可以加群申請:615061293 。 
樣品申請
[https://www.wjx.top/vm/PpC1kRR.aspx]
視頻教學
[https://www.bilibili.com/video/BV1Db8gzMEC7]
代碼下載
[https://download.csdn.net/download/qq_24312945/91621943]
硬件準備
首先需要準備一個開發(fā)板,這里我準備的是自己繪制的開發(fā)板,需要的可以進行申請。 主控為STM32H503CBT6,驅動器為STSPIN220

參考程序
https://github.com/CoreMaker-lab/STSPIN220
https://gitee.com/CoreMaker/STSPIN220
功能框圖
STSPIN220 是一個集成了控制邏輯和功率級的微步進驅動芯片,用于驅動雙極型步進電機。下圖圖展示了芯片如何接收指令并控制兩相電機的四個輸出端(OUTA1/A2,OUTB1/B2)。

STSPIN220所有功能
STSPIN220作為一款專為步進電機而設計的芯片,具備多項卓越特性,為電機控制領域提供了高度可靠的解決方案: 寬范圍工作電壓: STSPIN220支持廣泛的工作電壓范圍,從1.8V至10V,這意味著它適用于各種不同電源供應場景,從低電壓到標準電壓范圍。 高輸出電流能力: 最大輸出電流1.3 Arms使STSPIN220能夠驅動具有較高電流需求的步進電機,確保電機能夠以足夠的力量進行運動。 低RDS(ON)值: 芯片的高低側電流傳感器及MOSFET具有低RDS(ON)值,僅為0.4Ω(典型值)。這將減少功耗和熱量損耗,提升電機的效率和性能。 精細的微步進控制: STSPIN220能夠實現(xiàn)每次步進高達1/256的微步進,這使得步進電機的運動變得更加平滑和精準,適用于需要高精度控制的應用。 電流控制通過可編程關斷時間: 芯片利用可編程關斷時間來實現(xiàn)電流控制,這可以根據(jù)應用需求調整電機的電流,以獲得最佳性能。 全套保護機制: STSPIN220提供全面的保護機制,包括非耗散性過電流保護、短路保護和熱關斷。這些保護機制確保在異常情況下電機驅動器和步進電機都能夠安全運行。 極低待機耗電量: 該芯片的待機模式耗電量不足80 nA,這使得它非常適合在需要節(jié)能和延長電池壽命的應用中使用。
綜上所述,STSPIN220以其廣泛的工作電壓范圍、高輸出電流能力、微步進控制、電流控制方式、保護機制以及低待機耗電量,為步進電機驅動提供了一種先進的解決方案。無論是在性能、效率還是電源管理方面,STSPIN220都為步進電機應用帶來了出色的表現(xiàn)和可靠性。

基礎配置
對于小電流電機,R10改為10K以下,這里設置為5.1k

REF
REF為參考電壓,最大范圍是-0.3-1V

電流配置
下圖有配置公式。

可以看到R_SNS為0.68R,若設置200mA,那么V_REF=0.68R*200MA=136mV,和上面說的V_REF=136mV相符。

細分配置
STSPIN最高提供了256細分的操作,具體配置如下所示。

IO配置
查看原理圖,主要有6個IO需要配置。 分別是STBY、EN、MODE1、MODE2、MODE3、MODE4。


IO說明如下所示。 其中ENFAULT為使能管腳,需要配置為開漏輸出。 使能高電平時候STSPIN220正常工作。

輸入引腳說明

輸出端子說明

細分配置
下圖為設置細分示意圖。


啟動時序圖如下所示,具體有如下幾個步驟。
- 上電:首先,將驅動器供電,即將VS供電電壓連接到驅動器。但是保持STBY和EN/FAULT輸入都處于低電平狀態(tài)。
- 設置MODEx輸入:根據(jù)目標步進分辨率(可以參考Table 1),設置MODEx輸入引腳的狀態(tài)。這些引腳決定了步進電機的微步運動模式。
- 等待:等待至少1微秒(t MODEsu 最小時間)。這個等待時間是確保MODEx輸入被穩(wěn)定設置的時間。
- 將STBY引腳置高:將STBY引腳設置為高電平。這將導致之前設置的MODEx配置在設備內部被鎖存。
- 等待:再等待至少100微秒(t MODEho 最小時間)。這個等待時間是確保MODEx配置被正確鎖存的時間。
- 啟用電源級:釋放EN/FAULT輸入,使電源級開始工作。這意味著驅動器已經準備好執(zhí)行步進操作。 通過按照這個推薦的上電順序和設置過程,您可以確保在驅動器開始工作之前,各個輸入的狀態(tài)都穩(wěn)定,并且微步模式配置正確地被鎖存,從而實現(xiàn)步進電機的精確控制。這個過程有助于減少潛在的啟動問題和不穩(wěn)定性。

具體配置如下所示。 
生成STM32CUBEMX
用STM32CUBEMX生成例程,這里使用MCU為STM32H503CB。 配置時鐘樹,配置時鐘為250M。

啟動配置
拉高 EN/FAULT 開始運行 。

STBY配置

MODE1配置

MODE2配置

MODE3配置
初始階段為 MODE3 微步設定,之后為 Step Clock 輸入 。

MODE4配置

定時器配置
STM32CUBEMX中,選擇定時器1,并將其配置為PWM輸出模式。確保選擇了正確的定時器通道(通道1)。

配置定時器1的時鐘源和預分頻因子。根據(jù)應用的要求和系統(tǒng)時鐘頻率,選擇適當?shù)臅r鐘源和預分頻因子,以獲得所需的脈沖頻率。將定時器1的時鐘源和預分頻因子配置為適合您的應用的值。 PWM頻率計算如下所示。

在上述配置中,將定時器1的預分頻系數(shù)設置為250-1,自動重載值設置為1000-1。根據(jù)這些配置,PWM的頻率可以計算為250,000,000 / ((250-1+1) * (1000-1+1)) = 1000Hz,即1kHz。 在定時器中,通道的 "pulse"(脈沖)是指定時器輸出的信號的一種特性。每個定時器通道都可用于生成脈沖信號,而 "pulse" 通常指的是單個脈沖的持續(xù)時間。在這種設置中,我們將脈沖的占空比配置為50%,因此設置為500-1。

STSPIN220驅動
STSPIN220.c 和 STSPIN220.h 文件是用于控制 STSPIN220 步進電機驅動器的 HAL 底層驅動代碼。

STSPIN220使能、低功耗、方向初始化如下所示。
//使能操作 1使能0失能
void STSPIN220_enable(uint8_t enable)
{
if(enable)
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, 1);
else
HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, 0);
}
//方向設置 0反1正
void STSPIN220_setDirection(uint8_t direction)
{
if(direction)
HAL_GPIO_WritePin(MODE4_GPIO_Port, MODE4_Pin, 1);
else
HAL_GPIO_WritePin(MODE4_GPIO_Port, MODE4_Pin, 0);
}
//低功耗模式 1使能0失能
void STSPIN220_Stby(uint8_t stby)
{
if(stby)
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, 0);
else
HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, 1);
}
在main.c中添加對應頭函數(shù)。
/* USER CODE BEGIN Includes */
#include "STSPIN220.h"
/* USER CODE END Includes */
變量定義。
/* USER CODE BEGIN 0 */
// 初始化 MODE3 引腳(即 STCK),用作步進脈沖輸出
void MX_GPIO_Init_mode3(void);
uint16_t STSPIN220_PwmNum; // 控制電機旋轉步數(shù)(PWM脈沖數(shù)量)
uint8_t STSPIN220_flag = 0; // PWM計數(shù)完成標志
uint8_t STSPIN220_Dir_flag = 0; // 電機方向標志:0反向,1正向
/* USER CODE END 0 */
初始化mode
由于需要對mode進行初始化,主要操作為4個IO口,所以需要先對mode3管腳進行IO初始化為普通IO,后續(xù)切換為TIM模式。
/* USER CODE BEGIN 4 */
/**
* @brief 初始化 MODE3(STCK)引腳為輸出模式,用于產生步進脈沖
*/
void MX_GPIO_Init_mode3(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 開啟 GPIOA 時鐘
__HAL_RCC_GPIOA_CLK_ENABLE();
// 設置初始電平為低
HAL_GPIO_WritePin(MODE3_GPIO_Port, MODE3_Pin, GPIO_PIN_RESET);
// 配置 MODE3 為推挽輸出,無上拉下拉,低速
GPIO_InitStruct.Pin = MODE3_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(MODE3_GPIO_Port, &GPIO_InitStruct);
}
/* USER CODE END 4 */
同時定時器初始化需要關閉。

在初始化完畢mode3之后需要進行en和stby設置,具體如下所示。
/* USER CODE BEGIN 2 */
MX_GPIO_Init_mode3();
HAL_Delay(100);
STSPIN220_SetStepMode(0);//mode1-mode4都關閉
STSPIN220_enable(0);//使能操作 1使能0失能
STSPIN220_Stby(1);//低功耗模式 1開啟低功耗0關閉低功耗
HAL_Delay(100);
STSPIN220_SetStepMode(2);//細分操作
STSPIN220_Stby(0);//低功耗模式 1開啟低功耗0關閉低功耗,加載mode
HAL_Delay(100);//等待電平穩(wěn)定
STSPIN220_setDirection(1);//0反1正
HAL_Delay(100);//等待電平穩(wěn)定
STSPIN220_enable(1);//使能操作 1使能0失能
HAL_Delay(100);
MX_TIM1_Init();
HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_1); // 啟動 TIM1 通道1,PWM帶中斷
/* USER CODE END 2 */
審核編輯 黃宇
-
電機驅動器
+關注
關注
16文章
884瀏覽量
66833
發(fā)布評論請先 登錄
低壓步進器電機驅動器STSPIN220開發(fā)(2)----定時器中斷產生指定數(shù)量脈沖
意法半導體發(fā)布STSPIN9P系列75V電機驅動芯片
DRV8886AT步進電機驅動器:特性、應用與設計要點
DRV8434A - Q1汽車步進驅動器:技術剖析與設計指南
HR4988微特步進電機驅動器:高效便捷的驅動解決方案
STSPIN958可擴展全橋驅動器技術解析與應用設計
STSPIN32G4智能驅動器技術解析:面向下一代智能執(zhí)行器的完整解決方案
?基于STSPIN32G0A1的無刷電機驅動器評估板技術解析
?STSPIN32G0系列無刷電機控制器技術解析
低壓步進器電機驅動器STSPIN220開發(fā)(1)----驅動STSPIN220
評論