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.

[参考译文] TMS320F28232:在 sis_Analyzer_diff 库中的说明。

Guru**** 664280 points
Other Parts Discussed in Thread: TMS320F28232, CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1083826/tms320f28232-clarifications-in-the-sine_analyzer_diff-library-reg

部件号:TMS320F28232
“线程”中讨论的其它部件: controlSUITETMDSSOLARUINVKIT

您好,

我正在使用控制器 TMS320F28232,并在太阳能库 SINE_ANALYZER_DIFF.h 的帮助下,尝试查找给定正弦波范围从0到3V (Vpeak)的 Vrms 和频率
从该位置-'C:\ti\controlSUITE\libs\app_libs\solar\v1.2\IQ\'

我正在通过 OP-AMP 电路读取 ADC 值,偏移为1.5VDC,以获得0至3V 峰值,50Hz 交流正弦波电压。 ADC 值从0波动到4096。 请找到附加的图像。

请帮助我如何使用1月14日重新引用的 Solarlib V1.2中的 sine_Analyzer_diff 库。
   
   1.我需要给出的阈值是多少-是零电压线路的电压水平为1.5V 还是 ADC 的交叉值为2048?
   2.如何实现 nsamesmin 和 nsamesMax 值153@60Hz,20kHz 和181@60Hz,20kHz;分别如文档中所述
           但我在调试模式下检查了这些值是否如下,它们不是153和181。
               nsamesmin = 20000 /(60 + 5)= 307
               nsamesMax = 20000 /(60 - 5)= 363
   3.我应该如何为 Vin (sineanalyzer_diff1.Vin)提供价值?

以下是我的配置:我的配置是正确还是有任何错误,请确认?
   1.我已将库标题插入 main.c 文件中
        #include“Solo_IQ.h”

   2.在 main.c 文件中创建了结构
       SINEANALYZER_DIFF_IQ 正弦分析仪_diff1;

   3.在 main()函数中,我将这些函数命名为以下函数:
       SINEANALYZER_DIFF_IQ_INIT (&sineANALYZER_Diff1);    
       Sineanalyzer 扩散1.SampleFreq =_IQ15 (20000.0);   //时间0 ISR 频率20kHz
       sineanalyzer diff1.Threshold =_IQ15 (1.5);    //零交叉电压(1.5V,因为交流电压偏移为1.5VDC)
       Sineanalyzer diff1.nsamplesmin =_IQ颠簸(_IQdiv (1.0,(50+5)),(20000));//363@50Hz,20kHz;
       @分析仪扩散1.nmsamplesMax =_IQ颠簸(_IQdiv (1.0,(50-5)),(20000));//444 50Hz,20kHz;

   4. TIMER0 ISR 配置为20kHz,在计时器中断中调用以下功能。
       Sineanalyzer 扩散1.Vin =_IQ15 (AdcRegs.ADCRESULT0 >> 4);//ADC 结果为4位偏移以获得12位 ADC 结果
       SINEANALYZER_DIFF_IQ_FUNC (&sineanalyzer_diff1);

