MF35_ 发表于 2024-5-30 15:36:41

本帖最后由 MF35_ 于 2024-5-30 15:37 编辑

scu319hy 发表于 2024-5-30 15:24
感谢大师指点
明白道理和能做得好是两码事
我还要再琢磨琢磨,看看是哪里没搞好



没有原理图,我不确定你的差分输入共模电压是否在合理范围内,看你的问题,应该是差分输入的共模范围存在问题,因为0.7V刚好是输入端过载时的电压溢出值,STM32即便做差分采样,每个输入端的电压范围也不能超过0~REF之间,也就是说任何一端都不能输入负电压,负电压只存在于两端的差模上,共模电压问题是很多人使用差分输入时常犯的错误

scu319hy 发表于 2024-5-30 16:10:35

MF35_ 发表于 2024-5-30 15:36
没有原理图,我不确定你的差分输入共模电压是否在合理范围内,看你的问题,应该是差分输入的共模范围 ...

电路在此,ADC的运放都是3.3V供电,肯定不会超输入范围的。

校准ADC1时,会切换到10欧电阻,LCR端悬空做为ADC1的输入+,输入-是3.3v供电的一半约1.65v
这时,ADC2_IN2和ADC2_IN3应该都是输入的参考电压。我前面说的-0.7v是的ADC1输入端的电压。

MF35_ 发表于 2024-5-30 16:39:45

scu319hy 发表于 2024-5-30 16:10
电路在此,ADC的运放都是3.3V供电,肯定不会超输入范围的。

校准ADC1时,会切换到10欧电阻,LCR端悬空 ...



你之前说“当校准电压小于约-0.7v时(ADC2两端都是-0.7v)ADC2读数不为0”,这里的ADC2应该是ADC1吧,ADC1两端都是-0.7V,我理解是两个输入端的共模电压都是-0.7V

scu319hy 发表于 2024-5-30 16:55:08

MF35_ 发表于 2024-5-30 16:39
你之前说“当校准电压小于约-0.7v时(ADC2两端都是-0.7v)ADC2读数不为0”,这里的ADC2应该是ADC1吧,A ...

是我的描述不清楚,-0.7v说的是ADC1的输入端差模电压。
ADC2此时两个输入端的共模电压都是约0.95v, 差模输入应该是0v。
ADC2输入端的共模电压在低于这个值时,采样结果就不为0,高于这个值就变成0了。

MF35_ 发表于 2024-5-30 17:09:06

本帖最后由 MF35_ 于 2024-5-30 17:24 编辑

scu319hy 发表于 2024-5-30 16:55
是我的描述不清楚,-0.7v说的是ADC1的输入端差模电压。
ADC2此时两个输入端的共模电压都是约0.95v, 差模 ...


STM32F3的ADC在使用差分模式时,共模信号必须是(Vref+Vssa)/2,也就是说,如果你的Vref是2V,Vssa是0V,那么共模信号必须是1V,做多允许10%的范围内浮动,而共模信号Vcom=(Vp+Vn)/2,因为此时你的Vp和Vn是电压相等的,当你的Vp=Vn=1V时,Vcom=1V,当Vp=Vn=0.95V时,Vcom=0.95V,低到0.9V就已经是芯片允许的极限了,所以会导致异常,这个说明在data sheet的106页



我不清楚你的Vref是多少,按你说的高于0.95V就正常了,我猜测应该是2.5V(最常见),那么你必须保证共模信号始终维持在1.25V

MF35_ 发表于 2024-5-30 17:23:43

scu319hy 发表于 2024-5-30 16:55
是我的描述不清楚,-0.7v说的是ADC1的输入端差模电压。
ADC2此时两个输入端的共模电压都是约0.95v, 差模 ...


大部分的差分输入ADC,并没有共模信号限制,只规定了每个输入端的共模电压,这种ADC的两个输入端,只要在输入共模电压允许范围内,就可以随便输入,这种ADC可以使用一种叫做伪差分的方式来输入,即一端固定在Vref/2电压,另一端输入0~Vref来实现±Vref/2的摆幅

但有一些差分ADC,要求共模信号在一定范围内,这种ADC就不能使用伪差分模式,比如STM32F3这个,假如Vref=2.5V,把其中一端固定在1.25V时,另一端摆动到0V和2.5V时,共模信号就会变成0.625V和1.875V,明显超出了1.25V±10%的范围,这种ADC的两个输入端电压,只能分别围绕Vref/2做对称摆动来维持共模信号的恒定

这里有两个名词容易混淆,共模电压和共模信号

我们一般把共模电压定义为差分信号的其中一个输入端对地的电压,所以有正输入端共模电压、负输入端共模电压,运放参数中的共模电压输入范围,就是这种,意思是每个输入端允许的输入范围

而共模信号,一般指差分信号正负端电压之和的一半,它指的是差分信号互相参考的中心点,全差分结构的运放会对这个值有要求

scu319hy 发表于 2024-5-30 17:29:34

MF35_ 发表于 2024-5-30 17:09
STM32F3的ADC在使用差分模式时,差分信号的共模电压必须是(Vref+Vssa)/2,也就是说,如果你的Vref是2 ...

