NXP RT1020 双电机控制 eflexPWM 与 ADC 配置

  1. 概述
  2. 电机相电流采样方法
  3. 单电机相电流采样时间点
  4. 双电机 PWM 相位关系与相电流采样时间点
  5. 双电机 PWM 之间的同步触发信号连接图
  6. PWMADC 频率配置
  7. 电机 1 PWM 配置
  8. 电机 2 PWM 配置
  9. PWMADC 具体寄存器配置
  10. 验证波形
  11. 预告
  12. 参考文档

           

  1. 概述

          在电机驱动控制系统中,需要对电机相电流和母线电压信号进行采集,在使用 PWM(脉冲宽度调制)来产生系统中的电压或电流时,因 PWM 属于一种开关信号,
因此在测量电流或电压时如果在错误的时间点使用 ADC 进行采样将会观测到纹波,测量到错误的数值,本文将讲述如何通过配置 RT1020 的 eflexPWM、ADC 外设,
正确的采样两个电机的相电流与母线电压,达到同时控制两个电机的目的。

 

  1. 电机相电流采样方法

          采样电机相电流,可以在电机相线上直接采样,但这种采样方式一般需要隔离的传感器或者隔离放大器,成本高,
一般情况下使用三电阻连接于半桥的下桥,经过放大器后连接至 ADC 进行采样,硬件拓扑如下图所示:



  1. 单电机相电流采样时间点

           采用三电阻下桥采样时,需要在下桥打开时才能采样到电流信号,单电机并且调制深度不高时可以在 PWM 中点(下桥 PWM 中点)进行采样,如下图所示:

       COUNTER 为 eflexPWM 的递增计数器,INIT 为其初始值,VAL1 为其模值,COUNTER 计数到 VAL1 时触发 ADC 采样,采样完毕后产生 ADC 结束中断,FOC 电流环控制在此 ADC 中断中执行。


  1. 双电机 PWM 相位关系与相电流采样时间点

          两个电机都采用三电阻下桥采样的方式采样电流,RT1020 中只有两个 ADC 外设,同一时刻只能同时采样两个通道,可同时采样两个相电流之后再采样母线电压,此过程需要 ADC 两次采样转化的时间,大约 2us (ADC 速度为 1.2Mps 时),采样完成之后需要立即执行电机电流环即 FOC  计算,并且不可中断,因此,在双电机控制时,需要将 PWM 错开,保持同步,并在正确的时刻触发 ADC 采样,以免发生冲突,导致采样错误和电流环不按固定的 PWM 周期运行。

      本次设计采用两个 PWM 外设相位上错开 90 度的方式实现,也可错开 180 度,如果是 4 电机控制需要错开 90 度,RT1050 有 4 个 PWM 外设可控制 4 电机,在此同时评估。具体波形如以下示意图:

