要用单片机测量交流220V的电压,需要三个步骤:
将高压的220V电压变压成低压交流信号;
一般通过电压互感器将220V的电压转换为低压交流信号,
电压互感器的电路如下:
电压互感器的规格为初级电流和次极电流的比值为1:1,上图的电路中,初级的额定电流峰值为1.55mA,选择电流比为1:1的是压互感器,则次级电流=初级电流=1.55mA。
选择250欧的采样电阻,可以得到峰值为1.55V的电压。
将低压交流信号调理成可以输入单片机进行A/D采样的信号,
如果我们选择目前最流行的Cortex-M0, Cortex-M3内核的处理器,比如STM32F051或者STM32F103处理器,其A/D转换的输入电压范围为0-3.3V。
而从电压互感器得到的电压为-1.55V~1.55V的交流信号。
可以选择两种计算方式,平均值和真有效值。
平均值通过计算电压绝对值的平均值,换算出电压的有效值。
而真有效值则是在一个周期内等间隔采样N个点,根据真有效值的计算公式计算出电压的真有效值。
通过计算平均值换算出有效值的方法仅适用于没有高次谐波的正弦信号,而且精度和实时性都比较差。
计算平均值的电路比较简单,最简单的可以用一个桥式整波电路整成直流,再通过运放做放大以及阻抗变换,再输入单片机的A/D输入口。如下图:
甚至有些简易的电路,连运放都省了,通过桥式整流电路之后,简单电阻分压就输入到A/D输入口。
讲究一点的可能用下图的精密绝对值的电路,将交流信号处理成正向的电压信号。
对于采用真有效值计算方法的电路,则不需要进行整流或者绝对值变化,只需要将信号放大之后,将其直流电平抬升到最高电压(如3.3V)的一半即可,如下图:
电压互感器输出的信号经过U1A放大之后,再通过U1B与VR1进入叠加,将交流信号的直流偏置抬升到1.55V左右,使得交流信号的输入范围在0-3.3V之间,然后再输入到A/D输入口。
软件算法:
对于平均值计算方法,软件比较简单,只需要在一定时间内,比如200ms时间内,采集若干个点,这若干个点再取算术平均,之后,再通过标定程序换算成有效值即可。
而对于真有值计算方法,则需要通过下述步骤:
配置一个定时器用于触发A/D转换,使得在市电的一个周期内等间隔采样若干个点。比如20ms内采样128个点,则将定时器的周期设置为156.25us,通过溢出中断去触发启动A/D转换。
当采集完一个数据之后,进行A/D转换中断,在中断程序中计算,AD*AD的累加和,以及AD的累加和。
采集完一个市电周期(比如20ms)之后,将AD的平方和,即AD*AD的累加与和的平方做运算,算出AD的真有效值,再通过标定程序算出电压的真有效值。
一个市电周期计算完成后,将平方的累加和的变量、AD的累加和的变量清零,进行下一个周期的计算。