This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMDSHVMTRPFCKIT:TMDSHVMTRPFCKIT

Guru**** 2390735 points
Other Parts Discussed in Thread: TMS320F28035, OPA2350, CONTROLSUITE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/772246/ccs-tmdshvmtrpfckit-tmdshvmtrpfckit

器件型号:TMDSHVMTRPFCKIT
主题中讨论的其他器件: TMS320F28035OPA2350controlSUITE

工具/软件:Code Composer Studio

大家好、TI TMDSHVMTRPFCKIT 团队、

我将使用 TMDSHVMTRPFCKIT 和 tms320f28035控制卡来实现感应电机速度控制、但我具有一些与 ADC 相关的复杂性(如何测量低侧逆变器两相电流和直流总线电压)。 我们可以根据 TMDSHVMTRPFCKIT 进行计算

对于直流总线电压 ADC A7引脚感测输入电压=直流总线电压*(9.09/(9.09+820+300)),假设直流总线电压=200V,然后在 ADC A7引脚中得到1.61V,我想将此值降低到0.5V,我想从 AdcResult.ADCRESULT7寄存器中读取此值。

我的问题基于 HVACI_Sensorless.c

您以 volt1.DcBusVolt =_IQ12toIQ (AdcResult.ADCRESULT7)编写的代码;//直流总线电压测量。 我是否可以像这样修改/编写此代码

ADCINA7=AdcResult.ADCRESULT7;

VDC=(ADCINA7*(1/3))*(1.5/1.65);//这条线给我的0&1之间的电压取决于直流总线电压,如果我错了,请纠正我的错误(根据200V,我将得到~0.48v)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

两相电流测量

//----------------------------------
//测量相电流、减去偏移并将其从(-0.5、+0.5)标准化为(-1、+1)。
//连接 Clarke 模块的输入并调用 Clarke 变换宏
//----------------------------------
clarke1.As =_IQmpy2 (_IQ12toIQ (AdcResult.ADCRESULT1)-offsetA);//相位 A 电流。
clarke1.bs =_IQmpy2 (_IQ12toIQ (AdcResult.ADCRESULT2)-offsetB);// B 相电流。
Clarke_macro (clarke1)

此外、我能否像下面所示那样编写上述代码、在我的案例中、我不考虑偏移和 IQ

此外、我们还可以计算电流传感器

Vout=-8.25*VIN+1.65;// Vout=IFB_U&V 输入到引脚 A1&B1;VIN=VSH_U&V 是较低侧电压值

VSH_U=Rshun(0.02)*IphaseU。 VSH_U=0.02V 的最大值

//从 OPA2350之后的低侧逆变器感测到的电流

ADCINA1=AdcResult.ADCRESULT1;

ADCINB1=AdcResult.ADCRESULT2;

缩放和偏移调整(-1 &1之间)

