一、MM32SPIN360C 電機開發板介紹
簡介
如圖(1),MM32SPIN360C 電機開發板以 Mindmotion 的專用 MCU —— MM32SPIN360C 為主控制器,具備霍爾傳感器檢測和反電動勢檢測功能。適用于低壓場合,可廣泛用于工業或者民用領域的三相無刷永磁電機驅動器,如電動工具等。
主控制器 MM32SPIN360C 是 ARM Cortex-M0 的 32 位微控制器,內置 5V 輸出的 LDO 穩壓器(Input : 7~13.5V),內置 3 組具有自舉二極管的 N 溝道半橋柵極驅動器(7~48V、1A Sink、1A Source),以及 3 個比較器和 3 個運算放大器等等。MM32SPIN360C 的具體參數和用法請參考靈動微的官網(https://www.mindmotion.com.cn/)上的數據手冊和用戶手冊。
![poYBAGQuxVqAD8srAAhDllHuU5I930.png](https://file.elecfans.com/web2/M00/9D/2F/poYBAGQuxVqAD8srAAhDllHuU5I930.png)
![](https://file.elecfans.com//web2/M00/9D/B4/pYYBAGQu0bOADdW3AAAA7uGMIRU236.png)
圖(1)
電路板圖解
如圖(2)為電路板正面的圖解,開發板帶有 10KΩ 可調電阻器,可用于調節電機的轉速。帶有 UART/LIN 通訊接口,以及兩種形式的 JTAG/SWD 接口。電源輸入電壓為 12~36V,可以有兩種接入方式(DC-JACK 或者 接線端子)。
![pYYBAGQuxWKASZVqAAcJ5Y6C45s843.png](https://file.elecfans.com/web2/M00/9D/B2/pYYBAGQuxWKASZVqAAcJ5Y6C45s843.png)
![](https://file.elecfans.com//web2/M00/9D/32/poYBAGQu0bOAMTC7AAAA7uGMIRU223.png)
圖(2)
原理圖介紹
圖(3)是電機驅動部分的原理圖。由于 MM32SPIN360C 這顆 MCU 內自帶預驅,所以可以直接驅動 MOS 管(PXN012-60QL),簡化了電機驅動電路。
![poYBAGQuxWuAEf8LAAK8R4aQ0So646.png](https://file.elecfans.com/web2/M00/9D/30/poYBAGQuxWuAEf8LAAK8R4aQ0So646.png)
![](https://file.elecfans.com//web2/M00/9D/B4/pYYBAGQu0bOATlY0AAAA7uGMIRU662.png)
圖(3)
圖(4)是反饋電路,可以通過 JP4~JP8,JP10~JP12 選擇霍爾傳感器方式反饋或者是反電動勢方式反饋。如果選擇霍爾傳感器方式,則只需要將 JP6、JP7、JP8 的 1-2 腳短接。
![pYYBAGQuxXSAMvxSAABi8nVyZJU617.png](https://file.elecfans.com/web2/M00/9D/B2/pYYBAGQuxXSAMvxSAABi8nVyZJU617.png)
![](https://file.elecfans.com//web2/M00/9D/32/poYBAGQu0bSAON01AAAA7uGMIRU498.png)
圖(4)
二、 驅動軟件簡介
啟動電機
此驅動軟件首先通過 12-bit ADC 采集可調電阻器的電阻值,確定電機的轉速。當電機速度的 PWM 波形占空比大于 5% 才開始啟動電機。電機啟動之前通過讀取 U/V/W 的 3 個霍爾傳感器的值確定電機轉子位置,進而根據轉子位置來確定 U/V/W 的上電順序。
//RM 旋鈕啟動與調速
do {
hwAdcValue = GetAdcAverage(5); // 采集可調變阻器的電壓值
if (0xffff == hwAdcValue) {
break;
} else {
g_tMotor.tDuty = hwAdcValue * 100 / 4095; // 設置 PWM 占空比
SET_DUTY_U(g_tMotor.tDuty);
SET_DUTY_V(g_tMotor.tDuty);
SET_DUTY_W(g_tMotor.tDuty);
if ((g_tMotor.tDuty > 5) && (g_tMotor.tMotorState == STOP)) {
g_tMotor.tMotorState = START; // 如果電機速度的波形占空比大于 5%,則啟動電機
}
}
} while(0);
霍爾傳感器信號的采集
軟件中包含 3 種霍爾傳感器信號采集方式:主循環、EXTI、Timer 。
主循環 方式是在主函數的 while(1) 循環里讀取 U/V/W 這 3 個霍爾傳感器對應的 MCU 管腳(PA0/PA1/PA2)上的電平, 進而驅動換相。
EXTI 方式是設置 U/V/W 這 3 個霍爾傳感器對應的 MCU 管腳(PA0/PA1/PA2)為外部中斷,雙邊沿觸發。當任一 HALL 線上電平發生變化時,都會有對應中斷線產生中斷,在 EXTI 中斷服務函數中進行 HALL 引腳電平檢測,進而驅動換相。
Timer 方式是設置 U/V/W 這 3 個霍爾傳感器對應的 MCU 管腳(PA0/PA1/PA2)為定時器輸入腳 ( CC1、CC2、CC3)。使用這 3 個定時器輸入腳通過一個異或門連接到 TI1 輸入通道;當捕獲到 CC1、CC2、CC3 上有引腳發生電平變化時,由于異或門的存在, TI1 上產生一個跳變沿;經過輸入濾波器和邊沿檢測器后傳輸給 TI1F_ED ,由于配置了 TIM 的觸發源為 TI1F_ED 和使能了觸發中斷,這里會進入觸發中斷,在觸發中斷中我們可以判斷霍爾狀態的有效值,根據霍爾狀態的有效值控制電機對應的繞組供電,進而驅動電機旋轉。
這 3 種方式可以通過 hall.h 中的如下定義來選擇:
#define HALL_POLLING_MODE 0 // 1:采用 主循環 方式采集霍爾信號
#define HALL_TIM_MODE 1 // 1:采用 Timer 方式采集霍爾信號
#define HALL_EXTI_MODE 0 // 1:采用 EXTI 方式采集霍爾信號
電機堵轉檢測
驅動軟件中開啟了系統節拍定時器(systick),每 1 毫秒中斷一次。此定時器用于檢測電機運轉時堵轉 2 秒之后,停止電機運行。
void Systick_Callback(void)
{
if(RUN == g_tMotor.tMotorState) {
g_tMotor.tCount.hwTimeCount ++;
if(g_tMotor.tCount.hwTimeCount > 2000) { // 2s超時,電機卡住不運轉超過2s時間
GATE_DRIVER_DISABLE();
BLDC_UVW_DISABLE();
g_tMotor.tMotorState = STOP;
g_tMotor.tMotorErr = LOCKED_ERR;
g_tMotor.tCount.hwTimeCount = 0;
}
}
}
三、調試開發板
接線方法
開發板、BLDC 電機、調試器的接線圖如圖(8)所示。
![poYBAGQuxYaAOUIKAAgTaDiYa1w363.png](https://file.elecfans.com/web2/M00/9D/30/poYBAGQuxYaAOUIKAAgTaDiYa1w363.png)
![](https://file.elecfans.com//web2/M00/9D/B4/pYYBAGQu0bSAHw5RAAAA7uGMIRU888.png)
圖(8)
調試器的設置
開發板采用 SWD 接口調試。調試器可以采用靈動微官方的調試下載器,也可以采用適用于 ARM Cortex-M 核的調試器,比如圖(8)用的就是 WPI 自制的調試器。
如果使用靈動微官方的調試器,則需要從靈動微官網上下載調試器的驅動(https://www.mindmotion.com.cn/support/development_tools/debug_and_programming_tools/)。 并在 keil 的調試設置中,選擇 MM32-LINK Debugger ,如圖(9)所示。
![](https://file.elecfans.com//web2/M00/9D/32/poYBAGQu0bSAY3shAAAA7uGMIRU809.png)
![pYYBAGQuxY-Ac5ISAAGPy2oKlXc641.png](https://file.elecfans.com/web2/M00/9D/B2/pYYBAGQuxY-Ac5ISAAGPy2oKlXc641.png)
圖(9)
我這里使用的是 WPI 自制的調試器,這種調試器免驅,在 keil 的調試設置中,選擇 CMSIS-DAP Debugger ,如圖(10)所示。
![poYBAGQuxZ-AUV9EAAGR5OTqbTE925.png](https://file.elecfans.com/web2/M00/9D/30/poYBAGQuxZ-AUV9EAAGR5OTqbTE925.png)
![](https://file.elecfans.com//web2/M00/9D/B5/pYYBAGQu0bWAIi8qAAAA7uGMIRU851.png)
圖(10)
開發板上的設置
開發板上的跳線設置如圖(11)所示,紅色標記的地方需要接跳線帽,其他位置可以忽略。
?
![](https://file.elecfans.com//web2/M00/9D/32/poYBAGQu0bWAXW9LAAAA7uGMIRU815.png)
圖(11)
代碼下載 & 運行
將代碼下載到開發板上之后,旋轉可調電阻器的旋鈕,電機啟動。可調變阻器的阻值越大,電機的轉速越高。
四、總結
MM32SPIN360C 電機開發板上的主控制器(MM32SPIN360C)內置預驅,所以 MCU 只需要外接 6 個 MOS 管就可以驅動 BLDC 電機,整個驅動電路比較簡單。
本文檔介紹了如何使用 MM32SPIN360C 電機應用開發板驅動低壓有感BLDC 電機的方法。 由于有霍爾傳感器反饋電機轉子的位置,所以在電機啟動和運行的過程比較平穩,而且不需要算法,驅動代碼比較簡單。
此外,此開發板也可以驅動有感/無感正弦波電機,這個驅動的方法將在后面的博文中介紹,敬請期待。
-
單片機
+關注
關注
6043文章
44624瀏覽量
638676 -
電機控制
+關注
關注
3540文章
1897瀏覽量
269272 -
無刷電機
+關注
關注
58文章
847瀏覽量
46052 -
靈動微
+關注
關注
4文章
174瀏覽量
22724 -
MM32
+關注
關注
1文章
106瀏覽量
813
發布評論請先 登錄
相關推薦
基于靈動MM32SPIN560C的低壓無刷電機應用方案
2019靈動微電子MM32 MCU智能之“芯”咖啡沙龍展示方案(一)——基于MM32SPIN360C的手持式吸塵器
靈動微課堂 (第113講) | 基于MM32 MCU防疫產品應用解決方案分享 —— 便攜冰箱
關于電機控制專用國產32位單片機MM32SPIN360C
靈動微MM32SPIN25PF產品的特性介紹
靈動微MM32SPIN360C獲選2020年度國產MCU評選
![<b class='flag-5'>靈動</b><b class='flag-5'>微</b><b class='flag-5'>MM32SPIN360C</b>獲選2020年度國產MCU評選](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
32位單片機MM32SPIN360C現貨供應
靈動微電動工具專用單片機MM32SPIN360C
基于MM32SPIN360C芯片的低壓無刷電機設計
昂科燒錄器支持MindMotion靈動微電子的32位微控制器MM32SPIN360C
![昂科燒錄器支持MindMotion<b class='flag-5'>靈動</b>微電子的32位微控制器<b class='flag-5'>MM32SPIN360C</b>](https://file1.elecfans.com/web2/M00/FF/FB/wKgZomardGSAUd-OAADUajAmgAM377.png)
評論