预期结果:
    我需要找到以下值:
        1. 窦性分析仪扩散1.Vrms
        2. 正弦分析仪_diff1.SigFreq
          但我没有得到预期的结果值,请指导我。

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

    您好,

    任何人都很友好地帮助我们。

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

    最好是查看太阳能微逆变器套件代码,该代码使用此库来了解所有方面,

    C:\ti\controlSUITE\development _kits\TMDSSOLUINVKIT_V100\MicroInv_F2803x

    我将回答你的具体问题

    1.通常,读取类似的 AC 值时,需要将其转换为每单位值,该值将从-1转换为1,我们通常通过以下代码执行此操作

    请参阅此部分,以下内容将获得12位 ADC 读数,然后将其偏移12,以使其在 iQ24中为单位值。 现在,在 iQ24中减去中点0.5将为我们提供一个全刻度从-0.5到0.5pu 的信号。 因此,我们将它再乘以2,再换为1。 这是输入正弦分析器代码的读数

    #define VAC_FB AdcResult.ADCRESULT6.

    ...

    Inv_meas_vol_inst=((长)(((长) vac_FB <12)- offset_165))<<1;

    现在请注意,正弦分析器模块接受 IQ15中的输入,因此您需要在调用正弦分析器模块之前执行以下操作

    //计算 RMS 输入电压和输入频率
    正弦_电源.Iin = inv_meas_cur_inst> 9;
    正弦_电源.Vin = inv_meas_vol_inst> 9;
    SINEANALYZER_DIFF_WPWR_IQ_MACRO (正弦电源);

    再次强调,使用太阳能 uinv 套件代码了解这一点要比我尝试解释每条线路要好得多。

    2.不确定,但如您所见,初始化此模块的正确方法如下

    //正弦分析器初始化
    SINEANALYZER_DIFF_WPWR_IQ/INIT (正弦电源);
    正弦_电源.Vin = 0;
    正弦_电源.Iin = 0;
    正弦_电源.SampleFreq =_IQ15 (1000.0);
    正弦电源阈值=_IQ15(0.1);
    正弦_电源.nsamplesMax=ISR_FREQ_Hz/UNIVAL_GRID_MIN_FREQ;
    正弦_电源.nsamplesMy=ISR_FREQ_Hz/通用电网_MAX_FREQ;

    3,回答为第2部分

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

    你好,Manish,
     
       我的结果值是针对“sineanalyzer _diff _wpwr1.SigFreq”和“sineanalyzer _diff_wpwr1.Vrms”振荡“Frequency _display_calc”和“VRMS _ Display_Calc”
    即使是在服用了400种样本并平均化后。
     
    这是我的编码部分
     
    1.为了初始化正弦分析器,我使用了以下代码
       SINEANALYZER_DIFF_WPWR_IQ_INIT (&sineANALYZER_DIFF_wpwr1);
       窦性分析仪_diff_wpwr1.Vin = 0;
       窦性分析仪_diff_wpwr1.Iin = 0;
       Sineanalyzer diff_wpwr1.SampleFreq =_IQ15(20000.0);  //因为我的计时器中断/切换频率为20kHz
       sineanalyzer diff wpwr1.Threshold  =_IQ15(0.1);              //根据您的建议,阈值
       Sineanalyzer diff_wpwr1.nsamplesmin = 20000/45;            //网格最小频率为45
       Sineanalyzer diff_wpwr1.nsamplesMax = 20000 /55;          //网格最大频率为55
     
    然后在20kHz (50uSec)中断循环中
     
     Offset_165 =(((Int32) 2048)<12;  //_iQ24中的偏移值中点(0.5)
     ADC_INPU_IQ_24 =((长)(((长) ADC.ADC_Buffer9_Count <12)- OFFER_165))<1;// ADC 12位到_iQ24格式,并在 iQ24中使用中点0.5减去
     Sineanalyzer diff_wpwr1.Vin = ADC_INPUM_IQ_24 >> 9;  //结果从_iQ24更改为_IQ15格式
     SINEANALYZER_DIFF_WPWR_IQ_MACRO (sieanalyzer_DIFF_wpwr1); //库函数调用
     Vrms =(窦性分析仪_diff_wpwr1.Vrms)>> 4;  //将窦性分析仪_diff_wpwr1.Vrms 从 Q15转换为 Q11格式
     VRM_Display_Calc =(VRMS *乘法系数)/(Division_Scaling_Factor); //=(11_bit_result * 228)/1000;
     frequency_display_calc = sineanalyzer_diff_wpwr1.SigFreq/16384;                       //用于显示50 Hz 频率频率
     
    与您的“‘s试剂盒”代码一样,您已经从 ADC (AdcResult.ADCRESULT7)中读取此代码,该 ADC 的12位值为2048。 所以我直接给出了中点0.5计算的2048。 和 VRMS 计算结果已从 Q15更改为 Q24 (通过向左移动到9),但我正在将显示计算的结果更改为 Q11格式(通过向右移动到4)。

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

    我不知道它们为什么会振荡,如果信号很吵,您可能希望保持阈值更高。