概述
做一个消毒灯检测项目,用UVC的光电池采集紫外光强度。
发现采集的AD值会上下波动,很有规律,当时就很纳闷,难道我的AD值有问题(如下图)
然后就用上万用表,发现万用表的电压值很稳定,电压稳定上涨,不会上下周期性波动。
当时就懵逼了,越发的怀疑我的AD采集程序有问题。
反复验证无果后,经过高人大神指点后,用上示波器,一看,果真电压上下波动。
经过反复确定,是光源有波动,接下来然后就是数字滤波了。选用中位值平均滤波法(又称防脉冲干扰平均滤法)
//AD采集数据
void GetUVC(void)
{
uint16 i,j,temp;
uint32 sum=0;
for(i=0;i<uvc.N;i++)
{
uvc.value_buf[i]=HalAdcRead(HAL_ADC_CHANNEL_6, HAL_ADC_RESOLUTION_14);
Onboard_wait(300);
}
for(j=0;j<uvc.N-1;j++)
{
for(i=0;i<uvc.N-j-1;i++)
{
if(uvc.value_buf[i]>uvc.value_buf[i+1])
{
temp=uvc.value_buf[i];
uvc.value_buf[i]=uvc.value_buf[i+1];
uvc.value_buf[i+1]=temp;
}
}
}
sum=0;
for(i=3;i<uvc.N-3;i++)
sum+=uvc.value_buf[i];
uvc.value=sum*1.0/(uvc.N-6);
UpdateUVC();
}
经过反复调整采集数据长度和采集时间间隔,最终滤出的波形如下(一次比一次好~~~)
最后
以上就是聪慧柠檬为你收集整理的UVC 光电池 ADC采集经验之谈的全部内容,希望文章能够帮你解决UVC 光电池 ADC采集经验之谈所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复