我想你的单片机硬件电路有问题
(1)如果S2为正时,S1为负,恐怕要损坏单片机,最好采样后用二极管整流,就只采样正半波峰值,二极管损失的电压可在单片机内用程序补偿。
(2)中断后当然要延时才能采到峰值电压,而且要相当精确的5ms。这也是你第三个问题要回答的,要准确,你就多采几次求平均值。
(3)峰值当然也要转换成平均值 公式为采的值/1.414
(4)最好将交流波的过零点区出发你的中断,交流波应采样整理,变成方波,输入单片机。这样才可靠
(5) 我补充一下,你可以看看单片机的资料,管脚负电压最高到多少,一般情况下,我记得能到-0.8V左右,而你的-3.5V恐怕就不行了。
(6)你为什么要正负半周全采集呢,不用的,正弦波么,采上半周足矣,峰值除以根2就是有效值了。我原来弄过的,没问题的!
一点感想,仅供参考:
用电阻进行电流-电压转换,可能会有非线性误差,可采用交流电流精密整流电路,即可采到负值,又提高线性
利用峰值算有效值,在纯正弦电路可以,实际电路可能不是(有整流滤波,没功率因数校正,电流成脉冲状),可用纯有效值转换电路。
如果不是计量电量,尤其是继电保护,可能不用考虑上述问题。
可以在数据处理时,屏蔽过零中断;可在采集信号有下降时认为前一个是峰值。
若不加运放,可在线圈2处不接地,接1/2基准电压,可采负值,注意1/2基准是零(采到1.2基准的值认为是0,低于的反相)
可能不会马上烧毁单片机,但有负电压可能单片机工作不正常,这种接法不好
应在输入加保护,TVS、二极管接VCC等,以免大脉冲,
仅供参考
二次电流一般是不变的,5A或1A. 二次匝数越多代表变比越大,1000匝就是1000/5A或1000/1A 一次匝数多,二次匝数不变,变比会越小 显示电流小,
S2与单片机共地会造成信号不一定准确,正确方法应该是S1和S2直接连两个50欧的电阻,两电阻之间为地才合适,再使用一级放大器利用直流特性把信号抬高,再送进AD。
不过我觉得你要是需要得到电流值,那么去计算有效值要比得到峰值再除以根号2来的准确。万一再峰值的时候正好有个毛刺,那出来的数值差挺大的。