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.

[参考译文] TMS320F28377D:ADC 转换取决于其他通道的值! ??

Guru**** 2589275 points
Other Parts Discussed in Thread: OPA320

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/691544/tms320f28377d-adc-conversion-depend-of-value-on-other-channel

器件型号:TMS320F28377D
主题中讨论的其他器件:OPA320

你好

我们正在开发 BLDC 板。

为此、我们使用28377控制器。

我们使用 ADC 获取 DCLink 电压(约24VDC)、然后获取电机相电流(U 和 V)。

DCLink 电压由电阻器分压(除数= 21)。

相电流由8mohms 的分流电阻器获得、然后是放大器。

提供了该方案的摘录。

电流测量正常。

DCLink 电压正常。

但现在、我们控制电机。 全部正确运行。

现在、在速度环路控制上、我们询问零速度。 然后电机不转动、但施加了扭矩。 然后、当我们尝试用手移动电机时、测得的电机电流会从量上增加到施加的扭矩。

到目前为止、一切都很好!

但在这种状态下(电机速度= 0、手动施加转矩)、ADC 测量在受 DCLink 增加影响的通道上完成、而 ADC 输入保持稳定! 然后软件得到大约30V 的电压、而输入代表24V!

相位电机中的电流为4A。 这对应于 ADC Get 值。

电机相电流的 ADC 输入会影响通道上针对 DCLink 电压的测量值!

我检查所有其他电压(GND、Vref HI、Vref Low 等) 所有物理电压都正常。

只需将寄存器 AdccResultRegs.ADCRESULT1从#1390增加到大约#1500...#1600!

DCLink 的模拟输入为1.13V、对应于 DCLink 的24V。 1500..#1600应该说这个输入大约为25..26V。

该误差随电机电流的增加而增加。 当电机电流约为10A 时、测量的 DCLink 高达30V、而物理 DClink 电压保持在24V……

架构:

这是 Init 代码:

/* /*
旋转变压器 FBK -正弦 */*注意!!! ADCINC2在此电路板上未使用、链接至 GND */
* /
AdccRegs.ADCSOC0CTL.bit.CHSEL = 2; /*配置与 ADC/SOC 关联的引脚*/
AdccRegs.ADCSOC0CTL.bit.ACQPS = 30; SYSCLK 周期(ACQPS + 1) x 200MHz ^-1 = 155ns (数据表最小值= 75ns)*/
AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 15;* PWM6 SOCA => 160KHz */*选择哪种事件 SoC 将触发转换开始*


/*** //*
总线电压反馈 *
//**************** /
AdccRegs.ADCSOC1CTL.bit.CHSEL = 3; /*配置与 ADC/SOC 关联的引脚*/
AdcRegs.ADCSOC1CTL.bit.ACQPS = 30; SYSCLK 周期(ACQPS + 1) x 200MHz ^-1 = 155ns (数据表最小值= 75ns)*/
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 5; /* PWM1 SOCA => 10kHz *//*选择哪个事件 SoC 将触发转换开始*/

/********* /
/*分流电机电流 V *
/* /

AdcdRegs.ADCSOC0CTL.bit.CHSEL = 3; /*配置与 ADC/SOC 关联的引脚*/
AdcdRegs.ADCSOC0CTL.bit.ACQPS = 30;SYSCLK 周期(ACQPS + 1)中的/*采样窗口 x 200MHz ^-1 = 155ns (数据表最小值= 75ns)*/
AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 5; /* PWM1 SOCA => 10kHz *//*选择哪个事件 SoC 将触发转换开始*/

/*配置 PPB 以消除与减法相关的计算 *
AdcdRegs.ADCPPB1CONFIG.bit.config = 0; /* PPB 与 SOC0 */关联
AdcdRegs.ADCPPB1CONFIG.bit.OFFCAL = 0; /*现在将0写入此寄存器,直至偏移 ISR 运行 *

" ADC 依赖"的原因可能是什么?

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

    您好、GIR、

    是否对"U"相位进行采样?  

    通常、如果一个信号影响另一个信号、则该信号在同一 ADC 上为(1)、由于输入阻抗过高和/或 S+H 持续时间过短、因此为(2)。  最简单的测试方法是将 ACQPS 实际增加到某个较大值(最大值为511)、以查看问题是否得到解决或减少。  您还可以在对通道进行采样之前立即对内部 VREFLO 连接进行采样、如果这样做有所帮助、这也会指示高输入阻抗/ S+H 持续时间过短的相同问题。   

    VREFHI 输入上的确切值是什么?  100欧姆是否与10uF 串联?  您需要 R 处于 ~1欧姆或更低的配重中。  串联电阻器可确保驱动运算放大器保持稳定、但驱动运算放大器在驱动容性负载时需要非常好(器件文档中建议使用 OPA320)。  您可以尝试减小此 R (假设运算放大器将保持稳定)。  如有必要、您可以将 C 降低至可能的1uF。  您可能还想尝试使用这个基准电路来大大降低 ADCCLK;也许可以将预分频设定为/8?  这将为您提供25MHz ADCCLK。  您需要降低 SYSCLK 以进一步降低 ADCCLK。

    为了确保不同 ADC 上的 SOC 并行发生、 您可能需要在 ADC-D 上添加虚拟转换并对齐 SOC、以便 ADC-C 和 ADC-D SOCx 在给定 x 下使用相同的触发源和 S+H 持续时间、并且如果一个 ADC 上存在给定 x、则另一个 ADC 上也使用该 x (可能只是采样一个虚拟通道/内部 VREFLO 连接)。   



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

    您好!

    -在 ADCA3上对 U 相进行采样、类似于 V 相。

    -如原理图所示、VREFH 具有 C + R、就像在演示板中一样。

    -我尝试增加 ACQPS,但没有成功。

    但我检查所需的采样时间。 实际上、我将寄存器配置为30 (205ns)、而直流链路由电阻桥(165K/8.2K)生成、然后 ADC 输入容量为14pF、被拘留者大约为1到1.2µs Ω!

    但是、正如上面所说的、我尝试在没有变化的情况下配置1.5µs Ω。

    然后、我更改电阻桥值(10K /500欧姆)、这样采样时间可能为100ns。 然后、在尝试后、测量结果现在是正常的。

    感谢你的帮助