路(如施密特整形,滞回比较器整形等)以弥补MAX941的不足。
1.4.3 AD采样测幅
幅度测量采用ATmega128自带的AD转换器,对被测信号(初始信号)对此采样,每次采样与前一次采样比较,保留最大采样值,即可换算出信号的峰值。显然,对于高频信号,由于AD转化器采样速度的限制,所测峰值误差较大。
1.4.4 温度测量模块
方案一:采用热电偶或者热敏电子作为感温元件,但热电偶需要冷端补偿,电路设计复杂,热敏电阻虽然精度较高,但需要标准稳定的电阻匹配才能使用,而且重复性、可靠性都比较差。
方案二:采用集成温度传感器DS18B20,该传感器结构简单,不需要外接电路,数据传输用one—wire总线,可用一根I/O数据线既供电又传输数据,在-10~+85℃范围内精度为±0.5℃,且分辨率较高,重复性和可靠性好。 显然,我们采用方案二。
1.4.5键盘输入模块
键盘输入有独立键盘和矩阵键盘两种选择。对于单片机最小板自带的8个独立按键而言完全可以实现本系统的要求。但是对于同样的端口,矩阵键盘多了一倍的按键,易于通过多余的按键实现扩展功能的手动控制,例如,单片机接受到某一按键信号后会执行温度测量并且显示温度的程序,接受到另一按键信号会执行峰值测量并显示的程序。
本系统中按键的设置如下:选择测量对象?周期,频率,时间间隔;选择需储存记忆数据;是否显示峰值;是否温度测量;是否语音报数;是否返回主界面;返回上一页等。
1.4.6 液晶显示模块
2402液晶模块,24行*2列字符显示,并行8/4数据通信,可以满足本系统中至少显示六位的要求。我们假期已经调过液晶显示的模块,利用C语言模块的可移植性,直接将模块移植过来,根据实际情况更改数组内容,即可实现测量参数的显示。
1.4.7 语音报数模块
语音报时使产品与使用者进行良性的互动,大大提高了本测量系统的竞争能力。 我们选用智能型640秒语音录放模块实现语音报数功能。该模块由麦克风、喇叭、语音芯片及应外围电路组成。该模块具有话筒录音、线路录音、直接驱动喇叭、支持按键和三线串口控制模式、断点信息不丢失等特点。对于本计数器中的报数功能,我们可以按照如下操作:ATmega128单片机通过SPI外串行总线端口给语音模块发送FB+XXH(定时录音模式),然后通过麦克风将数据依次录音,存在合适的地址中,方便播放时寻找合适音频信号。单片机将FPGA测得的数据按照相对应的规律,找到语音模块中的地址,并发送FCH+XXH(播放模式),从而实现语音报数功能
1.4.8自制电源
本系统中FPGA、ATmega128、电压比较器等器件都需要合适的直流电源供电,因此我们自制了相应的直流电源。如下图所示,将输出的220V交流信号经变压器降压,整流桥整流,电容滤波,7805、7905等集成稳压器稳压,从而得到满足相应要求的直流电源
图10—电源原理图
1.4.9浮点数除法运算的实现
测频法存在门控信号内一个被测信号的脉冲个数误差,对于高频信号而言,门控信号内通过的被测信号脉冲的个数足够大,一个脉冲的缺失,对测量结构不产生影响;对低频信号而言,门控信号内通过的被测信号脉冲个数很小,一个脉冲的缺失会引起很大的误差,故对低频信号我们采用测周期的方法,通过求倒数换算出周期。
求倒数换算周期,浮点数的除法运算及浮点数显示是本设计中的两大难点。对于0.1%的精度要求,不同频率范围内的周期求倒数后,小数点后需精确到的位数要求不一样,我们通过寻求第一位有效数字的位置,推测出小数点的位置,(如下表所示)根据相应位数精确度的要求截断无效数据,即可计算出误差范围内结果。对于浮点数的显示,鉴于八位单片机处理极限是65536的数据,我们将浮点数依次扩大10000倍,取出小数点后的高四位按照整数方法显示,类似这样的操作取出小数位低四位并且显示. 0 0 0 X0 X0 X0 X0 . . . . X1 X1 X1 0 0 X0 X1 . X2 X2 0 X0 X1 X2 X2 . X3 X0 X1 X2 X3 X3 X3 . X1 X2 X3 X4 X4 X4 X4 X2 X3 X4 X5 X5 X5 X5 X3 X4 X5 X6 X6 X6 X6 X4 X5 X6 X5 X6 X6
1.5 系统软件设计 1.5.1 主流程图
图7—周期测量模块 1.4.1.3 其他 (1)SPI通信
本测量系统中不可避免地要实现FPGA和ATmega128间的通信。我们可以选择UART协议、I2C协议、SPI协议。其中串行外接口设计SPI(Serial Peripheral Interface)的实质是同步串行总线接口,由于其接线简单,使用起来非常方便,广泛应用于各种外设与单片机之间的通信。本系统就是通过SPI实现ATmega128和FPGA之间通信的。SPI总线有四根组成:串行时钟线(SCK)、主机输出/从机输入线(MOSI),从机输入线(MISO),从机选择线(SS)。
1.5.2 用户界面设计
随着科学技术的日益发展,很多测量工具除了提供相应的测量功能意外,还友好的人性化的界面向导,这不仅有利于引导客户进行正确的操作,也有利于扩大测量工具本身的潜在市场。因此我们设计了友好的人机交换界面(如“欢迎使用本计数器”“您可以选择1频率测量2周期测量3时间间隔测量”“16键返回主页面”“如果您想储存此数据,请按5,否则按6”)。用户可以根据自己的需要输入相应的按键,实现相应的功能。
图12—用户界面方框图
1.6 测试与结果分析 1.6.1 参数测试结果
考虑到不同基准信号本身有着不同的精确程度,我们选择的测试信号分别为EDA实验箱(ZY11EDA13BE)中信号、高频信号发生器(YB1051)、FPGA内部处理产生信号(50M有源晶振,经过内部PLL两倍频,再分频)。 (1) 周期测量数据 表3—周期测量数据 信号源 信号类型 实际周期 测量周期 误差值 EDA实验箱 方波 83.333ns 83.365ns 0.039% EDA实验箱 方波 666.667ns 666.930ns 0.038% EDA实验箱 方波 0.122μs 122008ns 0.0066% EDA实验箱 方波 0.19531μs 195327ns 0.0087% EDA实验箱 方波 1s 1000075370ns 0.00753% EDA实验箱 方波 0.25s 250018830ns 0.01883% FPGA 方波 20ns 20000ps 0% FPGA 方波 10ns 10000ps 0% FPGA 方波 0.122μs 122008ns 0% FPGA 方波 0.9765625μs 9765625ns 0% FPGA 方波 10s 10000000000ns 0% FPGA 方波 20s 20000000000ns 0% (2) 频率测量数据
前两组为EDA中信号,后两组为FPGA内部分频引出后在接入待测端口
表4—频率测量数据 信号源 信号类型 实际频率(Hz) 测量频率(Hz) 误差值 EDA实验箱 方波 12M 11995138 0.04% EDA实验箱 方波 32,768 32766 0.006% EDA实验箱 方波 1024 1023.918 0.008% EDA实验箱 方波 128 127.9903 0.0076% EDA实验箱 方波 1 0.999929 0.071% FPGA 方波 50,000,000 50,000,000 0% FPGA 方波 95.367432 95.36796 0.0000536% FPGA 方波 5.960464 5.960459 0.000008388% FPGA 方波 0.372529 0.372529 0% FPGA 方波 0.01 0.009999924 0.0076% 高频信号正弦波 176K 176057 0.323% 发生器 高频信号正弦波 224K 223671 0.1468% 发生器 高频信号正弦波 320K 319866 0.0418% 发生器 高频信号正弦波 1110K 1108997 0.0903% 发生器 高频信号正弦波 3751K 3747657 0.0891% 发生器 高频信号正弦波 11M(示数不精11852014 7.7% 发生器 确)
时间间隔测量
对于时间间隔测量部分,受到实验室测量设备的限制,暂无数据。据理论分析,而且时间间隔测量和周期测量共用一个模块,推测误差范围也应该满足要求。
峰值测量数据
分别测量方波,三角波,正弦波的峰值入下表所示: 表5—峰值测量数据 方波 实际测量正弦波 实际测量三角波 实际测量值 值 值 值 值 值 10M 5V 4.63V 10M 5V 3.21V 10M 5V 2.01V 65536HZ 5V 4.87V 65536HZ 5V 4.02V 65536HZ 5V 3.10V 1024HZ 5V 4.85V 1024HZ 5V 4.52V 1024HZ 5V 4.30V 512HZ 5V 4.9V 512HZ 5V 4.58V 512HZ 5V 4.03V 10HZ 5V 4.97V 10HZ 5V 4.85V 10HZ 5V 4.65V