图中只画出电机 2 的 A 相的 PWM 相位延迟于电机 1 的 A 相的 PWM,B、C 相依此类推。





  1. 双电机 PWM 之间的同步触发信号连接图

          如图所示,PWM1 的模块 0  产生 FLEXPWM1_PWM1_OUT_TRIG0 同步信号,经过 XBAR1 连接到 PWM2 的外部同步信号,

        用于触发 PWM2 的 counter 重载其初始值 INIT。

        PWM1 的模块 1 产生 FLEXPWM1_PWM2_OUT_TRIG0 信号经过 XBAR 后连接到 ADC_ETC 的触发信号,用于触发 ADC 采样。

        PWM2 的模块 1 产生 FLEXPWM2_PWM2_OUT_TRIG0 信号经过 XBAR 后连接到 ADC_ETC 的触发信号,用于触发 ADC 采样。



  1. PWMADC 频率配置

       

        PWM 外设的运行频率会影响生成的 PWM 的控制精度,RT1020 PWM 外设最大能工作在 132MhzADC

        40Mhz12BIT,长采样,高速模式时)。

        内核时钟:         AHB_CLK_ROOT,工业级 RT1020 最大频率为 396MHz,消费级 RT1020 最大频率为 500MHz。

         外设总线时钟:IPG_CLK_ROOT,经过 AHB_CLK_ROOT 三分频之后为 132MHZ,

                                    提供给 eflexPWM、ADC、ADC_ETC、ENC、LPUART 等,

                                    如果 eflexPWM 开启 Fractional Delay Logic 模块,频率最大只能设置到 100MHz,

        外部 FlexSPI 时钟:132MHz。

        下图为使用 MCUXpresso Config Tools 配置时钟的框图:

 

  1. 电机 1 PWM 配置

       PWM1_SubModule_0 ( U PWM 配置 )

        时钟源:            IPG_CLK_ROOT ,132MHZ。

         PWM 频率:    20K, 周期为 50 us。

         INIT 寄存器:   -132MHZ/20K/2 = -3300

         VAL1 寄存器: 3300

         死区时间:        2us,也就是 264 个 IPG_CLK_ROOT  时钟

         PWM1->SM[0] 产生重载信号和初始化信号到其他子模块

         counter 计数到 PWM1->SM[0].VAL4(延迟 90 度) 时产生触发信号 PWM_OUT_TRIG0,

         并通过 XBAR 传递到控制 Motor 2 的 PWM2  External_sync,

         PWM2 的 submodule_0、1、2 的 INIT_SEL 选择 EXT_SYNC 信号来重加载 Counter 的初始值,

         从而使 PWM 错位 90 度, 4 电机时错位 90 度, 双电机时可错位 180 度。

        PWM1_SubModule_1 ( V PWM 配置 )

        时钟源:             使用 PWM1_SubModule_0 的时钟。

         PWM 频率:     20K, 周期为 50 us。

         INIT 寄存器:   -132MHZ/20K/2 = -3300

         VAL1 寄存器: 3300

         死区时间:        2us, 也就是 264 个 IPG_CLK_ROOT  时钟

         使用 PWM1_SubModule_0 产生的重载信号和初始化信号

         counter 计数到 PWM1->SM[1].VAL4 (-3300,VAL4 用来设置采样点) 时产生触发信号 PWM_OUT_TRIG0,

         并通过 XBAR 传递到 ADC_ETC 触发 ADC 采样 。



        PWM1_SubModule_2 ( W PWM 配置 )

        时钟源:             PWM1_SubModule_0

         PWM 频率:     20K,周期为 50 us。

         INIT 寄存器:   -132MHZ/20K/2 = -3300

         VAL1 寄存器: 3300

         死区时间:        2us,也就是 264 个 IPG_CLK_ROOT  时钟

         使用 PWM1_SubModule_0 产生的重载信号和初始化信号

  1. 电机 2 PWM 配置

      

       PWM2_SubModule_0 ( U PWM 配置 )

        时钟源:            IPG_CLK_ROOT ,132MHZ。

         PWM 频率:    20K, 周期为 50 us。

         INIT 寄存器:   -132MHZ/20K/2 = -3300

         VAL1 寄存器: 3300

         死区时间:        2us,也就是 264 个 IPG_CLK_ROOT  时钟

         使用 PWM1_SM[0] 模块产生的初始化信号, 重载信号使用本地的重载信号。

         即 PWM2 的 submodule_0、1、2 的 INIT_SEL 选择 EXT_SYNC 信号来重载 Counter 的初始值,

        

        PWM2_SubModule_1 ( V PWM 配置 )

        时钟源:             使用 PWM2_SubModule_0 的时钟。

         PWM 频率:     20K, 周期为 50 us。

         INIT 寄存器:   -132MHZ/20K/2 = -3300

         VAL1 寄存器: 3300

         死区时间:        2us, 也就是 264 个 IPG_CLK_ROOT  时钟

         使用 PWM1_SM[0] 模块产生的初始化信号,

         使用 PWM2_SubModule_0 产生的重载信号

         counter 计数到 PWM2->SM[1].VAL4 (-3300,VAL4 用来设置采样点) 时产生触发信号 PWM_OUT_TRIG0,

         并通过 XBAR 传递到 ADC_ETC 触发 ADC 采样 。

        PWM2_SubModule_2 ( W PWM 配置 )

        时钟源:             PWM2_SubModule_0

         PWM 频率:     20K,周期为 50 us。

         INIT 寄存器:   -132MHZ/20K/2 = -3300

         VAL1 寄存器: 3300

         死区时间:        2us,也就是 264 个 IPG_CLK_ROOT  时钟

         使用 PWM1_SM[0] 模块产生的初始化信号,

         使用 PWM2_SubModule_0 产生的重载信号

  1. PWMADC 具体寄存器配置

        详见附件 .c 文件。

  1. 验证波形

           使用示波器测量两个电机的 U 相 PWM,确认电机 2 的 U 相上桥 PWM 延迟于电机 1 的 U 相上桥 PWM 90 度,电流环大约在下桥 PWM 中点运行(PWM 中点+ ADC 采样时间)。

           下图中蓝色探头为电机 1 U 相上桥 PWM 波形,黄色探头为电机 2 U 相上桥 PWM 波形,很明显其相位延后 ¼ 个 PWM 周期,即 90 度。

 

  1. 预告

         RT1020 因只有 2 路 eflexPWM,所以只能做 2 个电机 FOC 控制,RT1050 有 4 路 flexPWM,可做 4 个电机 FOC 控制,可以用于 4 轴无人机的电机控制。

         ADC 采样两次需要大约 2us 时间,假如无感 FOC 运行大约需要 3.5us(RT1050,600Mhz,代码在 ITCM 运行),速度控制需要 1us,因总时间不能超过 PWM 周期的 ¼,则可设置的 PWM 最大频率为:1/((2us+3.5us+1us)*4) = 38.461Khz。为了使电机相电流波形有比较好的正弦度,电机电流环控制频率至少大于电机相电流频率 15 倍,则电机相电流频率最大为:38K/15 = 2.533Khz,即最大电子转速:2.533K*60s = 151980 RPM。7 对极电机时,其最大机械转速为:151980/7=21700 RPM。

         RT1050 具有 256K 的 RAM,FOC 代码全部放在 RAM 中运行是足够的。

  1. 参考文档

      CM4FGDFLIBUG.pdf    此文档可在 RT 系列电机控制例程中的电机库文档目录下找到

      DRM140.pdf                PMSM Sensorless Vector Control on Kinetis Designer Reference Manual



★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论