分享一个单片机AD值的滤波算法,连续采用10次AD值,去掉最大值和最小值,剩余的8位相加然后取平均值。这种算法用代码实现方式有很多种,我这个仅供参考,主要是比较好理解,应用场景:检测电池电压或者检测电解电容电压,比如检测电池电压低于3V时,报警灯亮,如果只检测一次AD值,误差会比较多。尤其是每个阶级AD相差不大,AD参考电压没有取内部电压,AD采用频率过高,误差会更大。
1、单片机采集电压,电流,频率可以用哪几种方法来实现?电压直接用ADC来测量。电流通过电阻转换为电压,再由ADC测量。频率通过计数器或者定时器测量。当然通过V/F变换,把电压电流信号转换为频率信号,也能完成测量。串行口采集频率的说法还没听说过。这样看在哪用了工业上采集设备运行时的电压电流频率都是通过AD来完成~单片机将收集到的数据用DA转换成常见的420mA信号~传输给DCS模块~或者直接用485总线422总线~并入CAN总线当中再由DCS模块经处理加地址转换成串口或者通过局域网连接电脑。
2、单片机AD采集回来的数值如何能显示为对应的电压值?voltageAD_data*Vref/。voltage为电压值:AD_data为AD芯片的采集离散数值。Vref为基准电压:为2^24。比如是2.5V,ADC转换的电压就是2.5/65535*nAdc(V)。nAdc就是采集的ADC的值,也就是说,ADC的量程为0~2.5V,最小分辨率为2.5/6553538uV。Vref就是AD的参考电压,比如要转换5V的电压~Vref10V,GND0V那么输出的AD结果就是32768(65536的一半),而如果Vref5V,GND0V那么输出的AD结果就是65536。
3、adc采集的电压值数值如何真有效性转换首先,ADC采集电压不准确,和好几个因素都有关系。1、电源纹波,电源纹波会导致地线抖动,从而影响ADC内部的比较器,影响采集,2、ADC采集的基准,ADC内部比较需要基准做对比,如果基准不够稳定,那么采集出来的数据抖动就会比较大。可以用专门的基准芯片,3、若从软件的角度上来说,要处理这个问题,可以采用简单的滤波法。比如采集的电压在61.5附近抖动,取整的话会变61或者62,这个时候可以简单做个函数规避一下。