- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于FPGA的交流电测量仪的设计
在电力调度自动化系统中,测量电压和频率是最重要的功能。如何快速、准确地采集显得尤为重要。目前根据采集信号的不同,可分直流采样和交流采样两种方式,直流采样虽然设计简单,但无法实现实时信号的采集;变送器的精度和稳定性对测量精度有很大影响,无法满足电力系统实时性、可靠性的要求 。交流采样法按照一定规律对被测信号的瞬时值进行实时采样, 再按设计的算法进行数值处理, 从而获得测量值。与直流采样法相比更易获得高精度、高稳定性的测量结果。由于FPGA运行速度快、内部程序并行运行,具有处理更复杂功能的能力,因此FPGA[1-3]和交流采样相结合,可以满足电力系统实时性、可靠性的要求。
1 系统硬件电路组成
以日常照明所用的交流电(电压为220 V,频率为50 Hz)为测量对象,测量系统的组成电路主要包含供电、互感变压器(TV)、A/D转换电路以及FPGA、显示电路和报警电路。测量系统框图如图1所示。
220 V交流电压经过互感变压器(TV)后的输出电压为-10 V~+10 V,满足电压芯片ADS7804输入端的要求,通过ADS7804将输入的模拟量转换成数字量送到FPGA,得到量化电压值。一方面在一个周期(0.02 s)内对电压的采样值采用计算均方根的方法计算出交流的有效值即电压的大小;另一方面对量化的电压值进行分析,计算出2个正弦波的时间,并算出频率。通过显示电路分别显示电压值和频率值。如果电压低于正常电压的80%或达到正常电压的120%,或者频率低于49.00 Hz或高于51.00 Hz时,启动报警电路。
1.2 ADS7804芯片
ADS7804芯片是12位A/D转换器,以其较高的性能价格比在仪器仪表中得到广泛的应用。ADS7804芯片内部含有采样保持、电压基准和时钟等电路,可极大简化用户的电路设计,减少硬件开销,并可提高系统的稳定性。该A/D转换器采用逐次逼近式工作原理,单通道输入,模拟输入电压的范围为±10 V,采样速率为100 kHz,可以完全满足电力系统中50 Hz交流电的采样需要。
ADS7804芯片的VIN(1脚)为输入的模拟信号,输入模拟量大小为-10 V~+10 V,6~18脚为输入模拟信号转换的数字量并行输出口,用于将转换的数字量输出,CS(25脚)为片选信, R/C(24脚)为读取结果/模数转换控制信号,BUSY(26脚)用于指示转换是否完成。读取时首先将R/C脚电平变低;然后在CS脚输人一个脉冲并在其下降沿启动A/D转换,此脉冲的宽度要求在40 ns之内;这时BUSY脚电平拉低表示正在进行转换;在经过大约40 ns~6 μs以后,转换完成,BUSY脚电平相应变高;再把R/C脚电平拉高,这样,CS脚脉冲的下降沿即把转换结果输出到数据总线。
ADS7804芯片将模拟电压转换为数字量,以二进制的补码输出。该芯片电压分辨率高达4.88 mV。
1.3 FPGA芯片
现场可编程门阵列(FPGA)作为专用集成电路(ASIC) 领域中的一种半定制电路而出现,是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能。在修改和升级时,不需额外地改变PCB 电路板,只是在计算机上修改和更新程序,使硬件设计工作转变为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本,因此得到广泛的应用。
本设计中FPGA主要负责控制A/D采样芯片ADS7804,并读取转换后的数字码,然后按交流采样原理进行实时计算,分别算出交流电压的有效值、交流电压的频率,驱动显示电路将电压和频率显示出来,当出现电压偏离正常值20%,或者频率低于49 Hz或高于51 Hz时进行报警,供主处理器进行故障判断。
本设计采用FPGA做处理器有以下优点:
(1)由于FPGA并行处理的特点,可同时运算多路模拟量,即多路交流量对应的各个模块可以同时采样计算,所以计算速度上有了质的飞跃;
(2)在FPGA 设计中,FPGA可以并行地处理采样、计算、显示、报警等模块,大大提高了运行速度,并满足电力系统实时性、可靠性的需要。
1.4 LED显示
LED数码显示管有共阴极和共阳极两种接线方法,本设计采用共阳极,低电平有效,其中abcdefg组成数码管显示,dp为小数点显示。s1、s2、s3、s4、s5、s6、s7、s8分别为选择端,当其为高电平时选择相应的数码管。本设计主要采用两组显示,其中s1、s2、s3、s4为第一组显示,用于显示电压;s5、s6、s7、s8为第二组显示,用于显示频率。例如要让第一组第一个码管显示0时,其他数码管灯灭,则abcdefg=0000001,dp为小数点位置0,s1=1,s2=0,s3=0,s4=0。
2 系统软件设计
2.1 软件设计流程
由离散化公式可知, 根据一个周期内不同时刻的电压采样值及采样点数可计算出电压的有效值[5]。为了提高计算精度,本设计在一个周期内采样128个点用于计算有效值。同时通过对128个采样点进行分析计算出频率。
在实际设计时,FPGA晶振为40 MHz,用于准确定时,以确定每个采样的间隔时间,从而准确地启动A/D转换,同时ADS7804芯片的转换时间为10 μs左右,本采样周期为156.25 μs,本设计完全满足FPGA及时精确的采样要求。
本软件设计主要包括一个定时器t1、两个计数器c1和c2,定时器t1用于确定采样时间,控制采样;计数器c1用于确定一个交流电周期共采样128次,利用交流电采样原理公式计算交流电一个周期内电压的有效值;计数器c2用于计算频率。通过正弦的规律,计算出3次从正值到负值或者3次从负值到正值这段时间(即2个周期内)采样点的个数,通过采样点的间隔时间,得出2个周期的时间,从而计算出频率的大小。总体软件设计流程图如图2所示。
2.2 计算有效值的软件设计
根据本文介绍的交流电采样原理[6-7]和有效值的计算方法,要计算交流电必须进行平方和开方的运算,由于FPGA没有现成的开方运算方法,设计FPGA开方运算方法成为本设计的关键。
常用的开方算法有牛顿—莱福森算法、逐次比较算法等。牛顿—莱福森算法比较复杂, 占用资源比较多, 且迭代次数不确定, 不太适合FPGA运算。本设计采用逐次比较算法,充分发挥FPGA执行速度快的优点。逐次比较算法先将实验值进行平方运算, 然后与输入值相比较, 通过比较结果,修正实验值, 从而得到输出值。
本设计开方算法流程如图3所示。采用12位设计,由于正负的关系,计算时将负数求补转换成正数,所以实际只有11位,需进行11次运算比较。
首先,令n=1,A=S=10000000000也即将11位的最高位置1,其他位置0,然后将它赋给A、S,然后对A求平方后,把A赋给B。B和一个周期内128个采样值的平方和的平均数C(平方和右移7位即可)比较大小。当C大于B时A=A+(S>>n),同时调整n的值,令n=n+1;若当C等于B时,则A即为所求的开方值,当C小于B时,A=[A-(S>>n-1)+(S>>n)],同时调整n的值,令n=n+1,开始下一次循环比较。直到最后一位比较完后,强行结束。例如:设C为49(二进制为110001),首先,将n=1,A=S=10000000000,对A平方并赋给B,C<B,则执行A=(A-(S>>n-1)+(S>>n))。此时A=01000000000,循环执行平方、比较后A=00100000000,继续循环A=00100000000,直到第9次循环,平方、比较后,当C大于B时,A=A+(S>>n),A=00000000110,继续循环;平方、比较后A=00000000111,继续循环;平方、比较后A=00000000111。即得出平方根为00000000111。经过11次比较得出正确的结果。
2.3 计算频率的软件设计
频率参数的实时测量一直是电力系统参数测量中的重点和难点。由于电力系统的频率时刻都有微小的变化, 精确的测频手段成为实时控制的重要组成部分。在实际应用中通常包括硬件测频法和软件测频法两种。本文软件测频主要采用基于电网电压交流采样技术, 通过相应的数值算法,经过计算机处理计算获得频率量的大小, 其算法相当丰富而且还在不断发展。本设计中的控制器采用过零法进行软件测频。
如图4所示,当采样值出现有负值到正值的变化,表示正弦值过了0点,为了排除干扰和误判,且随后需出现3个正值则代表正弦值确实过了零点,进入正值区间,此时计数器开始对采样个数数进行计数,经过一定的采样值后,当采样值第3次出现由负值到正值的变化,表示正弦值过了0点,且随后需出现3个正值则代表正弦值确实过了0点,进入正值区间,此时停止计数器对采样个数进行计数;或者当采样值出现由正值到负值的变化,表示正弦值过了0点,为了排除干扰和误判,且随后需出现3个负值则代表正弦值确实过了0点,进入负值区间,此时计数器开始对采样个数进行计数,经过一定的采样值后,当采样值第3次出现正值到负值的变化,表示正弦值过了0点,且随后需出现3个负值则代表正弦值确实过了0点,进入负值区间,此时停止计数器对采样个数的计数。判断出此时计数器的个数即为采样个数,通过采样的间隔时间t1,乘以计数器的个数c2,即1个周期的时间为t3=t1×c2。则频率为f=1/(0.5×t3)。此设计2个周期采样约256个点,频率精度相当的高,可以满足电力系统的需要。
该系统是基于交流采样设计的电力参数监测仪器,设计出基于FPGA的开方程序,通过对交流采样值进行处理和计算,结合FPGA的高速运算、并行处理的能力,实现交流电压有效值和频率的实时计算。具有精度高、速度快、实时性好的特点,在电力系统中有极高的实用价值。