加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

基于STM32F303(内置运放PGA比较器):位置控制

2021/01/19
1267
阅读需 11 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

基于 STM32F303(内置运放 PGA 比较器):位置控制

使用 EVAL-SERVOM1(基于 303CCT6 内置运放 PGA 比较器)三电阻 FOC 低压伺服板

公众号:游名科技

ST 最新电机库已支持位置控制(电机要带增量编码器,目前最大支持 14 位编码器):

位置控制函数:

void MC_ProgramPositionCommandMotor1( float fTargetPosition, float fDuration );

其中:

fTargetPosition:控制角度,单位为弧度,转一圈需要 2PI=2*3.1415926;

fDuration:时间,单位 mS,从当前位置到达目标位置所需时间;

参考测试程序如下:

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 圈,转半圈*4,1S

    MC_AcknowledgeFaultMotor1(); // 清除电机错误

    MC_StartMotor1(); // 电机启动

    HAL_Delay(1500); // 延时 1.5S

    MC_ProgramPositionCommandMotor1(-MotorPiAi*2,1);

    //MotorPiAi=3.1415926,2*3.14 为 1 圈,,反转半圈*2,1S

    HAL_Delay(1500); // 延时 1.5S

    MC_AcknowledgeFaultMotor1(); // 清除电机错误

    MC_StartMotor1(); // 电机启动

}

else

{

    MC_StopMotor1(); // 电机停止

}

用默认生成的程序,假设每次控制转 3.14 角度,会发些无法一直转(而正反转 3.14 角度可以),那是因为默认程序控制的是绝对角度,需要自己修改;

函数原型如下:

__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;

支持电机:BLDC 电机,PMSM 电机,有刷电机等;

芯片:STM32F303(采用内置运放、PGA、比较器);

板载接口:

按键接口;

仿真调试接口;

TTL 电平串口接口;

CAN 接口;

DA 接口;

霍尔接口及增量编码器接口;

SPI 接口绝对值编码器接口;

剩余 IO 接口基本引出;

提供资料截图:

三:用 STMStudio 软件通过 ST LINK 看变量波形篇

1、首先安装 STMStudio 软件(略);

2、打开 STMStudio 软件如下图:

3、在 Display Variables 界面区域点击鼠标右键选择“Import”,打卡后如下图:

4、点击上图省略号选择 axf 文件(导入 MDK 或 IAR 项目工程目录下 axf 文件)

5、选中 axf 文件并点击 Select,点击后出现错误,点 OK 即可

6、导入后如下图所示:

7、找到或输入相关变量:这里输入 IA

8、选择 IA 和 IB 变量,并点击 Import 导入,然后点击 close 关闭

导入变量后如下图所示:

9、点击 Run 并选择 Start S 按钮

10、选中变量点击右键 send to 到显示菜单

11、显示后数据波形如下图所示(数据波形不好需要调整):

12、退出、关闭软件等(略)

二、磁编码器安装篇

一、教程基础篇

EVAL-SERVOM1(基于 303CCT6 内置运放 PGA 比较器)三电阻 FOC

低压伺服板:

工作电压:10 到 30V;

电流:0 到 10A;

支持电机:BLDC 电机,PMSM 电机,有刷电机等;

主芯片:STM32F303CCT6(采用内置运放、PGA、比较器);

板载接口:

按键接口;

仿真调试接口;

TTL 电平串口接口;

CAN 接口;

DA 接口;

霍尔接口及增量编码器接口;

SPI 接口绝对值编码器接口;

剩余 IO 接口基本引出;

实物如下图所示:

 

一、硬件原理图

1.1 图纸说明

1.2 硬件布线

       EVAL-SERVOM1 伺服电机板:采用 4 层板;

   PWM 输出线和电流采样线尽量不要交叉;

       电源功率地、数字地、模拟地等都分开,最好是单点接地。

1.3 安全说明

   仿真器调试器:可以用我们的隔离仿真器或加 USB 隔离器,当然低压用非隔离仿真器也可以。

   板子及带电端口:不要用手触摸,以免被电到。 

1.4 接线说明

板子:

电源输入:

VIN:接直流可调电源开关电源+

GND:接直流可调电源或开关电源负 -

电机线:

U:接电机 U 或 A

V:接电机 V 或 B

W:接电机 W 或 C

霍尔或编码器接线

HA:接电机霍尔传感器 U 或编码器 A(对应 200W 伺服电机编码器:6 脚)

HB:接电机霍尔传感器 V 或编码器 B(对应 200W 伺服电机编码器:7 脚)

HC:接电机霍尔传感器 W(对应 200W 伺服电机编码器:8 脚)

GND 或 0V:接电机传感器接口 GND(对应 200W 伺服电机编码器:1 脚)

+5:接电机传感器接口 5V(对应 200W 伺服电机编码器:2 脚)

仿真调试接口及串口接线说明:

CLK:接隔离 DAP 仿真器 CLK 或 ST LINK 仿真器 CLK(SWD 信号时钟脚)

DIO:接隔离 DAP 仿真器 DIO 或 ST LINK 仿真器 DIO(SWD 信号数据脚)

GND:接隔离 DAP 仿真器 GND 或 ST LINK 仿真器 GND

TX(TX 接 RX 需交叉):接隔离 DAP 仿真器 RX 或 ST LINK 仿真器 RX

RX(RX 接 TX 需交叉):接隔离 DAP 仿真器 TX 或 ST LINK 仿真器 TX

正常运行界面如下图所示:

相关推荐

电子产业图谱

直流无刷电机驱动、电源、机器人等软硬件技术开源。