该电压表电路中,ADC0809的工作时序如图4所示。主要控制信号:START是转换启动信号,高电平有效;ALE是3位通道选择地址(ADDC,ADDB,ADDA)信号的锁存信号。当模拟量送至某一输入端,由3位地址信号进行选择,而地址信号由ALE锁存;EOC是档位转换的状态信号。EOC输出高电平时,表示转换结束;在EOC的上升沿后,若使能输出信号OE为高电平,则三态缓冲器打开,将转换完毕的8位数据结果输至数据总线,至此ADC0809的一次转换结束。
3.2 档位转换电路
为了增加数字电压表的测量范围,设计了档位选择电路。采用精密电阻分压方法,简洁实用。ADC0809有8路数据输入端口,原理上可以分为8个档位。从实用性出发,只分了两档,如图5所示。图5中电位器负责电阻校准。尽管采用精密电阻,各电阻值的制造误差不可避免,用电位器来微调校准以保证测量精度。ADC0809的输入范围为0~5 V,档位的切换是通过程序来控制ADC0809各个通道的选通来自动实现。只要输入的电压范围超过5 V,则档位自动切换到另一档,即选通通道INl。
当输入电压范围为O~5 V时,INO导通。此时U=U26,当输入电压范围为5~50 V时,FPGA判断选择档位,INl导通。此时有U=U27即U=(R1+R3)/(R1+R2+R3)=U26/10。
由于ADC0809数字量输出为8位,数字量化范围为0~255,当输入电压为满量程5 V时,转换电路对输入电压的分辨能力为:
3.3 FPGA内部模块设计
(1)码制转换模块。在此码制变换模块DATA_CONVERSION功能是将AD0809采样送来的8位二进制数转换为可被LCD识别的字符型LCD码。首先,将8位二进制码变换为BCD码;然后,再分别进行转换,得到字符型码,并送入译码显示模块。
(2)译码驱动模块。数字电压值的显示由LCD实现。选用了HY系列字符型液晶显示模块HD44780。实现了低功耗,而且可带单位双排显示,字体美观大方。
整个电路十分简洁。系统工作过程:FPGA芯片EP2C5T144对ADC0809及LCD进行初始化。当有输入信号Vi时,由FPGA向ADC0809传送控制信号控制字,使其对输入的模拟信号进行转换,变为8位的数字信号并送到输出端。由FPGA经过码制变换等处理后,再通过LCD的接口驱动,向其发送数据。当ADC0809采样完成后,FPGA中的码字转换模块将数据转换为LCD可识别的字符型数据,然后送至驱动模块,由其驱动LCD,将字符型数据送到LCD的DO~D7端,实现显示。
4 关键算法实现
4.1 档位自动切换算法
将数字电压表分为两个档位,分别是0~5 V,0~50 V。档位切换算法如下:
设定初始量程为0~5 V。采集100个数据点,对输入信号Vi的采样值取绝对值的最大值,将其作为Vi的最大值的估计值。如果Vi的最大绝对值估计值小于5 V,则将档位切换到O~5 V,否则,切换到0~50 V。
4.2 信号采样周期自调整算法
为协调好数据精度和系统负担两者之间的关系,对于叠加周期信号的输入信号Vi,规定单个周期的数据采集不少于8个点,因此要对AD0809的采样周期进行自适应调整。这里使用过零点检测的方法,如果叠加信号的周期在0~25 Hz范围内,采样周期为5 ms。叠加信号周期在25~50 Hz时,采样周期为2 ms;叠加信号周期在50~100 Hz时,采样周期为1 ms。
设采样周期的初始值为2 ms,采样数为100点。则有:首先采集100个数据,计算平均值,作为输入信号Vi的均估值(平均值的估计值);再采集100个数据,与Vi的均估值进行比较,计算过零点的数量并统计;根据此数量,调整采样周期,当此数量大于20时,令采样周期为1 ms。当此数量不大于10时,令采样周期为5 ms。其他令采样周期为2 ms。
4.3 检测叠加信号周期算法
依旧采用检测过零点的数目来检测周期。
设采集的数据点为1O0个,计算均值,作为输入信号Vi的均估值;再采集数据,与Vi的均估值进行比较,计算过零点的数量并统计,同时统计每个数据过零点的时刻;检测到三个过零点时,判断其是否符合均匀分布,判断是否检测到一个周期。若检测到一个周期,则停止检测并计算此周期,否则继续检测。若检测到相当数量的数据点,过零点数量仍小于3个,则认为输入信号为直流信号。
5 程序流程
程序流程如图6所示。
6 测试结果分析
采用高精度数字多用表UT88B输出值作为标准值。由表1所示。
由数据对比可以看出,在O~5 V档位上,该数字电压表的误差基本在O.01 V内。在O~50 V档位上,误差有所增大,但也控制在O.02 V以内,体现了ADC0809的转换精度,电路整体设计合理可靠。至于O.02 V以内的偏差,可修改程序,采用软件的方法进行数据校正,也可以进一步校正A/D的基准电压。
7 结语
利用现场可编程门阵列技术,设计了该新型数字式电压表。用软件替代诸多硬件,在一块高性能FPGA芯片上,实现采样时序的控制、档位的判断选择、码制的转换和LCD驱动,极大地提高了系统集成度和可靠性。文中重点介绍了档位电路和FPGA内部模块的设计以及关键算法的实现步骤。由测试结果,可看出该仪表测量范围较宽,测量精度较高,能够满足物理实验中电量的测量要求。经实际使用证明,系统运行稳定、操作方便。为了方便电压表系统与计算机直接通信,还可进一步增加RS 232接口,进行电平转换,可将测得的数据实时导入计算机中使用。