打印
[运放]

PhotoDiode运放不理解的地方

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
21
〽️〽️〽️|  楼主 | 2021-3-8 13:25 | 只看该作者 回帖奖励 |倒序浏览
如图,GD32的

1615181101(1).jpg (304.83 KB )

1615181101(1).jpg

使用特权

评论回复
22
玄德| | 2021-3-8 13:35 | 只看该作者

提供另外一个思路:
这个GD芯片的AD,性能怎么样?
据我所知,ST芯片的AD很一般,这个GD我相信不会太好。




使用特权

评论回复
23
玄德| | 2021-3-8 13:39 | 只看该作者

把模拟电路、AD采集分开,各自单独考察。


使用特权

评论回复
24
〽️〽️〽️|  楼主 | 2021-3-8 14:08 | 只看该作者
玄德 发表于 2021-3-8 13:35
提供另外一个思路:
这个GD芯片的AD,性能怎么样?
据我所知,ST芯片的AD很一般,这个GD我相信不会太好。

这点 我也试过
前面有说GD32 实际是10位ADC什么的。 然后用STM32F051来测试过,采集的ADC值,输出到串口PC 曲线数据分析 倒是差异不大,只能说GD 80分话,ST的85分吧,也可能我采集的方式等不合理,看不出差异。

原先进口产品用的EFM32G210XXX    silicon lab 模拟界很厉害,但实际我也不知道进口产品代码怎么实现的
无法对比,光示波器看 也看不出波形。

这个产品尺寸非常小,CPU只能4*4mm内才能布局下,可选的QFN28 ,QFN32的带ADC 还要DAC的不是太多。

华大一款170  也打算画板子试试看。

使用特权

评论回复
25
〽️〽️〽️|  楼主 | 2021-3-8 14:10 | 只看该作者
本帖最后由 〽️〽️〽️ 于 2021-3-8 14:11 编辑
玄德 发表于 2021-3-8 13:39
把模拟电路、AD采集分开,各自单独考察。

这点也是很好的建议。

实际几周前我将 模拟电路运放和光学部分做一起。    然后adc  dac  电源   引出线 10cm 到    另外一块纯数字电路的GD32F150 核心开发板上后
性能就好了很多,表现就是采集稳定。 所以阻抗 匹配,布局是确定有影响的

使用特权

评论回复
26
叶春勇| | 2021-3-8 15:09 | 只看该作者
〽️〽️〽️ 发表于 2021-3-8 12:44
是的,叶总,没错。
是关闭LED激发脉冲(如上图,持续激发10ms样子)后,采集整个过程大约30ms,前面6ms   ...

你是用这个算法?

使用特权

评论回复
27
〽️〽️〽️|  楼主 | 2021-3-8 15:23 | 只看该作者
本帖最后由 〽️〽️〽️ 于 2021-3-8 15:53 编辑

我用的没这么复杂,这个看着好复杂,GD32 能几ms内计算完成吗? 因为考虑串口modbus通信,不能阻塞大量时间计算。
ln计算还是挺耗时的 cpu不带硬件浮点计算因此我的方法是这样的

1.  A  B   C   D   E   F     G   这7段  都是1ms一段,每段有100个 adc采集值
2.  将G噪声段 去掉最大,去掉最小做平均
3.  A  B   C   D   E  F  数据全部减去G的平均值,然后600个数据全部归一处理
4.  A段100个数据平滑累加得到一个值, B也是,依次到F,
5.  I0 就是第一个取的3000值,他是动态的 3000 ±1%
6.  然后t1=T1/ (lnI0-ln A) , t2=T2/(lnI0-ln B),  。。。。算法t6  。Tx就是I0时间开始的一段一段加大值
7.  得到 t1 t2 t3 t4 t5 t6
8.  以F段的最后一个数据为I0, 反过来倒退计算 6段t, t7=T7/ (lnXX-ln F)....  得到t7 t8 t9 t10 t11 t12

( t1 t2~~~~~t12  理论上在指数曲线上,那么按指数衰减点上 这样计算全都是比如3500,但实际存在双指数曲线问题,噪声等等
有差异的,特别是刚开始采用的A段指数计算,还有尾巴的中间的比较平稳些,其实这部分算法我还是没彻底高清怎么处理才能更平稳到小数点)
9.  再t1~t12进行去最大最小后求平均,得到要的最终t值


