套件概述
本文檔的目標是提供關于使用STM32CubeMX驅動低壓步進電機驅動器STSPIN220的詳盡信息和操作指南。通過本文檔,將深入了解如何利用STM32CubeMX來配置電機驅動器,以及如何實現對步進電機的精確控制和運動。
最近在弄ST的課程,需要樣片的可以加群申請:615061293 。
樣品申請
https://www.wjx.top/vm/PpC1kRR.aspx
視頻教學
https://www.bilibili.com/video/BV1Ju4y1R7mA/
完整代碼下載
https://download.csdn.net/download/qq_24312945/88184732
STSPIN220描述
STSPIN220是一款專為步進電機設計的高度集成型芯片,其獨特的特性和功能使其在小型VFQFPN 3 x 3 x 1.0 mm封裝中融合了控制邏輯和低RDS(on)功率級,為電機控制領域提供了出色的解決方案。
集成的控制邏輯和低RDS(on)功率級: STSPIN220集成了高效的控制邏輯和低RDS(on)功率級,這意味著它能夠以高效的方式驅動步進電機,從而實現更低的能耗和更高的性能。
微步進分辨率和PWM電流控制: 該芯片內置的控制器充分利用了固定關斷時間和高達1/256步進的微步進分辨率,以實現精準的PWM電流控制。這意味著可以實現更加精細的步進電機運動控制,從而滿足不同應用的需求。
電池供電和零功耗模式: STSPIN220的設計兼顧了電池供電場景,可以強制進入零功耗狀態,從而在電池供電情況下延長電池的使用壽命。這在移動設備和便攜式應用中尤為有用。
全套保護機制: 該芯片提供了全面的保護機制,包括過電流保護、過溫保護和短路保護等。這些保護機制能夠確保步進電機在各種異常情況下保持穩定和安全運行,有效保護系統的可靠性。
綜上所述,STSPIN220作為一款專為步進電機設計的芯片,在小型封裝中融合了多種先進功能。它通過集成的控制邏輯、微步進分辨率和全套保護機制,為步進電機應用提供了高效、精確和安全的驅動解決方案,適用于各種應用領域,從工業自動化到便攜式設備。無論是節能、精密控制還是延長電池壽命,STSPIN220都能夠為項目帶來可靠的性能和出色的效果。
STSPIN220所有功能
STSPIN220作為一款專為步進電機而設計的芯片,具備多項卓越特性,為電機控制領域提供了高度可靠的解決方案:
寬范圍工作電壓: STSPIN220支持廣泛的工作電壓范圍,從1.8V至10V,這意味著它適用于各種不同電源供應場景,從低電壓到標準電壓范圍。
高輸出電流能力: 最大輸出電流1.3 Arms使STSPIN220能夠驅動具有較高電流需求的步進電機,確保電機能夠以足夠的力量進行運動。
低RDS(ON)值: 芯片的高低側電流傳感器及MOSFET具有低RDS(ON)值,僅為0.4Ω(典型值)。這將減少功耗和熱量損耗,提升電機的效率和性能。
精細的微步進控制: STSPIN220能夠實現每次步進高達1/256的微步進,這使得步進電機的運動變得更加平滑和精準,適用于需要高精度控制的應用。
電流控制通過可編程關斷時間: 芯片利用可編程關斷時間來實現電流控制,這可以根據應用需求調整電機的電流,以獲得最佳性能。
全套保護機制: STSPIN220提供全面的保護機制,包括非耗散性過電流保護、短路保護和熱關斷。這些保護機制確保在異常情況下電機驅動器和步進電機都能夠安全運行。
極低待機耗電量: 該芯片的待機模式耗電量不足80 nA,這使得它非常適合在需要節能和延長電池壽命的應用中使用。
綜上所述,STSPIN220以其廣泛的工作電壓范圍、高輸出電流能力、微步進控制、電流控制方式、保護機制以及低待機耗電量,為步進電機驅動提供了一種先進的解決方案。無論是在性能、效率還是電源管理方面,STSPIN220都為步進電機應用帶來了出色的表現和可靠性。
基礎配置
對于小電流電機,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正常工作。
下圖為設置細分示意圖。STBY是STSPIN220驅動器中的一種狀態,表示待機狀態(Standby)。在待機狀態下,驅動器可能會降低功耗,停止執行步進操作,以便在不需要進行步進電機運動時節省能源。當驅動器從待機狀態退出時,會獲取MODE輸入的值。需要注意的是MODE1和MODE2都為低電平時候強制為全步模式。
啟動時序圖如下所示,具體有如下幾個步驟。
- 上電:首先,將驅動器供電,即將VS供電電壓連接到驅動器。但是保持STBY和EN/FAULT輸入都處于低電平狀態。
- 設置MODEx輸入:根據目標步進分辨率(可以參考Table 1),設置MODEx輸入引腳的狀態。這些引腳決定了步進電機的微步運動模式。
- 等待:等待至少1微秒(t MODEsu 最小時間)。這個等待時間是確保MODEx輸入被穩定設置的時間。
- 將STBY引腳置高:將STBY引腳設置為高電平。這將導致之前設置的MODEx配置在設備內部被鎖存。
- 等待:再等待至少100微秒(t MODEho 最小時間)。這個等待時間是確保MODEx配置被正確鎖存的時間。
- 啟用電源級:釋放EN/FAULT輸入,使電源級開始工作。這意味著驅動器已經準備好執行步進操作。
通過按照這個推薦的上電順序和設置過程,您可以確保在驅動器開始工作之前,各個輸入的狀態都穩定,并且微步模式配置正確地被鎖存,從而實現步進電機的精確控制。這個過程有助于減少潛在的啟動問題和不穩定性。
具體配置如下所示。
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);
}
定時器配置
STM32CUBEMX中,選擇定時器1,并將其配置為PWM輸出模式。確保選擇了正確的定時器通道(通道4)。
配置定時器1的時鐘源和預分頻因子。根據應用的要求和系統時鐘頻率,選擇適當的時鐘源和預分頻因子,以獲得所需的脈沖頻率。將定時器1的時鐘源和預分頻因子配置為適合您的應用的值。
PWM頻率計算如下所示。
在上述配置中,將定時器1的預分頻系數設置為48-1,自動重載值設置為1000-1。根據這些配置,PWM的頻率可以計算為48,000,000 / ((48-1+1) * (1000-1+1)) = 1000Hz,即1kHz。
在定時器中,通道的 "pulse"(脈沖)是指定時器輸出的信號的一種特性。每個定時器通道都可用于生成脈沖信號,而 "pulse" 通常指的是單個脈沖的持續時間。在這種設置中,我們將脈沖的占空比配置為50%,因此設置為500-1。
初始化mode
由于需要對mode進行初始化,主要操作為4個IO口,所以需要先對mode3管腳進行IO初始化為普通IO,后續切換為TIM模式。
/* USER CODE BEGIN 4 */
void MX_GPIO_Init_mode3(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(mode3_GPIO_Port, mode3_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : PAPin PAPin PAPin PAPin
PAPin */
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(GPIOA, &GPIO_InitStruct);
}
/* USER CODE END 4 */
注意需要聲明一下函數。
/* USER CODE BEGIN 0 */
void MX_GPIO_Init_mode3(void);
/* USER CODE END 0 */
同時定時器初始化需要關閉。
在初始化完畢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);//等待電平穩定
STSPIN220_setDirection(1);//0反1正
HAL_Delay(100);//等待電平穩定
STSPIN220_enable(1);//使能操作 1使能0失能
HAL_Delay(100);
MX_TIM1_Init();
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_4);
/* USER CODE END 2 */
審核編輯:湯梓紅
-
驅動器
+關注
關注
51文章
7570瀏覽量
143628 -
步進電機
+關注
關注
149文章
2945瀏覽量
146333 -
stm32cubemx
+關注
關注
5文章
269瀏覽量
14484
發布評論請先 登錄
相關推薦
評論