本帖最后由 virtualtryon 于 2011-10-9 13:07 编辑
不用过零判断,而是要同步采样,采样率与信号频率要同步.
如果周期变化大的话,要检测信号周期,假设采样率为N,应当严格控制ADC时间间隔为T/N,否则会因为不同步引入误差.
采样个数应当取2^N个,PIC16没有硬件乘除法,做乘除法运算太慢了.LZ的程序应该没办法做到连续几个周期平均,MCU忙不过来.
另外要减去直流分量.
如果第i个AD采样值为ADi,则算法为
m=sqrt(ΣADi^2-N*(ΣADi)^2)/N
u=m*k+b
k,b为标定系数.
|