平头哥CDK助力中科昊芯HX2000系列芯片之双电机有感FOC控制系统专题(四)拓展:永磁电机三闭环有感伺服控制

描述

自中科昊芯推出专题阐述HXS320F28034双电机有感FOC控制系统实现以来,第一期主要分析了双电机有感FOC控制原理,第二期着重分析了永磁BLDC的霍尔位置开环控制,第三期着重分析了永磁BLDC的双闭环调速,第四期着重分析了永磁PMSM双闭环FOC调速,本期基于上期的方案做了一个拓展,增加了位置闭环优化,实现永磁电机三闭环有感伺服控制,并继续基于平头哥半导体有限公司的剑池集成开发环境(简称“CDK”)V2.12.1版本与HXS320F28034驱动一体板联合开发。

 

PMSM三闭环有感伺服原理如图1,系统给定位置θ*与差分增量式编码器计算所得实际角度位置θ相比较,经位置PI运算得到给定转速n*,与差分增量式编码器计算所得实际转速nfbk相比较,经速度PI运算得到q轴电流给定值iq*,采用id*=0控制,与霍尔电流采样得到三相实际电流ia,ib,ic,经CLARK与PARK变换所得d轴与q轴电流id,iq进行比较,经电流PI输出调节电压Ud*,Uq*,经反PARK变换得到调节电压Uα*,Uβ*,经空间矢量脉宽调制SVPWM输出三路开关管切换时间Tcm1,Tcm2,Tcm3,与三路PWM输出三角载波相比较得到六路调制脉宽,驱动控制三相六桥臂MOSFET逆变器通断,实现三闭环伺服的位置精确控制。

 

控制系统

图1 PMSM三闭环有感伺服系统框图


 

依照上述原理,设计HXS320F28034 PMSM三闭环有感伺服系统如图2,通过GPIO按键控制电机使能与位置给定,转子位置与速度检测通过QEP模块实现,电流采样通过ADC模块实现,经三闭环PI调节输出PWM波的导通脉宽,从而实现电机角度位置的精确伺服控制。硬件连接如图3,图中的小黑色电路板为差分编码转换器,读者可根据需要自行采购。

 

控制系统

图2 系统硬件原理图
 

 

控制系统

图3 系统硬件连接


 

系统所采用的软硬件开发环境详见《芯教程丨平头哥CDK助力中科昊芯HX2000系列芯片之双电机有感FOC控制系统专题(一)》。


 

根据上述分析,基于CDK开发PMSM三闭环有感伺服系统,代码包括:PWM、QEP的外设GPIO引脚配置、三路三相PWM波输出配置,QEP初始化配置与差分编码器位置采样、转速与电角度计算、ADC初始化配置与电流采样、PMSM斜坡启动编码器校正、PI调节算法、CLARK、PARK正逆变换、SVPWM算法调制的EPWM事件触发中断服务程序,主程序执行调用,其中SVPWM算法调制的EPWM事件触发中断服务程序代码为:

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
1.void INTERRUPT epwm1_isr(void)
2.{
3. /*出于安全考虑,默认驱动板上电时封波,按下GPIO7后,电机开始启动*/
4. if(GpioDataRegs.GPADAT.bit.GPIO7==0)
5. {
6.  epwm_flag++;
7. }
8. /*判断启动脉冲信号是否产生,产生后电机开始启动*/
9. if(epwm_flag!=0)
10. {
11.  /*启动计时*/
12.  start_step++;
13.  /*扇区读取:用于获取确定的转子初始位置与对应的SVPWM初始扇区*/
14.  sector_uvw();
15.  /*斜坡启动与调速:200rpm斜坡加速启动后调速,300个计数内完成启动*/
16.  if((speed_ref1<300)&&(start_step<=300))
17.  {
18.   /*斜坡启动*/
19.   start_ramp();
20.  }
21.  else
22.  { if((speed_add!=0)||(speed_sub!=0))
23.   {
24.    /*按计数,分配在不同时段实现调速与转子位置伺服控制*/
25.    speed_theta_regulated();
26.    if(theta_reg<250000)
27.    { /*调速*/
28.     speed_regulated();
29.    }
30.    else
31.    { /*角度调整*/
32.     theta_regulated();
33.     /*位置闭环*/
34.     servo_loop();
35.    }
36.   }
37.  }
38.  /*转速闭环*/
39.  speed_loop();
40.  /*电流闭环*/
41.  current_loop();
42.  /*给定固定初始角度使电机转过最大反电势点,读取校正值=此时脉冲计数*/
43.  theta=theta_open;
44.  /*根据差分编码器的霍尔信号判断电机反电势是否处于最大值*/
45.  if(theta==NA*_IQ7(PI/3)+_IQ7(PI/6))
46.  {
47.   iel_int++;
48.  }
49.  /*反电势最大时,切电角度闭环,使编码器零位与电机零位对齐,完成启动*/
50.  if(iel_int!=0)
51.  {
52.   /*计算电角度*/
53.   theta=freq*_IQ7(2*PI);
54.  }
55.  /*两相旋转坐标系变换到两相静止坐标系*/
56.  iPark();
57.  /*空间矢量旋转变换*/
58.  svpwm_motor();
59.  /*调制占空比输出配置*/
60.  epwm_compare();
61. }
62. /*清除事件中断的INT全局中断*/
63. EPwm1Regs.ETCLR.bit.INT=1;
64. /*中断应答,锁定IER的第3组中断向量*/
65. PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;
66.}

 

CDK上开发PMSM三闭环有感伺服系统控制程序,其编译结果为:

控制系统

 

编译通过后,可以开始调试,其调试结果如下:

控制系统

 

调试后,控制PMSM在400rpm~600rpm调速与调节转子位置的效果如下:

 

控制系统

 

 

 

关于中科昊芯
 

“智由芯生 创享未来”,中科昊芯是数字信号处理器专业供应商。作为中国科学院科技成果转化企业,瞄准国际前沿芯片设计技术,依托多年积累的雄厚技术实力及对产业链的理解,以开放积极的心态,基于开源指令集架构RISC-V,打造多个系列数字信号处理器产品,并构建完善的处理器产品生态系统。产品具有广阔的市场前景,可广泛应用于工业控制及电机驱动、数字电源、光伏、储能、新能源汽车、消费电子、白色家电等领域。

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分