当单片机采样率大于adc的分辨率时会怎么样
大致流程,供参考:
mv1=read_ad();//读取电压值,暂存为历史电压(read_ad()是子程序,根据你的AD自己设计)
while(1)
{
mv2=read_ad();//读取当前电压值
if(mv2!=mv1)
{
mv1=mv2;//更新历史电压值
***;//按照你自己的要求处理,可以是语句,也可以是子程序
***;//适当延时,可有可无
}
***;//按键扫描
if(key==quit) break;//如果按了退出键,退出当前循环
}
采样率与分辨率不是一个概念的。一个是时间上的,一个是量程上的。
我是这么个意思,如果用一个8位adc对一个0~5v的模拟量采样,当ad的采样速度大于电压的变化速率是,是否会在一个点上多次采样,如果用单片机控制,该如何避免呢?
0~5v的模拟量说明是一个交流信号,那么采样率起码要高于信号频率的4倍以上最好10倍,你为何要“避免”。
单片机开两个寄存器,一个存历史电压值,一个存最新电压值,如果最新电压值等于历史电压值,就不处理,再去读取下一个电压值,直到最新电压值不等于历史电压值了,你就可以按照你自己的要求处理这个新电压值了,然后用这个新电压值替换掉历史电压值。如此循环,就可以剔除掉重复的电压值了。不知道这是不是你想要的?
是 就是这个意思
0~5v的模拟量说明是一个交流信号,那么采样率起码要高于信号频率的4倍以上最好10倍,你为何要“避免”。
其实还是没懂小编想要解决什么问题。