正如28075芯片手册5.8.1.1.1描述,AD转换中,奇通道转偶通道,反之亦然的话,Ch的初始电压会被放掉到VREFLO,但是如果奇通道转奇通道,偶通道转偶通道的话,Ch的初始电压会保持在上一次采到的电压。
事实上我们在使用28075进行采样时,确实也发现了这个现象,当前采样的结果受到了上一次采样结果的影响。
所以想咨询一下,
1.要避免这种情况发生的话,要怎么处理?
2.官方文档中有没有给出电路来解析为什么奇通道转奇通道,偶通道转偶通道的话,Ch的初始电压会保持在上一次采到的电压?(目前我没找到相关电路)
3.想确认一下奇偶通道指的是ADCA1和ADCA2引脚的奇偶区别?还是指的是SOC1和SOC2的奇偶区别?
Howard Zou:
1. 笼统地说就是增加采样窗的时间。至于怎么计算采样窗时间见TRM的
9.3.2 Choosing an Acquisition Window Duration
章节,或者用PSPICE仿真。
2. 这段话的描述的是在采样初始阶段两个奇通道或者两个偶数通道会短暂相连,而不是说Ch上的初始电压会保持在上一次采样到的电压(因为肯定会保持在上一次采样到的电压啊),且这段话已经不适合现在的F28075了,这个问题是存在于老版本的F2837x上面,下面这个F2837x的勘误表,在ADC Input Multiplexer Connection at Beginning of Acquisition Window里面有讲到,对于F2837x,0版本和A版本的芯片会有这个问题,而B版本和C版本则不会有了。F28075勘误表可以在官网搜索料号,点进去后有errata,可以看到F28075只有B和C两个版本,不会有这个问题,你用的是哪个版本?
3. 奇偶说的是ADCA1和A2,不是SOC1和SOC2.
user4373386:
回复 Howard Zou:
这么说的话,28075应该不会出现这个问题才对,不过实际上我调试中确实有发现这个问题。调试中我使用ADC的D模块的SOC5触发了ADC15引脚(采样的是电网电压)以后,隔了14us再使用ADC的D模块的SOC0触发ADCD2引脚(采样的是A相电流)。配置如下:
AdcdRegs.ADCSOC5CTL.bit.CHSEL = 15; // VinB ADC15 D_SOC5 AdcdRegs.ADCSOC5CTL.bit.ACQPS = 69; // sample window is 600ns AdcdRegs.ADCSOC5CTL.bit.TRIGSEL = 0x0B; // trigger on ePWM4 SOCA
AdcdRegs.ADCSOC0CTL.bit.CHSEL = 2; // ILA ADCD2 D_SOC0 AdcdRegs.ADCSOC0CTL.bit.ACQPS = 23; // sample window is 200ns AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 0x1B; // trigger on ePWM12 SOCA
当前工况是电网电压已经接入进来,所以ADC15引脚会有一个频率为50Hz的正弦波信号,但是因为没开机,所以电流为0,所以ADCD2引脚上按道理应该是一个固定的直流电平。但是实际采出来,发现ADCD2引脚采出来是一个幅值较小的正弦波。发现B、C相电流采样均正常,是一个固定的直流电平(无异常)。如下图所示红色为A相电流(异常的)、蓝色绿色分别为BC相电流(正常的):
实验中做过详细检查,发现实际上A相确实是没电流的,并且我做过实验,把ADC15引脚通过ADC的B模块去触发采样后,A相电流采样则可以恢复正常。所以证明这应该就是DSP采样中哪里出现了问题。并且后续实验我把ADCD2引脚的采样窗口时间加大了3倍,这个异常的正弦波波形依然无法消除。请问这个问题我可以往哪个方向去查?
Howard Zou:
回复 user4373386:
你的采样顺序是电网电压(哪一相?),A相电流,B相电流,C相电流吗?然后这些都是通过ADC的D模块采样?
ADCD2引脚的采样窗口时间加大了3倍,原来是200ns,现在改成了600ns还是会有问题对吗?
能否贴出输入到ADC端口前的调理电路的原理图?电压和电流的。
user4373386:
回复 Howard Zou:
电网电压是B相电网电压,我把电压采样和电流采样的配置都贴出来吧,注释中有标注ABC分别对应哪个引脚,如下
//——————————电感电流同步采样——————————————-AdcdRegs.ADCSOC0CTL.bit.CHSEL = 2;// ILAADCD2D_SOC0AdcdRegs.ADCSOC0CTL.bit.ACQPS = 23;// sample window is 200nsAdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 0x1B;// trigger on ePWM12 SOCA
AdcdRegs.ADCSOC1CTL.bit.CHSEL = 0;// ILBADCD0 D_SOC1AdcdRegs.ADCSOC1CTL.bit.ACQPS = 23;// sample window is 200nsAdcdRegs.ADCSOC1CTL.bit.TRIGSEL = 0x1B;// trigger on ePWM12 SOCA
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2;// ILCADCB2B_SOC0AdcbRegs.ADCSOC0CTL.bit.ACQPS = 23;// sample window is 200nsAdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 0x1B;// trigger on ePWM12 SOCA//——————————电网电压同步采样——————————————-AdcbRegs.ADCSOC5CTL.bit.CHSEL = 0;// VinAADCB0 B_SOC5AdcbRegs.ADCSOC5CTL.bit.ACQPS = 69;// sample window is 600nsAdcbRegs.ADCSOC5CTL.bit.TRIGSEL = 0x0B;// trigger on ePWM4 SOCA
AdcdRegs.ADCSOC5CTL.bit.CHSEL = 15;// VinBADC15 D_SOC5AdcdRegs.ADCSOC5CTL.bit.ACQPS = 69;// sample window is 600nsAdcdRegs.ADCSOC5CTL.bit.TRIGSEL = 0x0B;// trigger on ePWM4 SOCA
AdcaRegs.ADCSOC7CTL.bit.CHSEL = 0;// VinCADCA0 A_SOC7AdcaRegs.ADCSOC7CTL.bit.ACQPS = 69;// sample window is 600nsAdcaRegs.ADCSOC7CTL.bit.TRIGSEL = 0x0B;// trigger on ePWM4 SOCA由配置可以看出,电流采样由EPWM12 SOCA触发,电压采样由EPWM4 SOCA触发,EPWM12 SOCA发生在EPWM4 SOCA触发后的14us触发。
实验中若我把ADC15的触发改为B模块的SOC6触发,则14us后,C相电流采样(ADCB2引脚,使用B模块的SOC触发0)就会出现同样的异常,而A相电流采样则恢复正常ADCD2引脚的采样窗口时间加大了3倍,原来是200ns,现在改成了600ns还是会有问题。
电网电压和电流的调理电路我让我们硬件工程师滕工通过邮件发给你了。
hao li1:
回复 Howard Zou:
您好,我们现在使用28075也遇到同样的问题,也是ADCD模块采样的时候,被其他通道影响了;
ADCIND0通道采样直流电压,触发源为EPWM5,周期125us,使用SOC3
ADCIND1通道采样正余弦编码器数据;触发源为TIMER0,周期250us,使用SOC4
ADCIND2~ADCIND4采样电机三相电流Iu,Iv,Iw,触发源为EPWM4,周期为62.5us,分别使用转换通道SOC0,SOC1,SOC2
这种配置情况下,U相电流会附带一个周期为250us的干扰,V相和W相就没有,当修改TIMER0的周期后,干扰周期耶跟踪TIMER0的周期变化,当所有通道的触发源改为同一个后,就正常了,请问这个是什么原因导致的?
Sheldon He:
你好,
请先通过如下方式确定一下出现该现象的芯片版本。方法如下:
如果是B版本则还有如下问题,如果是C版本则不该出现这个问题:
勘误表推荐的解决方法是在切换奇偶数通道的时候考虑额外的采样保持电容,然后通过ACQPS补偿。
因为我没有办法亲自测试所以请你们有机会试试。
谢谢
hao li1:
回复 Sheldon He:
芯片丝印是:TMS320 F28075PTPT YF.C- 87C0F9W G4,是C版本。您说的额外的采样保持电容,不太明白怎么加,看图3是芯片内部增加阻容滤波。