12位的ADC 和DAC 闭环控制这个系统,需要-50°C到200°C  做到 0.1精度 ,稳定下来。

使用特权

评论回复
28
〽️〽️〽️|  楼主 | 2021-3-8 15:29 | 只看该作者
本帖最后由 〽️〽️〽️ 于 2021-3-8 15:30 编辑
叶春勇 发表于 2021-3-8 15:09
你是用这个算法?

方法如上回帖

使用特权

评论回复
29
〽️〽️〽️|  楼主 | 2021-3-8 16:04 | 只看该作者
关于器件更新下,楼猪层 我说错了±0.25pF
实际是C1 ,1pF容量   ±0.05pF     ML03511R0AAT2A

使用特权

评论回复
30
叶春勇| | 2021-3-8 16:20 | 只看该作者
〽️〽️〽️ 发表于 2021-3-8 15:23
我用的没这么复杂,这个看着好复杂,GD32 能几ms内计算完成吗? 因为考虑串口modbus通信,不能阻塞大量时间 ...

我看了你发的资料,最终值有个直流偏置
跟你的方法对比,我是求差,把偏置c搞掉了。
我是在固定时间T0开始,读个ADC值,然后等间隔T0+T,T0+2T读取两个值
通过推导三点拟合求出I=a*e^(b*t)+c我的b是tao(T)的倒数
我这个不求平均值,得出个b=(1/T)*ln((I0-I2)/(I0-I1)-1)
tao(T)=T/ln((I0-I2)/(I0-I1)-1)
通过求差c偏置,被抵消了
a是增益,变化不大

你的数值减去了G段,相当于最终输出为0.

使用特权

评论回复
评论
叶春勇 2021-3-8 17:59 回复TA
@〽️〽️〽️ :可以的,不过还是把硬件搞好,你贴出adc,高速采集的输入阻抗的确是个问题,pcb也有限 
〽️〽️〽️ 2021-3-8 17:18 回复TA
请问下,您方案是不采集衰减完成后很长时间一段噪声G吗? 理论每次都是入40~45稳定,但有时周期内可能30~60都有 还有这个推导三点拟合,是通过采样一些数据后自己模拟出的公式吗? 这样可以适配各种情况的光路长度不? 
〽️〽️〽️ 2021-3-8 17:10 回复TA
这个 我得慢慢理解 消化下您的方案 ,然后也来试试,谢谢! 
31
叶春勇| | 2021-3-8 16:45 | 只看该作者

我个人认为,dac调光是多余的。

使用特权

评论回复
32
〽️〽️〽️|  楼主 | 2021-3-8 17:00 | 只看该作者
本帖最后由 〽️〽️〽️ 于 2021-3-8 17:01 编辑
叶春勇 发表于 2021-3-8 16:45
我个人认为,dac调光是多余的。

这个我个人的理解应该必须要的
DAC是调节LED强度的,如果没有强度控制的话,那不同的传感器线,有的1米,有的10米才能经过光路返回,同样的温度,返回的固定时间第一个假如各种ADC值都有的话,差距值也非常大,
I0 现在就是为了恒定3000     适应各种返回光纤长度返回,实际就是适应各种光学返回adc,  不加DAC改变LED强度   那好像没法解算t值吧?

使用特权

评论回复
33
〽️〽️〽️|  楼主 | 2021-3-8 17:07 | 只看该作者
本帖最后由 〽️〽️〽️ 于 2021-3-8 17:30 编辑
叶春勇 发表于 2021-3-8 16:20
我看了你发的资料,最终值有个直流偏置
跟你的方法对比,我是求差,把偏置c搞掉了。
我是在固定时间T0开 ...

其实我也一开始就采集 几个点 用您这方法差不多过程的。 当然求差C偏置这个我不理解,所以没用到

只采集几个点的话 会数据非常不稳, tao 值可能几十上百的变化。 因此我摸索了几个月
才形成了上述我的方案。

关于G段,因为噪声可能变动,所以我所有采集的ADC值,都去掉了噪声。实际硬件测试时发现
好像去不去掉都影响不大, 但是老外做的它的噪声去掉直接稳定!
不去噪声也是跳动很大(不用铜包裹产品接GND)
这里面至于软件怎么去的 ,我没源码也未知,但通过实验就是硬件产品外壳塑料的,塑料再用金属皮
包裹后与电源GND接一起,就超级稳定.