感谢,这个好像能说得通了。
我当前用的参考电压就是3.3v。
但似乎只有在低于手册上的要求时会有问题,高于这个值看上去没有问题。
如果严格按手册要求,我这个参考端的设计完全不能满足差分输入的要求,只能搞伪差分了:L

MF35_ 发表于 2024-5-30 17:36:38

scu319hy 发表于 2024-5-30 17:29
感谢,这个好像能说得通了。
我当前用的参考电压就是3.3v。
但似乎只有在低于手册上的要求时会有问题, ...


伪劣差分也是不行的,看我上面第二个回复,你可以自己计算一下,虽说你测出像正方向偏没有什么问题,但不代表性能不受影响,手册既然给出了规定,最好就按照手册来,否则不能保证指标

scu319hy 发表于 2024-5-30 17:45:24

MF35_ 发表于 2024-5-30 17:36
伪劣差分也是不行的,看我上面第二个回复,你可以自己计算一下,虽说你测出像正方向偏没有什么问题,但 ...

嗯,我说的“伪差分”是真的“伪”差分,自己用两个单端输入减出来;P
f303似乎没有你说的伪差分输入模式。

现在的确会存在性能不达标的问题:
大信号下,参考端的输入刚好可以满足这个CMIR要求,读数就很稳定
小信号下,输入都是严重正偏的。读数就不稳定。难怪现在还不如我开始单端输入时稳定。
可能这也是我现在自动量程搞不好的一个原因吧

量子隧道 发表于 2024-5-30 18:20:45

本帖最后由 量子隧道 于 2024-5-30 18:34 编辑

我理解楼主的做法是用一个正弦交流电压源,施加给“Rref+Zdut”的串联电路上,比对Vref和Vdut的电压幅度和相位来算出Zdut。
如果是这样,那么我觉得调增益档前,首先要做的是让Rref和Zdut分的的电压都可观地大,尽量不偏颇,也即Vref和Vdut的模的最大值都尽量大。这样的话,测到的值比较大,误差和噪音的影响就相对小。
那么,可能步骤是,先换Rref,让Vref和Vdut都足够大;然后再调增益,让ADC尽量满量程但不溢出。
我对楼主是如何以单片机生成100KHz正弦波有兴趣。因为我曾经用STM32F103,以定时器中断来驱动软件DDS,生成过100kHz正弦波。我感觉对CPU计算资源消耗挺大,CPU净忙活计算波形了。请教一下楼主是用什么办法以CPU来产生100k正弦波的?

scu319hy 发表于 2024-5-30 20:09:48

量子隧道 发表于 2024-5-30 18:20
我理解楼主的做法是用一个正弦交流电压源,施加给“Rref+Zdut”的串联电路上,比对Vref和Vdut的电压幅度和 ...

你理解的完全准确。
正弦波生成我用的DAC,先算个正弦波数据,然后丢给DMA,用TIM驱动,往DAC喂就可以了,不消耗CPU的。输出用了两级RC滤波。现在最高能跑到500KHz以上。频率高的时候,幅值会变小。500K滤波后只有500mV的峰峰值。滤波后输出波形很好,100K以下可以做到示波器FFT看不出谐波成分。频率也非常准。
开始我用的PWM滤波,只能跑10KHz,主要是滤波器在不同频率下要调整。
如果要用单片机做MHz级别的正弦波输出,用方波滤波应该可以做到

nop 发表于 2024-5-30 20:43:18

stm32f303rct6脚多还便宜 几块钱:lol

scu319hy 发表于 2024-5-30 22:22:41

MF35_ 发表于 2024-5-30 17:36
伪劣差分也是不行的,看我上面第二个回复,你可以自己计算一下,虽说你测出像正方向偏没有什么问题,但 ...

再请教一下,有没有什么比较简洁的电路能把这种飘忽不定的差分信号给搬到参考点上呢?
我足足用了四个运放...
另外,仿真了一下相位补偿,用AD8552 2倍放大 0~100KHz范围,最多补偿到正负0.15度,换个放大比例,相位又差老远
再换个高速点的运放又补过头了:L
有啥方法能解决这个问题呢?

scu319hy 发表于 2024-5-30 22:24:28

nop 发表于 2024-5-30 20:43
stm32f303rct6脚多还便宜 几块钱

stm32f303cc是我10年前买的,10多块一片呢,陈年酱香型老货;P

MF35_ 发表于 2024-5-30 22:30:40

scu319hy 发表于 2024-5-30 17:45
嗯,我说的“伪差分”是真的“伪”差分,自己用两个单端输入减出来
f303似乎没有你说的伪差分输入模 ...


你这叫手动差分啊,问题是这样得测量两次,采样速度慢一倍:lol ,其他问题倒是没有,手动差分算是真差分

至于DAC输出频率高时衰减是很正常的,DAC输出的幅频特性遵循sinc曲线,所以频率高的时候滤波后幅度是衰减的,你可以理解为频率高单个周期内的输出台阶就变少了,因此台阶的落差变大,能量密度变低了(两个台阶之间的缺口变大)
页: 1 [2] 3
查看完整版本: 请教一个关于LCR测量,自动量程判断的问题