1. 背景
1.IO1=周期脉冲输出口
2.IO2=DAC输出控制口 12位DAC
3.IO3=ADC采样输入口 12位ADC
2. 功能
IO1周期的发送脉冲LED光,经过光学电路后,会有光返回,利用photodiode接收光返回值后
再运放放大电压值,就会有IO3的ADC可采样
然后在脉冲高变低 LED熄灭时,读取返回的ADC的值,这里我们规定了ADC值要2000,并且保持±1% 也就是1980到2020才能正常
ADC的返回值会随着外界各种情况变化,但我们需要采样时保持其第一个采样点必须2000,±1%,只有第一个点对了,后面再分组采样ADC。
这里如何保持第一个点是2000,在电路设计时就加了运放可通过IO2的DAC去控制IO1的光强度,此时如果检测到ADC返回2099就DAC调低,
反之,如果检测到ADC返回1966就DAC调高。 通过调到2000,±1%时,再采样的后面几组才有实际意义。
3. 难点
现在我利用2个定时器,1个发送周期的LED脉冲;
另外一个定时器,在脉冲发送结束了,就去间隔采样;
但是这个时候发现很难调平衡±1%,目前可调到15%的样子,晃动厉害;
是否有什么算法可快速平衡且平稳?
这里面有什么好的办法和算法来实现吗?
目前我的方法是,定时器A等待脉冲高LED发光结束,就立刻采样ADC,如果不是2000,±1%,就根据偏离的值大小,用±100,±50, ±10,±5,±1来调节使它靠近2000.
注意有时候返回可能是4000,所以要±100,甚至±1000的去操作。
等待靠近了2000 满足±1%了,就间隔us去 采样 n组ADC。这样通过这些ADC就能得到有效值。 |
思路不对吧,发光即时决定了测光强的AD 值,无论怎么快速AD,也会受LED熄灭的影响。