我设计的和老外明显差异就是, 我的铜皮包裹后 噪声可以看到值波动很小很小,可对tao值最后没多大关联,还是不稳定tao。

这样的我计算方式应该是不太合理的,确实是G段噪声 有没有 最终和计算tao 基本没多大关系了,这也是疑惑我很久的问题,如何取解决

使用特权

评论回复
34
叶春勇| | 2021-3-8 17:26 | 只看该作者
本帖最后由 叶春勇 于 2021-3-8 17:29 编辑
〽️〽️〽️ 发表于 2021-3-8 17:07
其实我也一开始就采集 几个点 用您这方法差不多过程的。 当然求差C偏置这个我不理解,所以没用到

只采集 ...

说白了,你知道2500adc对于的t,可以反求出3000adc对于的t

使用特权

评论回复
35
〽️〽️〽️|  楼主 | 2021-3-8 17:34 | 只看该作者
叶春勇 发表于 2021-3-8 17:26
说白了,你知道2500adc对于的t,可以反求出3000adc对于的t

是的,到不了0。 30~60样子

使用特权

评论回复
36
Jack315| | 2021-3-8 22:30 | 只看该作者
【软件部分】曲线拟合:
软件需要对 ADC 数据拟合 y = a * exp(-b * x) + c 这样一个函数。

示例 1
从 17 楼的图中读了一组数据:

在 Matlab 中用 Curve Fitting 工具拟合了上述函数:


示例 2
在 Excel 里:

利用规划求解 (Solver):

通过使误差平方和最小,而求得拟合函数的参数。

算法 1
p1 = p - c
p —— ADC 读数。
c —— 拟合函数参数之一。
y = Ln(p1)
用 t 和 y 进行线性回归
t —— 采样时刻。

对不同的 c 值,重复上述过程,使得拟合优度指标 R2 达到最大。
需要迭代是这个算法的一个不足之处。

线性回归在数理统计的教科书上有。
由于 p1 必须大于 0,在拟合过程中,需剔除 p < c 的数据。
这是这个算法的另一个不足之处。

算法 2
仿照 Excel 规划求解的方法,
这个算法需要自行设计规划求解,并进行迭代。

曲线拟合还有其它的方法,比如将(指数)函数展开成级数,
然后拟合多项式……

各种算法各有千秋。LZ 自创的算法需参考示例的方法,验证其正确性。
如果有(比较大的)偏差,就需要重新设计算法。

使用特权

评论回复
37
〽️〽️〽️|  楼主 | 2021-3-8 22:37 | 只看该作者
Jack315 发表于 2021-3-8 22:30
【软件部分】曲线拟合:
软件需要对 ADC 数据拟合 y = a * exp(-b * x) + c 这样一个函数。

谢谢,我把一些采用数据发出来看看

使用特权

评论回复
38
〽️〽️〽️|  楼主 | 2021-3-8 22:44 | 只看该作者
本帖最后由 〽️〽️〽️ 于 2021-3-15 17:21 编辑

分段采集的 ADC, 多次采集。
ADC的 曲线,看着时候没有明显的异常ADC 都重合一起了


使用特权

评论回复
39
〽️〽️〽️|  楼主 | 2021-3-8 22:46 | 只看该作者
如上图,我打印了 1m内的 间隔100us 的10组数据,  对应  A   B  C  D  E  F    最后Z就是G段噪声adc值

使用特权

评论回复
40
Jack315| | 2021-3-8 22:58 | 只看该作者
【硬件部分】
信号放大后,在进入 ADC 之前需要一个抗混叠的低通滤波器。
具体可参考下列帖子:
《ADC采集低通滤波问题》的 14 楼:
[https://]
bbs.21ic.com/icview-2868898-1-1.html

C1 和 C2 及相关电路构成了一个低通滤波器。
在原设计中用的单片机中自带一个 RC 低通滤波器。
两者合起来,在阻带有 -60 dB 的衰减。
从这一点来说,对 12-bit 的 ADC 基本能满足要求。
新设计中用的单片机没有自带的低通滤波器。
这样在阻带就只有 -40 dB 的衰减,有点欠缺。

ADC 的输入是采样保持电路,对输入信号源的内阻要求足够小。
作为一个万全的措施,宜再加一级跟随器电路。

数字电路(单片机)有强烈的开关干扰。
因此在 PCB 布线时,数字地与模拟地要分开走线,在电源处合并。
在电源回路中的磁珠视情况而决定是否需要。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则