1209|1

402

帖子

0

资源

一粒金砂(高级)

英飞凌电机套件 EVAL-IMOTION2GO 学习笔记二 [复制链接]

本帖最后由 我的学号 于 2023-1-23 19:02 编辑

本篇主要是对 infineon imotion 电机控制方案的记录

在电机套件上运行 imotion,有三个软件需要下载,分别是:

MCEWizard 工具:借助它可以配置开发板信息及电机参数,生成 txt,ldf, map 等文件

MCEDesigner 工具:借助它进行脚本编写和文件烧录,实时改变参数及状态跟踪

IMOTION2GO 的软件包:官方例程有参考价值,出错时可以刷回官方固件

除了INFINEON 自家的IDE,也支持MADK(keil)开发,不是本次测评的重点,略过

 

以上的文件都可在 INFINEON 官网注册后下载,前两个的地址:

https://www.infineon.com/cms/cn/product/power/motor-control-ics/imotion-integrated/?tab=~%27all#!designsupport

套件软件包下载地址:

https://www.infineon.com/cms/cn/product/evaluation-boards/eval-imotion2go/?tab=~%27all#!designsupport

下载后一路 next 安装,没啥大问题

接下来结合例程了解MCEWizard 的配置:

 

双击打开 MCEWizard 快捷方式,在 ”文件“ 处选择解压缩后的 2GO 软件包里的 ”iMOTION2go190904-Neweco2.mc2“

image.png

 

如果硬件无改动,默认左侧的 default setting,next 即可;如果有改动,选择右侧菜单进行修改

image.png

 

显示基本信息,右下角显示使用了 74% 的MCU 资源

image.png  

 next 之后是关于电机参数和启动方式的14 个问题

第一,电机名字,这个随意,要求是至少一个不带空格或 TAB 的单词

image.png

 

第二,电机额定有效电流,需要将功率变换器的电流,频率和温度保护考虑在内

image.png

 

第三,电机极对数,本次测评是 8 极对

image.png

 

第四,电机定子阻抗

image.png

 

第五,电机每相 q轴 阻抗

image.png

 

第六, 电机每相 D轴 阻抗

image.png  

 第七,电机反电动势常数,一般铭牌有标记;或则通过测量线-线间的电压转换为线-中心电压;如果测量的是 BLDC 电机,注意有效值的计算方式有差别

image.png

 

第八,电机最高转速;如果数值超过厂家的设计可能会影响电机安全

image.png

 

第九,最小运行速度;为斜率运行时电机的初始速度;设置过低电机运行不可靠;

如果使用磁链估算,可以将最小速度设置为额定速度的 5% 到 10%

image.png

 

第十,电机加减速斜率,加减速只能保持同样数值?

image.png

 

 第十一,开环斜率,启动阶段时的速度斜率,设置为 0 时将关闭开环启动

image.png

 

第十二,Parking 时间,开环启动前的定位时间,设置为0 将跳过该阶段;需要注意大负载大摩擦条件下该功能可能无效

image.png

 

 第十三,低速阈值,设置低速限制和低速阈值,将会在这两者间生成线性增加的电流限制值;这将有利于低速时的平滑启动

image.png  

第十四,低速电流限制值;同上
image.png  

之后是IC 的ADC PIN 和GPIO 设置

image.png 这里用到了检测速度调节信号的ADC, 和控制LED 的GPIO7

电阻采样设置,UART 的通信,PWM 频率等,以及GK 信号保护,因使用了模板,此处不需设置

 

 点击 "Script Coding", 脚本内容如下:

#SET SCRIPT_USER_VERSION (1.00)  /*Script version value should be 255.255*/
#SET SCRIPT_TASK0_EXECUTION_PERIOD    (50)  /*Script execution time for Task0 in mS, maximum value 65535*/
#SET SCRIPT_TASK1_EXECUTION_PERIOD    (1)  /*Script execution time for Task1 in 10mS, maximum value 65535*/
#SET SCRIPT_START_COMMAND (0x3)  /* Start command, Task0 : Bit0, Task1 : Bit1; if bit is set, script executes after init */
#SET SCRIPT_TASK0_EXECUTION_STEP (1)  /* Script Task0  step, This defines number of lines to be executed every 1mS*/
#SET SCRIPT_TASK1_EXECUTION_STEP (10) /* Script Task1  step, This defines number of lines to be executed every 10mS*/
*/
/*********************************************************************************************************************/
int sVar0,led;
/*********************************************************************************************************************/
/*Task0 init function*/
Script_Task0_init()
{
int sSVar0,sSVar1,sSVar2,volt,limit;

  sSVar0 = RunTimeCounter;
  sSVar2=0;
  limit=16000;
  
}
/******************************************************************************************************************/
/*Task0 script function*/
Script_Task0()
{

  if((RunTimeCounter-sSVar0)>5000) //Every 5S
  { 
	sSVar0 =RunTimeCounter;
	sSVar1=1;
  }
  if (ADC_Result0>100)  /*(AIN0)*/
  {
   volt=ADC_Result0<<2;  //max=4096X4=16383, min=100x4=400
   if (volt>limit)
   {
	volt=limit;
   }

   if (sSVar1==1)  /* RunTimeCounter */
	{
	  if (Command == 1)
	  { 
	    Command=0;
	  }
	  else
	  {
	    if (sSVar2==1)     //switch direction
		{
		  TargetSpeed = volt;
		  sSVar2=0;
		}
		else
		{
		  TargetSpeed = (-1)*volt;
		  sSVar2=1;
		}
	    Command=1;
	  }
	  sSVar1=0;
	}
  }
 else
 {
     Command=0;
 }

}
/******************************************************************************************************************/
/*Task1 init function*/
Script_Task1_init()
{
  int sBVar0,sBVar1;
	sBVar0=0;
	GPIO7_OUT=1;

}
/******************************************************************************************************************/
/*Task1 script function*/
Script_Task1()
{

  if (MotorSpeed==0)
	{
		GPIO7_OUT=1;
    }	
		led= GPIO7_OUT;
		sVar0=sBVar0;
  
  if(sBVar0<16000)
  {
		if (MotorSpeed>0)
		{
		sBVar0=sBVar0+(MotorSpeed>>2);
		}
		else
		{
		sBVar0=sBVar0-(MotorSpeed>>2);
		}
  }
  else
  {
   sBVar0=0;
   GPIO7_OUT=~GPIO7_OUT;
   led=GPIO7_OUT;	
  }

}

脚本定义了4 个函数,分别是 task0 和 task1 的初始化,1ms执行1次的task0 和 10ms 执行一次的 task1

根据注释理解,每次进入task0 查询ADC 读取的速度值,每隔 5s 改变一次速度的方向;task1 将LED 状态灯和电机转速联立

 

之后是对已设置内容的确认,以及设置调节器,PWM 控制方式,ADC 采样方式,出错检查等内容

image.png

 

之后选择 编译 ,无误可生成脚本,选择导出生成给 MCEDesigner 使用的 txt 文件

image.png  

自此 MCEWizard 的设置完成

 

 

个人签名君应有语,渺万里层云,千山暮雪,知向谁边?

回复

4675

帖子

0

资源

五彩晶圆(中级)

这个英飞凌电机套件 EVAL-IMOTION2GO的 学习,搞定这三个软件下载安装是很重要的步骤


回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/5 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表