加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于STM32F303(內(nèi)置運(yùn)放PGA比較器):位置控制

2021/01/19
1198
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

基于 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)行界面如下圖所示:

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

直流無刷電機(jī)驅(qū)動(dòng)、電源、機(jī)器人等軟硬件技術(shù)開源。