IA = ADCINA1*(2/3);//不在(-1和1)之间
IB = ADCINB1*(2/3);
ia1 =(ia-(0.995*1.65/1.5))*(1.5/1.65);//这介于(-1和1)之间
IB1 =(IB-(0.995*1.65/1.5))*(1.5/1.65);//这介于(-1和1)之间

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tesafye

    我正在解答您的问题、希望在接下来的24小时内提供答案

    谢谢
    肖恩
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sean

    我正在等待您的回答、  

    提前感谢、

    特斯法耶

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您使用的是具有良好代码效率的定点 C2000控制器(F28035)、最好使用 IQ 格式来引用代码。 不建议像您提到的那样使用代码。

    如果您也希望使用浮点、则可以参考以下文件夹中的示例工程。
    C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVACI_Sensorless_2833x
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    偏移量1.65v、在用于电流传感器的 HVM 套件中、根据(4096*模拟输入/3.3)、1.65v 等于2048=0x07ff、基于此、以下代码基于 C:\ti\controlSUITE\device_support\f2803x\v125\DSP2803x_examples_ccsv4\ADC_SoC 和  DSP2803x、ADC_c。

    void init_adc (void)

    extern void DSP28x_usDelay (无符号长整型计数);
    //默认 ADC 初始化
    int ChSel[16]={0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0};
    //int TrigSel[16]={5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5、5};
    int ACQPS[16]={8、8、8、8、8、8、8、8、8、8、8、8、8、8、8、8};
    //初始化 DMC 套件修订版1.1的 ADC
    ChSel[0]= 1;//虚拟测量值。 避免出现第1个样本问题 Rev0 Picollo*/
    ChSel[1]=1;// ChSelect:ADC A1->相位 A 电流
    ChSel[2]=9;// ChSelect:ADC B1->相位 B 电流
    ChSel[7]= 7;// ChSelect:ADC A7->DC 总线电压
    ChSel[3]=3;// ChSelect:ADC A3->相位 C 电流
    ChSel[4]=15;// ChSelect:ADC B7->相位 A 电压
    ChSel[5]= 14;// ChSelect:ADC B6->相位 B 电压
    ChSel[6]= 12;// ChSelect:ADC B4->相位 C 电压
    EALLOW;
    DELAY_US (ADC_USDELAY);
    AdcRegs.ADCCTL1.All=0x4000;
    asm (" NOP ");
    asm (" NOP ");
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
    (*Device_cal)();
    EDIS;
    AdcRegs.ADCCTL1.bit.ADCBGPWD = 1;//电源 ADC BG
    DELAY_US (ADC_USDELAY);
    AdcRegs.ADCCTL1.bit.ADCREFSEL = 0;//选择内部 BG
    AdcRegs.ADCCTL1.bit.ADCREFPWD = 1;//电源基准
    AdcRegs.ADCCTL1.bit.ADCPWDN = 1;//电源 ADC
    AdcRegs.ADCCTL1.bit.ADCENABLE = 1;//启用 ADC
    asm (" RPT#100 || NOP");
    AdcRegs.ADCCTL1.bit.INTPULSEPOS=1;//int 在转换结束时生成
    AdcRegs.ADCCTL1.bit.TEMPCONV=0;
    EDIS;
    DELAY_US (ADC_USDELAY);
    /***** 信道选择***** /
    EALLOW;
    //AdcRegs.ADCCTL1.bit.INTPULSEPOS=1;
    AdcRegs.ADCSOC0CTL.bit.CHSEL =1;//虚拟样本
    AdcRegs.ADCSOC1CTL.bit.CHSEL =1;//ADC A1 ia 1
    AdcRegs.ADCSOC2CTL.bit.CHSEL =9;//ADC B1 IB 9
    AdcRegs.ADCSOC3CTL.bit.CHSEL =7;// ADC A7 Vdc 7
    AdcRegs.ADCSOC4CTL.bit.CHSEL =ChSel[4];
    AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5];
    AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6];
    AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[3];
    AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8];
    AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9];
    AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10];
    AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11];
    AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12];
    AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13];
    AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14];
    AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15];

    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];//将 SOC0 S/H 窗口设置为6+1 ADC 时钟周期*
    AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1];
    AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2];
    AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3];
    AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4];
    AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5];
    AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6];
    AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7];
    AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8];
    AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9];
    AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10];
    AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11];
    AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12];
    AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13];
    AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14];
    AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15];

    //启用 ADCINT1和 ADCINT2
    AdcRegs.INTSEL1N2.bit.INT1E = 1;
    AdcRegs.INTSEL1N2.bit.INT2E = 1;
    //禁用 ADCINT1和 ADCINT2的连续采样
    AdcRegs.INTSEL1N2.bit.INT1CONT = 0;
    AdcRegs.INTSEL1N2.bit.INT2CONT = 0;
    AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;//ADCINT 在转换结束时触发
    //设置 ADCINT1和 ADCINT2触发源
    AdcRegs.INTSEL1N2.bit.INT1SEL = 6;//EOC6触发 ADCINT1
    AdcRegs.INTSEL1N2.bit.INT2SEL = 3;//EOC4触发 ADCINT2、此中断用于我的代码
    //设置每个 SOC 的 ADCINT 触发源
    AdcRegs.ADCINTSOCSEL1.bit.SOC0 = 2;//ADCINT2启动 SOC0-7
    AdcRegs.ADCINTSOCSEL1.bit.SOC1 = 2;
    AdcRegs.ADCINTSOCSEL1.bit.SOC2 = 2;
    AdcRegs.ADCINTSOCSEL1.bit.SOC3 = 2;
    AdcRegs.ADCINTSOCSEL1.bit.SOC4 = 2;
    AdcRegs.ADCINTSOCSEL1.bit.SOC5 = 2;
    AdcRegs.ADCINTSOCSEL1.bit.SOC6 = 2;
    AdcRegs.ADCINTSOCSEL1.bit.SOC7 = 2;
    AdcRegs.ADCINTSOCSEL2.bit.SOC8 = 1;//ADCINT1启动 SOC8-15
    AdcRegs.ADCINTSOCSEL2.bit.SOC9 = 1;
    AdcRegs.ADCINTSOCSEL2.bit.SOC10 = 1;
    AdcRegs.ADCINTSOCSEL2.bit.SOC11 = 1;
    AdcRegs.ADCINTSOCSEL2.bit.SOC12 = 1;
    AdcRegs.ADCINTSOCSEL2.bit.SOC13 = 1;
    AdcRegs.ADCINTSOCSEL2.bit.SOC14 = 1;
    AdcRegs.ADCINTSOCSEL2.bit.SOC15 = 1;
    EDIS;
    AdcRegs.ADCSOCFRC1.ALL = 0x00FF;//强制启动 SOC0-7以开始乒乓采样

    void ADC_Signals (void)

    AdcRegs.ADCSOCFRC1.ALL = 0x00FF;//强制启动 SOC0-7以开始乒乓采样
    while (AdcRegs.ADCINTFlG.bit.ADCINT2 ==0){}
    AdcRegs.ADCINTFLGCLR.bit.ADCINT2 = 1;//必须清除 ADCINT1标志,因为 INT1CONT = 0
    ADCINA1=AdcResult.ADCRESULT1;//
    ADCINB1=AdcResult.ADCRESULT2;
    ADCINA7=AdcResult.ADCRESULT3;
    //禁用 ADCINT1和 ADCINT2以停止乒乓采样
    AdcRegs.INTSEL1N2.bit.INT1E = 0;
    AdcRegs.INTSEL1N2.bit.INT2E = 0;
    //相电压被测量并馈送到 ADC 引脚
    ia1 =((AdcResult.ADCRESULT1)-0x07FF)*0.000483871;//在乘以0.000483871后提供值 B/N 0.0495&-0.0495,然后是0.03&-0.03,
    ib1 =((AdcResult.ADCRESULT2)-0x07FF)*0.000483871;
    IC1 =-(ia1+ib1);

    上述代码能否正常工作?

    这可能不准确。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没关系、但您需要根据定义系数为0.00024414或0.000488281的基极电流/电压将结果转换为 SI 值。 请参阅上述建议的示例项目、0.909系数用于 ADC 采样范围为0~3.0V、而项目中的基极电流为3.3V。
    BTW、您应该执行偏移校准、以确保获得正确的采样值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Tesafye、

    我们已经从您那里听到一周了、因此我假设您不再需要对您的问题进行澄清、您的问题将会将此主题标记为"已关闭"。 如果您对此主题有任何其他疑问、您可以使用帖子进行回复或创建新主题。 谢谢。