|
发表于 2012-10-29 10:51:34
|
显示全部楼层
本帖最后由 ddr 于 2012-10-29 11:07 编辑
电路进行过 PROTEUS 仿真,精度很好。
只是实物 还没有做,AD 选择困难,我感觉要用16bit AD,但是价格不菲啊 将近100块了,不过 如果经过大家肯定的话,做有一个也可以的。
仿真是 使用 avr mega164p 单片机timer0产生16x 方波 给正玄波发生部分。单片机timer1定时器同时 产生硬件采样脉冲,送给采样保持器(下降沿有效),100hz 使用1.6k 采样;1k使用3.2k 采样,10k,100k 使用约3.2k 采样;除了100hz 其他都是等效采样。采样64点后进行DFT。
ISR(TIMER1_COMPB_vect) // 比较匹配中断B
{
unsigned int svol;
unsigned int scur;
unsigned char tmp;
// 同步采样电压和电流
SEL_VOL;
svol=read_ltc1864(ch2);
SEL_CUR;
scur=read_ltc1864(ch1);
tmp=tmp_index&(16-1); // 求 除以16的余数
tmp=tmp|(phs_index&(~(16-1)));//
vol[tmp]= svol;
cur[tmp]= scur;
phs_index++;
phs_index&=(DFT_LEN-1);
tmp_index+=sh_pram.sim_sample_cycle;
}
以上采样中断代码,在采样脉冲下降沿,保持信号同时 比较匹配中断 开始采集数据 跳转顺序后放于序列中。
上图是 仿真结果。spl_vol 是电压 DFT后结果。spl_cur是电流。spl_z 是阻抗没有和参考电阻相乘;caled...是和参考电阻和修正相位相乘后结果。 仿真电阻1k,档位电阻也是1k。 |
|