基于 STM32F303(內(nèi)置運(yùn)放 PGA 比較器):位置控制
使用 EVAL-SERVOM1(基于 303CCT6 內(nèi)置運(yùn)放 PGA 比較器)三電阻 FOC 低壓伺服板
公眾號(hào):游名科技
ST 最新電機(jī)庫(kù)已支持位置控制(電機(jī)要帶增量編碼器,目前最大支持 14 位編碼器):
位置控制函數(shù):
void MC_ProgramPositionCommandMotor1( float fTargetPosition, float fDuration );
其中:
fTargetPosition:控制角度,單位為弧度,轉(zhuǎn)一圈需要 2PI=2*3.1415926;
fDuration:時(shí)間,單位 mS,從當(dāng)前位置到達(dá)目標(biāo)位置所需時(shí)間;
參考測(cè)試程序如下:
if(RunFlag)
{
//High Speed
// MC_ProgramPositionCommandMotor1(MotorPiAi*3.14,0.1);
// HAL_Delay(1000);
//
// MC_ProgramPositionCommandMotor1(-MotorPiAi*3.14,0.1);
// HAL_Delay(1000);
MC_ProgramPositionCommandMotor1(MotorPiAi*4,1);
//MotorPiAi=3.1415926,2*3.14 為 1 圈,轉(zhuǎn)半圈*4,1S
MC_AcknowledgeFaultMotor1(); // 清除電機(jī)錯(cuò)誤
MC_StartMotor1(); // 電機(jī)啟動(dòng)
HAL_Delay(1500); // 延時(shí) 1.5S
MC_ProgramPositionCommandMotor1(-MotorPiAi*2,1);
//MotorPiAi=3.1415926,2*3.14 為 1 圈,,反轉(zhuǎn)半圈*2,1S
HAL_Delay(1500); // 延時(shí) 1.5S
MC_AcknowledgeFaultMotor1(); // 清除電機(jī)錯(cuò)誤
MC_StartMotor1(); // 電機(jī)啟動(dòng)
}
else
{
MC_StopMotor1(); // 電機(jī)停止
}
用默認(rèn)生成的程序,假設(shè)每次控制轉(zhuǎn) 3.14 角度,會(huì)發(fā)些無法一直轉(zhuǎn)(而正反轉(zhuǎn) 3.14 角度可以),那是因?yàn)槟J(rèn)程序控制的是絕對(duì)角度,需要自己修改;
函數(shù)原型如下:
__weak void MCI_ExecPositionCommand( MCI_Handle_t * pHandle, float FinalPosition, float Duration )
{
pHandle->pFOCVars->bDriveInput = INTERNAL;
float currentPositionRad = (float)(SPD_GetMecAngle(STC_GetSpeedSensor(pHandle->pSTC))) / RADTOS16;
if (Duration > 0)
{
TC_MoveCommand(pHandle->pPosCtrl, currentPositionRad, FinalPosition - currentPositionRad, Duration);
}
else
{
TC_FollowCommand(pHandle->pPosCtrl, FinalPosition);
}
pHandle->LastModalitySetByUser = STC_TORQUE_MODE;
}
將
TC_MoveCommand(pHandle->pPosCtrl,currentPositionRad, FinalPosition - currentPositionRad, Duration);
修改為:
TC_MoveCommand(pHandle->pPosCtrl,currentPositionRad, FinalPosition , Duration);即可
工作電壓:10 到 30V;
電流:0 到 10A;
支持電機(jī):BLDC 電機(jī),PMSM 電機(jī),有刷電機(jī)等;
主芯片:STM32F303(采用內(nèi)置運(yùn)放、PGA、比較器);
板載接口:
按鍵接口;
仿真調(diào)試接口;
TTL 電平串口接口;
CAN 接口;
DA 接口;
霍爾接口及增量編碼器接口;
SPI 接口絕對(duì)值編碼器接口;
剩余 IO 接口基本引出;
提供資料截圖:
三:用 STMStudio 軟件通過 ST LINK 看變量波形篇
1、首先安裝 STMStudio 軟件(略);
2、打開 STMStudio 軟件如下圖:
3、在 Display Variables 界面區(qū)域點(diǎn)擊鼠標(biāo)右鍵選擇“Import”,打卡后如下圖:
4、點(diǎn)擊上圖省略號(hào)選擇 axf 文件(導(dǎo)入 MDK 或 IAR 項(xiàng)目工程目錄下 axf 文件)
5、選中 axf 文件并點(diǎn)擊 Select,點(diǎn)擊后出現(xiàn)錯(cuò)誤,點(diǎn) OK 即可
6、導(dǎo)入后如下圖所示:
7、找到或輸入相關(guān)變量:這里輸入 IA
8、選擇 IA 和 IB 變量,并點(diǎn)擊 Import 導(dǎo)入,然后點(diǎn)擊 close 關(guān)閉
導(dǎo)入變量后如下圖所示:
9、點(diǎn)擊 Run 并選擇 Start S 按鈕
10、選中變量點(diǎn)擊右鍵 send to 到顯示菜單
11、顯示后數(shù)據(jù)波形如下圖所示(數(shù)據(jù)波形不好需要調(diào)整):
12、退出、關(guān)閉軟件等(略)
二、磁編碼器安裝篇
一、教程基礎(chǔ)篇
EVAL-SERVOM1(基于 303CCT6 內(nèi)置運(yùn)放 PGA 比較器)三電阻 FOC
低壓伺服板:
工作電壓:10 到 30V;
電流:0 到 10A;
支持電機(jī):BLDC 電機(jī),PMSM 電機(jī),有刷電機(jī)等;
主芯片:STM32F303CCT6(采用內(nèi)置運(yùn)放、PGA、比較器);
板載接口:
按鍵接口;
仿真調(diào)試接口;
TTL 電平串口接口;
CAN 接口;
DA 接口;
霍爾接口及增量編碼器接口;
SPI 接口絕對(duì)值編碼器接口;
剩余 IO 接口基本引出;
實(shí)物如下圖所示:
1.1 圖紙說明
1.2 硬件布線
EVAL-SERVOM1 伺服電機(jī)板:采用 4 層板;
PWM 輸出線和電流采樣線盡量不要交叉;
電源功率地、數(shù)字地、模擬地等都分開,最好是單點(diǎn)接地。
1.3 安全說明
仿真器或調(diào)試器:可以用我們的隔離仿真器或加 USB 隔離器,當(dāng)然低壓用非隔離仿真器也可以。
板子及帶電端口:不要用手觸摸,以免被電到。
1.4 接線說明
板子:
電源輸入:
VIN:接直流可調(diào)電源或開關(guān)電源+
GND:接直流可調(diào)電源或開關(guān)電源負(fù) -
電機(jī)線:
U:接電機(jī) U 或 A
V:接電機(jī) V 或 B
W:接電機(jī) W 或 C
霍爾或編碼器接線
HA:接電機(jī)霍爾傳感器 U 或編碼器 A(對(duì)應(yīng) 200W 伺服電機(jī)編碼器:6 腳)
HB:接電機(jī)霍爾傳感器 V 或編碼器 B(對(duì)應(yīng) 200W 伺服電機(jī)編碼器:7 腳)
HC:接電機(jī)霍爾傳感器 W(對(duì)應(yīng) 200W 伺服電機(jī)編碼器:8 腳)
GND 或 0V:接電機(jī)傳感器接口 GND(對(duì)應(yīng) 200W 伺服電機(jī)編碼器:1 腳)
+5:接電機(jī)傳感器接口 5V(對(duì)應(yīng) 200W 伺服電機(jī)編碼器:2 腳)
仿真調(diào)試接口及串口接線說明:
CLK:接隔離 DAP 仿真器 CLK 或 ST LINK 仿真器 CLK(SWD 信號(hào)時(shí)鐘腳)
DIO:接隔離 DAP 仿真器 DIO 或 ST LINK 仿真器 DIO(SWD 信號(hào)數(shù)據(jù)腳)
GND:接隔離 DAP 仿真器 GND 或 ST LINK 仿真器 GND
TX(TX 接 RX 需交叉):接隔離 DAP 仿真器 RX 或 ST LINK 仿真器 RX
RX(RX 接 TX 需交叉):接隔離 DAP 仿真器 TX 或 ST LINK 仿真器 TX
正常運(yùn)行界面如下圖所示: